2021-06-02 23:32:07 +02:00
|
|
|
extends Node
|
|
|
|
|
2021-06-03 22:34:36 +02:00
|
|
|
enum GameFocus {MENU, GAME, CHAT, AWAY}
|
2021-06-02 23:32:07 +02:00
|
|
|
|
2021-06-06 01:58:04 +02:00
|
|
|
const NET_PORT = 12597
|
2021-07-04 21:50:13 +02:00
|
|
|
const NET_SERVER = "localhost"# "liblast.unfa.xyz"
|
2021-06-06 01:58:04 +02:00
|
|
|
|
|
|
|
var peer = NetworkedMultiplayerENet.new()
|
|
|
|
|
2021-06-09 19:41:52 +02:00
|
|
|
var player_scene = preload("res://Assets/Characters/Player.tscn")
|
|
|
|
|
2021-06-03 22:34:36 +02:00
|
|
|
@onready var gui = $GUI
|
2021-06-04 00:38:30 +02:00
|
|
|
@onready var hud = $HUD
|
|
|
|
@onready var chat = hud.get_node("Chat")
|
2021-06-14 14:22:40 +02:00
|
|
|
var local_player: Node = null
|
2021-06-03 22:34:36 +02:00
|
|
|
|
2021-06-06 01:58:04 +02:00
|
|
|
var focus = GameFocus.MENU :
|
|
|
|
set(new_focus):
|
|
|
|
match new_focus:
|
|
|
|
0:
|
|
|
|
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
|
|
|
|
gui.show()
|
2021-06-14 14:22:40 +02:00
|
|
|
if local_player:
|
|
|
|
local_player.input_active = false
|
2021-06-06 01:58:04 +02:00
|
|
|
1:
|
|
|
|
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
|
|
|
|
gui.hide()
|
2021-06-14 14:22:40 +02:00
|
|
|
if local_player:
|
|
|
|
local_player.input_active = true
|
2021-06-06 01:58:04 +02:00
|
|
|
2:
|
2021-06-14 14:22:40 +02:00
|
|
|
if local_player:
|
|
|
|
local_player.input_active = false
|
2021-06-06 01:58:04 +02:00
|
|
|
3:
|
2021-06-14 14:22:40 +02:00
|
|
|
if local_player:
|
|
|
|
local_player.input_active = true
|
2021-06-02 23:32:07 +02:00
|
|
|
|
2021-06-06 01:58:04 +02:00
|
|
|
focus = new_focus
|
|
|
|
|
|
|
|
func _input(_event) -> void:
|
2021-06-02 23:32:07 +02:00
|
|
|
if Input.is_action_just_pressed("ui_cancel"):
|
2021-06-03 22:34:36 +02:00
|
|
|
if focus == GameFocus.GAME:
|
|
|
|
focus = GameFocus.MENU
|
|
|
|
elif focus == GameFocus.MENU:
|
|
|
|
focus = GameFocus.GAME
|
2021-06-14 14:22:40 +02:00
|
|
|
|
|
|
|
|
2021-06-15 01:11:04 +02:00
|
|
|
func create_player(id: int, is_local: bool) -> void:
|
2021-07-04 21:50:13 +02:00
|
|
|
var new_player = player_scene.instance() #tiate()
|
2021-06-14 14:22:40 +02:00
|
|
|
var spawnpoint = $Map/SpawnPoints.get_children()[randi() % len($Map/SpawnPoints.get_children())]
|
|
|
|
new_player.name = str(id)
|
|
|
|
new_player.global_transform = spawnpoint.global_transform
|
|
|
|
new_player.set_network_master(id)
|
|
|
|
$Players.add_child(new_player)
|
|
|
|
|
|
|
|
if is_local:
|
|
|
|
local_player = $Players.get_node(str(id))
|
|
|
|
local_player.get_node("Head/Camera").current = true
|
|
|
|
else:
|
|
|
|
$Players.get_node(str(id) + "/Head/Camera").current = false
|
2021-06-15 01:11:04 +02:00
|
|
|
if local_player:
|
|
|
|
local_player.get_node("Head/Camera").current = true
|
2021-06-06 01:58:04 +02:00
|
|
|
|
2021-07-04 00:44:00 +02:00
|
|
|
func start_dedicated_server():
|
|
|
|
peer.create_server(NET_PORT, 16)
|
|
|
|
get_tree().network_peer = peer
|
|
|
|
#create_player(1, true)
|
|
|
|
|
2021-06-06 01:58:04 +02:00
|
|
|
func _on_Host_pressed():
|
2021-06-14 14:22:40 +02:00
|
|
|
$NetworkTesting/Host.disabled = true
|
|
|
|
$NetworkTesting/Connect.disabled = true
|
|
|
|
|
2021-06-06 01:58:04 +02:00
|
|
|
peer.create_server(NET_PORT, 16)
|
|
|
|
get_tree().network_peer = peer
|
2021-06-14 14:22:40 +02:00
|
|
|
create_player(1, true)
|
2021-06-06 01:58:04 +02:00
|
|
|
|
|
|
|
func _on_Connect_pressed():
|
2021-06-14 14:22:40 +02:00
|
|
|
$NetworkTesting/Host.disabled = true
|
|
|
|
$NetworkTesting/Connect.disabled = true
|
|
|
|
|
2021-06-09 19:41:52 +02:00
|
|
|
peer.create_client(NET_SERVER, NET_PORT)
|
2021-06-06 01:58:04 +02:00
|
|
|
get_tree().network_peer = peer
|
|
|
|
|
2021-06-14 14:22:40 +02:00
|
|
|
|
2021-06-06 01:58:04 +02:00
|
|
|
func _player_connected(id) -> void:
|
|
|
|
print("player connected, id: ", id)
|
2021-06-14 14:22:40 +02:00
|
|
|
create_player(id, false)
|
|
|
|
|
2021-06-06 01:58:04 +02:00
|
|
|
|
|
|
|
func _player_disconnected(id) -> void:
|
|
|
|
print("player disconnected, id: ", id)
|
|
|
|
|
2021-06-14 14:22:40 +02:00
|
|
|
|
2021-06-06 01:58:04 +02:00
|
|
|
func _connected_ok() -> void:
|
|
|
|
print("connected to server")
|
2021-06-14 14:22:40 +02:00
|
|
|
var id = get_tree().get_network_unique_id()
|
|
|
|
create_player(id, true)
|
2021-06-06 01:58:04 +02:00
|
|
|
|
|
|
|
func _connected_fail() -> void:
|
|
|
|
print("connection to server failed")
|
|
|
|
|
|
|
|
func _server_disconnected() -> void:
|
|
|
|
print("server disconnected")
|
|
|
|
|
2021-06-14 14:22:40 +02:00
|
|
|
|
2021-06-06 01:58:04 +02:00
|
|
|
func _ready() -> void:
|
|
|
|
get_tree().connect("network_peer_connected", self._player_connected)
|
|
|
|
get_tree().connect("network_peer_disconnected", self._player_disconnected)
|
|
|
|
get_tree().connect("connected_to_server", self._connected_ok)
|
|
|
|
get_tree().connect("connection_failed", self._connected_fail)
|
|
|
|
get_tree().connect("server_disconnected", self._server_disconnected)
|