diff options
Diffstat (limited to 'client/menu/lobby.gd')
-rw-r--r-- | client/menu/lobby.gd | 51 |
1 files changed, 50 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 |