diff --git a/Game/source/assets/scripts/server_handlers/global.gd b/Game/source/assets/scripts/server_handlers/global.gd index 0c2f85d..9a35339 100644 --- a/Game/source/assets/scripts/server_handlers/global.gd +++ b/Game/source/assets/scripts/server_handlers/global.gd @@ -4,11 +4,13 @@ var player_master = null var ui = null var alive_players = [] + func instance_node_at_location(node: Object, parent: Object, location: Vector2) -> Object: var node_instance = instance_node(node, parent) node_instance.global_position = location return node_instance + func instance_node(node: Object, parent: Object) -> Object: var node_instance = node.instance() parent.add_child(node_instance) diff --git a/Game/source/assets/scripts/server_handlers/network_processors/network_setup.gd b/Game/source/assets/scripts/server_handlers/network_processors/network_setup.gd index 325e7e2..e706e04 100644 --- a/Game/source/assets/scripts/server_handlers/network_processors/network_setup.gd +++ b/Game/source/assets/scripts/server_handlers/network_processors/network_setup.gd @@ -1,29 +1,94 @@ extends Control +var player = load("res://source/entities/player/player_node.tscn") + var current_spawn_location_instance_number = 1 var current_player_for_spawn_location_number = null -var player = load("res://source/entities/player/player_node.tscn") -export onready var username_text_edit = $multiplayer_configure/username_text_edit +onready var multiplayer_config_ui = $multiplayer_configure +onready var username_text_edit = $multiplayer_configure/username_text_edit + +onready var device_ip_address = $UI/device_ip_address +onready var start_game = $UI/start_game +onready var background_lobby = $background_lobby +onready var text = $UI/text -func _process(delta): - if Input.is_action_just_pressed("esc"): - get_tree().change_scene("res://source/scenes/GUI/main_menu.tscn") +func _ready() -> void: + background_lobby.hide() + device_ip_address.hide() + text.hide() + 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_to_server") + + device_ip_address.text = Network.ip_address + + if get_tree().network_peer != null: + multiplayer_config_ui.hide() + background_lobby.show() + device_ip_address.show() + text.show() + current_spawn_location_instance_number = 1 + for player in PersistentNodes.get_children(): + if player.is_in_group("Player"): + for spawn_location in $spawn_locations.get_children(): + if int(spawn_location.name) == current_spawn_location_instance_number and current_player_for_spawn_location_number != player: + player.rpc("update_position", spawn_location.global_position) + player.rpc("enable") + current_spawn_location_instance_number += 1 + current_player_for_spawn_location_number = player + else: + start_game.hide() + + +func _process(_delta: float) -> void: + if get_tree().network_peer != null: + if get_tree().get_network_connected_peers().size() >= 0 and get_tree().is_network_server(): + start_game.show() + else: + start_game.hide() + + +func _player_connected(id) -> void: + print("Player " + str(id) + " has connected") + instance_player(id) + + +func _player_disconnected(id) -> void: + print("Player " + str(id) + " has disconnected") + + if PersistentNodes.has_node(str(id)): + PersistentNodes.get_node(str(id)).username_text_instance.queue_free() + PersistentNodes.get_node(str(id)).queue_free() func _on_create_server_pressed(): if username_text_edit.text != "": Network.current_player_username = username_text_edit.text + multiplayer_config_ui.hide() + device_ip_address.show() + background_lobby.show() + text.show() Network.create_server() - get_tree().change_scene("res://source/scenes/GUI/lobby.tscn") + instance_player(get_tree().get_network_unique_id()) func _on_join_server_pressed(): if username_text_edit.text != "": + multiplayer_config_ui.hide() + username_text_edit.hide() Global.instance_node(load("res://source/scenes/GUI/server_handlers/server_browser.tscn"), self) +func _connected_to_server() -> void: + yield(get_tree().create_timer(0.1), "timeout") + device_ip_address.show() + background_lobby.show() + text.show() + instance_player(get_tree().get_network_unique_id()) + + func instance_player(id) -> void: var player_instance = Global.instance_node_at_location(player, PersistentNodes, get_node("spawn_locations/" + str(current_spawn_location_instance_number)).global_position) player_instance.name = str(id) @@ -32,9 +97,17 @@ func instance_player(id) -> void: current_spawn_location_instance_number += 1 +func _on_start_game_pressed(): + rpc("switch_to_game") + + +sync func switch_to_game() -> void: + for child in PersistentNodes.get_children(): + if child.is_in_group("Player"): + child.update_shoot_mode(true) + + get_tree().change_scene("res://source/levels/trinity_site/trinity_site_level.tscn") + + func _on_return_pressed(): get_tree().change_scene("res://source/scenes/GUI/main_menu.tscn") - - -func enter_username(): - pass diff --git a/Game/source/assets/scripts/server_handlers/server_processors/server_browser.gd b/Game/source/assets/scripts/server_handlers/server_processors/server_browser.gd index 0cd7c1d..1381d1b 100644 --- a/Game/source/assets/scripts/server_handlers/server_processors/server_browser.gd +++ b/Game/source/assets/scripts/server_handlers/server_processors/server_browser.gd @@ -2,7 +2,7 @@ extends Control onready var server_listener = $server_listener onready var server_ip_text_edit = $background_panel/server_ip_text_edit -onready var server_container = $controls/VBoxContainer +onready var server_container = $controls/background_panel/VBoxContainer onready var manual_setup_button = $controls/manual_setup/Label onready var background_panel = $background_panel @@ -14,8 +14,6 @@ func _ready() -> void: func _process(delta): if Input.is_action_just_pressed("esc") and background_panel.is_visible_in_tree(): background_panel.hide() - elif Input.is_action_just_pressed("esc") and not background_panel.is_visible_in_tree(): - get_tree().change_scene("res://source/scenes/GUI/network_setup.tscn") func _on_server_listener_new_server(serverInfo): @@ -45,4 +43,4 @@ func _on_join_server_pressed(): func _on_return_pressed(): - get_tree().change_scene("res://source/scenes/GUI/network_setup.tscn") + get_tree().reload_current_scene() diff --git a/Game/source/assets/scripts/server_handlers/server_processors/server_display.gd b/Game/source/assets/scripts/server_handlers/server_processors/server_display.gd index ad0ed27..eeb0638 100644 --- a/Game/source/assets/scripts/server_handlers/server_processors/server_display.gd +++ b/Game/source/assets/scripts/server_handlers/server_processors/server_display.gd @@ -6,4 +6,4 @@ var ip_address = "" func _on_join_button_pressed(): Network.ip_address = ip_address Network.join_server() - get_parent().get_parent().queue_free() + get_parent().get_parent().get_parent().get_parent().queue_free() diff --git a/Game/source/assets/scripts/ui_element_handlers/lobby.gd b/Game/source/assets/scripts/ui_element_handlers/lobby.gd deleted file mode 100644 index b4a91bb..0000000 --- a/Game/source/assets/scripts/ui_element_handlers/lobby.gd +++ /dev/null @@ -1,77 +0,0 @@ -extends Node2D - -var player = load("res://source/entities/player/player_node.tscn") - - -var min_players = 2 -var current_spawn_location_instance_number = 1 -var current_player_for_spawn_location_number = null - -onready var multiplayer_config_ui = $multiplayer_configure -onready var device_ip_address = $background/background_lobby/Control/device_ip_address -onready var start_game = $UI/start_game - - -func _ready(): - 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_to_server") - - device_ip_address.text = Network.ip_address - - if get_tree().network_peer != null: - - current_spawn_location_instance_number = 1 - for player in PersistentNodes.get_children(): - if player.is_in_group("Player"): - for spawn_location in $spawn_locations.get_children(): - if int(spawn_location.name) == current_spawn_location_instance_number and current_player_for_spawn_location_number != player: - player.rpc("update_position", spawn_location.global_position) - player.rpc("enable") - current_spawn_location_instance_number += 1 - current_player_for_spawn_location_number = player - - -func _process(delta: float) -> void: - if get_tree().network_peer != null: - if get_tree().get_network_connected_peers().size() >= (min_players - 1) and get_tree().is_network_server(): - start_game.show() - else: - start_game.hide() - - -func _player_connected(id) -> void: - print("Player " + str(id) + " has connected") - instance_player(id) - - -func _player_disconnected(id) -> void: - print("Player " + str(id) + " has disconnected") - if PersistentNodes.has_node(str(id)): - PersistentNodes.get_node(str(id)).username_text_instance.queue_free() - PersistentNodes.get_node(str(id)).queue_free() - - -func _connected_to_server() -> void: - yield(get_tree().create_timer(0.1), "timeout") - instance_player(get_tree().get_network_unique_id()) - - -func instance_player(id) -> void: - var player_instance = Global.instance_node_at_location(player, PersistentNodes, get_node("spawn_locations/" + str(current_spawn_location_instance_number)).global_position) - player_instance.name = str(id) - player_instance.set_network_master(id) - #player_instance.username = username_text_edit.text - current_spawn_location_instance_number += 1 - - -func _on_start_game_pressed(): - rpc("switch_to_game") - - -sync func switch_to_game() -> void: - for child in PersistentNodes.get_children(): - if child.is_in_group("Player"): - child.update_shoot_mode(true) - - get_tree().change_scene("res://source/levels/trinity_site/trinity_site_level.tscn") diff --git a/Game/source/assets/scripts/ui_element_handlers/winner.gd b/Game/source/assets/scripts/ui_element_handlers/winner.gd index 8470d75..cfdbf47 100644 --- a/Game/source/assets/scripts/ui_element_handlers/winner.gd +++ b/Game/source/assets/scripts/ui_element_handlers/winner.gd @@ -1,7 +1,7 @@ extends Label sync func return_to_lobby(): - get_tree().change_scene("res://source/scenes/GUI/main_menu.tscn") + get_tree().change_scene("res://source/scenes/GUI/network_setup.tscn") func _on_win_timer_timeout(): diff --git a/Game/source/assets/sprites/GUI/floor.svg b/Game/source/assets/sprites/GUI/floor.svg index 68da247..73fb773 100644 --- a/Game/source/assets/sprites/GUI/floor.svg +++ b/Game/source/assets/sprites/GUI/floor.svg @@ -24,9 +24,9 @@ inkscape:document-units="mm" showgrid="false" units="px" - inkscape:zoom="1.587419" - inkscape:cx="196.23049" - inkscape:cy="197.4904" + inkscape:zoom="0.28061869" + inkscape:cx="201.34083" + inkscape:cy="685.98426" inkscape:window-width="1920" inkscape:window-height="1007" inkscape:window-x="1920" @@ -62,7 +62,7 @@ inkscape:export-ydpi="96" style="stroke-width:0.264583" />