Skip to content

Commit 3223cce

Browse files
authored
Move leaderboards into speedrun modes (#30)
1 parent 2a554ea commit 3223cce

3 files changed

Lines changed: 53 additions & 25 deletions

File tree

src/menus/main/main_menu.gd

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,11 @@ func _ready() -> void:
5656
func _instantiate_maps() -> void:
5757
var mode_to_container: Dictionary[String, ModeContainer]
5858

59-
for child: ModeContainer in mode_switcher.get_children():
60-
mode_to_container[child.mode] = child
59+
for child in mode_switcher.get_children():
60+
if child is not ModeContainer:
61+
continue
62+
var mode_container := child as ModeContainer
63+
mode_to_container[mode_container.mode] = mode_container
6164

6265
mode_to_container[Global.game_manager.current_mode].visible = true
6366

src/menus/main/main_menu.tscn

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ grow_horizontal = 2
159159
grow_vertical = 2
160160
theme = ExtResource("1_wwn1r")
161161
script = ExtResource("1_cput1")
162-
target_practice_leaderboard = NodePath("MarginContainer/Content/Body/Leaderboard/Overall/H/VBoxContainer/TargetPracticeLeaderboard")
163-
movement_only_leaderboard = NodePath("MarginContainer/Content/Body/Leaderboard/Overall/H/VBoxContainer2/MovementOnlyLeaderboard")
162+
target_practice_leaderboard = NodePath("MarginContainer/Content/Body/Speedrun/M/V/ModeSwitcher/Leaderboard/Overall/H/VBoxContainer/TargetPracticeLeaderboard")
163+
movement_only_leaderboard = NodePath("MarginContainer/Content/Body/Speedrun/M/V/ModeSwitcher/Leaderboard/Overall/H/VBoxContainer2/MovementOnlyLeaderboard")
164164

165165
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1955005440]
166166
layout_mode = 1
@@ -283,22 +283,12 @@ mode = "bhop"
283283
metadata/_custom_type_script = "uid://be34vbfubnjti"
284284
metadata/_tab_index = 1
285285

286-
[node name="Aim Trainer" parent="MarginContainer/Content/Body" unique_id=792485455 instance=ExtResource("17_aim")]
287-
visible = false
288-
layout_mode = 2
289-
metadata/_tab_index = 1
290-
291-
[node name="Server Browser" parent="MarginContainer/Content/Body" unique_id=1793080607 instance=ExtResource("6_og6j4")]
286+
[node name="Leaderboard" type="Control" parent="MarginContainer/Content/Body/Speedrun/M/V/ModeSwitcher" unique_id=1078392968]
292287
visible = false
293288
layout_mode = 2
294289
metadata/_tab_index = 2
295290

296-
[node name="Leaderboard" type="Control" parent="MarginContainer/Content/Body" unique_id=1078392968]
297-
visible = false
298-
layout_mode = 2
299-
metadata/_tab_index = 3
300-
301-
[node name="Overall" type="VBoxContainer" parent="MarginContainer/Content/Body/Leaderboard" unique_id=1926363149]
291+
[node name="Overall" type="VBoxContainer" parent="MarginContainer/Content/Body/Speedrun/M/V/ModeSwitcher/Leaderboard" unique_id=1926363149]
302292
layout_mode = 1
303293
anchors_preset = 8
304294
anchor_left = 0.5
@@ -313,44 +303,54 @@ grow_horizontal = 2
313303
grow_vertical = 2
314304
theme_override_constants/separation = 20
315305

316-
[node name="H" type="HBoxContainer" parent="MarginContainer/Content/Body/Leaderboard/Overall" unique_id=257135821]
306+
[node name="H" type="HBoxContainer" parent="MarginContainer/Content/Body/Speedrun/M/V/ModeSwitcher/Leaderboard/Overall" unique_id=257135821]
317307
layout_mode = 2
318308
theme = SubResource("Theme_og6j4")
319309
theme_override_constants/separation = 50
320310

321-
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/Content/Body/Leaderboard/Overall/H" unique_id=1128228830]
311+
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/Content/Body/Speedrun/M/V/ModeSwitcher/Leaderboard/Overall/H" unique_id=1128228830]
322312
layout_mode = 2
323313

324-
[node name="Label" type="Label" parent="MarginContainer/Content/Body/Leaderboard/Overall/H/VBoxContainer" unique_id=637673176]
314+
[node name="Label" type="Label" parent="MarginContainer/Content/Body/Speedrun/M/V/ModeSwitcher/Leaderboard/Overall/H/VBoxContainer" unique_id=637673176]
325315
layout_mode = 2
326316
theme_override_font_sizes/font_size = 25
327317
text = "Target Practice"
328318

