aboutsummaryrefslogtreecommitdiff
path: root/client/menu/lobby.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/menu/lobby.gd')
-rw-r--r--client/menu/lobby.gd51
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