feat: Add core multiplayer lobby functionality including UI and state management.

This commit is contained in:
Yogi Wiguna
2026-03-26 17:39:24 +08:00
parent b0188066b1
commit e6d58002a7
2 changed files with 2 additions and 32 deletions
+1 -29
View File
@@ -467,12 +467,7 @@ func _update_settings_visibility() -> void:
sng_stop_option.disabled = not is_host sng_stop_option.disabled = not is_host
sng_goals_option.disabled = not is_host sng_goals_option.disabled = not is_host
var is_doors = LobbyManager.game_mode == "Tekton Doors" sng_goals_option.disabled = not is_host
if doors_settings_container:
doors_settings_container.visible = is_doors
doors_swap_option.disabled = not is_host
doors_refresh_option.disabled = not is_host
doors_goals_option.disabled = not is_host
func _create_custom_settings_ui() -> void: func _create_custom_settings_ui() -> void:
var settings_section = $LobbyPanel/TopBar/SettingsSection var settings_section = $LobbyPanel/TopBar/SettingsSection
@@ -501,29 +496,6 @@ func _create_custom_settings_ui() -> void:
sng_goals_option.item_selected.connect(func(idx): if LobbyManager.is_host: LobbyManager.set_sng_required_goals([5, 8, 12][idx])) sng_goals_option.item_selected.connect(func(idx): if LobbyManager.is_host: LobbyManager.set_sng_required_goals([5, 8, 12][idx]))
sng_settings_container.add_child(sng_goals_option) sng_settings_container.add_child(sng_goals_option)
# Tekton Doors
doors_settings_container = HBoxContainer.new()
doors_settings_container.visible = false
settings_section.add_child(doors_settings_container)
_add_label(doors_settings_container, "Swap Wait:")
doors_swap_option = OptionButton.new()
doors_swap_option.add_item("10s"); doors_swap_option.add_item("15s"); doors_swap_option.add_item("30s")
doors_swap_option.item_selected.connect(func(idx): if LobbyManager.is_host: LobbyManager.set_doors_swap_time([10, 15, 30][idx]))
doors_settings_container.add_child(doors_swap_option)
_add_label(doors_settings_container, "Tile Refresh:")
doors_refresh_option = OptionButton.new()
doors_refresh_option.add_item("15s"); doors_refresh_option.add_item("25s"); doors_refresh_option.add_item("40s")
doors_refresh_option.item_selected.connect(func(idx): if LobbyManager.is_host: LobbyManager.set_doors_refresh_time([15, 25, 40][idx]))
doors_settings_container.add_child(doors_refresh_option)
_add_label(doors_settings_container, "Req Goals:")
doors_goals_option = OptionButton.new()
doors_goals_option.add_item("5"); doors_goals_option.add_item("8"); doors_goals_option.add_item("12")
doors_goals_option.item_selected.connect(func(idx): if LobbyManager.is_host: LobbyManager.set_doors_required_goals([5, 8, 12][idx]))
doors_settings_container.add_child(doors_goals_option)
# Move Game Mode selector to the far right # Move Game Mode selector to the far right
var gm_spacer = settings_section.get_node_or_null("GameModeSpacer") var gm_spacer = settings_section.get_node_or_null("GameModeSpacer")
var gm_option = settings_section.get_node_or_null("GameModeOption") var gm_option = settings_section.get_node_or_null("GameModeOption")
+1 -3
View File
@@ -77,7 +77,7 @@ var rematch_votes: Array = [] # [player_id, ...]
# Character and area selection # Character and area selection
var available_characters: Array[String] = ["Copper", "Dabro", "Gatot", "Pip", "Random"] var available_characters: Array[String] = ["Copper", "Dabro", "Gatot", "Pip", "Random"]
var available_areas: Array[String] = [] var available_areas: Array[String] = []
var available_game_modes: Array[String] = ["Freemode", "Stop n Go", "Tekton Doors"] var available_game_modes: Array[String] = ["Freemode", "Stop n Go"]
var selected_area: String = "Classic" # Host-controlled var selected_area: String = "Classic" # Host-controlled
var game_mode: String = "Freemode" # Host-controlled var game_mode: String = "Freemode" # Host-controlled
var local_character_index: int = 0 # Local player's character index var local_character_index: int = 0 # Local player's character index
@@ -132,8 +132,6 @@ func _update_available_areas(mode: String) -> void:
available_areas = ["Classic", "Colloseum"] available_areas = ["Classic", "Colloseum"]
"Stop n Go": "Stop n Go":
available_areas = ["Stop N Go Arena"] available_areas = ["Stop N Go Arena"]
"Tekton Doors":
available_areas = ["Tekton Doors Arena"]
_: _:
available_areas = ["Classic"] available_areas = ["Classic"]