diff options
Diffstat (limited to 'scripts/MainMenu.gd')
| -rw-r--r-- | scripts/MainMenu.gd | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/scripts/MainMenu.gd b/scripts/MainMenu.gd new file mode 100644 index 0000000..fca6658 --- /dev/null +++ b/scripts/MainMenu.gd @@ -0,0 +1,84 @@ +extends Control + +signal game_host_request(args) +signal game_join_request(args) + +var lobby_name_changed : bool = false # automatically update lobby name to be based on player's name + +func _ready(): + $BackButton.connect("pressed", self, "back_button") + $HostMenuButton.connect("pressed", self, "host_menu_button_pressed") + $JoinMenuButton.connect("pressed", self, "join_menu_button_pressed") + $SettingsButton.connect("pressed", self, "settings_menu_button_pressed") + $HostMenu/PrivateToggle.connect("toggled", $HostMenu/Password, "set_visible") + $SettingsMenu/GameCoordinatorURL.connect("text_changed", Globals, "update_gc_url") + $PlayerInfo/Username.connect("text_changed", self, "automatically_update_lobby_name") + $HostMenu/GameName.connect("text_changed", self, "set_lobby_name_changed") + #main_menu() # in case things are incorrectly visible from editing + + +func set_lobby_name_changed(_disregard_new_text): + lobby_name_changed = true + +func automatically_update_lobby_name(username : String): + if lobby_name_changed: return + var suffix : String = "' Game" if username.ends_with("s") else "'s Game" + $HostMenu/GameName.set_text(username + suffix) + +func main_menu(): + set_menu_buttons_visible(true) + set_player_info_visible(false) + set_join_menu_visible(false) + set_host_menu_visible(false) + set_settings_menu_visible(false) + set_back_button_visible(false) + +func set_menu_buttons_visible(visible : bool): + $HostMenuButton.visible = visible + $JoinMenuButton.visible = visible + $SettingsButton.visible = visible + +func set_player_info_visible(visible : bool): + $PlayerInfo.visible = visible + +func set_join_menu_visible(visible : bool): + $JoinMenu.visible = visible + +func set_host_menu_visible(visible : bool): + $HostMenu.visible = visible + +func set_settings_menu_visible(visible : bool): + $SettingsMenu.visible = visible + +func set_back_button_visible(visible : bool): + $BackButton.visible = visible + $BackButton.disabled = false # reset in case left disabled by other function + +# go to join game menu +func join_menu_button_pressed(lobby_id_from_url : String = "", password_from_url : String = ""): + set_menu_buttons_visible(false) + set_player_info_visible(true) + set_join_menu_visible(true) + set_back_button_visible(true) + if lobby_id_from_url: + $JoinMenu/LobbyID.text = lobby_id_from_url + if password_from_url: + $JoinMenu/Password.text = password_from_url + +# go to host game menu +func host_menu_button_pressed(): + set_menu_buttons_visible(false) + set_player_info_visible(true) + set_host_menu_visible(true) + set_back_button_visible(true) + +# go to settings menu +func settings_menu_button_pressed(): + $SettingsMenu/GameCoordinatorURL.text = Globals.GC_URL + set_menu_buttons_visible(false) + set_settings_menu_visible(true) + set_back_button_visible(true) + +# return to main menu +func back_button(): + main_menu() |
