feat: Add core multiplayer lobby functionality including UI and state management.
This commit is contained in:
+1
-29
@@ -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")
|
||||||
|
|||||||
@@ -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"]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user