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/lobby.gd | |
| 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/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 | 