329-
[node name="TargetPracticeLeaderboard" type="VBoxContainer" parent="MarginContainer/Content/Body/Leaderboard/Overall/H/VBoxContainer" unique_id=1291506203]
319+
[node name="TargetPracticeLeaderboard" type="VBoxContainer" parent="MarginContainer/Content/Body/Speedrun/M/V/ModeSwitcher/Leaderboard/Overall/H/VBoxContainer" unique_id=1291506203]
330320
layout_mode = 2
331321

332-
[node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/Content/Body/Leaderboard/Overall/H" unique_id=15554509]
322+
[node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/Content/Body/Speedrun/M/V/ModeSwitcher/Leaderboard/Overall/H" unique_id=15554509]
333323
layout_mode = 2
334324

335-
[node name="Label" type="Label" parent="MarginContainer/Content/Body/Leaderboard/Overall/H/VBoxContainer2" unique_id=2137644706]
325+
[node name="Label" type="Label" parent="MarginContainer/Content/Body/Speedrun/M/V/ModeSwitcher/Leaderboard/Overall/H/VBoxContainer2" unique_id=2137644706]
336326
layout_mode = 2
337327
theme_override_font_sizes/font_size = 25
338328
text = "Movement Only"
339329

340-
[node name="MovementOnlyLeaderboard" type="VBoxContainer" parent="MarginContainer/Content/Body/Leaderboard/Overall/H/VBoxContainer2" unique_id=257067248]
330+
[node name="MovementOnlyLeaderboard" type="VBoxContainer" parent="MarginContainer/Content/Body/Speedrun/M/V/ModeSwitcher/Leaderboard/Overall/H/VBoxContainer2" unique_id=257067248]
341331
layout_mode = 2
342332

343-
[node name="Label" type="Label" parent="MarginContainer/Content/Body/Leaderboard/Overall" unique_id=1815162472]
333+
[node name="Label" type="Label" parent="MarginContainer/Content/Body/Speedrun/M/V/ModeSwitcher/Leaderboard/Overall" unique_id=1815162472]
344334
layout_mode = 2
345335
theme_override_font_sizes/font_size = 13
346336
text = "Points are given based on runs in the top 10.
347337
1st place is 10 points, 2nd place is 9 points, etc.."
348338
horizontal_alignment = 1
349339

340+
[node name="Aim Trainer" parent="MarginContainer/Content/Body" unique_id=792485455 instance=ExtResource("17_aim")]
341+
visible = false
342+
layout_mode = 2
343+
metadata/_tab_index = 1
344+
345+
[node name="Server Browser" parent="MarginContainer/Content/Body" unique_id=1793080607 instance=ExtResource("6_og6j4")]
346+
visible = false
347+
layout_mode = 2
348+
metadata/_tab_index = 2
349+
350350
[node name="Settings" type="Control" parent="MarginContainer/Content/Body" unique_id=1145642441]
351351
visible = false
352352
layout_mode = 2
353-
metadata/_tab_index = 4
353+
metadata/_tab_index = 3
354354

355355
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/Content/Body/Settings" unique_id=199957781]
356356
layout_mode = 1

tests/aim_menu_smoke.gd

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,31 @@ func _run() -> void:
5656
main_menu.has_node("MarginContainer/Content/Body/Aim Trainer"),
5757
"Main menu should expose an Aim Trainer tab",
5858
)
59+
var speedrun_modes_path := "MarginContainer/Content/Body/Speedrun/M/V/ModeSwitcher"
60+
var speedrun_leaderboard_path := speedrun_modes_path + "/Leaderboard"
61+
var target_leaderboard_path := speedrun_leaderboard_path + "/Overall/H/VBoxContainer/TargetPracticeLeaderboard"
62+
var movement_leaderboard_path := speedrun_leaderboard_path + "/Overall/H/VBoxContainer2/MovementOnlyLeaderboard"
63+
var speedrun_modes = main_menu.get_node(speedrun_modes_path)
64+
_check(
65+
speedrun_modes.get_tab_count() == 3,
66+
"Speedrun should expose Target Practice, Movement Only, and Leaderboard tabs",
67+
)
68+
_check(
69+
main_menu.has_node(speedrun_leaderboard_path),
70+
"Speedrun should expose a dedicated leaderboard mode tab",
71+
)
72+
_check(
73+
main_menu.has_node(target_leaderboard_path),
74+
"Speedrun leaderboard tab should expose Target Practice rankings",
75+
)
76+
_check(
77+
main_menu.has_node(movement_leaderboard_path),
78+
"Speedrun leaderboard tab should expose Movement Only rankings",
79+
)
80+
_check(
81+
not main_menu.has_node("MarginContainer/Content/Body/Leaderboard"),
82+
"Main menu should not expose a separate Leaderboard tab",
83+
)
5984

6085
var global_node = root.get_node_or_null("Global")
6186
_check(global_node != null, "Global autoload should exist during the smoke test")

0 commit comments

Comments
 (0)