From 41974ea5e327dd5a250dec74c0bcbe53dd7ec674 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Wed, 7 Oct 2026 22:08:53 +0200 Subject: [PATCH] Show in the top bar when a newer version is available At start and after switching server, the game asks the server for the newest MusicPlayer release and shows "Version X is available" in the top bar when it is newer than this one. --- main/TopBar.tscn | 14 + main/main_window.gd | 1 + main/top_bar.gd | 31 + tests/data/layout_baseline.json | 3881 +++++++++++++++++++ tests/fakes/main_window_test_suite.gd | 1 + tests/fakes/ui_tour.gd | 8 + tests/integration/test_scene_split.gd | 2 +- tests/integration/test_update_notice.gd | 74 + tests/integration/test_update_notice.gd.uid | 1 + 9 files changed, 4012 insertions(+), 1 deletion(-) create mode 100644 tests/integration/test_update_notice.gd create mode 100644 tests/integration/test_update_notice.gd.uid diff --git a/main/TopBar.tscn b/main/TopBar.tscn index 13cb8f4..450329c 100644 --- a/main/TopBar.tscn +++ b/main/TopBar.tscn @@ -39,6 +39,20 @@ theme_type_variation = &"HighlightLarge" text = "DEBUG" vertical_alignment = 1 +[node name="UpdateLabel" type="Label" parent="." unique_id=1959221258] +visible = false +layout_mode = 0 +offset_left = 1096.0 +offset_top = 12.0 +offset_right = 1432.0 +offset_bottom = 50.0 +mouse_filter = 1 +theme_type_variation = &"HighlightMedium" +text = "Version 0.0.0 is available" +horizontal_alignment = 2 +vertical_alignment = 1 +text_overrun_behavior = 3 + [node name="SyncButton" type="Button" parent="." unique_id=1228313556] layout_mode = 0 offset_left = 1450.0 diff --git a/main/main_window.gd b/main/main_window.gd index accb526..0ea17aa 100644 --- a/main/main_window.gd +++ b/main/main_window.gd @@ -38,6 +38,7 @@ func _ready() -> void: sync_popup.sync_started.connect(_on_sync_started) sync_popup.sync_finished.connect(_on_sync_finished) quiz.server_changed.connect(search_popup.get_list_of_soundtracks) + quiz.server_changed.connect(top_bar.check_for_update) quiz.event_logged.connect(log_popup.add_log_row) statistics_view.soundtrack_selected.connect(soundtrack_stats_popup.show_soundtrack) diff --git a/main/top_bar.gd b/main/top_bar.gd index ae09e90..3b1c9b5 100644 --- a/main/top_bar.gd +++ b/main/top_bar.gd @@ -13,6 +13,7 @@ signal tab_selected(tab: StringName) @onready var sync_button: Button = $SyncButton @onready var debug_label: Label = $DebugLabel +@onready var update_label: Label = $UpdateLabel @onready var quiz_tab: Button = $QuizTab @onready var statistics_tab: Button = $StatisticsTab @@ -27,6 +28,36 @@ func _ready() -> void: $QRButton.pressed.connect(qr_pressed.emit) quiz_tab.pressed.connect(tab_selected.emit.bind(&"quiz")) statistics_tab.pressed.connect(tab_selected.emit.bind(&"statistics")) + check_for_update() + + +## Asks the server for the newest MusicPlayer release and tells the user when it is newer +## than this one. +func check_for_update() -> void: + MusicServerClient.fetch_latest_client_version(show_latest_version) + + +## Shows that [param latest] is available when it is newer than this version, and hides +## the message otherwise. +func show_latest_version(latest: Variant) -> void: + var newer: bool = latest is String && is_newer_version(latest, Settings.version) + update_label.visible = newer + if newer: + update_label.text = "Version %s is available" % latest + update_label.tooltip_text = "You have %s" % Settings.version + + +## Whether version [param latest] is newer than [param current], comparing numbers such as +## [code]1.10.0[/code] part by part. A leading "v" is ignored, and missing parts count as 0. +static func is_newer_version(latest: String, current: String) -> bool: + var latest_parts: PackedStringArray = latest.strip_edges().trim_prefix("v").split(".") + var current_parts: PackedStringArray = current.strip_edges().trim_prefix("v").split(".") + for i: int in maxi(latest_parts.size(), current_parts.size()): + var a: int = latest_parts[i].to_int() if i < latest_parts.size() else 0 + var b: int = current_parts[i].to_int() if i < current_parts.size() else 0 + if a != b: + return a > b + return false ## Shows [param tab] as the chosen tab, without emitting [signal tab_selected]. diff --git a/tests/data/layout_baseline.json b/tests/data/layout_baseline.json index 888c950..1b93e88 100644 --- a/tests/data/layout_baseline.json +++ b/tests/data/layout_baseline.json @@ -3401,6 +3401,15 @@ 56.0 ], "visible": true + }, + "TopBar/UpdateLabel": { + "rect": [ + 1096.0, + 12.0, + 336.0, + 38.0 + ], + "visible": false } }, "players_added": { @@ -7021,6 +7030,15 @@ 56.0 ], "visible": true + }, + "TopBar/UpdateLabel": { + "rect": [ + 1096.0, + 12.0, + 336.0, + 38.0 + ], + "visible": false } }, "playing": { @@ -10758,6 +10776,15 @@ 56.0 ], "visible": true + }, + "TopBar/UpdateLabel": { + "rect": [ + 1096.0, + 12.0, + 336.0, + 38.0 + ], + "visible": false } }, "popup_AboutWindow": { @@ -17599,6 +17626,15 @@ 56.0 ], "visible": true + }, + "TopBar/UpdateLabel": { + "rect": [ + 1096.0, + 12.0, + 336.0, + 38.0 + ], + "visible": false } }, "statistics": { @@ -25536,6 +25572,15 @@ 56.0 ], "visible": true + }, + "TopBar/UpdateLabel": { + "rect": [ + 1096.0, + 12.0, + 336.0, + 38.0 + ], + "visible": false } }, "sync_in_progress": { @@ -26135,5 +26180,3841 @@ ], "visible": true } + }, + "update_available": { + ".": { + "rect": [ + 0.0, + 0.0, + 1920.0, + 1080.0 + ], + "visible": true + }, + "AboutPopup": { + "rect": [ + 360.0, + 220.0, + 1920.0, + 1080.0 + ], + "visible": false + }, + "AboutPopup/AboutPanel": { + "rect": [ + 360.0, + 220.0, + 1200.0, + 640.0 + ], + "visible": false + }, + "AboutPopup/AboutPanel/Columns": { + "rect": [ + 380.0, + 316.0, + 1160.0, + 534.0 + ], + "visible": false + }, + "AboutPopup/AboutPanel/Columns/ScrollContainer": { + "rect": [ + 380.0, + 316.0, + 560.0, + 534.0 + ], + "visible": false + }, + "AboutPopup/AboutPanel/Columns/ScrollContainer/ContentVBox": { + "rect": [ + 380.0, + 316.0, + 552.0, + 2032.0 + ], + "visible": false + }, + "AboutPopup/AboutPanel/Columns/ScrollContainer/ContentVBox/PlayerHeader": { + "rect": [ + 380.0, + 316.0, + 552.0, + 28.0 + ], + "visible": false + }, + "AboutPopup/AboutPanel/Columns/ScrollContainer/ContentVBox/VersionLabel": { + "rect": [ + 380.0, + 348.0, + 552.0, + 23.0 + ], + "visible": false + }, + "AboutPopup/AboutPanel/Columns/ScrollContainer/ContentVBox/WhatsNewLabel": { + "rect": [ + 380.0, + 375.0, + 552.0, + 1973.0 + ], + "visible": false + }, + "AboutPopup/AboutPanel/Columns/ServerScrollContainer": { + "rect": [ + 980.0, + 316.0, + 560.0, + 534.0 + ], + "visible": false + }, + "AboutPopup/AboutPanel/Columns/ServerScrollContainer/ServerContentVBox": { + "rect": [ + 980.0, + 316.0, + 560.0, + 534.0 + ], + "visible": false + }, + "AboutPopup/AboutPanel/Columns/ServerScrollContainer/ServerContentVBox/ServerHeader": { + "rect": [ + 980.0, + 316.0, + 560.0, + 28.0 + ], + "visible": false + }, + "AboutPopup/AboutPanel/Columns/ServerScrollContainer/ServerContentVBox/ServerHistoryLabel": { + "rect": [ + 980.0, + 375.0, + 560.0, + 309.0 + ], + "visible": false + }, + "AboutPopup/AboutPanel/Columns/ServerScrollContainer/ServerContentVBox/ServerVersionLabel": { + "rect": [ + 980.0, + 348.0, + 560.0, + 23.0 + ], + "visible": false + }, + "AboutPopup/AboutPanel/DescriptionLabel": { + "rect": [ + 380.0, + 270.0, + 1160.0, + 30.0 + ], + "visible": false + }, + "AboutPopup/AboutPanel/TitleLabel": { + "rect": [ + 360.0, + 220.0, + 1200.0, + 50.0 + ], + "visible": false + }, + "Background": { + "rect": [ + 0.0, + 0.0, + 1920.0, + 1080.0 + ], + "visible": true + }, + "LogPopup": { + "rect": [ + 610.0, + 190.0, + 2620.0, + 1780.0 + ], + "visible": false + }, + "LogPopup/LogPanel": { + "rect": [ + 610.0, + 190.0, + 700.0, + 700.0 + ], + "visible": false + }, + "LogPopup/LogPanel/EmptyLabel": { + "rect": [ + 630.0, + 270.0, + 660.0, + 30.0 + ], + "visible": false + }, + "LogPopup/LogPanel/LogScrollContainer": { + "rect": [ + 630.0, + 246.0, + 660.0, + 628.0 + ], + "visible": false + }, + "LogPopup/LogPanel/LogScrollContainer/LogVBoxContainer": { + "rect": [ + 630.0, + 246.0, + 660.0, + 98.0 + ], + "visible": false + }, + "LogPopup/LogPanel/LogScrollContainer/LogVBoxContainer/#0": { + "rect": [ + 630.0, + 246.0, + 660.0, + 32.0 + ], + "visible": false + }, + "LogPopup/LogPanel/LogScrollContainer/LogVBoxContainer/#0/#0": { + "rect": [ + 638.0, + 248.0, + 644.0, + 28.0 + ], + "visible": false + }, + "LogPopup/LogPanel/LogScrollContainer/LogVBoxContainer/#1": { + "rect": [ + 630.0, + 279.0, + 660.0, + 32.0 + ], + "visible": false + }, + "LogPopup/LogPanel/LogScrollContainer/LogVBoxContainer/#1/#0": { + "rect": [ + 638.0, + 281.0, + 644.0, + 28.0 + ], + "visible": false + }, + "LogPopup/LogPanel/LogScrollContainer/LogVBoxContainer/#2": { + "rect": [ + 630.0, + 312.0, + 660.0, + 32.0 + ], + "visible": false + }, + "LogPopup/LogPanel/LogScrollContainer/LogVBoxContainer/#2/#0": { + "rect": [ + 638.0, + 314.0, + 644.0, + 28.0 + ], + "visible": false + }, + "LogPopup/LogPanel/TitleLabel": { + "rect": [ + 610.0, + 198.0, + 700.0, + 40.0 + ], + "visible": false + }, + "PopupBackdrop": { + "rect": [ + 0.0, + 0.0, + 1920.0, + 1080.0 + ], + "visible": false + }, + "QRPopup": { + "rect": [ + 735.0, + 270.0, + 1920.0, + 1080.0 + ], + "visible": false + }, + "QRPopup/QRPanel": { + "rect": [ + 735.0, + 270.0, + 450.0, + 540.0 + ], + "visible": false + }, + "QRPopup/QRPanel/QRCodeRect": { + "rect": [ + 755.0, + 330.0, + 410.0, + 410.0 + ], + "visible": false + }, + "QRPopup/QRPanel/TitleLabel": { + "rect": [ + 735.0, + 278.0, + 450.0, + 48.0 + ], + "visible": false + }, + "QRPopup/QRPanel/URLLabel": { + "rect": [ + 755.0, + 752.0, + 410.0, + 40.0 + ], + "visible": false + }, + "Quiz": { + "rect": [ + 0.0, + 0.0, + 1920.0, + 1080.0 + ], + "visible": true + }, + "Quiz/CharacterSelectPopup": { + "rect": [ + 170.0, + 180.0, + 1580.0, + 720.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel": { + "rect": [ + 170.0, + 180.0, + 1580.0, + 720.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer": { + "rect": [ + 194.0, + 240.0, + 1540.0, + 644.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap": { + "rect": [ + 194.0, + 240.0, + 1532.0, + 474.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer": { + "rect": [ + 194.0, + 240.0, + 1500.0, + 474.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#1": { + "rect": [ + 194.0, + 240.0, + 240.0, + 150.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#1/VBoxContainer": { + "rect": [ + 204.0, + 250.0, + 220.0, + 134.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#1/VBoxContainer/CharacterName": { + "rect": [ + 204.0, + 250.0, + 1.0, + 23.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#1/VBoxContainer/CharacterTextureRect": { + "rect": [ + 204.0, + 250.0, + 200.0, + 100.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#10": { + "rect": [ + 194.0, + 240.0, + 240.0, + 150.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#10/VBoxContainer": { + "rect": [ + 204.0, + 250.0, + 220.0, + 134.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#10/VBoxContainer/CharacterName": { + "rect": [ + 204.0, + 250.0, + 1.0, + 23.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#10/VBoxContainer/CharacterTextureRect": { + "rect": [ + 204.0, + 250.0, + 200.0, + 100.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#11": { + "rect": [ + 194.0, + 240.0, + 240.0, + 150.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#11/VBoxContainer": { + "rect": [ + 204.0, + 250.0, + 220.0, + 134.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#11/VBoxContainer/CharacterName": { + "rect": [ + 204.0, + 250.0, + 1.0, + 23.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#11/VBoxContainer/CharacterTextureRect": { + "rect": [ + 204.0, + 250.0, + 200.0, + 100.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#12": { + "rect": [ + 194.0, + 240.0, + 240.0, + 150.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#12/VBoxContainer": { + "rect": [ + 204.0, + 250.0, + 220.0, + 134.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#12/VBoxContainer/CharacterName": { + "rect": [ + 204.0, + 250.0, + 1.0, + 23.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#12/VBoxContainer/CharacterTextureRect": { + "rect": [ + 204.0, + 250.0, + 200.0, + 100.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#2": { + "rect": [ + 194.0, + 240.0, + 240.0, + 150.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#2/VBoxContainer": { + "rect": [ + 204.0, + 250.0, + 220.0, + 134.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#2/VBoxContainer/CharacterName": { + "rect": [ + 204.0, + 250.0, + 1.0, + 23.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#2/VBoxContainer/CharacterTextureRect": { + "rect": [ + 204.0, + 250.0, + 200.0, + 100.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#3": { + "rect": [ + 194.0, + 240.0, + 240.0, + 150.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#3/VBoxContainer": { + "rect": [ + 204.0, + 250.0, + 220.0, + 134.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#3/VBoxContainer/CharacterName": { + "rect": [ + 204.0, + 250.0, + 1.0, + 23.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#3/VBoxContainer/CharacterTextureRect": { + "rect": [ + 204.0, + 250.0, + 200.0, + 100.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#4": { + "rect": [ + 194.0, + 240.0, + 240.0, + 150.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#4/VBoxContainer": { + "rect": [ + 204.0, + 250.0, + 220.0, + 134.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#4/VBoxContainer/CharacterName": { + "rect": [ + 204.0, + 250.0, + 1.0, + 23.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#4/VBoxContainer/CharacterTextureRect": { + "rect": [ + 204.0, + 250.0, + 200.0, + 100.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#5": { + "rect": [ + 194.0, + 240.0, + 240.0, + 150.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#5/VBoxContainer": { + "rect": [ + 204.0, + 250.0, + 220.0, + 134.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#5/VBoxContainer/CharacterName": { + "rect": [ + 204.0, + 250.0, + 1.0, + 23.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#5/VBoxContainer/CharacterTextureRect": { + "rect": [ + 204.0, + 250.0, + 200.0, + 100.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#6": { + "rect": [ + 194.0, + 240.0, + 240.0, + 150.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#6/VBoxContainer": { + "rect": [ + 204.0, + 250.0, + 220.0, + 134.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#6/VBoxContainer/CharacterName": { + "rect": [ + 204.0, + 250.0, + 1.0, + 23.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#6/VBoxContainer/CharacterTextureRect": { + "rect": [ + 204.0, + 250.0, + 200.0, + 100.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#7": { + "rect": [ + 194.0, + 240.0, + 240.0, + 150.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#7/VBoxContainer": { + "rect": [ + 204.0, + 250.0, + 220.0, + 134.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#7/VBoxContainer/CharacterName": { + "rect": [ + 204.0, + 250.0, + 1.0, + 23.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#7/VBoxContainer/CharacterTextureRect": { + "rect": [ + 204.0, + 250.0, + 200.0, + 100.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#8": { + "rect": [ + 194.0, + 240.0, + 240.0, + 150.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#8/VBoxContainer": { + "rect": [ + 204.0, + 250.0, + 220.0, + 134.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#8/VBoxContainer/CharacterName": { + "rect": [ + 204.0, + 250.0, + 1.0, + 23.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#8/VBoxContainer/CharacterTextureRect": { + "rect": [ + 204.0, + 250.0, + 200.0, + 100.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#9": { + "rect": [ + 194.0, + 240.0, + 240.0, + 150.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#9/VBoxContainer": { + "rect": [ + 204.0, + 250.0, + 220.0, + 134.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#9/VBoxContainer/CharacterName": { + "rect": [ + 204.0, + 250.0, + 1.0, + 23.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/#9/VBoxContainer/CharacterTextureRect": { + "rect": [ + 204.0, + 250.0, + 200.0, + 100.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/CharacterCard": { + "rect": [ + 194.0, + 240.0, + 240.0, + 150.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/CharacterCard/VBoxContainer": { + "rect": [ + 204.0, + 250.0, + 220.0, + 134.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/CharacterCard/VBoxContainer/CharacterName": { + "rect": [ + 204.0, + 250.0, + 1.0, + 23.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/ScrollContainer/ScrollbarGap/CharacterGridContainer/CharacterCard/VBoxContainer/CharacterTextureRect": { + "rect": [ + 204.0, + 250.0, + 200.0, + 100.0 + ], + "visible": false + }, + "Quiz/CharacterSelectPopup/CharacterPanel/TitleLabel": { + "rect": [ + 170.0, + 180.0, + 1580.0, + 56.0 + ], + "visible": false + }, + "Quiz/FileDialog": { + "rect": [ + 0.0, + 0.0, + 616.0, + 400.0 + ], + "visible": false + }, + "Quiz/InspirationList": { + "rect": [ + 1216.0, + 128.0, + 641.0, + 384.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer": { + "rect": [ + 1216.0, + 128.0, + 641.0, + 384.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#0": { + "rect": [ + 1216.0, + 128.0, + 641.0, + 32.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#0/#0": { + "rect": [ + 1224.0, + 130.0, + 625.0, + 28.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#1": { + "rect": [ + 1216.0, + 164.0, + 641.0, + 32.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#1/#0": { + "rect": [ + 1224.0, + 166.0, + 625.0, + 28.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#2": { + "rect": [ + 1216.0, + 200.0, + 641.0, + 32.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#2/#0": { + "rect": [ + 1224.0, + 202.0, + 625.0, + 28.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#3": { + "rect": [ + 1216.0, + 236.0, + 641.0, + 32.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#3/#0": { + "rect": [ + 1224.0, + 238.0, + 625.0, + 28.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#4": { + "rect": [ + 1216.0, + 272.0, + 641.0, + 32.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#4/#0": { + "rect": [ + 1224.0, + 274.0, + 625.0, + 28.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#5": { + "rect": [ + 1216.0, + 308.0, + 641.0, + 32.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#5/#0": { + "rect": [ + 1224.0, + 310.0, + 625.0, + 28.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#6": { + "rect": [ + 1216.0, + 344.0, + 641.0, + 32.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#6/#0": { + "rect": [ + 1224.0, + 346.0, + 625.0, + 28.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#7": { + "rect": [ + 1216.0, + 380.0, + 641.0, + 32.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#7/#0": { + "rect": [ + 1224.0, + 382.0, + 625.0, + 28.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#8": { + "rect": [ + 1216.0, + 416.0, + 641.0, + 32.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#8/#0": { + "rect": [ + 1224.0, + 418.0, + 625.0, + 28.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#9": { + "rect": [ + 1216.0, + 452.0, + 641.0, + 32.0 + ], + "visible": true + }, + "Quiz/InspirationList/VBoxContainer/#9/#0": { + "rect": [ + 1224.0, + 454.0, + 625.0, + 28.0 + ], + "visible": true + }, + "Quiz/MusicListPanel": { + "rect": [ + 64.0, + 384.0, + 1088.0, + 512.0 + ], + "visible": true + }, + "Quiz/MusicListPanel/ScrollContainer": { + "rect": [ + 64.0, + 384.0, + 1088.0, + 512.0 + ], + "visible": true + }, + "Quiz/MusicListPanel/ScrollContainer/MusicList": { + "rect": [ + 64.0, + 384.0, + 1088.0, + 512.0 + ], + "visible": true + }, + "Quiz/MusicListPanel/ScrollContainer/MusicList/SongRow": { + "rect": [ + 64.0, + 384.0, + 1088.0, + 28.0 + ], + "visible": true + }, + "Quiz/MusicListPanel/ScrollContainer/MusicList/SongRow/HBoxContainer": { + "rect": [ + 64.0, + 384.0, + 1088.0, + 28.0 + ], + "visible": true + }, + "Quiz/MusicListPanel/ScrollContainer/MusicList/SongRow/HBoxContainer/Panel": { + "rect": [ + 1068.0, + 384.0, + 80.0, + 0.0 + ], + "visible": true + }, + "Quiz/MusicListPanel/ScrollContainer/MusicList/SongRow/HBoxContainer/SongListLabel": { + "rect": [ + 64.0, + 384.0, + 1000.0, + 28.0 + ], + "visible": true + }, + "Quiz/MusicListPanel/ScrollContainer/MusicList/SongRow/HBoxContainer/SongListPlayers": { + "rect": [ + 1152.0, + 384.0, + 0.0, + 0.0 + ], + "visible": true + }, + "Quiz/MusicPlayer": { + "rect": [ + 64.0, + 992.0, + 1792.0, + 71.0 + ], + "visible": true + }, + "Quiz/MusicPlayer/PlayerBar": { + "rect": [ + 65.0, + 992.0, + 1791.0, + 32.0 + ], + "visible": true + }, + "Quiz/MusicPlayer/PlayerBar/MusicPlayerContainer": { + "rect": [ + 65.0, + 992.0, + 1791.0, + 32.0 + ], + "visible": true + }, + "Quiz/MusicPlayer/PlayerBar/MusicPlayerContainer/MusicPlayerSlider": { + "rect": [ + 137.0, + 1000.0, + 1514.0, + 16.0 + ], + "visible": true + }, + "Quiz/MusicPlayer/PlayerBar/MusicPlayerContainer/MusicTimeLabel": { + "rect": [ + 1655.0, + 996.0, + 97.0, + 23.0 + ], + "visible": true + }, + "Quiz/MusicPlayer/PlayerBar/MusicPlayerContainer/PlayTextureButton": { + "rect": [ + 65.0, + 992.0, + 32.0, + 32.0 + ], + "visible": true + }, + "Quiz/MusicPlayer/PlayerBar/MusicPlayerContainer/RestartTextureButton": { + "rect": [ + 101.0, + 992.0, + 32.0, + 32.0 + ], + "visible": true + }, + "Quiz/MusicPlayer/PlayerBar/MusicPlayerContainer/VolumeSlider": { + "rect": [ + 1756.0, + 1000.0, + 100.0, + 16.0 + ], + "visible": true + }, + "Quiz/NowPlaying": { + "rect": [ + 64.0, + 64.0, + 1088.0, + 320.0 + ], + "visible": true + }, + "Quiz/NowPlaying/SongLabel": { + "rect": [ + 64.0, + 137.0, + 1088.0, + 49.0 + ], + "visible": true + }, + "Quiz/NowPlaying/SoundtrackLabel": { + "rect": [ + 64.0, + 64.0, + 1088.0, + 69.0 + ], + "visible": true + }, + "Quiz/Open": { + "rect": [ + 1296.0, + 66.0, + 50.0, + 31.0 + ], + "visible": false + }, + "Quiz/PlayersPanel": { + "rect": [ + 1216.0, + 576.0, + 641.0, + 401.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer": { + "rect": [ + 1216.0, + 576.0, + 641.0, + 401.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/AddPlayerContainer": { + "rect": [ + 1216.0, + 620.0, + 641.0, + 40.0 + ], + "visible": false + }, + "Quiz/PlayersPanel/VBoxContainer/AddPlayerContainer/AddPlayerButton": { + "rect": [ + 1617.0, + 620.0, + 39.0, + 40.0 + ], + "visible": false + }, + "Quiz/PlayersPanel/VBoxContainer/AddPlayerContainer/Panel": { + "rect": [ + 1216.0, + 620.0, + 196.0, + 40.0 + ], + "visible": false + }, + "Quiz/PlayersPanel/VBoxContainer/AddPlayerContainer/Panel2": { + "rect": [ + 1660.0, + 620.0, + 197.0, + 40.0 + ], + "visible": false + }, + "Quiz/PlayersPanel/VBoxContainer/AddPlayerContainer/PlayerNameField": { + "rect": [ + 1416.0, + 620.0, + 197.0, + 40.0 + ], + "visible": false + }, + "Quiz/PlayersPanel/VBoxContainer/HBoxContainer": { + "rect": [ + 1216.0, + 576.0, + 641.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/HBoxContainer/AddPlayersButton": { + "rect": [ + 1821.0, + 576.0, + 36.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/HBoxContainer/Label": { + "rect": [ + 1216.0, + 576.0, + 601.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer": { + "rect": [ + 1216.0, + 620.0, + 641.0, + 357.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer": { + "rect": [ + 1216.0, + 620.0, + 641.0, + 357.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/#1": { + "rect": [ + 1216.0, + 664.0, + 641.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/#1/HBoxContainer": { + "rect": [ + 1216.0, + 664.0, + 641.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/#1/HBoxContainer/AddPoint": { + "rect": [ + 1732.0, + 664.0, + 40.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/#1/HBoxContainer/Character": { + "rect": [ + 1614.0, + 664.0, + 80.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/#1/HBoxContainer/Name": { + "rect": [ + 1225.0, + 664.0, + 365.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/#1/HBoxContainer/Panel": { + "rect": [ + 1827.0, + 664.0, + 30.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/#1/HBoxContainer/Panel2": { + "rect": [ + 1698.0, + 664.0, + 30.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/#1/HBoxContainer/Panel3": { + "rect": [ + 1594.0, + 664.0, + 16.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/#1/HBoxContainer/Panel4": { + "rect": [ + 1216.0, + 664.0, + 5.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/#1/HBoxContainer/Panel5": { + "rect": [ + 1776.0, + 664.0, + 3.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/#1/HBoxContainer/RemovePlayer": { + "rect": [ + 1817.0, + 664.0, + 40.0, + 40.0 + ], + "visible": false + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/#1/HBoxContainer/RemovePoint": { + "rect": [ + 1783.0, + 664.0, + 40.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/PlayerRow": { + "rect": [ + 1216.0, + 620.0, + 641.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/PlayerRow/HBoxContainer": { + "rect": [ + 1216.0, + 620.0, + 641.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/PlayerRow/HBoxContainer/AddPoint": { + "rect": [ + 1732.0, + 620.0, + 40.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/PlayerRow/HBoxContainer/Character": { + "rect": [ + 1614.0, + 620.0, + 80.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/PlayerRow/HBoxContainer/Name": { + "rect": [ + 1225.0, + 620.0, + 365.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/PlayerRow/HBoxContainer/Panel": { + "rect": [ + 1827.0, + 620.0, + 30.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/PlayerRow/HBoxContainer/Panel2": { + "rect": [ + 1698.0, + 620.0, + 30.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/PlayerRow/HBoxContainer/Panel3": { + "rect": [ + 1594.0, + 620.0, + 16.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/PlayerRow/HBoxContainer/Panel4": { + "rect": [ + 1216.0, + 620.0, + 5.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/PlayerRow/HBoxContainer/Panel5": { + "rect": [ + 1776.0, + 620.0, + 3.0, + 40.0 + ], + "visible": true + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/PlayerRow/HBoxContainer/RemovePlayer": { + "rect": [ + 1817.0, + 620.0, + 40.0, + 40.0 + ], + "visible": false + }, + "Quiz/PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer/PlayerRow/HBoxContainer/RemovePoint": { + "rect": [ + 1783.0, + 620.0, + 40.0, + 40.0 + ], + "visible": true + }, + "Quiz/PopupBackdrop": { + "rect": [ + 0.0, + 0.0, + 1920.0, + 1080.0 + ], + "visible": false + }, + "Quiz/QuizSettingsButton": { + "rect": [ + 64.0, + 1030.0, + 160.0, + 36.0 + ], + "visible": true + }, + "Quiz/QuizSettingsCard": { + "rect": [ + 64.0, + 984.0, + 0.0, + 0.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel": { + "rect": [ + 64.0, + 645.0, + 440.0, + 339.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox": { + "rect": [ + 80.0, + 657.0, + 408.0, + 315.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/AutoRepeatCheckButton": { + "rect": [ + 80.0, + 696.0, + 408.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/HideBeginningCheckButton": { + "rect": [ + 80.0, + 801.0, + 408.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/HideForSecondsRow": { + "rect": [ + 80.0, + 657.0, + 254.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/HideForSecondsRow/HideForSecondsLabel": { + "rect": [ + 80.0, + 657.0, + 48.0, + 23.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/HideForSecondsRow/IncreaseHideForSecondsButton": { + "rect": [ + 80.0, + 657.0, + 30.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/HideForSecondsRow/LowerHideForSecondsButton": { + "rect": [ + 80.0, + 657.0, + 30.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/HideForSecondsRow/Title": { + "rect": [ + 80.0, + 657.0, + 134.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/HideLengthCheckButton": { + "rect": [ + 80.0, + 836.0, + 408.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/HideNextTrackCheckButton": { + "rect": [ + 80.0, + 766.0, + 408.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/HideTicksCheckButton": { + "rect": [ + 80.0, + 871.0, + 408.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/InspirationRow": { + "rect": [ + 80.0, + 941.0, + 408.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/InspirationRow/IncreaseInspirationSpeedButton": { + "rect": [ + 458.0, + 941.0, + 30.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/InspirationRow/InspirationListSpeedLabel": { + "rect": [ + 372.0, + 945.0, + 48.0, + 23.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/InspirationRow/LowerInspirationSpeedButton": { + "rect": [ + 424.0, + 941.0, + 30.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/InspirationRow/Title": { + "rect": [ + 80.0, + 941.0, + 288.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/StopAfterCurrentCheckButton": { + "rect": [ + 80.0, + 731.0, + 408.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/TitleLabel": { + "rect": [ + 80.0, + 657.0, + 408.0, + 35.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/WinningScoreRow": { + "rect": [ + 80.0, + 906.0, + 408.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/WinningScoreRow/IncreaseButton": { + "rect": [ + 458.0, + 906.0, + 30.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/WinningScoreRow/LowerButton": { + "rect": [ + 424.0, + 906.0, + 30.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/WinningScoreRow/ScoreLabel": { + "rect": [ + 372.0, + 910.0, + 48.0, + 23.0 + ], + "visible": false + }, + "Quiz/QuizSettingsCard/CardPanel/VBox/WinningScoreRow/Title": { + "rect": [ + 80.0, + 906.0, + 288.0, + 31.0 + ], + "visible": false + }, + "Quiz/QuizToolbar": { + "rect": [ + 1360.0, + 64.0, + 495.0, + 31.0 + ], + "visible": true + }, + "Quiz/QuizToolbar/ResetPlaylistButton": { + "rect": [ + 1488.0, + 64.0, + 111.0, + 31.0 + ], + "visible": true + }, + "Quiz/QuizToolbar/ResetPointsButton": { + "rect": [ + 1616.0, + 64.0, + 111.0, + 31.0 + ], + "visible": true + }, + "Quiz/QuizToolbar/SearchButton": { + "rect": [ + 1360.0, + 64.0, + 111.0, + 31.0 + ], + "visible": true + }, + "Quiz/QuizToolbar/SoundTestButton": { + "rect": [ + 1744.0, + 64.0, + 111.0, + 31.0 + ], + "visible": true + }, + "Quiz/SongControls": { + "rect": [ + 65.0, + 944.0, + 303.0, + 31.0 + ], + "visible": true + }, + "Quiz/SongControls/NextButton": { + "rect": [ + 193.0, + 944.0, + 175.0, + 31.0 + ], + "visible": true + }, + "Quiz/SongControls/ShowAnswerButton": { + "rect": [ + 65.0, + 944.0, + 111.0, + 31.0 + ], + "visible": true + }, + "Quiz/WinnerPopup": { + "rect": [ + 160.0, + 80.0, + 1920.0, + 1080.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel": { + "rect": [ + 160.0, + 80.0, + 1600.0, + 920.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn": { + "rect": [ + 184.0, + 100.0, + 1552.0, + 880.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Header": { + "rect": [ + 184.0, + 100.0, + 1552.0, + 180.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Header/WinnerInfo": { + "rect": [ + 897.0, + 100.0, + 520.0, + 180.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Header/WinnerInfo/PlayersList": { + "rect": [ + 897.0, + 205.0, + 520.0, + 23.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Header/WinnerInfo/PlayersList/#0": { + "rect": [ + 897.0, + 205.0, + 520.0, + 23.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Header/WinnerInfo/WinnerLabel": { + "rect": [ + 897.0, + 152.0, + 520.0, + 49.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Header/WinnerPicture": { + "rect": [ + 503.0, + 100.0, + 362.0, + 180.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Legend": { + "rect": [ + 184.0, + 292.0, + 1552.0, + 23.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Legend/#0": { + "rect": [ + 872.0, + 292.0, + 79.0, + 23.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Legend/#0/#0": { + "rect": [ + 872.0, + 296.0, + 14.0, + 14.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Legend/#0/#1": { + "rect": [ + 890.0, + 292.0, + 61.0, + 23.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Legend/#1": { + "rect": [ + 971.0, + 292.0, + 76.0, + 23.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Legend/#1/#0": { + "rect": [ + 971.0, + 296.0, + 14.0, + 14.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Legend/#1/#1": { + "rect": [ + 989.0, + 292.0, + 58.0, + 23.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/ScoreGraph": { + "rect": [ + 184.0, + 327.0, + 1552.0, + 557.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Summary": { + "rect": [ + 184.0, + 896.0, + 1552.0, + 84.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Summary/SharedBox": { + "rect": [ + 1226.0, + 896.0, + 510.0, + 84.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Summary/SharedBox/VBox": { + "rect": [ + 1234.0, + 898.0, + 494.0, + 80.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Summary/SharedBox/VBox/Header": { + "rect": [ + 1234.0, + 898.0, + 494.0, + 26.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Summary/SharedBox/VBox/SharedLabel": { + "rect": [ + 1234.0, + 928.0, + 494.0, + 23.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Summary/StandstillBox": { + "rect": [ + 705.0, + 896.0, + 509.0, + 84.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Summary/StandstillBox/VBox": { + "rect": [ + 713.0, + 898.0, + 493.0, + 80.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Summary/StandstillBox/VBox/Header": { + "rect": [ + 713.0, + 898.0, + 493.0, + 26.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Summary/StandstillBox/VBox/StandstillLabel": { + "rect": [ + 713.0, + 928.0, + 493.0, + 23.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Summary/StreakBox": { + "rect": [ + 184.0, + 896.0, + 509.0, + 84.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Summary/StreakBox/VBox": { + "rect": [ + 192.0, + 898.0, + 493.0, + 80.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Summary/StreakBox/VBox/Header": { + "rect": [ + 192.0, + 898.0, + 493.0, + 26.0 + ], + "visible": false + }, + "Quiz/WinnerPopup/WinnerPanel/GameColumn/Summary/StreakBox/VBox/StreakLabel": { + "rect": [ + 192.0, + 928.0, + 493.0, + 23.0 + ], + "visible": false + }, + "SearchPopup": { + "rect": [ + 384.0, + 100.0, + 1920.0, + 1080.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel": { + "rect": [ + 384.0, + 100.0, + 1152.0, + 880.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/CountLabel": { + "rect": [ + 408.0, + 190.0, + 1104.0, + 26.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/EmptyLabel": { + "rect": [ + 408.0, + 260.0, + 1104.0, + 40.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer": { + "rect": [ + 408.0, + 224.0, + 1104.0, + 732.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults": { + "rect": [ + 408.0, + 224.0, + 1104.0, + 386.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#0": { + "rect": [ + 408.0, + 224.0, + 1104.0, + 35.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#0/#0": { + "rect": [ + 416.0, + 226.0, + 1088.0, + 31.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#1": { + "rect": [ + 408.0, + 263.0, + 1104.0, + 35.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#1/#0": { + "rect": [ + 416.0, + 265.0, + 1088.0, + 31.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#2": { + "rect": [ + 408.0, + 302.0, + 1104.0, + 35.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#2/#0": { + "rect": [ + 416.0, + 304.0, + 1088.0, + 31.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#3": { + "rect": [ + 408.0, + 341.0, + 1104.0, + 35.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#3/#0": { + "rect": [ + 416.0, + 343.0, + 1088.0, + 31.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#4": { + "rect": [ + 408.0, + 380.0, + 1104.0, + 35.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#4/#0": { + "rect": [ + 416.0, + 382.0, + 1088.0, + 31.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#5": { + "rect": [ + 408.0, + 419.0, + 1104.0, + 35.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#5/#0": { + "rect": [ + 416.0, + 421.0, + 1088.0, + 31.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#6": { + "rect": [ + 408.0, + 224.0, + 1104.0, + 35.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#6/#0": { + "rect": [ + 416.0, + 226.0, + 1088.0, + 31.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#7": { + "rect": [ + 408.0, + 497.0, + 1104.0, + 35.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#7/#0": { + "rect": [ + 416.0, + 499.0, + 1088.0, + 31.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#8": { + "rect": [ + 408.0, + 536.0, + 1104.0, + 35.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#8/#0": { + "rect": [ + 416.0, + 538.0, + 1088.0, + 31.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#9": { + "rect": [ + 408.0, + 575.0, + 1104.0, + 35.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/ScrollContainer/SearchResults/#9/#0": { + "rect": [ + 416.0, + 577.0, + 1088.0, + 31.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/TopRow": { + "rect": [ + 408.0, + 124.0, + 1104.0, + 56.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/TopRow/ClearButton": { + "rect": [ + 1372.0, + 124.0, + 140.0, + 56.0 + ], + "visible": false + }, + "SearchPopup/SearchPanel/TopRow/SearchField": { + "rect": [ + 408.0, + 124.0, + 948.0, + 56.0 + ], + "visible": false + }, + "SettingsPopup": { + "rect": [ + 700.0, + 419.0, + 1920.0, + 1080.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel": { + "rect": [ + 700.0, + 419.0, + 520.0, + 242.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel/VBoxContainer": { + "rect": [ + 720.0, + 431.0, + 480.0, + 218.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel/VBoxContainer/AddToDatabaseCheckButton": { + "rect": [ + 720.0, + 610.0, + 480.0, + 31.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel/VBoxContainer/CacheRow": { + "rect": [ + 720.0, + 540.0, + 480.0, + 31.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel/VBoxContainer/CacheRow/CacheLabel": { + "rect": [ + 1084.0, + 544.0, + 48.0, + 23.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel/VBoxContainer/CacheRow/CacheTitleLabel": { + "rect": [ + 720.0, + 540.0, + 360.0, + 31.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel/VBoxContainer/CacheRow/IncreaseCacheButton": { + "rect": [ + 1170.0, + 540.0, + 30.0, + 31.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel/VBoxContainer/CacheRow/LowerCacheButton": { + "rect": [ + 1136.0, + 540.0, + 30.0, + 31.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel/VBoxContainer/FullscreenButton": { + "rect": [ + 720.0, + 505.0, + 480.0, + 31.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel/VBoxContainer/Label": { + "rect": [ + 720.0, + 431.0, + 480.0, + 35.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel/VBoxContainer/LocalButton": { + "rect": [ + 720.0, + 431.0, + 89.0, + 31.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel/VBoxContainer/LowPlayedCheckButton": { + "rect": [ + 720.0, + 575.0, + 480.0, + 31.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel/VBoxContainer/ServerRow": { + "rect": [ + 720.0, + 470.0, + 480.0, + 31.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel/VBoxContainer/ServerRow/SelectServerButton": { + "rect": [ + 786.0, + 470.0, + 414.0, + 31.0 + ], + "visible": false + }, + "SettingsPopup/SettingsPanel/VBoxContainer/ServerRow/Title": { + "rect": [ + 720.0, + 470.0, + 62.0, + 31.0 + ], + "visible": false + }, + "ShortcutsPopup": { + "rect": [ + 610.0, + 187.0, + 1920.0, + 1080.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel": { + "rect": [ + 610.0, + 187.0, + 700.0, + 706.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer": { + "rect": [ + 634.0, + 247.0, + 652.0, + 630.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox": { + "rect": [ + 634.0, + 247.0, + 652.0, + 628.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#0": { + "rect": [ + 634.0, + 247.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#1": { + "rect": [ + 634.0, + 279.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#1/#0": { + "rect": [ + 634.0, + 279.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#1/#0/#0": { + "rect": [ + 634.0, + 279.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#1/#0/#1": { + "rect": [ + 962.0, + 279.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#10": { + "rect": [ + 634.0, + 547.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#10/#0": { + "rect": [ + 634.0, + 547.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#10/#0/#0": { + "rect": [ + 634.0, + 547.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#10/#0/#1": { + "rect": [ + 962.0, + 547.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#11": { + "rect": [ + 634.0, + 579.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#11/#0": { + "rect": [ + 634.0, + 579.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#11/#0/#0": { + "rect": [ + 634.0, + 579.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#11/#0/#1": { + "rect": [ + 962.0, + 579.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#12": { + "rect": [ + 634.0, + 611.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#12/#0": { + "rect": [ + 634.0, + 611.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#12/#0/#0": { + "rect": [ + 634.0, + 611.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#12/#0/#1": { + "rect": [ + 962.0, + 611.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#13": { + "rect": [ + 634.0, + 643.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#13/#0": { + "rect": [ + 634.0, + 643.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#13/#0/#0": { + "rect": [ + 634.0, + 643.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#13/#0/#1": { + "rect": [ + 962.0, + 643.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#14": { + "rect": [ + 634.0, + 675.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#14/#0": { + "rect": [ + 634.0, + 675.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#14/#0/#0": { + "rect": [ + 634.0, + 675.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#14/#0/#1": { + "rect": [ + 962.0, + 675.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#15": { + "rect": [ + 634.0, + 707.0, + 652.0, + 8.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#16": { + "rect": [ + 634.0, + 719.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#17": { + "rect": [ + 634.0, + 751.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#17/#0": { + "rect": [ + 634.0, + 751.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#17/#0/#0": { + "rect": [ + 634.0, + 751.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#17/#0/#1": { + "rect": [ + 962.0, + 751.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#18": { + "rect": [ + 634.0, + 783.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#18/#0": { + "rect": [ + 634.0, + 783.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#18/#0/#0": { + "rect": [ + 634.0, + 783.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#18/#0/#1": { + "rect": [ + 962.0, + 783.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#19": { + "rect": [ + 634.0, + 815.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#19/#0": { + "rect": [ + 634.0, + 815.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#19/#0/#0": { + "rect": [ + 634.0, + 815.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#19/#0/#1": { + "rect": [ + 962.0, + 815.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#2": { + "rect": [ + 634.0, + 311.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#2/#0": { + "rect": [ + 634.0, + 311.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#2/#0/#0": { + "rect": [ + 634.0, + 311.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#2/#0/#1": { + "rect": [ + 962.0, + 311.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#20": { + "rect": [ + 634.0, + 847.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#20/#0": { + "rect": [ + 634.0, + 847.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#20/#0/#0": { + "rect": [ + 634.0, + 847.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#20/#0/#1": { + "rect": [ + 962.0, + 847.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#3": { + "rect": [ + 634.0, + 343.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#3/#0": { + "rect": [ + 634.0, + 343.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#3/#0/#0": { + "rect": [ + 634.0, + 343.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#3/#0/#1": { + "rect": [ + 962.0, + 343.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#4": { + "rect": [ + 634.0, + 375.0, + 652.0, + 8.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#5": { + "rect": [ + 634.0, + 387.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#6": { + "rect": [ + 634.0, + 419.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#6/#0": { + "rect": [ + 634.0, + 419.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#6/#0/#0": { + "rect": [ + 634.0, + 419.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#6/#0/#1": { + "rect": [ + 962.0, + 419.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#7": { + "rect": [ + 634.0, + 451.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#7/#0": { + "rect": [ + 634.0, + 451.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#7/#0/#0": { + "rect": [ + 634.0, + 451.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#7/#0/#1": { + "rect": [ + 962.0, + 451.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#8": { + "rect": [ + 634.0, + 483.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#8/#0": { + "rect": [ + 634.0, + 483.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#8/#0/#0": { + "rect": [ + 634.0, + 483.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#8/#0/#1": { + "rect": [ + 962.0, + 483.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#9": { + "rect": [ + 634.0, + 515.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#9/#0": { + "rect": [ + 634.0, + 515.0, + 652.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#9/#0/#0": { + "rect": [ + 634.0, + 515.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/ScrollContainer/shortcutsVBox/#9/#0/#1": { + "rect": [ + 962.0, + 515.0, + 324.0, + 28.0 + ], + "visible": false + }, + "ShortcutsPopup/ShortcutsPanel/TitleLabel": { + "rect": [ + 610.0, + 187.0, + 700.0, + 56.0 + ], + "visible": false + }, + "SoundtrackStatsPopup": { + "rect": [ + 610.0, + 140.0, + 1920.0, + 1080.0 + ], + "visible": false + }, + "SoundtrackStatsPopup/StatsPanel": { + "rect": [ + 610.0, + 140.0, + 700.0, + 800.0 + ], + "visible": false + }, + "SoundtrackStatsPopup/StatsPanel/ScrollContainer": { + "rect": [ + 630.0, + 232.0, + 660.0, + 692.0 + ], + "visible": false + }, + "SoundtrackStatsPopup/StatsPanel/ScrollContainer/SongList": { + "rect": [ + 630.0, + 232.0, + 0.0, + 0.0 + ], + "visible": false + }, + "SoundtrackStatsPopup/StatsPanel/SummaryLabel": { + "rect": [ + 630.0, + 194.0, + 660.0, + 26.0 + ], + "visible": false + }, + "SoundtrackStatsPopup/StatsPanel/TitleLabel": { + "rect": [ + 630.0, + 152.0, + 660.0, + 38.0 + ], + "visible": false + }, + "StatisticsView": { + "rect": [ + 0.0, + 56.0, + 1920.0, + 1024.0 + ], + "visible": false + }, + "StatisticsView/RetryButton": { + "rect": [ + 910.0, + 576.0, + 100.0, + 40.0 + ], + "visible": false + }, + "StatisticsView/ScrollContainer": { + "rect": [ + 32.0, + 128.0, + 1856.0, + 936.0 + ], + "visible": false + }, + "StatisticsView/ScrollContainer/CardGrid": { + "rect": [ + 32.0, + 128.0, + 0.0, + 0.0 + ], + "visible": false + }, + "StatisticsView/StatusLabel": { + "rect": [ + 0.0, + 528.0, + 1920.0, + 36.0 + ], + "visible": false + }, + "StatisticsView/Toolbar": { + "rect": [ + 32.0, + 72.0, + 1856.0, + 40.0 + ], + "visible": false + }, + "StatisticsView/Toolbar/ClearButton": { + "rect": [ + 32.0, + 72.0, + 49.0, + 31.0 + ], + "visible": false + }, + "StatisticsView/Toolbar/CountLabel": { + "rect": [ + 32.0, + 72.0, + 1.0, + 23.0 + ], + "visible": false + }, + "StatisticsView/Toolbar/SearchField": { + "rect": [ + 32.0, + 72.0, + 480.0, + 31.0 + ], + "visible": false + }, + "StatisticsView/Toolbar/ShowLabel": { + "rect": [ + 32.0, + 72.0, + 42.0, + 23.0 + ], + "visible": false + }, + "StatisticsView/Toolbar/ShowOption": { + "rect": [ + 32.0, + 72.0, + 160.0, + 31.0 + ], + "visible": false + }, + "StatisticsView/Toolbar/SortLabel": { + "rect": [ + 32.0, + 72.0, + 32.0, + 23.0 + ], + "visible": false + }, + "StatisticsView/Toolbar/SortOption": { + "rect": [ + 32.0, + 72.0, + 160.0, + 31.0 + ], + "visible": false + }, + "SyncPopup": { + "rect": [ + 210.0, + 220.0, + 1920.0, + 1080.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel": { + "rect": [ + 210.0, + 220.0, + 1500.0, + 640.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer": { + "rect": [ + 230.0, + 228.0, + 1460.0, + 624.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer": { + "rect": [ + 230.0, + 228.0, + 1460.0, + 294.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/CaughtErrorsVBox": { + "rect": [ + 230.0, + 228.0, + 111.0, + 23.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/CaughtErrorsVBox/CaughtErrorsLabel": { + "rect": [ + 230.0, + 228.0, + 111.0, + 23.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/NoChangesLabel": { + "rect": [ + 230.0, + 228.0, + 319.0, + 35.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/ProgressHBoxContainer": { + "rect": [ + 230.0, + 310.0, + 1460.0, + 27.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/ProgressHBoxContainer/SyncProgressBar": { + "rect": [ + 310.0, + 310.0, + 1300.0, + 27.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/RestartSyncButton": { + "rect": [ + 860.0, + 442.0, + 200.0, + 80.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer": { + "rect": [ + 230.0, + 310.0, + 1460.0, + 120.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksAddedSeparator": { + "rect": [ + 584.0, + 310.0, + 4.0, + 120.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksAddedVBox": { + "rect": [ + 230.0, + 310.0, + 338.0, + 120.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksAddedVBox/#0": { + "rect": [ + 230.0, + 310.0, + 338.0, + 28.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksAddedVBox/#1": { + "rect": [ + 230.0, + 342.0, + 338.0, + 30.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksAddedVBox/#1/#0": { + "rect": [ + 238.0, + 344.0, + 322.0, + 26.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksAddedVBox/#2": { + "rect": [ + 230.0, + 376.0, + 338.0, + 30.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksAddedVBox/#2/#0": { + "rect": [ + 238.0, + 378.0, + 322.0, + 26.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksChangedContentSeparator": { + "rect": [ + 1332.0, + 310.0, + 4.0, + 120.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksChangedContentVBox": { + "rect": [ + 978.0, + 310.0, + 338.0, + 120.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksChangedContentVBox/#0": { + "rect": [ + 978.0, + 310.0, + 338.0, + 28.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksChangedContentVBox/#1": { + "rect": [ + 978.0, + 342.0, + 338.0, + 30.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksChangedContentVBox/#1/#0": { + "rect": [ + 986.0, + 344.0, + 322.0, + 26.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksChangedTitleSeparator": { + "rect": [ + 958.0, + 310.0, + 4.0, + 120.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksChangedTitleVBox": { + "rect": [ + 604.0, + 310.0, + 338.0, + 120.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksChangedTitleVBox/#0": { + "rect": [ + 604.0, + 310.0, + 338.0, + 28.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksChangedTitleVBox/#1": { + "rect": [ + 604.0, + 342.0, + 338.0, + 88.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksChangedTitleVBox/#1/#0": { + "rect": [ + 612.0, + 344.0, + 322.0, + 84.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksReAddedSeparator": { + "rect": [ + 230.0, + 310.0, + 4.0, + 3.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksReAddedVBox": { + "rect": [ + 230.0, + 310.0, + 166.0, + 23.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksReAddedVBox/SoundtracksReAddedLabel": { + "rect": [ + 230.0, + 310.0, + 166.0, + 23.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksRemovedSeparator": { + "rect": [ + 230.0, + 310.0, + 4.0, + 3.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksRemovedVBox": { + "rect": [ + 1352.0, + 310.0, + 338.0, + 120.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksRemovedVBox/#0": { + "rect": [ + 1352.0, + 310.0, + 338.0, + 28.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksRemovedVBox/#1": { + "rect": [ + 1352.0, + 342.0, + 338.0, + 30.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/SoundtracksRemovedVBox/#1/#0": { + "rect": [ + 1360.0, + 344.0, + 322.0, + 26.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncTime": { + "rect": [ + 230.0, + 275.0, + 1460.0, + 23.0 + ], + "visible": false + }, + "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer/SyncTitleLabel": { + "rect": [ + 230.0, + 228.0, + 1460.0, + 35.0 + ], + "visible": false + }, + "TopBar": { + "rect": [ + 0.0, + 0.0, + 1920.0, + 56.0 + ], + "visible": true + }, + "TopBar/AboutButton": { + "rect": [ + 1722.0, + 8.0, + 70.0, + 40.0 + ], + "visible": true + }, + "TopBar/DebugLabel": { + "rect": [ + 384.0, + 12.0, + 86.0, + 38.0 + ], + "visible": true + }, + "TopBar/QRButton": { + "rect": [ + 1802.0, + 8.0, + 70.0, + 40.0 + ], + "visible": true + }, + "TopBar/QuizTab": { + "rect": [ + 840.0, + 8.0, + 115.0, + 40.0 + ], + "visible": true + }, + "TopBar/SettingsButton": { + "rect": [ + 1538.0, + 8.0, + 70.0, + 40.0 + ], + "visible": true + }, + "TopBar/ShortcutsButton": { + "rect": [ + 1626.0, + 8.0, + 83.0, + 40.0 + ], + "visible": true + }, + "TopBar/StatisticsTab": { + "rect": [ + 965.0, + 8.0, + 115.0, + 40.0 + ], + "visible": true + }, + "TopBar/SyncButton": { + "rect": [ + 1450.0, + 8.0, + 70.0, + 40.0 + ], + "visible": true + }, + "TopBar/Title": { + "rect": [ + 64.0, + 12.0, + 305.0, + 38.0 + ], + "visible": true + }, + "TopBar/TopPanelContainer": { + "rect": [ + 0.0, + 0.0, + 1920.0, + 56.0 + ], + "visible": true + }, + "TopBar/UpdateLabel": { + "rect": [ + 1096.0, + 12.0, + 336.0, + 38.0 + ], + "visible": true + } } } \ No newline at end of file diff --git a/tests/fakes/main_window_test_suite.gd b/tests/fakes/main_window_test_suite.gd index 2879f36..d13445f 100644 --- a/tests/fakes/main_window_test_suite.gd +++ b/tests/fakes/main_window_test_suite.gd @@ -31,6 +31,7 @@ func before_test() -> void: _server.respond_json("/music/all/order", ["Chrono Trigger", "Final Fantasy VI"]) _server.respond_json("/music/list", []) _server.respond_json("/character/list", []) + _server.respond_json("/download", "1.0.0") _server.respond_bytes("/music/rand", mp3) _server.respond_bytes("/music/addQue", PackedByteArray()) _server.respond_json("/music/info", SONG_INFO[0]) diff --git a/tests/fakes/ui_tour.gd b/tests/fakes/ui_tour.gd index 344e181..9cfc3a0 100644 --- a/tests/fakes/ui_tour.gd +++ b/tests/fakes/ui_tour.gd @@ -77,6 +77,7 @@ static func make_server() -> FakeHttpTransport: server.respond_json("/music/all", SOUNDTRACKS) server.respond_json("/music/all/order", SOUNDTRACKS) server.respond_json("/music/list", []) + server.respond_json("/download", "1.0.0") var characters: Array[String] = character_names() server.respond_json("/character/list", characters) for character_name: String in characters: @@ -243,6 +244,13 @@ func run(on_state: Callable) -> void: sync_popup.close() await _settle() + var top_bar: TopBar = _node("TopBar") + top_bar.show_latest_version("99.10.10") + await _settle() + await on_state.call("update_available", null) + top_bar.show_latest_version("1.0.0") + await _settle() + var statistics_view: StatisticsView = _node("StatisticsView") _main.show_tab(&"statistics") await _settle() diff --git a/tests/integration/test_scene_split.gd b/tests/integration/test_scene_split.gd index b67f4c4..37a8571 100644 --- a/tests/integration/test_scene_split.gd +++ b/tests/integration/test_scene_split.gd @@ -29,7 +29,7 @@ const LOCKED_BY_SYNC: Array[String] = [ const TOP_BAR_CHILDREN: Array[String] = [ "TopPanelContainer", "Title", "SyncButton", "SettingsButton", "ShortcutsButton", - "DebugLabel", + "DebugLabel", "UpdateLabel", "AboutButton", "QRButton", "QuizTab", "StatisticsTab", ] diff --git a/tests/integration/test_update_notice.gd b/tests/integration/test_update_notice.gd new file mode 100644 index 0000000..860c9a7 --- /dev/null +++ b/tests/integration/test_update_notice.gd @@ -0,0 +1,74 @@ +extends MainWindowTestSuite +## The top bar tells the user when the server has a newer MusicPlayer release. + +var _top_bar: TopBar + + +func before_test() -> void: + super() + _top_bar = _window.get_node("TopBar") + + +func test_no_message_when_this_is_the_newest_version() -> void: + assert_bool(_top_bar.update_label.visible).is_false() + assert_int(_server.count("/download")).is_equal(1) + + +func test_newer_release_shows_a_message() -> void: + _server.respond_json("/download", "99.0.0") + + _top_bar.check_for_update() + + assert_bool(_top_bar.update_label.is_visible_in_tree()).is_true() + assert_str(_top_bar.update_label.text).is_equal("Version 99.0.0 is available") + assert_str(_top_bar.update_label.tooltip_text).contains(Settings.version) + + +func test_message_fits_between_the_tabs_and_the_buttons() -> void: + _server.respond_json("/download", "99.10.10") + _top_bar.check_for_update() + await _runner.simulate_frames(1) + + var label: Rect2 = _top_bar.update_label.get_global_rect() + var text_width: float = _top_bar.update_label.get_minimum_size().x + assert_float(text_width).is_less_equal(label.size.x) + assert_float(label.position.x).is_greater( + (_top_bar.get_node("StatisticsTab") as Control).get_global_rect().end.x) + assert_float(label.end.x).is_less( + (_top_bar.get_node("SyncButton") as Control).get_global_rect().position.x) + + +func test_message_stays_on_the_statistics_tab() -> void: + _server.respond_json("/download", "99.0.0") + _top_bar.check_for_update() + + _window.show_tab(&"statistics") + + assert_bool(_top_bar.update_label.is_visible_in_tree()).is_true() + + +func test_server_change_checks_again() -> void: + _server.respond_json("/download", "99.0.0") + + _quiz.on_server_changed() + + assert_bool(_top_bar.update_label.visible).is_true() + + +func test_failed_check_shows_nothing() -> void: + _server.respond_json("/download", "error", 502) + + _top_bar.check_for_update() + + assert_bool(_top_bar.update_label.visible).is_false() + + +func test_version_comparison() -> void: + assert_bool(TopBar.is_newer_version("2.0.1", "2.0.0")).is_true() + assert_bool(TopBar.is_newer_version("1.10.0", "1.9.0")).is_true() + assert_bool(TopBar.is_newer_version("v3.0", "2.9.9")).is_true() + assert_bool(TopBar.is_newer_version("2.1", "2.0.5")).is_true() + assert_bool(TopBar.is_newer_version("2.0.0", "2.0.0")).is_false() + assert_bool(TopBar.is_newer_version("2.0", "2.0.0")).is_false() + assert_bool(TopBar.is_newer_version("1.9.0", "2.0.0")).is_false() + assert_bool(TopBar.is_newer_version("1.9.9", "1.10.0")).is_false() diff --git a/tests/integration/test_update_notice.gd.uid b/tests/integration/test_update_notice.gd.uid new file mode 100644 index 0000000..78ea9cf --- /dev/null +++ b/tests/integration/test_update_notice.gd.uid @@ -0,0 +1 @@ +uid://dmm31450qjd8v