This repository has been archived on 2022-01-09. You can view files and clone it, but cannot push or open issues/pull-requests.
liblast/Game/Main.gd

111 lines
2.9 KiB
GDScript

extends Node
enum GameFocus {MENU, GAME, CHAT, AWAY}
const NET_PORT = 12597
const NET_SERVER = "unfa.xyz"# "liblast.unfa.xyz"
var peer = NetworkedMultiplayerENet.new()
var player_scene = preload("res://Assets/Characters/Player.tscn")
@onready var gui = $GUI
@onready var hud = $HUD
@onready var chat = hud.get_node("Chat")
var local_player: Node = null
var focus = GameFocus.MENU :
set(new_focus):
match new_focus:
0:
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
gui.show()
if local_player:
local_player.input_active = false
1:
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
gui.hide()
if local_player:
local_player.input_active = true
2:
if local_player:
local_player.input_active = false
3:
if local_player:
local_player.input_active = true
focus = new_focus
func _input(_event) -> void:
if Input.is_action_just_pressed("ui_cancel"):
if focus == GameFocus.GAME:
focus = GameFocus.MENU
elif focus == GameFocus.MENU:
focus = GameFocus.GAME
func create_player(id: int, is_local: bool) -> void:
var new_player = player_scene.instantiate()
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
if local_player:
local_player.get_node("Head/Camera").current = true
func start_dedicated_server():
peer.create_server(NET_PORT, 16)
get_tree().network_peer = peer
#create_player(1, true)
func _on_Host_pressed():
$NetworkTesting/Host.disabled = true
$NetworkTesting/Connect.disabled = true
peer.create_server(NET_PORT, 16)
get_tree().network_peer = peer
create_player(1, true)
func _on_Connect_pressed():
$NetworkTesting/Host.disabled = true
$NetworkTesting/Connect.disabled = true
peer.create_client(NET_SERVER, NET_PORT)
get_tree().network_peer = peer
func _player_connected(id) -> void:
print("player connected, id: ", id)
create_player(id, false)
func _player_disconnected(id) -> void:
print("player disconnected, id: ", id)
func _connected_ok() -> void:
print("connected to server")
var id = get_tree().get_network_unique_id()
create_player(id, true)
func _connected_fail() -> void:
print("connection to server failed")
func _server_disconnected() -> void:
print("server disconnected")
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)