From fa6cf57e0cc5d1c8b54527322566ad8bc527ce02 Mon Sep 17 00:00:00 2001 From: teatov Date: Sat, 15 Feb 2025 00:33:40 +1000 Subject: [PATCH] refactor networker and menus --- scenes/title.tscn | 24 ++++++++++++------------ scripts/globals/inputer.gd | 2 +- scripts/globals/networker.gd | 6 +++--- scripts/globals/referencer.gd | 13 +++++++------ scripts/main.gd | 2 -- scripts/title.gd | 4 ++++ scripts/ui/menu.gd | 4 ++-- scripts/ui/play_menu.gd | 13 +++++++------ 8 files changed, 36 insertions(+), 32 deletions(-) diff --git a/scenes/title.tscn b/scenes/title.tscn index c640783..4057281 100644 --- a/scenes/title.tscn +++ b/scenes/title.tscn @@ -6,9 +6,10 @@ [node name="Title" type="Node"] script = ExtResource("1_l5ce6") -[node name="Menu" type="CanvasLayer" parent="."] +[node name="PlayMenu" type="CanvasLayer" parent="."] +script = ExtResource("1_gunvo") -[node name="PlayMenu" type="Panel" parent="Menu"] +[node name="Panel" type="Panel" parent="PlayMenu"] anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 @@ -20,9 +21,8 @@ offset_right = 321.5 offset_bottom = 84.0 grow_horizontal = 2 grow_vertical = 2 -script = ExtResource("1_gunvo") -[node name="MarginContainer" type="MarginContainer" parent="Menu/PlayMenu"] +[node name="MarginContainer" type="MarginContainer" parent="PlayMenu/Panel"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -34,19 +34,19 @@ theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 -[node name="GridContainer" type="GridContainer" parent="Menu/PlayMenu/MarginContainer"] +[node name="GridContainer" type="GridContainer" parent="PlayMenu/Panel/MarginContainer"] layout_mode = 2 theme_override_constants/h_separation = 10 theme_override_constants/v_separation = 20 columns = 3 -[node name="NameLabel" type="Label" parent="Menu/PlayMenu/MarginContainer/GridContainer"] +[node name="NameLabel" type="Label" parent="PlayMenu/Panel/MarginContainer/GridContainer"] layout_mode = 2 theme_override_font_sizes/font_size = 26 text = "Name:" horizontal_alignment = 2 -[node name="NameEdit" type="LineEdit" parent="Menu/PlayMenu/MarginContainer/GridContainer"] +[node name="NameEdit" type="LineEdit" parent="PlayMenu/Panel/MarginContainer/GridContainer"] layout_mode = 2 size_flags_horizontal = 3 focus_neighbor_right = NodePath("../HostButton") @@ -55,34 +55,34 @@ theme_override_font_sizes/font_size = 26 text = "ass" max_length = 16 -[node name="HostButton" type="Button" parent="Menu/PlayMenu/MarginContainer/GridContainer"] +[node name="HostButton" type="Button" parent="PlayMenu/Panel/MarginContainer/GridContainer"] layout_mode = 2 focus_neighbor_left = NodePath("../NameEdit") focus_neighbor_bottom = NodePath("../JoinButton") theme_override_font_sizes/font_size = 26 text = "Host" -[node name="AddressLabel" type="Label" parent="Menu/PlayMenu/MarginContainer/GridContainer"] +[node name="AddressLabel" type="Label" parent="PlayMenu/Panel/MarginContainer/GridContainer"] layout_mode = 2 theme_override_font_sizes/font_size = 26 text = "Address:" horizontal_alignment = 2 -[node name="AddressEdit" type="LineEdit" parent="Menu/PlayMenu/MarginContainer/GridContainer"] +[node name="AddressEdit" type="LineEdit" parent="PlayMenu/Panel/MarginContainer/GridContainer"] layout_mode = 2 size_flags_horizontal = 3 focus_neighbor_top = NodePath("../NameEdit") focus_neighbor_right = NodePath("../JoinButton") theme_override_font_sizes/font_size = 26 -[node name="JoinButton" type="Button" parent="Menu/PlayMenu/MarginContainer/GridContainer"] +[node name="JoinButton" type="Button" parent="PlayMenu/Panel/MarginContainer/GridContainer"] layout_mode = 2 focus_neighbor_left = NodePath("../AddressEdit") focus_neighbor_top = NodePath("../HostButton") theme_override_font_sizes/font_size = 26 text = "Join" -[node name="ErrorLabel" type="Label" parent="Menu/PlayMenu"] +[node name="ErrorLabel" type="Label" parent="PlayMenu/Panel"] layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 diff --git a/scripts/globals/inputer.gd b/scripts/globals/inputer.gd index f6fae51..aebf9b7 100644 --- a/scripts/globals/inputer.gd +++ b/scripts/globals/inputer.gd @@ -55,7 +55,7 @@ func _input(event: InputEvent) -> void: func can_control_player() -> bool: - return Referencer.main.menu == null + return Referencer.menu == null func get_action_prompt(action: StringName) -> String: diff --git a/scripts/globals/networker.gd b/scripts/globals/networker.gd index 589f641..bdd48c9 100644 --- a/scripts/globals/networker.gd +++ b/scripts/globals/networker.gd @@ -100,7 +100,7 @@ func player_name(peer_id: int) -> String: return str(peer_id) -func _switch_scene(from: Node, to: PackedScene) -> void: +func _switch_scene(to: PackedScene, from: Node) -> void: if from: from.queue_free() @@ -111,7 +111,7 @@ func _switch_scene(from: Node, to: PackedScene) -> void: func _load_main() -> void: print("Loading Main...") - _switch_scene($/root/Title, _main_scene) + _switch_scene(_main_scene, $/root/Title) func _add_player(peer_id: int, player_info: Dictionary) -> void: @@ -177,5 +177,5 @@ func _on_multiplayer_server_disconnected() -> void: var message := "Server disconnected" printerr(message) players.clear() - _switch_scene($/root/Main, _title_scene) + _switch_scene(_title_scene, $/root/Main) network_error.emit(message) diff --git a/scripts/globals/referencer.gd b/scripts/globals/referencer.gd index 3b9abe2..bb5c19b 100644 --- a/scripts/globals/referencer.gd +++ b/scripts/globals/referencer.gd @@ -1,11 +1,12 @@ extends Node signal main_loaded -signal menu_opened(menu: Menu) -signal menu_closed(menu: Menu) +signal menu_opened(menu_node: Menu) +signal menu_closed(menu_node: Menu) var camera: Camera3D var player: Player +var menu: Menu var main: Main: set(value): if value: @@ -14,9 +15,9 @@ var main: Main: var chat: Chat -func set_menu_opened(menu: Menu) -> void: - menu_opened.emit(menu) +func set_menu_opened(menu_node: Menu) -> void: + menu_opened.emit(menu_node) -func set_menu_closed(menu: Menu) -> void: - menu_closed.emit(menu) +func set_menu_closed(menu_node: Menu) -> void: + menu_closed.emit(menu_node) diff --git a/scripts/main.gd b/scripts/main.gd index cc6d490..6dd66db 100644 --- a/scripts/main.gd +++ b/scripts/main.gd @@ -1,8 +1,6 @@ class_name Main extends Node -var menu: Menu - @onready var player_holder: Node = $Players @onready var _player_spawner: MultiplayerSpawner = $PlayerSpawner diff --git a/scripts/title.gd b/scripts/title.gd index d497fd4..6a7d817 100644 --- a/scripts/title.gd +++ b/scripts/title.gd @@ -1,5 +1,7 @@ extends Node +@onready var _play_menu: PlayMenu = $PlayMenu + func _ready() -> void: print("Cadastery v", ProjectSettings.get_setting("application/config/version")) @@ -7,3 +9,5 @@ func _ready() -> void: if Networker.is_dedicated_server(): Networker.call_deferred("host_game", true) return + + _play_menu.open() diff --git a/scripts/ui/menu.gd b/scripts/ui/menu.gd index c3f281c..c4bdd20 100644 --- a/scripts/ui/menu.gd +++ b/scripts/ui/menu.gd @@ -6,11 +6,11 @@ var is_open: bool = false func open() -> void: is_open = true - Referencer.main.menu = self + Referencer.menu = self Referencer.set_menu_opened(self) func close() -> void: is_open = false - Referencer.main.menu = null + Referencer.menu = null Referencer.set_menu_closed(self) diff --git a/scripts/ui/play_menu.gd b/scripts/ui/play_menu.gd index 65be72a..9c1c754 100644 --- a/scripts/ui/play_menu.gd +++ b/scripts/ui/play_menu.gd @@ -1,15 +1,16 @@ -extends Panel +class_name PlayMenu +extends Menu const SERVER_HISTORY_PATH := "user://server_history" var _server_history: PackedStringArray = [] var _history_position: int = 0 -@onready var _name_edit: LineEdit = $MarginContainer/GridContainer/NameEdit -@onready var _address_edit: LineEdit = $MarginContainer/GridContainer/AddressEdit -@onready var _host_button: Button = $MarginContainer/GridContainer/HostButton -@onready var _join_button: Button = $MarginContainer/GridContainer/JoinButton -@onready var _error_label: Label = $ErrorLabel +@onready var _name_edit: LineEdit = $Panel/MarginContainer/GridContainer/NameEdit +@onready var _address_edit: LineEdit = $Panel/MarginContainer/GridContainer/AddressEdit +@onready var _host_button: Button = $Panel/MarginContainer/GridContainer/HostButton +@onready var _join_button: Button = $Panel/MarginContainer/GridContainer/JoinButton +@onready var _error_label: Label = $Panel/ErrorLabel func _ready() -> void: