diff options
author | tpart <tpart120@proton.me> | 2024-08-15 21:33:50 +0200 |
---|---|---|
committer | tpart <tpart120@proton.me> | 2024-08-15 21:34:00 +0200 |
commit | bac2a7a1bae77b6aae1f65de894fb634a8b077d6 (patch) | |
tree | 45e1ad2b4782c92a0db99397b41a4091220d52f2 /client/menu | |
parent | 3b5e46e4118b0c5e3f2f9a4ea0f2860a1641e842 (diff) | |
download | hurrycurry-bac2a7a1bae77b6aae1f65de894fb634a8b077d6.tar hurrycurry-bac2a7a1bae77b6aae1f65de894fb634a8b077d6.tar.bz2 hurrycurry-bac2a7a1bae77b6aae1f65de894fb634a8b077d6.tar.zst |
Add bot UI to lobby menu
Diffstat (limited to 'client/menu')
-rw-r--r-- | client/menu/lobby.gd | 51 | ||||
-rw-r--r-- | client/menu/lobby.tscn | 13 |
2 files changed, 63 insertions, 1 deletions
diff --git a/client/menu/lobby.gd b/client/menu/lobby.gd index d1b186f7..ed46e848 100644 --- a/client/menu/lobby.gd +++ b/client/menu/lobby.gd @@ -22,6 +22,14 @@ const PLAYER = preload("res://menu/lobby/player.tscn") var map_count var selected_map := 0 var selected_map_name: String + +var bot_counts := {} +var bot_reset_buttons := {} +var bot_display_names := { + "simple": tr("Simple chef"), + "waiter": tr("Waiter"), +} + var difficulty_names = [tr("Easy"), tr("Moderate"), tr("Hard"), tr("Very hard"), tr("Unplayable")] @onready var game: Game = $"../Game" @@ -35,6 +43,9 @@ var difficulty_names = [tr("Easy"), tr("Moderate"), tr("Hard"), tr("Very hard"), @onready var map_selector = $HBoxContainer/Bottom/MarginContainer/VBoxContainer/HBoxContainer @onready var prev_map = $HBoxContainer/Bottom/MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/Left @onready var next_map = $HBoxContainer/Bottom/MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer2/Right + +@onready var bot_settings = $HBoxContainer/Bottom/MarginContainer/VBoxContainer/Bots/BotSettings + @onready var join_spectate = $HBoxContainer/Bottom/MarginContainer/VBoxContainer/VBoxContainer/JoinSpectate @onready var start_button = $HBoxContainer/Bottom/MarginContainer/VBoxContainer/VBoxContainer/Start @@ -52,7 +63,7 @@ func initialize(): c.queue_free() var i := 0 for m in game.maps: - var b = Button.new() + var b := Button.new() b.name = m[0] b.text = "%s (%d)" % [m[1]["name"], m[1]["players"]] b.pressed.connect(select_map.bind(i)) @@ -60,6 +71,26 @@ func initialize(): map_list.add_child(b) i += 1 select_map(0) + + for algo_id: String in game.bot_algos: + bot_counts[algo_id] = 0 + + var h := HBoxContainer.new() + h.name = algo_id + var add := Button.new() + add.text = "+" + var reset := Button.new() + bot_reset_buttons[algo_id] = reset + update_bot_reset_text(algo_id) + reset.size_flags_horizontal = Control.SIZE_EXPAND_FILL + var remove := Button.new() + remove.text = "-" + h.add_child(remove) + h.add_child(reset) + h.add_child(add) + add.pressed.connect(increase_bot_count.bind(algo_id)) + remove.pressed.connect(decrease_bot_count.bind(algo_id)) + bot_settings.add_child(h) func select_map(i: int): if i >= map_count: @@ -72,6 +103,21 @@ func select_map(i: int): selected_map_name = game.maps[i][0] map_list.get_child(i).grab_focus() +func increase_bot_count(algo_id: String): + bot_counts[algo_id] = bot_counts[algo_id] + 1 + update_bot_reset_text(algo_id) + +func decrease_bot_count(algo_id: String): + var new_count = bot_counts[algo_id] - 1 + if new_count < 0: + return + bot_counts[algo_id] = new_count + update_bot_reset_text(algo_id) + +func update_bot_reset_text(algo_id: String): + var display_name: String = bot_display_names[algo_id] if bot_display_names.has(algo_id) else algo_id + bot_reset_buttons[algo_id].text = "%s (%d)" % [display_name, bot_counts[algo_id]] + func update_players(player_list: Dictionary): for i in player_container.get_children(): i.queue_free() @@ -124,3 +170,6 @@ func check_for_music(): Sound.play_music("Lobby") else: Sound.play_music("stop") # TODO: Game music enter + +func _on_enable_bots_toggled(toggled_on): + bot_settings.visible = toggled_on diff --git a/client/menu/lobby.tscn b/client/menu/lobby.tscn index ebf5871b..69ad83fd 100644 --- a/client/menu/lobby.tscn +++ b/client/menu/lobby.tscn @@ -123,6 +123,18 @@ size_flags_horizontal = 3 layout_mode = 2 alignment = 1 +[node name="Bots" type="VBoxContainer" parent="HBoxContainer/Bottom/MarginContainer/VBoxContainer"] +layout_mode = 2 + +[node name="EnableBots" type="CheckButton" parent="HBoxContainer/Bottom/MarginContainer/VBoxContainer/Bots"] +layout_mode = 2 +text = "Enable bots" + +[node name="BotSettings" type="VBoxContainer" parent="HBoxContainer/Bottom/MarginContainer/VBoxContainer/Bots"] +visible = false +layout_mode = 2 +size_flags_vertical = 3 + [node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/Bottom/MarginContainer/VBoxContainer"] layout_mode = 2 theme_override_constants/separation = 15 @@ -147,5 +159,6 @@ press_action = "start_game" [connection signal="visibility_changed" from="." to="." method="check_for_music"] [connection signal="pressed" from="HBoxContainer/Bottom/MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/Left" to="." method="_on_left_pressed"] [connection signal="pressed" from="HBoxContainer/Bottom/MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer2/Right" to="." method="_on_right_pressed"] +[connection signal="toggled" from="HBoxContainer/Bottom/MarginContainer/VBoxContainer/Bots/EnableBots" to="." method="_on_enable_bots_toggled"] [connection signal="pressed" from="HBoxContainer/Bottom/MarginContainer/VBoxContainer/VBoxContainer/JoinSpectate" to="." method="_on_join_spectate_pressed"] [connection signal="pressed" from="HBoxContainer/Bottom/MarginContainer/VBoxContainer/VBoxContainer/Start" to="." method="_on_controller_button_pressed"] |