refactor networker and menus

This commit is contained in:
Teatov 2025-02-15 00:33:40 +10:00
parent df06be7542
commit fa6cf57e0c
8 changed files with 36 additions and 32 deletions

View File

@ -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

View File

@ -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:

View File

@ -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)

View File

@ -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)

View File

@ -1,8 +1,6 @@
class_name Main
extends Node
var menu: Menu
@onready var player_holder: Node = $Players
@onready var _player_spawner: MultiplayerSpawner = $PlayerSpawner

View File

@ -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()

View File

@ -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)

View File

@ -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: