summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortpart <tpart120@proton.me>2024-08-10 23:55:22 +0200
committertpart <tpart120@proton.me>2024-08-10 23:55:22 +0200
commitfbcc21f2cb8c19e32a3e4b542535479ab7343169 (patch)
tree0bf4114e4c15d6095a08979e3efceef1feca07c2
parent519dc4d6b77ba59028c20c61c81f3801fcb811d2 (diff)
downloadhurrycurry-fbcc21f2cb8c19e32a3e4b542535479ab7343169.tar
hurrycurry-fbcc21f2cb8c19e32a3e4b542535479ab7343169.tar.bz2
hurrycurry-fbcc21f2cb8c19e32a3e4b542535479ab7343169.tar.zst
Show map list in lobby for quick selection
-rw-r--r--client/menu/lobby.gd10
-rw-r--r--client/menu/lobby.tscn16
-rw-r--r--client/menu/scroll_container_custom.gd3
3 files changed, 24 insertions, 5 deletions
diff --git a/client/menu/lobby.gd b/client/menu/lobby.gd
index 67b5ff8e..f2c5e1d7 100644
--- a/client/menu/lobby.gd
+++ b/client/menu/lobby.gd
@@ -30,6 +30,7 @@ var difficulty_names = [tr("Easy"), tr("Moderate"), tr("Hard"), tr("Very hard"),
@onready var map_name_label = $HBoxContainer/Bottom/MarginContainer/VBoxContainer/HBoxContainer/Map/Name
@onready var map_player_label = $HBoxContainer/Bottom/MarginContainer/VBoxContainer/HBoxContainer/Map/Players
@onready var map_difficulty_label = $HBoxContainer/Bottom/MarginContainer/VBoxContainer/HBoxContainer/Map/Difficulty
+@onready var map_list = $HBoxContainer/Bottom/MarginContainer/VBoxContainer/MapList/VBoxContainer
@onready var map_selector = $HBoxContainer/Bottom/MarginContainer/VBoxContainer/HBoxContainer
@onready var prev_map = $HBoxContainer/Bottom/MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/Left
@@ -47,6 +48,14 @@ func _ready():
func initialize():
map_count = game.maps.size()
+ var i := 0
+ for m in game.maps.keys():
+ var b = Button.new()
+ b.name = m
+ b.text = "%s (%d)" % [game.maps[m]["name"], game.maps[m]["players"]]
+ b.pressed.connect(select_map.bind(i))
+ map_list.add_child(b)
+ i += 1
select_map(0)
func select_map(i: int):
@@ -59,6 +68,7 @@ func select_map(i: int):
map_player_label.text = tr("%d players recommended") % map_data["players"]
map_difficulty_label.text = difficulty_names[map_data["difficulty"] - 1]
selected_map_name = k
+ map_list.get_child(i).grab_focus()
func update_players(player_list: Dictionary):
for i in player_container.get_children():
diff --git a/client/menu/lobby.tscn b/client/menu/lobby.tscn
index ea415417..e9bac46b 100644
--- a/client/menu/lobby.tscn
+++ b/client/menu/lobby.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=14 format=3 uid="uid://bc50la65ntifb"]
+[gd_scene load_steps=15 format=3 uid="uid://bc50la65ntifb"]
[ext_resource type="Theme" uid="uid://b0qmvo504e457" path="res://menu/theme/theme.tres" id="1_u18ke"]
[ext_resource type="Script" path="res://menu/lobby.gd" id="2_7657i"]
@@ -11,6 +11,7 @@
[ext_resource type="PackedScene" uid="uid://b1f7bgn65j7b5" path="res://menu/controller_buttons/controller_button.tscn" id="7_t6mox"]
[ext_resource type="FontFile" uid="uid://5ixo6b3bd3km" path="res://menu/theme/font-josefin-sans.woff2" id="8_cwbpa"]
[ext_resource type="Texture2D" uid="uid://bsx6fo7mv2u6a" path="res://menu/controller_buttons/x.svg" id="9_q14bw"]
+[ext_resource type="Script" path="res://menu/scroll_container_custom.gd" id="10_bgene"]
[ext_resource type="Texture2D" uid="uid://cr2a6ide6vnnv" path="res://menu/controller_buttons/y.svg" id="11_5uugf"]
[sub_resource type="FontVariation" id="FontVariation_5xxr2"]
@@ -107,13 +108,18 @@ texture_focused = ExtResource("6_tulu3")
ignore_texture_size = true
stretch_mode = 4
-[node name="Players" type="HBoxContainer" parent="HBoxContainer/Bottom/MarginContainer/VBoxContainer"]
+[node name="MapList" type="ScrollContainer" parent="HBoxContainer/Bottom/MarginContainer/VBoxContainer"]
layout_mode = 2
-alignment = 1
+size_flags_vertical = 3
+script = ExtResource("10_bgene")
-[node name="Spacer" type="Control" parent="HBoxContainer/Bottom/MarginContainer/VBoxContainer"]
+[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/Bottom/MarginContainer/VBoxContainer/MapList"]
layout_mode = 2
-size_flags_vertical = 3
+size_flags_horizontal = 3
+
+[node name="Players" type="HBoxContainer" parent="HBoxContainer/Bottom/MarginContainer/VBoxContainer"]
+layout_mode = 2
+alignment = 1
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/Bottom/MarginContainer/VBoxContainer"]
layout_mode = 2
diff --git a/client/menu/scroll_container_custom.gd b/client/menu/scroll_container_custom.gd
index 73780ae2..cc578bb1 100644
--- a/client/menu/scroll_container_custom.gd
+++ b/client/menu/scroll_container_custom.gd
@@ -21,6 +21,9 @@ class_name ScrollContainerCustom
const SCROLL_SPEED := 1000.
var velocity := 0.
+func _init():
+ follow_focus = true
+
func _process(delta):
velocity = G.interpolate(velocity, 0., delta * 5.)
velocity = 0. if abs(velocity) < .001 else velocity