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_goals_option.disabled = not is_host
|
||||
|
||||
var is_doors = LobbyManager.game_mode == "Tekton Doors"
|
||||
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
|
||||
sng_goals_option.disabled = not is_host
|
||||
|
||||
func _create_custom_settings_ui() -> void:
|
||||
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_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
|
||||
var gm_spacer = settings_section.get_node_or_null("GameModeSpacer")
|
||||
var gm_option = settings_section.get_node_or_null("GameModeOption")
|
||||
|
||||
@@ -77,7 +77,7 @@ var rematch_votes: Array = [] # [player_id, ...]
|
||||
# Character and area selection
|
||||
var available_characters: Array[String] = ["Copper", "Dabro", "Gatot", "Pip", "Random"]
|
||||
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 game_mode: String = "Freemode" # Host-controlled
|
||||
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"]
|
||||
"Stop n Go":
|
||||
available_areas = ["Stop N Go Arena"]
|
||||
"Tekton Doors":
|
||||
available_areas = ["Tekton Doors Arena"]
|
||||
_:
|
||||
available_areas = ["Classic"]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user