diff --git a/01. Opening.mp3.import b/01. Opening.mp3.import deleted file mode 100644 index 04fa72a..0000000 --- a/01. Opening.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://n2g8jddr85h2" -path="res://.godot/imported/01. Opening.mp3-3b470cf2b258d9ffad574f672712bdc3.mp3str" - -[deps] - -source_file="res://01. Opening.mp3" -dest_files=["res://.godot/imported/01. Opening.mp3-3b470cf2b258d9ffad574f672712bdc3.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/MainWindow.gd b/MainWindow.gd index 35d5057..5c9ce78 100644 --- a/MainWindow.gd +++ b/MainWindow.gd @@ -8,8 +8,6 @@ extends Control # 386 LOC 12/6 - 2024 ##TODO -# 13. Fix graphics in lists -# 14. Fix layout # 15. Fix for local play @onready @@ -55,7 +53,7 @@ var sound_test_button: Button = $SoundTestButton var sync_button: Button = $SyncButton @onready -var sync_popup: PopupPanel = $SyncPopupPanel +var sync_window: Control = %SyncWindow @onready var settings_button: Button = $SettingsButton @@ -149,8 +147,6 @@ func _ready() -> void: if is_debug: print("is_debug") debug_label.visible = true - ##Settings.default_path = "http://localhost:8080" - ##Settings.selected_server = 3 Settings.default_path = "http://localhost:8080" Settings.selected_server = 3 Settings.winning_score = 5 @@ -172,6 +168,9 @@ func _ready() -> void: music_player_container.connect("play_next_song", fetch_song.bind(false)) music_player_container.connect("update_song_list", update_song_list) settings_window.connect("server_changed", server_updated) + sync_window.connect("sync_started", _on_sync_started) + sync_window.connect("sync_finished", _on_sync_finished) + add_players_button.pressed.connect(add_players) add_player_button.pressed.connect(add_player) @@ -210,13 +209,13 @@ func _input(event: InputEvent) -> void: func server_updated() -> void: print("server_updated") update_from_server() - reset_playlist() reset_points() func update_from_server() -> void: print("update_from_server") search_view.get_list_of_games() get_suggestion_list() + reset_playlist() func repeat_song() -> void: Settings.auto_repeat_song = !Settings.auto_repeat_song @@ -362,26 +361,23 @@ func get_statistics() -> void: func sync_games() -> void: print("sync_games") - sync_button.disabled = true - var games_synced: Callable = func games_synced() -> void: - sync_button.disabled = false - sync_popup.visible = true - print("games_synced") - reset_playlist() - update_from_server() + sync_window.start_sync() - var new_games_synced: Callable = func new_games_synced(synced) -> void: - sync_button.disabled = false - sync_popup.visible = true - print("games_synced") - print("synced: ", synced) - reset_playlist() - update_from_server() - - if Settings.quick_sync == true: - Settings.make_request2("/sync/new", new_games_synced, true) - else: - Settings.make_request2("/sync/quick", games_synced, false) +func _on_sync_started() -> void: + print("_on_sync_started") + sync_button.disabled = false + sound_test_button.disabled = true + reset_playlist_button.disabled = true + show_answer_button.disabled = true + next_button.disabled = true + +func _on_sync_finished() -> void: + print("_on_sync_finished") + update_from_server() + sound_test_button.disabled = false + reset_playlist_button.disabled = false + show_answer_button.disabled = false + next_button.disabled = false func get_suggestion_list() -> void: print("get_suggestion_list") diff --git a/MainWindow.tscn b/MainWindow.tscn index 83514ee..b9d8591 100644 --- a/MainWindow.tscn +++ b/MainWindow.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=26 format=3 uid="uid://xwq863o6uvsu"] +[gd_scene load_steps=27 format=3 uid="uid://xwq863o6uvsu"] [ext_resource type="Script" uid="uid://b8f4g15cas2j2" path="res://MainWindow.gd" id="1_eu0t5"] [ext_resource type="PackedScene" uid="uid://b16on0oscg1bv" path="res://CharacterSelect.tscn" id="2_76kf4"] @@ -9,6 +9,7 @@ [ext_resource type="Script" uid="uid://cgakje8gb37tf" path="res://PlayerNameField.gd" id="7_qsdfy"] [ext_resource type="Theme" uid="uid://rxexo3ur85as" path="res://LightGrayTheme.tres" id="7_wxbv6"] [ext_resource type="PackedScene" uid="uid://bxydgil1yifps" path="res://SearchWindow.tscn" id="9_5ijvr"] +[ext_resource type="PackedScene" uid="uid://dpdem7pdxweb5" path="res://SyncWindow.tscn" id="10_yxw0b"] [ext_resource type="Texture2D" uid="uid://r4as0nmtoa7p" path="res://noCharacter.png" id="11_1qef0"] [ext_resource type="PackedScene" uid="uid://dldpeo5y3l5hq" path="res://SettingsWindow.tscn" id="11_k62u5"] @@ -371,19 +372,14 @@ offset_top = 96.0 offset_right = 56.0 offset_bottom = 96.0 -[node name="SyncPopupPanel" type="PopupPanel" parent="."] -initial_position = 2 -size = Vector2i(140, 70) - -[node name="Label" type="Label" parent="SyncPopupPanel"] -texture_filter = 1 -offset_left = 4.0 -offset_top = 4.0 -offset_right = 136.0 -offset_bottom = 66.0 -text = "Games synced!" -horizontal_alignment = 1 -vertical_alignment = 1 +[node name="SyncWindow" parent="." instance=ExtResource("10_yxw0b")] +unique_name_in_owner = true +visible = false +layout_mode = 1 +offset_left = 364.0 +offset_top = 153.0 +offset_right = 364.0 +offset_bottom = 153.0 [node name="StatisticsPopupPanel" type="PopupPanel" parent="."] initial_position = 2 @@ -476,8 +472,8 @@ size = Vector2i(268, 233) [node name="SettingsWindow" parent="SettingsPopupPanel" instance=ExtResource("11_k62u5")] offset_left = 4.0 offset_top = 4.0 -offset_right = 264.0 -offset_bottom = 229.0 +offset_right = 271.0 +offset_bottom = 354.0 [node name="WinnerPopupPanel" type="PopupPanel" parent="."] initial_position = 2 diff --git a/MusicPlayer.gd b/MusicPlayer.gd index f2ac383..5c97e82 100644 --- a/MusicPlayer.gd +++ b/MusicPlayer.gd @@ -205,4 +205,4 @@ func play_local_song() -> void: play_sound(load_mp3(local_path)) func sound_test_local() -> void: - play_sound(preload("res://01. Opening.mp3")) + play_sound(preload("res://sounds/01. Opening.mp3")) diff --git a/MusicPlayer.tscn b/MusicPlayer.tscn index 5230fa2..a0d5524 100644 --- a/MusicPlayer.tscn +++ b/MusicPlayer.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=10 format=3 uid="uid://ds15cgsf8vpvc"] [ext_resource type="Script" uid="uid://d1v0rquma6nt8" path="res://MusicPlayer.gd" id="1_t24ra"] -[ext_resource type="AudioStream" uid="uid://n2g8jddr85h2" path="res://01. Opening.mp3" id="2_xti80"] +[ext_resource type="AudioStream" uid="uid://n2g8jddr85h2" path="res://sounds/01. Opening.mp3" id="2_xti80"] [ext_resource type="Texture2D" uid="uid://comxqfiykp54f" path="res://icons/play_icon_light.svg" id="3_6g308"] [ext_resource type="Texture2D" uid="uid://ccb6rvbldlgdg" path="res://icons/reload_light_icon.svg" id="4_jleuo"] [ext_resource type="PackedScene" uid="uid://w400rnew7453" path="res://volume_slider.tscn" id="5_iifuj"] diff --git a/PlayerObject.gd b/PlayerObject.gd index 1996a0d..7ff496c 100644 --- a/PlayerObject.gd +++ b/PlayerObject.gd @@ -21,7 +21,7 @@ var is_first_point: bool = true var character: Texture = load("res://noCharacter.png") -func _init(new_name: String, new_id: int): +func _init(new_name: String, new_id: int) -> void: player_name = new_name id = new_id player_score = 0 diff --git a/Settings.gd b/Settings.gd index c457e25..1b513a7 100644 --- a/Settings.gd +++ b/Settings.gd @@ -15,6 +15,7 @@ var use_low_played_mode: bool = false var winning_score: int = 20 var fullscreen: bool = false var quick_sync: bool = true +var number_of_tracks_to_preload: int = 1 var play_local: bool = false var player_array: Array[PlayerObject] @@ -22,12 +23,16 @@ var song_object_array: Array[SongObject] = [] var latest_played_song: int = 0 var currently_playing_song: int = -1 var edit_players: bool = false +var currently_syncing: bool = false var version: String = "1.6.0" var whats_new: String = "Changelog: 1.6.0: #1: Fixed bug with inspiration list not reloding after sync + #2: New dialog for sync + #6: Now show progress during sync + #7: Blocking all requests to the server during sync 1.5.0: Made big changes to players and the song list and how the local song list works 0.9.0-Beta: Fixed settings and updated the player view 0.8.0-Beta: Fixed reset buttons and some other small things diff --git a/SyncWindow.tscn b/SyncWindow.tscn new file mode 100644 index 0000000..ce3e4c6 --- /dev/null +++ b/SyncWindow.tscn @@ -0,0 +1,153 @@ +[gd_scene load_steps=3 format=3 uid="uid://dpdem7pdxweb5"] + +[ext_resource type="Script" uid="uid://c3ejukwth512a" path="res://sync_window.gd" id="1_8ba47"] + +[sub_resource type="LabelSettings" id="LabelSettings_anbfi"] +font_size = 25 + +[node name="Control" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_8ba47") + +[node name="SyncPanel" type="Panel" parent="."] +unique_name_in_owner = true +layout_mode = 0 +offset_right = 1152.0 +offset_bottom = 640.0 + +[node name="ScrollContainer" type="ScrollContainer" parent="SyncPanel"] +layout_mode = 0 +offset_right = 1152.0 +offset_bottom = 640.0 + +[node name="SyncVBoxContainer" type="VBoxContainer" parent="SyncPanel/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="SyncTitleLabel" type="Label" parent="SyncPanel/ScrollContainer/SyncVBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 0 +text = "Sync" +label_settings = SubResource("LabelSettings_anbfi") +horizontal_alignment = 1 + +[node name="NoChangesLabel" type="Label" parent="SyncPanel/ScrollContainer/SyncVBoxContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +size_flags_vertical = 0 +text = "No changes since last sync" +label_settings = SubResource("LabelSettings_anbfi") +horizontal_alignment = 1 + +[node name="ProgressHBoxContainer" type="HBoxContainer" parent="SyncPanel/ScrollContainer/SyncVBoxContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="SyncProgressBar" type="ProgressBar" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/ProgressHBoxContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(1000, 0) +layout_mode = 2 +size_flags_horizontal = 6 +step = 1.0 +rounded = true + +[node name="SyncHBoxContainer" type="HBoxContainer" parent="SyncPanel/ScrollContainer/SyncVBoxContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_constants/separation = 30 + +[node name="VSeparator6" type="VSeparator" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer"] +layout_mode = 2 + +[node name="GamesAddedVBox" type="VBoxContainer" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="GamesAddedLabel" type="Label" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/GamesAddedVBox"] +layout_mode = 2 +text = "GamesAdded" +horizontal_alignment = 1 + +[node name="GamesAddedSeparator" type="VSeparator" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="GamesReAddedVBox" type="VBoxContainer" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="GamesReAddedLabel" type="Label" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/GamesReAddedVBox"] +layout_mode = 2 +text = "GamesReAdded" + +[node name="GamesReAddedSeparator" type="VSeparator" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="GamesChangedTitleVBox" type="VBoxContainer" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="GamesChangedTitleLabel" type="Label" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/GamesChangedTitleVBox"] +layout_mode = 2 +text = "GamesChangedTitle" + +[node name="GamesChangedTitleSeparator" type="VSeparator" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="GamesChangedContentVBox" type="VBoxContainer" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="GamesChangedContentLabel" type="Label" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/GamesChangedContentVBox"] +layout_mode = 2 +text = "GamesChangedContent" + +[node name="GamesChangedContentSeparator" type="VSeparator" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="GamesRemovedVBox" type="VBoxContainer" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="GamesRemovedLabel" type="Label" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer/GamesRemovedVBox"] +layout_mode = 2 +text = "GamesRemoved" + +[node name="GamesRemovedSeparator" type="VSeparator" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/SyncHBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="SyncTime" type="Label" parent="SyncPanel/ScrollContainer/SyncVBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "Sync time: " +horizontal_alignment = 1 + +[node name="CatchedErrorsVBox" type="VBoxContainer" parent="SyncPanel/ScrollContainer/SyncVBoxContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="CatchedErrorsLabel" type="Label" parent="SyncPanel/ScrollContainer/SyncVBoxContainer/CatchedErrorsVBox"] +layout_mode = 2 +text = "CatchedErrors" +horizontal_alignment = 1 + +[node name="CoolDownTimer" type="Timer" parent="."] +unique_name_in_owner = true + +[node name="SyncTimer" type="Timer" parent="."] +unique_name_in_owner = true diff --git a/progress_response.gd b/progress_response.gd new file mode 100644 index 0000000..f1085e7 --- /dev/null +++ b/progress_response.gd @@ -0,0 +1,5 @@ +class_name ProgressResponse +extends Node + +var progress: String +var total_time: String diff --git a/progress_response.gd.uid b/progress_response.gd.uid new file mode 100644 index 0000000..7ea6704 --- /dev/null +++ b/progress_response.gd.uid @@ -0,0 +1 @@ +uid://e74iuu78stc3 diff --git a/project.godot b/project.godot index 007117a..1cea62c 100644 --- a/project.godot +++ b/project.godot @@ -21,7 +21,6 @@ Settings="*res://Settings.gd" [debug] -settings/stdout/print_fps=true gdscript/warnings/untyped_declaration=1 gdscript/warnings/inferred_declaration=1 diff --git a/01. Opening.mp3 b/sounds/01. Opening.mp3 similarity index 100% rename from 01. Opening.mp3 rename to sounds/01. Opening.mp3 diff --git a/sounds/01. Opening.mp3.import b/sounds/01. Opening.mp3.import new file mode 100644 index 0000000..913a1cb --- /dev/null +++ b/sounds/01. Opening.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://n2g8jddr85h2" +path="res://.godot/imported/01. Opening.mp3-559a476b5f0faf13d7bec359898ef47c.mp3str" + +[deps] + +source_file="res://sounds/01. Opening.mp3" +dest_files=["res://.godot/imported/01. Opening.mp3-559a476b5f0faf13d7bec359898ef47c.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/sync_response.gd b/sync_response.gd new file mode 100644 index 0000000..e558603 --- /dev/null +++ b/sync_response.gd @@ -0,0 +1,10 @@ +class_name SyncResponse +extends Node + +var games_added: Array +var games_re_added: Array +var games_changed_title: Array +var games_changed_content: Array +var games_removed: Array +var catched_errors: Array +var total_time: String diff --git a/sync_response.gd.uid b/sync_response.gd.uid new file mode 100644 index 0000000..6947787 --- /dev/null +++ b/sync_response.gd.uid @@ -0,0 +1 @@ +uid://dtfsuob2aidl7 diff --git a/sync_window.gd b/sync_window.gd new file mode 100644 index 0000000..943d0f5 --- /dev/null +++ b/sync_window.gd @@ -0,0 +1,212 @@ +extends Control + +@onready +var sync_panel: Panel = %SyncPanel + +@onready +var sync_title_label: Label = %SyncTitleLabel + +@onready +var no_changes_label: Label = %NoChangesLabel + +@onready +var progress_hbox: HBoxContainer = %ProgressHBoxContainer + +@onready +var sync_hbox: HBoxContainer = %SyncHBoxContainer + +@onready +var sync_progress_bar: ProgressBar = %SyncProgressBar + +@onready +var games_added_vbox: VBoxContainer = %GamesAddedVBox + +@onready +var games_added_separator: VSeparator = %GamesAddedSeparator + +@onready +var games_readded_vbox: VBoxContainer = %GamesReAddedVBox + +@onready +var games_readded_separator: VSeparator = %GamesReAddedSeparator + +@onready +var games_changed_title_vbox: VBoxContainer = %GamesChangedTitleVBox + +@onready +var games_changed_title_separator: VSeparator = %GamesChangedTitleSeparator + +@onready +var games_changed_content_vbox: VBoxContainer = %GamesChangedContentVBox + +@onready +var games_changed_content_separator: VSeparator = %GamesChangedContentSeparator + +@onready +var games_removed_vbox: VBoxContainer = %GamesRemovedVBox + +@onready +var games_removed_separator: VSeparator = %GamesRemovedSeparator + +@onready +var catched_errors_vbox: VBoxContainer = %CatchedErrorsVBox + +@onready +var sync_time: Label = %SyncTime + +@onready +var cool_down_timer: Timer = %CoolDownTimer + +@onready +var sync_timer: Timer = %SyncTimer + +var changes: bool = false + +var cool_down_ongoing: bool = false + +signal sync_started +signal sync_finished + +func _ready() -> void: + sync_timer.timeout.connect(_on_sync_timeout) + cool_down_timer.timeout.connect(_on_cool_down_timeout) + +func _input(event: InputEvent) -> void: + if self.visible == true: + if event is InputEventMouseButton && event.is_pressed(): + print("Mouse Click/Unclick at: ", event.position) + var evLocal = make_input_local(event) + if !Rect2(Vector2(0, 0), sync_panel.size).has_point(evLocal.position): + self.visible = false + print("CLOSING") + +func start_sync() -> void: + print("start_sync") + self.visible = true + var sync_started: Callable = func sync_started() -> void: + sync_timer.start(0.75) + Settings.currently_syncing = true + sync_started.emit() + show_sync_progress() + if !cool_down_ongoing && !Settings.currently_syncing: + Settings.make_request2("/sync", sync_started, false) + +func _on_cool_down_timeout() -> void: + print("_on_cool_down_timeout") + print("COOLDOWN IS NOW FINSISHED, SYNC CAN START AGAIN") + cool_down_ongoing = false + +func _on_sync_timeout() -> void: + print("_on_sync_timeout!") + var get_progress: Callable = func get_progress(data_received: Dictionary) -> void: + print("get_progress") + print("data_received: ", data_received) + if data_received != null: + if data_received.has("progress"): + sync_progress_bar.value = int(data_received.progress) + sync_time.text = data_received.time_spent + else: + on_sync_finished(data_received) + Settings.make_request2("/sync/progress", get_progress, true) + +func on_sync_finished(data_received: Dictionary) -> void: + reset_sync_result() + if data_received.games_added != null: + changes = true + list_visible(games_added_vbox, games_added_separator) + make_list(data_received.games_added, games_added_vbox, "GamesAdded") + if data_received.games_re_added != null: + changes = true + list_visible(games_readded_vbox, games_readded_separator) + make_list(data_received.games_re_added, games_readded_vbox, "GamesReAdded") + if data_received.games_changed_title != null: + changes = true + list_visible(games_changed_title_vbox, games_changed_title_separator) + Settings.delete_children(games_changed_title_vbox) + make_header_label(games_changed_title_vbox, "GamesChangedTitle") + var row: int = 0 + for old_game_title: String in data_received.games_changed_title: + var label: Label = make_game_label(old_game_title + " changed title to " + data_received.games_changed_title[old_game_title]) + if row % 2 != 0: + label.add_theme_color_override("font_color", Color(1, 0.5, 0)) + games_changed_title_vbox.add_child(label) + if data_received.games_changed_content != null: + changes = true + list_visible(games_changed_content_vbox, games_changed_content_separator) + make_list(data_received.games_changed_content, games_changed_content_vbox, "GamesChangedContent") + if data_received.games_removed != null: + changes = true + list_visible(games_removed_vbox, games_removed_separator) + make_list(data_received.games_removed, games_removed_vbox, "GamesRemoved") + if data_received.catched_errors != null: + catched_errors_vbox.visible = true + make_list(data_received.catched_errors, catched_errors_vbox, "CatchedErrors") + if !changes: + no_changes_label.visible = true + sync_time.text = data_received.total_time + Settings.currently_syncing = false + sync_timer.stop() + print("sync finished") + show_sync_result() + cool_down_timer.start(30*60) + cool_down_ongoing = true + sync_finished.emit() + +func list_visible(vbox: VBoxContainer, seperator: VSeparator) -> void: + vbox.visible = true + seperator.visible = true + +func make_header_label(vbox: VBoxContainer, text: String) -> void: + var label: Label = Label.new() + label.set_texture_filter(TextureFilter.TEXTURE_FILTER_NEAREST) + label.add_theme_font_size_override("font_size", 20) + label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + label.text = text + vbox.add_child(label) + +func make_game_label(text: String) -> Label: + var label: Label = Label.new() + label.set_texture_filter(TextureFilter.TEXTURE_FILTER_NEAREST) + label.add_theme_font_size_override("font_size", 20) + label.text = text + label.autowrap_mode = TextServer.AUTOWRAP_WORD + return label + +func reset_sync_result() -> void: + sync_progress_bar.value = 0 + sync_time.text = "" + changes = false + no_changes_label.visible = false + games_added_vbox.visible = false + games_added_separator.visible = false + games_readded_vbox.visible = false + games_readded_separator.visible = false + games_changed_title_vbox.visible = false + games_changed_title_separator.visible = false + games_changed_content_vbox.visible = false + games_changed_content_separator.visible = false + games_removed_vbox.visible = false + games_removed_separator.visible = false + catched_errors_vbox.visible = false + +func make_list(list: Array, vbox: VBoxContainer, text: String) -> void: + Settings.delete_children(vbox) + make_header_label(vbox, text) + var row: int = 0 + for game: String in list: + var label: Label = make_game_label(game) + if row % 2 != 0: + label.add_theme_color_override("font_color", Color(1, 0.5, 0)) + vbox.add_child(label) + +func show_sync_result() -> void: + sync_title_label.text = "Sync Result" + progress_hbox.visible = false + sync_hbox.visible = true + +func show_sync_progress() -> void: + sync_title_label.text = "Sync in Progress" + progress_hbox.visible = true + no_changes_label.visible = false + sync_hbox.visible = false + catched_errors_vbox.visible = false diff --git a/sync_window.gd.uid b/sync_window.gd.uid new file mode 100644 index 0000000..6836250 --- /dev/null +++ b/sync_window.gd.uid @@ -0,0 +1 @@ +uid://c3ejukwth512a