From fe16db9e1d162d5562da01ca6040fc697f1ceeea Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Fri, 19 Jul 2024 22:00:18 +0100 Subject: [PATCH 01/18] Convert project to Godot 4 and fix script parsing errors --- .gitignore | 1 + fonts/NotoSansKR-Regular.ttf.import | 33 + fonts/OpenSans-Italic.tres | 8 +- fonts/OpenSans-Italic.ttf.import | 33 + fonts/OpenSans-Regular.tres | 8 +- fonts/OpenSans-Regular.ttf.import | 33 + fonts/OpenSans-Semibold.tres | 8 +- fonts/OpenSans-Semibold.ttf.import | 33 + fonts/OpenSans-SemiboldItalic.tres | 8 +- fonts/OpenSans-SemiboldItalic.ttf.import | 33 + fonts/SourceHanSansCN-Regular.otf.import | 33 + fonts/default_ui_font.tres | 8 +- .../ingame/FantasqueSansMono-Bold.ttf.import | 33 + .../FantasqueSansMono-Regular.ttf.import | 33 + fonts/ingame/Hack-Bold.ttf.import | 33 + fonts/ingame/Hack-Regular.ttf.import | 33 + fonts/ingame/Inconsolata-LGC-Bold.ttf.import | 33 + fonts/ingame/Inconsolata-LGC.ttf.import | 33 + fonts/ingame/PT_Mono_55F.ttf.import | 33 + fonts/ingame/PT_Mono_75F.ttf.import | 33 + fonts/ingame/UbuntuMono-B.ttf.import | 33 + fonts/ingame/UbuntuMono-R.ttf.import | 33 + icons/appicon.svg.import | 33 +- icons/buttons/activate.svg.import | 5 +- icons/buttons/delete.svg.import | 5 +- icons/buttons/download.svg.import | 5 +- icons/buttons/play.svg.import | 5 +- icons/buttons/resume.svg.import | 5 +- icons/folder_game.svg.import | 32 +- icons/folder_user.svg.import | 32 +- icons/help.svg.import | 33 +- icons/info.svg.import | 33 +- icons/lang/lang-pl.svg.import | 5 +- icons/lang/lang-tr.svg.import | 5 +- icons/lang/lang_cs.svg.import | 5 +- icons/lang/lang_en.svg.import | 5 +- icons/lang/lang_es.svg.import | 5 +- icons/lang/lang_fr.svg.import | 5 +- icons/lang/lang_ko.svg.import | 5 +- icons/lang/lang_pt.svg.import | 5 +- icons/lang/lang_ru.svg.import | 5 +- icons/lang/lang_zh.svg.import | 5 +- icons/placeholder.svg.import | 33 +- icons/theme/godot3.svg.import | 5 +- icons/theme/grey.svg.import | 5 +- icons/theme/light.svg.import | 5 +- icons/theme/solarized_dark.svg.import | 5 +- icons/theme/solarized_light.svg.import | 5 +- icons/transparent.png.import | 32 +- images/font-rect.png.import | 31 +- images/font-sizes.png.import | 31 +- project.godot | 93 +- scenes/Catapult.tscn | 1721 +++++++---------- scenes/ChangelogDialog.tscn | 58 +- scenes/FontSizeHelpDialog.tscn | 50 +- scenes/InlineIconButton.tscn | 8 +- scenes/ModReinstallDialog.tscn | 64 +- scripts/BackupManager.gd | 37 +- scripts/BackupsUI.gd | 32 +- scripts/Catapult.gd | 187 +- scripts/ChangelogDialod.gd | 32 +- scripts/Debug.gd | 37 +- scripts/FontManager.gd | 99 +- scripts/FontSizeHelpDialog.gd | 6 +- scripts/FontsUI.gd | 50 +- scripts/InlineIconButton.gd | 14 +- scripts/InstallsList.gd | 4 +- scripts/ItemList.gd | 2 +- scripts/ModManager.gd | 66 +- scripts/ModReinstallDialog.gd | 6 +- scripts/ModsUI.gd | 60 +- scripts/OSExecWrapper.gd | 15 +- scripts/ReleaseInstaller.gd | 20 +- scripts/ReleaseManager.gd | 14 +- scripts/SettingsUI.gd | 32 +- scripts/SoundpackManager.gd | 35 +- scripts/SoundpacksUI.gd | 34 +- scripts/Tabs.gd | 24 +- scripts/ThreadedFuncExecutor.gd | 2 +- scripts/download_manager.gd | 25 +- scripts/filesystem_helper.gd | 85 +- scripts/helpers.gd | 36 +- scripts/path_helper.gd | 107 +- scripts/scalable_texture.gd | 2 +- scripts/scalable_theme.gd | 85 +- scripts/settings_manager.gd | 19 +- scripts/status.gd | 6 +- scripts/totd.gd | 2 +- scripts/window_geometry.gd | 38 +- text/cs/backup_manager.csv.import | 5 +- text/cs/backups_tab.csv.import | 5 +- text/cs/changelog_dialog.csv.import | 5 +- text/cs/dialog_buttons.csv.import | 5 +- text/cs/download_manager.csv.import | 5 +- text/cs/easter_egg.csv.import | 5 +- text/cs/filesystem_helper.csv.import | 5 +- text/cs/font_help_dialog.csv.import | 5 +- text/cs/font_info.csv.import | 5 +- text/cs/font_manager.csv.import | 5 +- text/cs/fonts_tab.csv.import | 5 +- text/cs/game_tab.csv.import | 5 +- text/cs/general.csv.import | 5 +- text/cs/helpers.csv.import | 5 +- text/cs/install_probe.csv.import | 5 +- text/cs/mod_manager.csv.import | 5 +- text/cs/mod_reinstall_dialog.csv.import | 5 +- text/cs/mods_tab.csv.import | 5 +- text/cs/release_installer.csv.import | 5 +- text/cs/release_manager.csv.import | 5 +- text/cs/settings_manager.csv.import | 5 +- text/cs/settings_tab.csv.import | 5 +- text/cs/soundpack_manager.csv.import | 5 +- text/cs/soundpacks_tab.csv.import | 5 +- text/cs/tips.csv.import | 5 +- text/en/backup_manager.csv.import | 5 +- text/en/backups_tab.csv.import | 5 +- text/en/changelog_dialog.csv.import | 5 +- text/en/dialog_buttons.csv.import | 5 +- text/en/download_manager.csv.import | 5 +- text/en/easter_egg.csv.import | 5 +- text/en/filesystem_helper.csv.import | 5 +- text/en/font_help_dialog.csv.import | 5 +- text/en/font_info.csv.import | 5 +- text/en/font_manager.csv.import | 5 +- text/en/fonts_tab.csv.import | 5 +- text/en/game_tab.csv.import | 5 +- text/en/general.csv.import | 5 +- text/en/helpers.csv.import | 5 +- text/en/install_probe.csv.import | 5 +- text/en/mod_manager.csv.import | 5 +- text/en/mod_reinstall_dialog.csv.import | 5 +- text/en/mods_tab.csv.import | 5 +- text/en/release_installer.csv.import | 5 +- text/en/release_manager.csv.import | 5 +- text/en/settings_manager.csv.import | 5 +- text/en/settings_tab.csv.import | 5 +- text/en/soundpack_manager.csv.import | 5 +- text/en/soundpacks_tab.csv.import | 5 +- text/en/tips.csv.import | 5 +- text/es/backup_manager.csv.import | 5 +- text/es/backups_tab.csv.import | 5 +- text/es/changelog_dialog.csv.import | 5 +- text/es/dialog_buttons.csv.import | 5 +- text/es/download_manager.csv.import | 5 +- text/es/easter_egg.csv.import | 5 +- text/es/filesystem_helper.csv.import | 5 +- text/es/font_help_dialog.csv.import | 5 +- text/es/font_info.csv.import | 5 +- text/es/font_manager.csv.import | 5 +- text/es/fonts_tab.csv.import | 5 +- text/es/game_tab.csv.import | 5 +- text/es/general.csv.import | 5 +- text/es/helpers.csv.import | 5 +- text/es/install_probe.csv.import | 5 +- text/es/mod_manager.csv.import | 5 +- text/es/mod_reinstall_dialog.csv.import | 5 +- text/es/mods_tab.csv.import | 5 +- text/es/release_installer.csv.import | 5 +- text/es/release_manager.csv.import | 5 +- text/es/settings_manager.csv.import | 5 +- text/es/settings_tab.csv.import | 5 +- text/es/soundpack_manager.csv.import | 5 +- text/es/soundpacks_tab.csv.import | 5 +- text/es/tips.csv.import | 5 +- text/fr/backup_manager.csv.import | 5 +- text/fr/backups_tab.csv.import | 5 +- text/fr/changelog_dialog.csv.import | 5 +- text/fr/dialog_buttons.csv.import | 5 +- text/fr/download_manager.csv.import | 5 +- text/fr/easter_egg.csv.import | 5 +- text/fr/filesystem_helper.csv.import | 5 +- text/fr/font_help_dialog.csv.import | 5 +- text/fr/font_info.csv.import | 5 +- text/fr/font_manager.csv.import | 5 +- text/fr/fonts_tab.csv.import | 5 +- text/fr/game_tab.csv.import | 5 +- text/fr/general.csv.import | 5 +- text/fr/helpers.csv.import | 5 +- text/fr/install_probe.csv.import | 5 +- text/fr/mod_manager.csv.import | 5 +- text/fr/mod_reinstall_dialog.csv.import | 5 +- text/fr/mods_tab.csv.import | 5 +- text/fr/release_installer.csv.import | 5 +- text/fr/release_manager.csv.import | 5 +- text/fr/settings_manager.csv.import | 5 +- text/fr/settings_tab.csv.import | 5 +- text/fr/soundpack_manager.csv.import | 5 +- text/fr/soundpacks_tab.csv.import | 5 +- text/fr/tips.csv.import | 5 +- text/ko/backup_manager.csv.import | 5 +- text/ko/backups_tab.csv.import | 5 +- text/ko/changelog_dialog.csv.import | 5 +- text/ko/dialog_buttons.csv.import | 5 +- text/ko/download_manager.csv.import | 5 +- text/ko/easter_egg.csv.import | 5 +- text/ko/filesystem_helper.csv.import | 5 +- text/ko/font_help_dialog.csv.import | 5 +- text/ko/font_info.csv.import | 5 +- text/ko/font_manager.csv.import | 5 +- text/ko/fonts_tab.csv.import | 5 +- text/ko/game_tab.csv.import | 5 +- text/ko/general.csv.import | 5 +- text/ko/helpers.csv.import | 5 +- text/ko/install_probe.csv.import | 5 +- text/ko/mod_manager.csv.import | 5 +- text/ko/mod_reinstall_dialog.csv.import | 5 +- text/ko/mods_tab.csv.import | 5 +- text/ko/release_installer.csv.import | 5 +- text/ko/release_manager.csv.import | 5 +- text/ko/settings_manager.csv.import | 5 +- text/ko/settings_tab.csv.import | 5 +- text/ko/soundpack_manager.csv.import | 5 +- text/ko/soundpacks_tab.csv.import | 5 +- text/ko/tips.csv.import | 5 +- text/pl/backup_manager.csv.import | 5 +- text/pl/backups_tab.csv.import | 5 +- text/pl/changelog_dialog.csv.import | 5 +- text/pl/dialog_buttons.csv.import | 5 +- text/pl/download_manager.csv.import | 5 +- text/pl/easter_egg.csv.import | 5 +- text/pl/filesystem_helper.csv.import | 5 +- text/pl/font_help_dialog.csv.import | 5 +- text/pl/font_info.csv.import | 5 +- text/pl/font_manager.csv.import | 5 +- text/pl/fonts_tab.csv.import | 5 +- text/pl/game_tab.csv.import | 5 +- text/pl/general.csv.import | 5 +- text/pl/helpers.csv.import | 5 +- text/pl/install_probe.csv.import | 5 +- text/pl/mod_manager.csv.import | 5 +- text/pl/mod_reinstall_dialog.csv.import | 5 +- text/pl/mods_tab.csv.import | 5 +- text/pl/release_installer.csv.import | 5 +- text/pl/release_manager.csv.import | 5 +- text/pl/settings_manager.csv.import | 5 +- text/pl/settings_tab.csv.import | 5 +- text/pl/soundpack_manager.csv.import | 5 +- text/pl/soundpacks_tab.csv.import | 5 +- text/pl/tips.csv.import | 5 +- text/pt/backup_manager.csv.import | 5 +- text/pt/backups_tab.csv.import | 5 +- text/pt/changelog_dialog.csv.import | 5 +- text/pt/dialog_buttons.csv.import | 5 +- text/pt/download_manager.csv.import | 5 +- text/pt/easter_egg.csv.import | 5 +- text/pt/filesystem_helper.csv.import | 5 +- text/pt/font_help_dialog.csv.import | 5 +- text/pt/font_info.csv.import | 5 +- text/pt/font_manager.csv.import | 5 +- text/pt/fonts_tab.csv.import | 5 +- text/pt/game_tab.csv.import | 5 +- text/pt/general.csv.import | 5 +- text/pt/helpers.csv.import | 5 +- text/pt/install_probe.csv.import | 5 +- text/pt/mod_manager.csv.import | 5 +- text/pt/mod_reinstall_dialog.csv.import | 5 +- text/pt/mods_tab.csv.import | 5 +- text/pt/release_installer.csv.import | 5 +- text/pt/release_manager.csv.import | 5 +- text/pt/settings_manager.csv.import | 5 +- text/pt/settings_tab.csv.import | 5 +- text/pt/soundpack_manager.csv.import | 5 +- text/pt/soundpacks_tab.csv.import | 5 +- text/pt/tips.csv.import | 5 +- text/ru/backup_manager.csv.import | 5 +- text/ru/backups_tab.csv.import | 5 +- text/ru/changelog_dialog.csv.import | 5 +- text/ru/dialog_buttons.csv.import | 5 +- text/ru/download_manager.csv.import | 5 +- text/ru/easter_egg.csv.import | 5 +- text/ru/filesystem_helper.csv.import | 5 +- text/ru/font_help_dialog.csv.import | 5 +- text/ru/font_info.csv.import | 5 +- text/ru/font_manager.csv.import | 5 +- text/ru/fonts_tab.csv.import | 5 +- text/ru/game_tab.csv.import | 5 +- text/ru/general.csv.import | 5 +- text/ru/helpers.csv.import | 5 +- text/ru/install_probe.csv.import | 5 +- text/ru/mod_manager.csv.import | 5 +- text/ru/mod_reinstall_dialog.csv.import | 5 +- text/ru/mods_tab.csv.import | 5 +- text/ru/release_installer.csv.import | 5 +- text/ru/release_manager.csv.import | 5 +- text/ru/settings_manager.csv.import | 5 +- text/ru/settings_tab.csv.import | 5 +- text/ru/soundpack_manager.csv.import | 5 +- text/ru/soundpacks_tab.csv.import | 5 +- text/ru/tips.csv.import | 5 +- text/tr/backup_manager.csv.import | 5 +- text/tr/backups_tab.csv.import | 5 +- text/tr/changelog_dialog.csv.import | 5 +- text/tr/dialog_buttons.csv.import | 5 +- text/tr/download_manager.csv.import | 5 +- text/tr/easter_egg.csv.import | 5 +- text/tr/filesystem_helper.csv.import | 5 +- text/tr/font_help_dialog.csv.import | 5 +- text/tr/font_info.csv.import | 5 +- text/tr/font_manager.csv.import | 5 +- text/tr/fonts_tab.csv.import | 5 +- text/tr/game_tab.csv.import | 5 +- text/tr/general.csv.import | 5 +- text/tr/helpers.csv.import | 5 +- text/tr/install_probe.csv.import | 5 +- text/tr/mod_manager.csv.import | 5 +- text/tr/mod_reinstall_dialog.csv.import | 5 +- text/tr/mods_tab.csv.import | 5 +- text/tr/release_installer.csv.import | 5 +- text/tr/release_manager.csv.import | 5 +- text/tr/settings_manager.csv.import | 5 +- text/tr/settings_tab.csv.import | 5 +- text/tr/soundpack_manager.csv.import | 5 +- text/tr/soundpacks_tab.csv.import | 5 +- text/tr/tips.csv.import | 5 +- text/zh/backup_manager.csv.import | 5 +- text/zh/backups_tab.csv.import | 5 +- text/zh/changelog_dialog.csv.import | 5 +- text/zh/dialog_buttons.csv.import | 5 +- text/zh/download_manager.csv.import | 5 +- text/zh/easter_egg.csv.import | 5 +- text/zh/filesystem_helper.csv.import | 5 +- text/zh/font_help_dialog.csv.import | 5 +- text/zh/font_info.csv.import | 5 +- text/zh/font_manager.csv.import | 5 +- text/zh/fonts_tab.csv.import | 5 +- text/zh/game_tab.csv.import | 5 +- text/zh/general.csv.import | 5 +- text/zh/helpers.csv.import | 5 +- text/zh/install_probe.csv.import | 5 +- text/zh/mod_manager.csv.import | 5 +- text/zh/mod_reinstall_dialog.csv.import | 5 +- text/zh/mods_tab.csv.import | 5 +- text/zh/release_installer.csv.import | 5 +- text/zh/release_manager.csv.import | 5 +- text/zh/settings_manager.csv.import | 5 +- text/zh/settings_tab.csv.import | 5 +- text/zh/soundpack_manager.csv.import | 5 +- text/zh/soundpacks_tab.csv.import | 5 +- text/zh/tips.csv.import | 5 +- 339 files changed, 2882 insertions(+), 2534 deletions(-) create mode 100644 fonts/NotoSansKR-Regular.ttf.import create mode 100644 fonts/OpenSans-Italic.ttf.import create mode 100644 fonts/OpenSans-Regular.ttf.import create mode 100644 fonts/OpenSans-Semibold.ttf.import create mode 100644 fonts/OpenSans-SemiboldItalic.ttf.import create mode 100644 fonts/SourceHanSansCN-Regular.otf.import create mode 100644 fonts/ingame/FantasqueSansMono-Bold.ttf.import create mode 100644 fonts/ingame/FantasqueSansMono-Regular.ttf.import create mode 100644 fonts/ingame/Hack-Bold.ttf.import create mode 100644 fonts/ingame/Hack-Regular.ttf.import create mode 100644 fonts/ingame/Inconsolata-LGC-Bold.ttf.import create mode 100644 fonts/ingame/Inconsolata-LGC.ttf.import create mode 100644 fonts/ingame/PT_Mono_55F.ttf.import create mode 100644 fonts/ingame/PT_Mono_75F.ttf.import create mode 100644 fonts/ingame/UbuntuMono-B.ttf.import create mode 100644 fonts/ingame/UbuntuMono-R.ttf.import diff --git a/.gitignore b/.gitignore index 4e2aa0ae..8614d456 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +/.godot /.import export_presets.cfg Catapult.x86_64 diff --git a/fonts/NotoSansKR-Regular.ttf.import b/fonts/NotoSansKR-Regular.ttf.import new file mode 100644 index 00000000..f5e26e1f --- /dev/null +++ b/fonts/NotoSansKR-Regular.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://brp5nphtpm6dp" +path="res://.godot/imported/NotoSansKR-Regular.ttf-b1a5425772466f0b661760f5aaaf1bbb.fontdata" + +[deps] + +source_file="res://fonts/NotoSansKR-Regular.ttf" +dest_files=["res://.godot/imported/NotoSansKR-Regular.ttf-b1a5425772466f0b661760f5aaaf1bbb.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/OpenSans-Italic.tres b/fonts/OpenSans-Italic.tres index b40b7bde..55c21dd6 100644 --- a/fonts/OpenSans-Italic.tres +++ b/fonts/OpenSans-Italic.tres @@ -1,8 +1,8 @@ -[gd_resource type="DynamicFont" load_steps=4 format=2] +[gd_resource type="FontFile" load_steps=4 format=2] -[ext_resource path="res://fonts/OpenSans-Italic.ttf" type="DynamicFontData" id=1] -[ext_resource path="res://fonts/SourceHanSansCN-Regular.otf" type="DynamicFontData" id=2] -[ext_resource path="res://fonts/NotoSansKR-Regular.ttf" type="DynamicFontData" id=3] +[ext_resource path="res://fonts/OpenSans-Italic.ttf" type="FontFile" id=1] +[ext_resource path="res://fonts/SourceHanSansCN-Regular.otf" type="FontFile" id=2] +[ext_resource path="res://fonts/NotoSansKR-Regular.ttf" type="FontFile" id=3] [resource] size = 13 diff --git a/fonts/OpenSans-Italic.ttf.import b/fonts/OpenSans-Italic.ttf.import new file mode 100644 index 00000000..f3eb8de6 --- /dev/null +++ b/fonts/OpenSans-Italic.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://ea3aqjevmcph" +path="res://.godot/imported/OpenSans-Italic.ttf-adae1b37e5fd020f98d112f9a5aec2ea.fontdata" + +[deps] + +source_file="res://fonts/OpenSans-Italic.ttf" +dest_files=["res://.godot/imported/OpenSans-Italic.ttf-adae1b37e5fd020f98d112f9a5aec2ea.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/OpenSans-Regular.tres b/fonts/OpenSans-Regular.tres index a99db8a2..92bdd86d 100644 --- a/fonts/OpenSans-Regular.tres +++ b/fonts/OpenSans-Regular.tres @@ -1,8 +1,8 @@ -[gd_resource type="DynamicFont" load_steps=4 format=2] +[gd_resource type="FontFile" load_steps=4 format=2] -[ext_resource path="res://fonts/OpenSans-Regular.ttf" type="DynamicFontData" id=1] -[ext_resource path="res://fonts/SourceHanSansCN-Regular.otf" type="DynamicFontData" id=2] -[ext_resource path="res://fonts/NotoSansKR-Regular.ttf" type="DynamicFontData" id=3] +[ext_resource path="res://fonts/OpenSans-Regular.ttf" type="FontFile" id=1] +[ext_resource path="res://fonts/SourceHanSansCN-Regular.otf" type="FontFile" id=2] +[ext_resource path="res://fonts/NotoSansKR-Regular.ttf" type="FontFile" id=3] [resource] size = 13 diff --git a/fonts/OpenSans-Regular.ttf.import b/fonts/OpenSans-Regular.ttf.import new file mode 100644 index 00000000..f1b60ba6 --- /dev/null +++ b/fonts/OpenSans-Regular.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://dyjsahw2i1jqw" +path="res://.godot/imported/OpenSans-Regular.ttf-c0bf4f9c652cbc0f334e1d2022a5738d.fontdata" + +[deps] + +source_file="res://fonts/OpenSans-Regular.ttf" +dest_files=["res://.godot/imported/OpenSans-Regular.ttf-c0bf4f9c652cbc0f334e1d2022a5738d.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/OpenSans-Semibold.tres b/fonts/OpenSans-Semibold.tres index 4a2dd1d5..87a6f649 100644 --- a/fonts/OpenSans-Semibold.tres +++ b/fonts/OpenSans-Semibold.tres @@ -1,8 +1,8 @@ -[gd_resource type="DynamicFont" load_steps=4 format=2] +[gd_resource type="FontFile" load_steps=4 format=2] -[ext_resource path="res://fonts/OpenSans-Semibold.ttf" type="DynamicFontData" id=1] -[ext_resource path="res://fonts/SourceHanSansCN-Regular.otf" type="DynamicFontData" id=2] -[ext_resource path="res://fonts/NotoSansKR-Regular.ttf" type="DynamicFontData" id=3] +[ext_resource path="res://fonts/OpenSans-Semibold.ttf" type="FontFile" id=1] +[ext_resource path="res://fonts/SourceHanSansCN-Regular.otf" type="FontFile" id=2] +[ext_resource path="res://fonts/NotoSansKR-Regular.ttf" type="FontFile" id=3] [resource] size = 13 diff --git a/fonts/OpenSans-Semibold.ttf.import b/fonts/OpenSans-Semibold.ttf.import new file mode 100644 index 00000000..6bcd2ae7 --- /dev/null +++ b/fonts/OpenSans-Semibold.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://drimgjk8ew4gd" +path="res://.godot/imported/OpenSans-Semibold.ttf-181a2cfc7efa2af943b5054925a00594.fontdata" + +[deps] + +source_file="res://fonts/OpenSans-Semibold.ttf" +dest_files=["res://.godot/imported/OpenSans-Semibold.ttf-181a2cfc7efa2af943b5054925a00594.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/OpenSans-SemiboldItalic.tres b/fonts/OpenSans-SemiboldItalic.tres index 6aa18390..aef2d79c 100644 --- a/fonts/OpenSans-SemiboldItalic.tres +++ b/fonts/OpenSans-SemiboldItalic.tres @@ -1,8 +1,8 @@ -[gd_resource type="DynamicFont" load_steps=4 format=2] +[gd_resource type="FontFile" load_steps=4 format=2] -[ext_resource path="res://fonts/OpenSans-SemiboldItalic.ttf" type="DynamicFontData" id=1] -[ext_resource path="res://fonts/SourceHanSansCN-Regular.otf" type="DynamicFontData" id=2] -[ext_resource path="res://fonts/NotoSansKR-Regular.ttf" type="DynamicFontData" id=3] +[ext_resource path="res://fonts/OpenSans-SemiboldItalic.ttf" type="FontFile" id=1] +[ext_resource path="res://fonts/SourceHanSansCN-Regular.otf" type="FontFile" id=2] +[ext_resource path="res://fonts/NotoSansKR-Regular.ttf" type="FontFile" id=3] [resource] size = 13 diff --git a/fonts/OpenSans-SemiboldItalic.ttf.import b/fonts/OpenSans-SemiboldItalic.ttf.import new file mode 100644 index 00000000..7b6ab3b0 --- /dev/null +++ b/fonts/OpenSans-SemiboldItalic.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://b2fhge6n6kpx2" +path="res://.godot/imported/OpenSans-SemiboldItalic.ttf-944643a573510b47648d0864cea49737.fontdata" + +[deps] + +source_file="res://fonts/OpenSans-SemiboldItalic.ttf" +dest_files=["res://.godot/imported/OpenSans-SemiboldItalic.ttf-944643a573510b47648d0864cea49737.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/SourceHanSansCN-Regular.otf.import b/fonts/SourceHanSansCN-Regular.otf.import new file mode 100644 index 00000000..405d4594 --- /dev/null +++ b/fonts/SourceHanSansCN-Regular.otf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://b2hnn2yyfwfrx" +path="res://.godot/imported/SourceHanSansCN-Regular.otf-cbd80afdc6964661916c3af65a3ce8ae.fontdata" + +[deps] + +source_file="res://fonts/SourceHanSansCN-Regular.otf" +dest_files=["res://.godot/imported/SourceHanSansCN-Regular.otf-cbd80afdc6964661916c3af65a3ce8ae.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/default_ui_font.tres b/fonts/default_ui_font.tres index ad98e155..7e379cdd 100644 --- a/fonts/default_ui_font.tres +++ b/fonts/default_ui_font.tres @@ -1,8 +1,8 @@ -[gd_resource type="DynamicFont" load_steps=4 format=2] +[gd_resource type="FontFile" load_steps=4 format=2] -[ext_resource path="res://fonts/SourceHanSansCN-Regular.otf" type="DynamicFontData" id=1] -[ext_resource path="res://fonts/OpenSans-Regular.ttf" type="DynamicFontData" id=2] -[ext_resource path="res://fonts/NotoSansKR-Regular.ttf" type="DynamicFontData" id=3] +[ext_resource path="res://fonts/SourceHanSansCN-Regular.otf" type="FontFile" id=1] +[ext_resource path="res://fonts/OpenSans-Regular.ttf" type="FontFile" id=2] +[ext_resource path="res://fonts/NotoSansKR-Regular.ttf" type="FontFile" id=3] [resource] size = 13 diff --git a/fonts/ingame/FantasqueSansMono-Bold.ttf.import b/fonts/ingame/FantasqueSansMono-Bold.ttf.import new file mode 100644 index 00000000..5c637e48 --- /dev/null +++ b/fonts/ingame/FantasqueSansMono-Bold.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://cdhxlrok2ylyd" +path="res://.godot/imported/FantasqueSansMono-Bold.ttf-b5b2734584638cee803ebc14ef71b1fb.fontdata" + +[deps] + +source_file="res://fonts/ingame/FantasqueSansMono-Bold.ttf" +dest_files=["res://.godot/imported/FantasqueSansMono-Bold.ttf-b5b2734584638cee803ebc14ef71b1fb.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/ingame/FantasqueSansMono-Regular.ttf.import b/fonts/ingame/FantasqueSansMono-Regular.ttf.import new file mode 100644 index 00000000..398755fd --- /dev/null +++ b/fonts/ingame/FantasqueSansMono-Regular.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://cmdngu15kb3vi" +path="res://.godot/imported/FantasqueSansMono-Regular.ttf-39a6b4443508ce59032a6c2c710164b6.fontdata" + +[deps] + +source_file="res://fonts/ingame/FantasqueSansMono-Regular.ttf" +dest_files=["res://.godot/imported/FantasqueSansMono-Regular.ttf-39a6b4443508ce59032a6c2c710164b6.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/ingame/Hack-Bold.ttf.import b/fonts/ingame/Hack-Bold.ttf.import new file mode 100644 index 00000000..da4b14e0 --- /dev/null +++ b/fonts/ingame/Hack-Bold.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://b14u6h02nt243" +path="res://.godot/imported/Hack-Bold.ttf-42b07bc6554a15ad71ae413a407a0ea4.fontdata" + +[deps] + +source_file="res://fonts/ingame/Hack-Bold.ttf" +dest_files=["res://.godot/imported/Hack-Bold.ttf-42b07bc6554a15ad71ae413a407a0ea4.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/ingame/Hack-Regular.ttf.import b/fonts/ingame/Hack-Regular.ttf.import new file mode 100644 index 00000000..c6ce360d --- /dev/null +++ b/fonts/ingame/Hack-Regular.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://bkx5mird8f76o" +path="res://.godot/imported/Hack-Regular.ttf-f12ee4980808fef7ffc86d5bf10308cf.fontdata" + +[deps] + +source_file="res://fonts/ingame/Hack-Regular.ttf" +dest_files=["res://.godot/imported/Hack-Regular.ttf-f12ee4980808fef7ffc86d5bf10308cf.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/ingame/Inconsolata-LGC-Bold.ttf.import b/fonts/ingame/Inconsolata-LGC-Bold.ttf.import new file mode 100644 index 00000000..1b044460 --- /dev/null +++ b/fonts/ingame/Inconsolata-LGC-Bold.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://bse8lc5gvufpt" +path="res://.godot/imported/Inconsolata-LGC-Bold.ttf-5e0d3ba7bee4ff98df861828b57913ed.fontdata" + +[deps] + +source_file="res://fonts/ingame/Inconsolata-LGC-Bold.ttf" +dest_files=["res://.godot/imported/Inconsolata-LGC-Bold.ttf-5e0d3ba7bee4ff98df861828b57913ed.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/ingame/Inconsolata-LGC.ttf.import b/fonts/ingame/Inconsolata-LGC.ttf.import new file mode 100644 index 00000000..474f8d18 --- /dev/null +++ b/fonts/ingame/Inconsolata-LGC.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://di0wlk41qlap7" +path="res://.godot/imported/Inconsolata-LGC.ttf-41a4627d15345c32d938834820c16b99.fontdata" + +[deps] + +source_file="res://fonts/ingame/Inconsolata-LGC.ttf" +dest_files=["res://.godot/imported/Inconsolata-LGC.ttf-41a4627d15345c32d938834820c16b99.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/ingame/PT_Mono_55F.ttf.import b/fonts/ingame/PT_Mono_55F.ttf.import new file mode 100644 index 00000000..968371e1 --- /dev/null +++ b/fonts/ingame/PT_Mono_55F.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://ctqt4e7yuvl7l" +path="res://.godot/imported/PT_Mono_55F.ttf-d75a8b9d388c2cf6b100598b9d57ca90.fontdata" + +[deps] + +source_file="res://fonts/ingame/PT_Mono_55F.ttf" +dest_files=["res://.godot/imported/PT_Mono_55F.ttf-d75a8b9d388c2cf6b100598b9d57ca90.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/ingame/PT_Mono_75F.ttf.import b/fonts/ingame/PT_Mono_75F.ttf.import new file mode 100644 index 00000000..f79d8923 --- /dev/null +++ b/fonts/ingame/PT_Mono_75F.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://hqabhohbt30w" +path="res://.godot/imported/PT_Mono_75F.ttf-a372b826caad9f0367df8e69723891a5.fontdata" + +[deps] + +source_file="res://fonts/ingame/PT_Mono_75F.ttf" +dest_files=["res://.godot/imported/PT_Mono_75F.ttf-a372b826caad9f0367df8e69723891a5.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/ingame/UbuntuMono-B.ttf.import b/fonts/ingame/UbuntuMono-B.ttf.import new file mode 100644 index 00000000..53a9bb8b --- /dev/null +++ b/fonts/ingame/UbuntuMono-B.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://wtxerar3em71" +path="res://.godot/imported/UbuntuMono-B.ttf-ef83e4c6277dd731ed16e024d587eb02.fontdata" + +[deps] + +source_file="res://fonts/ingame/UbuntuMono-B.ttf" +dest_files=["res://.godot/imported/UbuntuMono-B.ttf-ef83e4c6277dd731ed16e024d587eb02.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/fonts/ingame/UbuntuMono-R.ttf.import b/fonts/ingame/UbuntuMono-R.ttf.import new file mode 100644 index 00000000..0e1846ff --- /dev/null +++ b/fonts/ingame/UbuntuMono-R.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://bkbdt0dmksd4x" +path="res://.godot/imported/UbuntuMono-R.ttf-c39c7801c3b4ca46171ebf8e4e247c37.fontdata" + +[deps] + +source_file="res://fonts/ingame/UbuntuMono-R.ttf" +dest_files=["res://.godot/imported/UbuntuMono-R.ttf-c39c7801c3b4ca46171ebf8e4e247c37.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/icons/appicon.svg.import b/icons/appicon.svg.import index aa1076d3..9b4f220a 100644 --- a/icons/appicon.svg.import +++ b/icons/appicon.svg.import @@ -1,8 +1,9 @@ [remap] importer="texture" -type="StreamTexture" -path="res://.import/appicon.svg-8cc715ee4138ca8734017aadc766ac44.stex" +type="CompressedTexture2D" +uid="uid://efmekp3b3dto" +path="res://.godot/imported/appicon.svg-8cc715ee4138ca8734017aadc766ac44.ctex" metadata={ "vram_texture": false } @@ -10,25 +11,27 @@ metadata={ [deps] source_file="res://icons/appicon.svg" -dest_files=[ "res://.import/appicon.svg-8cc715ee4138ca8734017aadc766ac44.stex" ] +dest_files=["res://.godot/imported/appicon.svg-8cc715ee4138ca8734017aadc766ac44.ctex"] [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 +compress/hdr_compression=1 compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -stream=false -size_limit=0 -detect_3d=true +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/icons/buttons/activate.svg.import b/icons/buttons/activate.svg.import index d5ca57c4..43c1c423 100644 --- a/icons/buttons/activate.svg.import +++ b/icons/buttons/activate.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/activate.svg-96299c27af7b843f23c2fd384d5130ab.image" +uid="uid://djecfgdbkmqlv" +path="res://.godot/imported/activate.svg-96299c27af7b843f23c2fd384d5130ab.image" [deps] source_file="res://icons/buttons/activate.svg" -dest_files=[ "res://.import/activate.svg-96299c27af7b843f23c2fd384d5130ab.image" ] +dest_files=["res://.godot/imported/activate.svg-96299c27af7b843f23c2fd384d5130ab.image"] [params] diff --git a/icons/buttons/delete.svg.import b/icons/buttons/delete.svg.import index aabb4b12..7e910f27 100644 --- a/icons/buttons/delete.svg.import +++ b/icons/buttons/delete.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/delete.svg-eb3f283ce0845cc310f35455bb8a389f.image" +uid="uid://bd6dkwe2xktfk" +path="res://.godot/imported/delete.svg-eb3f283ce0845cc310f35455bb8a389f.image" [deps] source_file="res://icons/buttons/delete.svg" -dest_files=[ "res://.import/delete.svg-eb3f283ce0845cc310f35455bb8a389f.image" ] +dest_files=["res://.godot/imported/delete.svg-eb3f283ce0845cc310f35455bb8a389f.image"] [params] diff --git a/icons/buttons/download.svg.import b/icons/buttons/download.svg.import index d7b022da..2ba4a70f 100644 --- a/icons/buttons/download.svg.import +++ b/icons/buttons/download.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/download.svg-9c96e819818866701a8a985608394973.image" +uid="uid://dsil04ws401dm" +path="res://.godot/imported/download.svg-9c96e819818866701a8a985608394973.image" [deps] source_file="res://icons/buttons/download.svg" -dest_files=[ "res://.import/download.svg-9c96e819818866701a8a985608394973.image" ] +dest_files=["res://.godot/imported/download.svg-9c96e819818866701a8a985608394973.image"] [params] diff --git a/icons/buttons/play.svg.import b/icons/buttons/play.svg.import index 03cf0e79..e0d842af 100644 --- a/icons/buttons/play.svg.import +++ b/icons/buttons/play.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/play.svg-56c236147ec6a3c20de6f1b933772dc4.image" +uid="uid://dtxneotl0puo2" +path="res://.godot/imported/play.svg-56c236147ec6a3c20de6f1b933772dc4.image" [deps] source_file="res://icons/buttons/play.svg" -dest_files=[ "res://.import/play.svg-56c236147ec6a3c20de6f1b933772dc4.image" ] +dest_files=["res://.godot/imported/play.svg-56c236147ec6a3c20de6f1b933772dc4.image"] [params] diff --git a/icons/buttons/resume.svg.import b/icons/buttons/resume.svg.import index e9ddd216..2e7f2a4c 100644 --- a/icons/buttons/resume.svg.import +++ b/icons/buttons/resume.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/resume.svg-7e6eedb6256fc04995eef3be7c7de11e.image" +uid="uid://coqdqp806dnle" +path="res://.godot/imported/resume.svg-7e6eedb6256fc04995eef3be7c7de11e.image" [deps] source_file="res://icons/buttons/resume.svg" -dest_files=[ "res://.import/resume.svg-7e6eedb6256fc04995eef3be7c7de11e.image" ] +dest_files=["res://.godot/imported/resume.svg-7e6eedb6256fc04995eef3be7c7de11e.image"] [params] diff --git a/icons/folder_game.svg.import b/icons/folder_game.svg.import index 4f083aa2..230f342b 100644 --- a/icons/folder_game.svg.import +++ b/icons/folder_game.svg.import @@ -1,8 +1,9 @@ [remap] importer="texture" -type="StreamTexture" -path="res://.import/folder_game.svg-93deb0d50c17b922defc6e8681423479.stex" +type="CompressedTexture2D" +uid="uid://c8pe3ckwjamrl" +path="res://.godot/imported/folder_game.svg-93deb0d50c17b922defc6e8681423479.ctex" metadata={ "vram_texture": false } @@ -10,26 +11,27 @@ metadata={ [deps] source_file="res://icons/folder_game.svg" -dest_files=[ "res://.import/folder_game.svg-93deb0d50c17b922defc6e8681423479.stex" ] +dest_files=["res://.godot/imported/folder_game.svg-93deb0d50c17b922defc6e8681423479.ctex"] [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 +compress/hdr_compression=1 compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/icons/folder_user.svg.import b/icons/folder_user.svg.import index 1c3fab45..32e9b93a 100644 --- a/icons/folder_user.svg.import +++ b/icons/folder_user.svg.import @@ -1,8 +1,9 @@ [remap] importer="texture" -type="StreamTexture" -path="res://.import/folder_user.svg-44a1d7c47ddbdce80c00b88586f6f447.stex" +type="CompressedTexture2D" +uid="uid://boe62hlvfx4sk" +path="res://.godot/imported/folder_user.svg-44a1d7c47ddbdce80c00b88586f6f447.ctex" metadata={ "vram_texture": false } @@ -10,26 +11,27 @@ metadata={ [deps] source_file="res://icons/folder_user.svg" -dest_files=[ "res://.import/folder_user.svg-44a1d7c47ddbdce80c00b88586f6f447.stex" ] +dest_files=["res://.godot/imported/folder_user.svg-44a1d7c47ddbdce80c00b88586f6f447.ctex"] [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 +compress/hdr_compression=1 compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/icons/help.svg.import b/icons/help.svg.import index 0a43add6..eb0d334b 100644 --- a/icons/help.svg.import +++ b/icons/help.svg.import @@ -1,8 +1,9 @@ [remap] importer="texture" -type="StreamTexture" -path="res://.import/help.svg-ab0e78fdbc27e34b7b2a494b462b374b.stex" +type="CompressedTexture2D" +uid="uid://bmifbdmqep5f2" +path="res://.godot/imported/help.svg-ab0e78fdbc27e34b7b2a494b462b374b.ctex" metadata={ "vram_texture": false } @@ -10,25 +11,27 @@ metadata={ [deps] source_file="res://icons/help.svg" -dest_files=[ "res://.import/help.svg-ab0e78fdbc27e34b7b2a494b462b374b.stex" ] +dest_files=["res://.godot/imported/help.svg-ab0e78fdbc27e34b7b2a494b462b374b.ctex"] [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 +compress/hdr_compression=1 compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -stream=false -size_limit=0 -detect_3d=true +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/icons/info.svg.import b/icons/info.svg.import index 5b3d137a..98b09a36 100644 --- a/icons/info.svg.import +++ b/icons/info.svg.import @@ -1,8 +1,9 @@ [remap] importer="texture" -type="StreamTexture" -path="res://.import/info.svg-a82ee851609103767ca4116e138ab75b.stex" +type="CompressedTexture2D" +uid="uid://dbd0vhgo2wdv2" +path="res://.godot/imported/info.svg-a82ee851609103767ca4116e138ab75b.ctex" metadata={ "vram_texture": false } @@ -10,25 +11,27 @@ metadata={ [deps] source_file="res://icons/info.svg" -dest_files=[ "res://.import/info.svg-a82ee851609103767ca4116e138ab75b.stex" ] +dest_files=["res://.godot/imported/info.svg-a82ee851609103767ca4116e138ab75b.ctex"] [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 +compress/hdr_compression=1 compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -stream=false -size_limit=0 -detect_3d=true +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/icons/lang/lang-pl.svg.import b/icons/lang/lang-pl.svg.import index e583135c..36373c93 100644 --- a/icons/lang/lang-pl.svg.import +++ b/icons/lang/lang-pl.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/lang-pl.svg-dcdf9192a39eef6cec4ee0230757adaa.image" +uid="uid://cadnoswc258jn" +path="res://.godot/imported/lang-pl.svg-dcdf9192a39eef6cec4ee0230757adaa.image" [deps] source_file="res://icons/lang/lang-pl.svg" -dest_files=[ "res://.import/lang-pl.svg-dcdf9192a39eef6cec4ee0230757adaa.image" ] +dest_files=["res://.godot/imported/lang-pl.svg-dcdf9192a39eef6cec4ee0230757adaa.image"] [params] diff --git a/icons/lang/lang-tr.svg.import b/icons/lang/lang-tr.svg.import index f1b1735e..01bdfef8 100644 --- a/icons/lang/lang-tr.svg.import +++ b/icons/lang/lang-tr.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/lang-tr.svg-05d40da15054ac5266c746f529864c8f.image" +uid="uid://c4pr30kk8avmf" +path="res://.godot/imported/lang-tr.svg-05d40da15054ac5266c746f529864c8f.image" [deps] source_file="res://icons/lang/lang-tr.svg" -dest_files=[ "res://.import/lang-tr.svg-05d40da15054ac5266c746f529864c8f.image" ] +dest_files=["res://.godot/imported/lang-tr.svg-05d40da15054ac5266c746f529864c8f.image"] [params] diff --git a/icons/lang/lang_cs.svg.import b/icons/lang/lang_cs.svg.import index 355b6429..b9aaf45d 100644 --- a/icons/lang/lang_cs.svg.import +++ b/icons/lang/lang_cs.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/lang_cs.svg-915a1de056804e961ee877a1a91f6fe2.image" +uid="uid://dm0ffgxbwxcn6" +path="res://.godot/imported/lang_cs.svg-915a1de056804e961ee877a1a91f6fe2.image" [deps] source_file="res://icons/lang/lang_cs.svg" -dest_files=[ "res://.import/lang_cs.svg-915a1de056804e961ee877a1a91f6fe2.image" ] +dest_files=["res://.godot/imported/lang_cs.svg-915a1de056804e961ee877a1a91f6fe2.image"] [params] diff --git a/icons/lang/lang_en.svg.import b/icons/lang/lang_en.svg.import index 51b84c3f..7667305f 100644 --- a/icons/lang/lang_en.svg.import +++ b/icons/lang/lang_en.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/lang_en.svg-67b65a414e624531fed9b67b2e59a88b.image" +uid="uid://bfa8s8qyrv8ak" +path="res://.godot/imported/lang_en.svg-67b65a414e624531fed9b67b2e59a88b.image" [deps] source_file="res://icons/lang/lang_en.svg" -dest_files=[ "res://.import/lang_en.svg-67b65a414e624531fed9b67b2e59a88b.image" ] +dest_files=["res://.godot/imported/lang_en.svg-67b65a414e624531fed9b67b2e59a88b.image"] [params] diff --git a/icons/lang/lang_es.svg.import b/icons/lang/lang_es.svg.import index d656b5c7..461d64d9 100644 --- a/icons/lang/lang_es.svg.import +++ b/icons/lang/lang_es.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/lang_es.svg-8eb9cd0ec415153b0fe37dc2cd38a75c.image" +uid="uid://bo2wlxw615mah" +path="res://.godot/imported/lang_es.svg-8eb9cd0ec415153b0fe37dc2cd38a75c.image" [deps] source_file="res://icons/lang/lang_es.svg" -dest_files=[ "res://.import/lang_es.svg-8eb9cd0ec415153b0fe37dc2cd38a75c.image" ] +dest_files=["res://.godot/imported/lang_es.svg-8eb9cd0ec415153b0fe37dc2cd38a75c.image"] [params] diff --git a/icons/lang/lang_fr.svg.import b/icons/lang/lang_fr.svg.import index d143ba27..aa420df3 100644 --- a/icons/lang/lang_fr.svg.import +++ b/icons/lang/lang_fr.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/lang_fr.svg-8c09c2b664f72e91e0fecf9719d305d7.image" +uid="uid://bpdsyqq4sw1uq" +path="res://.godot/imported/lang_fr.svg-8c09c2b664f72e91e0fecf9719d305d7.image" [deps] source_file="res://icons/lang/lang_fr.svg" -dest_files=[ "res://.import/lang_fr.svg-8c09c2b664f72e91e0fecf9719d305d7.image" ] +dest_files=["res://.godot/imported/lang_fr.svg-8c09c2b664f72e91e0fecf9719d305d7.image"] [params] diff --git a/icons/lang/lang_ko.svg.import b/icons/lang/lang_ko.svg.import index 7752e5f5..cf7ff611 100644 --- a/icons/lang/lang_ko.svg.import +++ b/icons/lang/lang_ko.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/lang_ko.svg-f51eed7c559719025da85b9243c061b5.image" +uid="uid://dat7xnrpw42ri" +path="res://.godot/imported/lang_ko.svg-f51eed7c559719025da85b9243c061b5.image" [deps] source_file="res://icons/lang/lang_ko.svg" -dest_files=[ "res://.import/lang_ko.svg-f51eed7c559719025da85b9243c061b5.image" ] +dest_files=["res://.godot/imported/lang_ko.svg-f51eed7c559719025da85b9243c061b5.image"] [params] diff --git a/icons/lang/lang_pt.svg.import b/icons/lang/lang_pt.svg.import index ed4e266a..ce57fcfc 100644 --- a/icons/lang/lang_pt.svg.import +++ b/icons/lang/lang_pt.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/lang_pt.svg-b5727325abbef00c8adfec7109ec90b3.image" +uid="uid://bb4ofrtv4evl8" +path="res://.godot/imported/lang_pt.svg-b5727325abbef00c8adfec7109ec90b3.image" [deps] source_file="res://icons/lang/lang_pt.svg" -dest_files=[ "res://.import/lang_pt.svg-b5727325abbef00c8adfec7109ec90b3.image" ] +dest_files=["res://.godot/imported/lang_pt.svg-b5727325abbef00c8adfec7109ec90b3.image"] [params] diff --git a/icons/lang/lang_ru.svg.import b/icons/lang/lang_ru.svg.import index ea6a6a42..e9c0b602 100644 --- a/icons/lang/lang_ru.svg.import +++ b/icons/lang/lang_ru.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/lang_ru.svg-eb492fa34f52caedca6c1d0aa2d16a63.image" +uid="uid://dxsec1r1urdtv" +path="res://.godot/imported/lang_ru.svg-eb492fa34f52caedca6c1d0aa2d16a63.image" [deps] source_file="res://icons/lang/lang_ru.svg" -dest_files=[ "res://.import/lang_ru.svg-eb492fa34f52caedca6c1d0aa2d16a63.image" ] +dest_files=["res://.godot/imported/lang_ru.svg-eb492fa34f52caedca6c1d0aa2d16a63.image"] [params] diff --git a/icons/lang/lang_zh.svg.import b/icons/lang/lang_zh.svg.import index f813889b..b306a5ca 100644 --- a/icons/lang/lang_zh.svg.import +++ b/icons/lang/lang_zh.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/lang_zh.svg-190f96e27fd9b2c5c04b28ba84940564.image" +uid="uid://cq8vjkwmgkxu1" +path="res://.godot/imported/lang_zh.svg-190f96e27fd9b2c5c04b28ba84940564.image" [deps] source_file="res://icons/lang/lang_zh.svg" -dest_files=[ "res://.import/lang_zh.svg-190f96e27fd9b2c5c04b28ba84940564.image" ] +dest_files=["res://.godot/imported/lang_zh.svg-190f96e27fd9b2c5c04b28ba84940564.image"] [params] diff --git a/icons/placeholder.svg.import b/icons/placeholder.svg.import index 498b5526..4e7cba20 100644 --- a/icons/placeholder.svg.import +++ b/icons/placeholder.svg.import @@ -1,8 +1,9 @@ [remap] importer="texture" -type="StreamTexture" -path="res://.import/placeholder.svg-6fcf5bc9686c035a74d6211bc2e89751.stex" +type="CompressedTexture2D" +uid="uid://cdnsgm0254oda" +path="res://.godot/imported/placeholder.svg-6fcf5bc9686c035a74d6211bc2e89751.ctex" metadata={ "vram_texture": false } @@ -10,25 +11,27 @@ metadata={ [deps] source_file="res://icons/placeholder.svg" -dest_files=[ "res://.import/placeholder.svg-6fcf5bc9686c035a74d6211bc2e89751.stex" ] +dest_files=["res://.godot/imported/placeholder.svg-6fcf5bc9686c035a74d6211bc2e89751.ctex"] [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 +compress/hdr_compression=1 compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -stream=false -size_limit=0 -detect_3d=true +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/icons/theme/godot3.svg.import b/icons/theme/godot3.svg.import index 0f3ed267..dc132d2e 100644 --- a/icons/theme/godot3.svg.import +++ b/icons/theme/godot3.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/godot3.svg-93abcd24d98a0a648490dad29b216bee.image" +uid="uid://bg64ueq5b5qk" +path="res://.godot/imported/godot3.svg-93abcd24d98a0a648490dad29b216bee.image" [deps] source_file="res://icons/theme/godot3.svg" -dest_files=[ "res://.import/godot3.svg-93abcd24d98a0a648490dad29b216bee.image" ] +dest_files=["res://.godot/imported/godot3.svg-93abcd24d98a0a648490dad29b216bee.image"] [params] diff --git a/icons/theme/grey.svg.import b/icons/theme/grey.svg.import index 293893cb..20ae7481 100644 --- a/icons/theme/grey.svg.import +++ b/icons/theme/grey.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/grey.svg-8deae262264540ec07ff2d9195e173dd.image" +uid="uid://bm3dhgtyynugr" +path="res://.godot/imported/grey.svg-8deae262264540ec07ff2d9195e173dd.image" [deps] source_file="res://icons/theme/grey.svg" -dest_files=[ "res://.import/grey.svg-8deae262264540ec07ff2d9195e173dd.image" ] +dest_files=["res://.godot/imported/grey.svg-8deae262264540ec07ff2d9195e173dd.image"] [params] diff --git a/icons/theme/light.svg.import b/icons/theme/light.svg.import index f4c607c4..e318f9b5 100644 --- a/icons/theme/light.svg.import +++ b/icons/theme/light.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/light.svg-f8031eaab707e379bdbb80ebafd0a3a2.image" +uid="uid://do887msxvdkdg" +path="res://.godot/imported/light.svg-f8031eaab707e379bdbb80ebafd0a3a2.image" [deps] source_file="res://icons/theme/light.svg" -dest_files=[ "res://.import/light.svg-f8031eaab707e379bdbb80ebafd0a3a2.image" ] +dest_files=["res://.godot/imported/light.svg-f8031eaab707e379bdbb80ebafd0a3a2.image"] [params] diff --git a/icons/theme/solarized_dark.svg.import b/icons/theme/solarized_dark.svg.import index c1ccda6b..3e31804d 100644 --- a/icons/theme/solarized_dark.svg.import +++ b/icons/theme/solarized_dark.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/solarized_dark.svg-8d2b2730c48d9b8eb47bd56826ff4833.image" +uid="uid://chkx4g6ro6dif" +path="res://.godot/imported/solarized_dark.svg-8d2b2730c48d9b8eb47bd56826ff4833.image" [deps] source_file="res://icons/theme/solarized_dark.svg" -dest_files=[ "res://.import/solarized_dark.svg-8d2b2730c48d9b8eb47bd56826ff4833.image" ] +dest_files=["res://.godot/imported/solarized_dark.svg-8d2b2730c48d9b8eb47bd56826ff4833.image"] [params] diff --git a/icons/theme/solarized_light.svg.import b/icons/theme/solarized_light.svg.import index 2ebac3cc..eb090641 100644 --- a/icons/theme/solarized_light.svg.import +++ b/icons/theme/solarized_light.svg.import @@ -2,12 +2,13 @@ importer="image" type="Image" -path="res://.import/solarized_light.svg-4c415a59213383a60aed2002a1466cea.image" +uid="uid://bpq8f77qembbr" +path="res://.godot/imported/solarized_light.svg-4c415a59213383a60aed2002a1466cea.image" [deps] source_file="res://icons/theme/solarized_light.svg" -dest_files=[ "res://.import/solarized_light.svg-4c415a59213383a60aed2002a1466cea.image" ] +dest_files=["res://.godot/imported/solarized_light.svg-4c415a59213383a60aed2002a1466cea.image"] [params] diff --git a/icons/transparent.png.import b/icons/transparent.png.import index 9b8a0088..f5299425 100644 --- a/icons/transparent.png.import +++ b/icons/transparent.png.import @@ -1,8 +1,9 @@ [remap] importer="texture" -type="StreamTexture" -path="res://.import/transparent.png-4210ef65d010e29127410224f3a5a2e7.stex" +type="CompressedTexture2D" +uid="uid://dmumwes8is8w1" +path="res://.godot/imported/transparent.png-4210ef65d010e29127410224f3a5a2e7.ctex" metadata={ "vram_texture": false } @@ -10,25 +11,24 @@ metadata={ [deps] source_file="res://icons/transparent.png" -dest_files=[ "res://.import/transparent.png-4210ef65d010e29127410224f3a5a2e7.stex" ] +dest_files=["res://.godot/imported/transparent.png-4210ef65d010e29127410224f3a5a2e7.ctex"] [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 +compress/hdr_compression=1 compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/images/font-rect.png.import b/images/font-rect.png.import index 7cc0f5bc..a2426571 100644 --- a/images/font-rect.png.import +++ b/images/font-rect.png.import @@ -1,8 +1,9 @@ [remap] importer="texture" -type="StreamTexture" -path="res://.import/font-rect.png-890c7bdb16b292867449fd0d1dbb3dd8.stex" +type="CompressedTexture2D" +uid="uid://caoi3gx5dirne" +path="res://.godot/imported/font-rect.png-890c7bdb16b292867449fd0d1dbb3dd8.ctex" metadata={ "vram_texture": false } @@ -10,26 +11,24 @@ metadata={ [deps] source_file="res://images/font-rect.png" -dest_files=[ "res://.import/font-rect.png-890c7bdb16b292867449fd0d1dbb3dd8.stex" ] +dest_files=["res://.godot/imported/font-rect.png-890c7bdb16b292867449fd0d1dbb3dd8.ctex"] [params] compress/mode=1 +compress/high_quality=false compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 +compress/hdr_compression=1 compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/images/font-sizes.png.import b/images/font-sizes.png.import index 3e7e41cd..e578affa 100644 --- a/images/font-sizes.png.import +++ b/images/font-sizes.png.import @@ -1,8 +1,9 @@ [remap] importer="texture" -type="StreamTexture" -path="res://.import/font-sizes.png-5979e2fb93ab7e04e7276bb3d7a9e34d.stex" +type="CompressedTexture2D" +uid="uid://dvuiyj4fnnq1n" +path="res://.godot/imported/font-sizes.png-5979e2fb93ab7e04e7276bb3d7a9e34d.ctex" metadata={ "vram_texture": false } @@ -10,26 +11,24 @@ metadata={ [deps] source_file="res://images/font-sizes.png" -dest_files=[ "res://.import/font-sizes.png-5979e2fb93ab7e04e7276bb3d7a9e34d.stex" ] +dest_files=["res://.godot/imported/font-sizes.png-5979e2fb93ab7e04e7276bb3d7a9e34d.ctex"] [params] compress/mode=1 +compress/high_quality=false compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 +compress/hdr_compression=1 compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/project.godot b/project.godot index 40ecb79f..281cde41 100644 --- a/project.godot +++ b/project.godot @@ -6,57 +6,24 @@ ; [section] ; section goes between [] ; param=value ; assign values to parameters -config_version=4 - -_global_script_classes=[ { -"base": "Reference", -"class": "Enums", -"language": "GDScript", -"path": "res://scripts/Enums.gd" -}, { -"base": "Object", -"class": "OSExecWrapper", -"language": "GDScript", -"path": "res://scripts/OSExecWrapper.gd" -}, { -"base": "ImageTexture", -"class": "ScalableImageTexture", -"language": "GDScript", -"path": "res://scripts/scalable_texture.gd" -}, { -"base": "Theme", -"class": "ScalableTheme", -"language": "GDScript", -"path": "res://scripts/scalable_theme.gd" -}, { -"base": "Object", -"class": "ThreadedFuncExecutor", -"language": "GDScript", -"path": "res://scripts/ThreadedFuncExecutor.gd" -} ] -_global_script_class_icons={ -"Enums": "", -"OSExecWrapper": "", -"ScalableImageTexture": "", -"ScalableTheme": "", -"ThreadedFuncExecutor": "" -} +config_version=5 [application] config/name="Catapult" config/description="A cross-platform launcher for Cataclysm: DDA and BN" run/main_scene="res://scenes/Catapult.tscn" +config/features=PackedStringArray("4.2") run/low_processor_mode=true +boot_splash/bg_color=Color(0, 0, 0, 0) boot_splash/image="res://icons/transparent.png" boot_splash/use_filter=false -boot_splash/bg_color=Color( 0, 0, 0, 0 ) config/icon="res://icons/appicon.svg" config/windows_native_icon="res://icons/appicon.ico" [audio] -default_bus_layout="" +buses/default_bus_layout="" driver="Dummy" [autoload] @@ -72,18 +39,17 @@ TOTD="*res://scripts/totd.gd" [display] -window/size/width=600 -window/size/height=700 +window/size/viewport_width=600 +window/size/viewport_height=700 window/size/borderless=true -window/size/test_width=1 -window/size/test_height=1 -window/dpi/allow_hidpi=true +window/size/window_width_override=1 +window/size/window_height_override=1 window/per_pixel_transparency/allowed=true window/per_pixel_transparency/enabled=true [gdnative] -singletons=[ ] +singletons=[] [gui] @@ -93,46 +59,46 @@ theme/use_hidpi=true ui_accept={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777222,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194309,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194310,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] } ui_select={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] } ui_cancel={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194305,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] } ui_left={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] } ui_right={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] } ui_up={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] } ui_down={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194322,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] } [locale] -translations=PoolStringArray( "res://text/en/backups_tab.en.translation", "res://text/en/backup_manager.en.translation", "res://text/en/changelog_dialog.en.translation", "res://text/en/dialog_buttons.en.translation", "res://text/en/download_manager.en.translation", "res://text/en/easter_egg.en.translation", "res://text/en/filesystem_helper.en.translation", "res://text/en/fonts_tab.en.translation", "res://text/en/font_help_dialog.en.translation", "res://text/en/font_info.en.translation", "res://text/en/font_manager.en.translation", "res://text/en/game_tab.en.translation", "res://text/en/general.en.translation", "res://text/en/install_probe.en.translation", "res://text/en/mods_tab.en.translation", "res://text/en/mod_manager.en.translation", "res://text/en/mod_reinstall_dialog.en.translation", "res://text/en/release_installer.en.translation", "res://text/en/release_manager.en.translation", "res://text/en/settings_manager.en.translation", "res://text/en/settings_tab.en.translation", "res://text/en/soundpacks_tab.en.translation", "res://text/en/soundpack_manager.en.translation", "res://text/en/tips.en.translation", "res://text/ru/backups_tab.ru.translation", "res://text/ru/backup_manager.ru.translation", "res://text/ru/changelog_dialog.ru.translation", "res://text/ru/dialog_buttons.ru.translation", "res://text/ru/download_manager.ru.translation", "res://text/ru/easter_egg.ru.translation", "res://text/ru/filesystem_helper.ru.translation", "res://text/ru/fonts_tab.ru.translation", "res://text/ru/font_help_dialog.ru.translation", "res://text/ru/font_info.ru.translation", "res://text/ru/font_manager.ru.translation", "res://text/ru/game_tab.ru.translation", "res://text/ru/general.ru.translation", "res://text/ru/install_probe.ru.translation", "res://text/ru/mods_tab.ru.translation", "res://text/ru/mod_manager.ru.translation", "res://text/ru/mod_reinstall_dialog.ru.translation", "res://text/ru/release_installer.ru.translation", "res://text/ru/release_manager.ru.translation", "res://text/ru/settings_manager.ru.translation", "res://text/ru/settings_tab.ru.translation", "res://text/ru/soundpacks_tab.ru.translation", "res://text/ru/soundpack_manager.ru.translation", "res://text/ru/tips.ru.translation", "res://text/zh/backups_tab.zh.translation", "res://text/zh/backup_manager.zh.translation", "res://text/zh/changelog_dialog.zh.translation", "res://text/zh/dialog_buttons.zh.translation", "res://text/zh/download_manager.zh.translation", "res://text/zh/easter_egg.zh.translation", "res://text/zh/filesystem_helper.zh.translation", "res://text/zh/fonts_tab.zh.translation", "res://text/zh/font_help_dialog.zh.translation", "res://text/zh/font_info.zh.translation", "res://text/zh/font_manager.zh.translation", "res://text/zh/game_tab.zh.translation", "res://text/zh/general.zh.translation", "res://text/zh/install_probe.zh.translation", "res://text/zh/mods_tab.zh.translation", "res://text/zh/mod_manager.zh.translation", "res://text/zh/mod_reinstall_dialog.zh.translation", "res://text/zh/release_installer.zh.translation", "res://text/zh/release_manager.zh.translation", "res://text/zh/settings_manager.zh.translation", "res://text/zh/settings_tab.zh.translation", "res://text/zh/soundpacks_tab.zh.translation", "res://text/zh/soundpack_manager.zh.translation", "res://text/zh/tips.zh.translation", "res://text/fr/backups_tab.fr.translation", "res://text/fr/backup_manager.fr.translation", "res://text/fr/changelog_dialog.fr.translation", "res://text/fr/dialog_buttons.fr.translation", "res://text/fr/download_manager.fr.translation", "res://text/fr/easter_egg.fr.translation", "res://text/fr/filesystem_helper.fr.translation", "res://text/fr/fonts_tab.fr.translation", "res://text/fr/font_help_dialog.fr.translation", "res://text/fr/font_info.fr.translation", "res://text/fr/font_manager.fr.translation", "res://text/fr/game_tab.fr.translation", "res://text/fr/general.fr.translation", "res://text/fr/install_probe.fr.translation", "res://text/fr/mods_tab.fr.translation", "res://text/fr/mod_manager.fr.translation", "res://text/fr/mod_reinstall_dialog.fr.translation", "res://text/fr/release_installer.fr.translation", "res://text/fr/release_manager.fr.translation", "res://text/fr/settings_manager.fr.translation", "res://text/fr/settings_tab.fr.translation", "res://text/fr/soundpacks_tab.fr.translation", "res://text/fr/soundpack_manager.fr.translation", "res://text/fr/tips.fr.translation", "res://text/en/helpers.en.translation", "res://text/fr/helpers.fr.translation", "res://text/ru/helpers.ru.translation", "res://text/zh/helpers.zh.translation", "res://text/cs/backups_tab.cs.translation", "res://text/cs/backup_manager.cs.translation", "res://text/cs/changelog_dialog.cs.translation", "res://text/cs/dialog_buttons.cs.translation", "res://text/cs/download_manager.cs.translation", "res://text/cs/easter_egg.cs.translation", "res://text/cs/filesystem_helper.cs.translation", "res://text/cs/fonts_tab.cs.translation", "res://text/cs/font_help_dialog.cs.translation", "res://text/cs/font_info.cs.translation", "res://text/cs/font_manager.cs.translation", "res://text/cs/game_tab.cs.translation", "res://text/cs/general.cs.translation", "res://text/cs/helpers.cs.translation", "res://text/cs/install_probe.cs.translation", "res://text/cs/mods_tab.cs.translation", "res://text/cs/mod_manager.cs.translation", "res://text/cs/mod_reinstall_dialog.cs.translation", "res://text/cs/release_installer.cs.translation", "res://text/cs/release_manager.cs.translation", "res://text/cs/settings_manager.cs.translation", "res://text/cs/settings_tab.cs.translation", "res://text/cs/soundpacks_tab.cs.translation", "res://text/cs/soundpack_manager.cs.translation", "res://text/cs/tips.cs.translation", "res://text/es/backups_tab.es.translation", "res://text/es/backup_manager.es.translation", "res://text/es/changelog_dialog.es.translation", "res://text/es/dialog_buttons.es.translation", "res://text/es/download_manager.es.translation", "res://text/es/easter_egg.es.translation", "res://text/es/filesystem_helper.es.translation", "res://text/es/helpers.es.translation", "res://text/es/general.es.translation", "res://text/es/game_tab.es.translation", "res://text/es/font_manager.es.translation", "res://text/es/font_info.es.translation", "res://text/es/font_help_dialog.es.translation", "res://text/es/fonts_tab.es.translation", "res://text/es/install_probe.es.translation", "res://text/es/mods_tab.es.translation", "res://text/es/mod_manager.es.translation", "res://text/es/mod_reinstall_dialog.es.translation", "res://text/es/release_installer.es.translation", "res://text/es/release_manager.es.translation", "res://text/es/settings_manager.es.translation", "res://text/es/settings_tab.es.translation", "res://text/es/soundpacks_tab.es.translation", "res://text/es/soundpack_manager.es.translation", "res://text/es/tips.es.translation", "res://text/pl/backups_tab.pl.translation", "res://text/pl/backup_manager.pl.translation", "res://text/pl/changelog_dialog.pl.translation", "res://text/pl/dialog_buttons.pl.translation", "res://text/pl/download_manager.pl.translation", "res://text/pl/easter_egg.pl.translation", "res://text/pl/filesystem_helper.pl.translation", "res://text/pl/fonts_tab.pl.translation", "res://text/pl/font_help_dialog.pl.translation", "res://text/pl/font_info.pl.translation", "res://text/pl/font_manager.pl.translation", "res://text/pl/game_tab.pl.translation", "res://text/pl/general.pl.translation", "res://text/pl/helpers.pl.translation", "res://text/pl/install_probe.pl.translation", "res://text/pl/mods_tab.pl.translation", "res://text/pl/mod_manager.pl.translation", "res://text/pl/mod_reinstall_dialog.pl.translation", "res://text/pl/release_installer.pl.translation", "res://text/pl/release_manager.pl.translation", "res://text/pl/settings_manager.pl.translation", "res://text/pl/settings_tab.pl.translation", "res://text/pl/soundpacks_tab.pl.translation", "res://text/pl/soundpack_manager.pl.translation", "res://text/pl/tips.pl.translation", "res://text/tr/backups_tab.tr.translation", "res://text/tr/backup_manager.tr.translation", "res://text/tr/changelog_dialog.tr.translation", "res://text/tr/dialog_buttons.tr.translation", "res://text/tr/download_manager.tr.translation", "res://text/tr/easter_egg.tr.translation", "res://text/tr/filesystem_helper.tr.translation", "res://text/tr/fonts_tab.tr.translation", "res://text/tr/font_help_dialog.tr.translation", "res://text/tr/font_info.tr.translation", "res://text/tr/font_manager.tr.translation", "res://text/tr/game_tab.tr.translation", "res://text/tr/general.tr.translation", "res://text/tr/helpers.tr.translation", "res://text/tr/install_probe.tr.translation", "res://text/tr/mods_tab.tr.translation", "res://text/tr/mod_manager.tr.translation", "res://text/tr/mod_reinstall_dialog.tr.translation", "res://text/tr/release_installer.tr.translation", "res://text/tr/release_manager.tr.translation", "res://text/tr/settings_manager.tr.translation", "res://text/tr/settings_tab.tr.translation", "res://text/tr/soundpacks_tab.tr.translation", "res://text/tr/soundpack_manager.tr.translation", "res://text/tr/tips.tr.translation", "res://text/pt/backups_tab.pt.translation", "res://text/pt/backup_manager.pt.translation", "res://text/pt/changelog_dialog.pt.translation", "res://text/pt/dialog_buttons.pt.translation", "res://text/pt/download_manager.pt.translation", "res://text/pt/easter_egg.pt.translation", "res://text/pt/filesystem_helper.pt.translation", "res://text/pt/fonts_tab.pt.translation", "res://text/pt/font_help_dialog.pt.translation", "res://text/pt/font_info.pt.translation", "res://text/pt/font_manager.pt.translation", "res://text/pt/game_tab.pt.translation", "res://text/pt/general.pt.translation", "res://text/pt/helpers.pt.translation", "res://text/pt/install_probe.pt.translation", "res://text/pt/mods_tab.pt.translation", "res://text/pt/mod_manager.pt.translation", "res://text/pt/mod_reinstall_dialog.pt.translation", "res://text/pt/release_installer.pt.translation", "res://text/pt/release_manager.pt.translation", "res://text/pt/settings_manager.pt.translation", "res://text/pt/settings_tab.pt.translation", "res://text/pt/soundpacks_tab.pt.translation", "res://text/pt/soundpack_manager.pt.translation", "res://text/pt/tips.pt.translation", "res://text/ko/backups_tab.ko.translation", "res://text/ko/backup_manager.ko.translation", "res://text/ko/changelog_dialog.ko.translation", "res://text/ko/dialog_buttons.ko.translation", "res://text/ko/download_manager.ko.translation", "res://text/ko/easter_egg.ko.translation", "res://text/ko/filesystem_helper.ko.translation", "res://text/ko/fonts_tab.ko.translation", "res://text/ko/font_help_dialog.ko.translation", "res://text/ko/font_info.ko.translation", "res://text/ko/font_manager.ko.translation", "res://text/ko/game_tab.ko.translation", "res://text/ko/general.ko.translation", "res://text/ko/helpers.ko.translation", "res://text/ko/install_probe.ko.translation", "res://text/ko/mods_tab.ko.translation", "res://text/ko/mod_manager.ko.translation", "res://text/ko/mod_reinstall_dialog.ko.translation", "res://text/ko/release_installer.ko.translation", "res://text/ko/release_manager.ko.translation", "res://text/ko/settings_manager.ko.translation", "res://text/ko/settings_tab.ko.translation", "res://text/ko/soundpacks_tab.ko.translation", "res://text/ko/soundpack_manager.ko.translation", "res://text/ko/tips.ko.translation" ) -locale_filter=[ 0, [ "en", "ru", "zh" ] ] +translations=PackedStringArray("res://text/en/backups_tab.en.translation", "res://text/en/backup_manager.en.translation", "res://text/en/changelog_dialog.en.translation", "res://text/en/dialog_buttons.en.translation", "res://text/en/download_manager.en.translation", "res://text/en/easter_egg.en.translation", "res://text/en/filesystem_helper.en.translation", "res://text/en/fonts_tab.en.translation", "res://text/en/font_help_dialog.en.translation", "res://text/en/font_info.en.translation", "res://text/en/font_manager.en.translation", "res://text/en/game_tab.en.translation", "res://text/en/general.en.translation", "res://text/en/install_probe.en.translation", "res://text/en/mods_tab.en.translation", "res://text/en/mod_manager.en.translation", "res://text/en/mod_reinstall_dialog.en.translation", "res://text/en/release_installer.en.translation", "res://text/en/release_manager.en.translation", "res://text/en/settings_manager.en.translation", "res://text/en/settings_tab.en.translation", "res://text/en/soundpacks_tab.en.translation", "res://text/en/soundpack_manager.en.translation", "res://text/en/tips.en.translation", "res://text/ru/backups_tab.ru.translation", "res://text/ru/backup_manager.ru.translation", "res://text/ru/changelog_dialog.ru.translation", "res://text/ru/dialog_buttons.ru.translation", "res://text/ru/download_manager.ru.translation", "res://text/ru/easter_egg.ru.translation", "res://text/ru/filesystem_helper.ru.translation", "res://text/ru/fonts_tab.ru.translation", "res://text/ru/font_help_dialog.ru.translation", "res://text/ru/font_info.ru.translation", "res://text/ru/font_manager.ru.translation", "res://text/ru/game_tab.ru.translation", "res://text/ru/general.ru.translation", "res://text/ru/install_probe.ru.translation", "res://text/ru/mods_tab.ru.translation", "res://text/ru/mod_manager.ru.translation", "res://text/ru/mod_reinstall_dialog.ru.translation", "res://text/ru/release_installer.ru.translation", "res://text/ru/release_manager.ru.translation", "res://text/ru/settings_manager.ru.translation", "res://text/ru/settings_tab.ru.translation", "res://text/ru/soundpacks_tab.ru.translation", "res://text/ru/soundpack_manager.ru.translation", "res://text/ru/tips.ru.translation", "res://text/zh/backups_tab.zh.translation", "res://text/zh/backup_manager.zh.translation", "res://text/zh/changelog_dialog.zh.translation", "res://text/zh/dialog_buttons.zh.translation", "res://text/zh/download_manager.zh.translation", "res://text/zh/easter_egg.zh.translation", "res://text/zh/filesystem_helper.zh.translation", "res://text/zh/fonts_tab.zh.translation", "res://text/zh/font_help_dialog.zh.translation", "res://text/zh/font_info.zh.translation", "res://text/zh/font_manager.zh.translation", "res://text/zh/game_tab.zh.translation", "res://text/zh/general.zh.translation", "res://text/zh/install_probe.zh.translation", "res://text/zh/mods_tab.zh.translation", "res://text/zh/mod_manager.zh.translation", "res://text/zh/mod_reinstall_dialog.zh.translation", "res://text/zh/release_installer.zh.translation", "res://text/zh/release_manager.zh.translation", "res://text/zh/settings_manager.zh.translation", "res://text/zh/settings_tab.zh.translation", "res://text/zh/soundpacks_tab.zh.translation", "res://text/zh/soundpack_manager.zh.translation", "res://text/zh/tips.zh.translation", "res://text/fr/backups_tab.fr.translation", "res://text/fr/backup_manager.fr.translation", "res://text/fr/changelog_dialog.fr.translation", "res://text/fr/dialog_buttons.fr.translation", "res://text/fr/download_manager.fr.translation", "res://text/fr/easter_egg.fr.translation", "res://text/fr/filesystem_helper.fr.translation", "res://text/fr/fonts_tab.fr.translation", "res://text/fr/font_help_dialog.fr.translation", "res://text/fr/font_info.fr.translation", "res://text/fr/font_manager.fr.translation", "res://text/fr/game_tab.fr.translation", "res://text/fr/general.fr.translation", "res://text/fr/install_probe.fr.translation", "res://text/fr/mods_tab.fr.translation", "res://text/fr/mod_manager.fr.translation", "res://text/fr/mod_reinstall_dialog.fr.translation", "res://text/fr/release_installer.fr.translation", "res://text/fr/release_manager.fr.translation", "res://text/fr/settings_manager.fr.translation", "res://text/fr/settings_tab.fr.translation", "res://text/fr/soundpacks_tab.fr.translation", "res://text/fr/soundpack_manager.fr.translation", "res://text/fr/tips.fr.translation", "res://text/en/helpers.en.translation", "res://text/fr/helpers.fr.translation", "res://text/ru/helpers.ru.translation", "res://text/zh/helpers.zh.translation", "res://text/cs/backups_tab.cs.translation", "res://text/cs/backup_manager.cs.translation", "res://text/cs/changelog_dialog.cs.translation", "res://text/cs/dialog_buttons.cs.translation", "res://text/cs/download_manager.cs.translation", "res://text/cs/easter_egg.cs.translation", "res://text/cs/filesystem_helper.cs.translation", "res://text/cs/fonts_tab.cs.translation", "res://text/cs/font_help_dialog.cs.translation", "res://text/cs/font_info.cs.translation", "res://text/cs/font_manager.cs.translation", "res://text/cs/game_tab.cs.translation", "res://text/cs/general.cs.translation", "res://text/cs/helpers.cs.translation", "res://text/cs/install_probe.cs.translation", "res://text/cs/mods_tab.cs.translation", "res://text/cs/mod_manager.cs.translation", "res://text/cs/mod_reinstall_dialog.cs.translation", "res://text/cs/release_installer.cs.translation", "res://text/cs/release_manager.cs.translation", "res://text/cs/settings_manager.cs.translation", "res://text/cs/settings_tab.cs.translation", "res://text/cs/soundpacks_tab.cs.translation", "res://text/cs/soundpack_manager.cs.translation", "res://text/cs/tips.cs.translation", "res://text/es/backups_tab.es.translation", "res://text/es/backup_manager.es.translation", "res://text/es/changelog_dialog.es.translation", "res://text/es/dialog_buttons.es.translation", "res://text/es/download_manager.es.translation", "res://text/es/easter_egg.es.translation", "res://text/es/filesystem_helper.es.translation", "res://text/es/helpers.es.translation", "res://text/es/general.es.translation", "res://text/es/game_tab.es.translation", "res://text/es/font_manager.es.translation", "res://text/es/font_info.es.translation", "res://text/es/font_help_dialog.es.translation", "res://text/es/fonts_tab.es.translation", "res://text/es/install_probe.es.translation", "res://text/es/mods_tab.es.translation", "res://text/es/mod_manager.es.translation", "res://text/es/mod_reinstall_dialog.es.translation", "res://text/es/release_installer.es.translation", "res://text/es/release_manager.es.translation", "res://text/es/settings_manager.es.translation", "res://text/es/settings_tab.es.translation", "res://text/es/soundpacks_tab.es.translation", "res://text/es/soundpack_manager.es.translation", "res://text/es/tips.es.translation", "res://text/pl/backups_tab.pl.translation", "res://text/pl/backup_manager.pl.translation", "res://text/pl/changelog_dialog.pl.translation", "res://text/pl/dialog_buttons.pl.translation", "res://text/pl/download_manager.pl.translation", "res://text/pl/easter_egg.pl.translation", "res://text/pl/filesystem_helper.pl.translation", "res://text/pl/fonts_tab.pl.translation", "res://text/pl/font_help_dialog.pl.translation", "res://text/pl/font_info.pl.translation", "res://text/pl/font_manager.pl.translation", "res://text/pl/game_tab.pl.translation", "res://text/pl/general.pl.translation", "res://text/pl/helpers.pl.translation", "res://text/pl/install_probe.pl.translation", "res://text/pl/mods_tab.pl.translation", "res://text/pl/mod_manager.pl.translation", "res://text/pl/mod_reinstall_dialog.pl.translation", "res://text/pl/release_installer.pl.translation", "res://text/pl/release_manager.pl.translation", "res://text/pl/settings_manager.pl.translation", "res://text/pl/settings_tab.pl.translation", "res://text/pl/soundpacks_tab.pl.translation", "res://text/pl/soundpack_manager.pl.translation", "res://text/pl/tips.pl.translation", "res://text/tr/backups_tab.tr.translation", "res://text/tr/backup_manager.tr.translation", "res://text/tr/changelog_dialog.tr.translation", "res://text/tr/dialog_buttons.tr.translation", "res://text/tr/download_manager.tr.translation", "res://text/tr/easter_egg.tr.translation", "res://text/tr/filesystem_helper.tr.translation", "res://text/tr/fonts_tab.tr.translation", "res://text/tr/font_help_dialog.tr.translation", "res://text/tr/font_info.tr.translation", "res://text/tr/font_manager.tr.translation", "res://text/tr/game_tab.tr.translation", "res://text/tr/general.tr.translation", "res://text/tr/helpers.tr.translation", "res://text/tr/install_probe.tr.translation", "res://text/tr/mods_tab.tr.translation", "res://text/tr/mod_manager.tr.translation", "res://text/tr/mod_reinstall_dialog.tr.translation", "res://text/tr/release_installer.tr.translation", "res://text/tr/release_manager.tr.translation", "res://text/tr/settings_manager.tr.translation", "res://text/tr/settings_tab.tr.translation", "res://text/tr/soundpacks_tab.tr.translation", "res://text/tr/soundpack_manager.tr.translation", "res://text/tr/tips.tr.translation", "res://text/pt/backups_tab.pt.translation", "res://text/pt/backup_manager.pt.translation", "res://text/pt/changelog_dialog.pt.translation", "res://text/pt/dialog_buttons.pt.translation", "res://text/pt/download_manager.pt.translation", "res://text/pt/easter_egg.pt.translation", "res://text/pt/filesystem_helper.pt.translation", "res://text/pt/fonts_tab.pt.translation", "res://text/pt/font_help_dialog.pt.translation", "res://text/pt/font_info.pt.translation", "res://text/pt/font_manager.pt.translation", "res://text/pt/game_tab.pt.translation", "res://text/pt/general.pt.translation", "res://text/pt/helpers.pt.translation", "res://text/pt/install_probe.pt.translation", "res://text/pt/mods_tab.pt.translation", "res://text/pt/mod_manager.pt.translation", "res://text/pt/mod_reinstall_dialog.pt.translation", "res://text/pt/release_installer.pt.translation", "res://text/pt/release_manager.pt.translation", "res://text/pt/settings_manager.pt.translation", "res://text/pt/settings_tab.pt.translation", "res://text/pt/soundpacks_tab.pt.translation", "res://text/pt/soundpack_manager.pt.translation", "res://text/pt/tips.pt.translation", "res://text/ko/backups_tab.ko.translation", "res://text/ko/backup_manager.ko.translation", "res://text/ko/changelog_dialog.ko.translation", "res://text/ko/dialog_buttons.ko.translation", "res://text/ko/download_manager.ko.translation", "res://text/ko/easter_egg.ko.translation", "res://text/ko/filesystem_helper.ko.translation", "res://text/ko/fonts_tab.ko.translation", "res://text/ko/font_help_dialog.ko.translation", "res://text/ko/font_info.ko.translation", "res://text/ko/font_manager.ko.translation", "res://text/ko/game_tab.ko.translation", "res://text/ko/general.ko.translation", "res://text/ko/helpers.ko.translation", "res://text/ko/install_probe.ko.translation", "res://text/ko/mods_tab.ko.translation", "res://text/ko/mod_manager.ko.translation", "res://text/ko/mod_reinstall_dialog.ko.translation", "res://text/ko/release_installer.ko.translation", "res://text/ko/release_manager.ko.translation", "res://text/ko/settings_manager.ko.translation", "res://text/ko/settings_tab.ko.translation", "res://text/ko/soundpacks_tab.ko.translation", "res://text/ko/soundpack_manager.ko.translation", "res://text/ko/tips.ko.translation") +locale_filter=[0, ["en", "ru", "zh"]] [physics] @@ -140,9 +106,10 @@ common/enable_pause_aware_picking=true [rendering] +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility" +environment/defaults/default_clear_color=Color(0, 0, 0, 1) quality/driver/driver_name="GLES2" quality/intended_usage/framebuffer_allocation=0 quality/intended_usage/framebuffer_allocation.mobile=1 vram_compression/import_etc=true -vram_compression/import_etc2=false -environment/default_clear_color=Color( 0, 0, 0, 1 ) diff --git a/scenes/Catapult.tscn b/scenes/Catapult.tscn index 8ce1414b..02b491d4 100644 --- a/scenes/Catapult.tscn +++ b/scenes/Catapult.tscn @@ -1,1244 +1,900 @@ -[gd_scene load_steps=48 format=2] - -[ext_resource path="res://icons/info.svg" type="Texture" id=1] -[ext_resource path="res://icons/buttons/tex_resume.tex" type="Texture" id=2] -[ext_resource path="res://icons/buttons/tex_download.tex" type="Texture" id=3] -[ext_resource path="res://scripts/Catapult.gd" type="Script" id=4] -[ext_resource path="res://scripts/ReleaseManager.gd" type="Script" id=5] -[ext_resource path="res://scripts/InstallsList.gd" type="Script" id=6] -[ext_resource path="res://icons/lang/tex_lang_cs.res" type="Texture" id=7] -[ext_resource path="res://scripts/SettingsUI.gd" type="Script" id=8] -[ext_resource path="res://scripts/ReleaseInstaller.gd" type="Script" id=9] -[ext_resource path="res://icons/lang/tex_lang_fr.res" type="Texture" id=10] -[ext_resource path="res://themes/Godot_3.res" type="Theme" id=11] -[ext_resource path="res://scripts/ModManager.gd" type="Script" id=12] -[ext_resource path="res://scripts/SoundpackManager.gd" type="Script" id=13] -[ext_resource path="res://scripts/Debug.gd" type="Script" id=14] -[ext_resource path="res://scripts/SoundpacksUI.gd" type="Script" id=15] -[ext_resource path="res://scripts/Tabs.gd" type="Script" id=16] -[ext_resource path="res://scripts/ItemList.gd" type="Script" id=17] -[ext_resource path="res://scripts/ModsUI.gd" type="Script" id=18] -[ext_resource path="res://icons/lang/tex_lang_es.res" type="Texture" id=19] -[ext_resource path="res://scenes/ModReinstallDialog.tscn" type="PackedScene" id=20] -[ext_resource path="res://icons/lang/tex_lang_ru.res" type="Texture" id=21] -[ext_resource path="res://icons/lang/tex_lang_en.res" type="Texture" id=22] -[ext_resource path="res://icons/folder_user.svg" type="Texture" id=23] -[ext_resource path="res://icons/folder_game.svg" type="Texture" id=24] -[ext_resource path="res://icons/buttons/tex_play.tex" type="Texture" id=25] -[ext_resource path="res://scenes/InlineIconButton.tscn" type="PackedScene" id=26] -[ext_resource path="res://scripts/FontsUI.gd" type="Script" id=27] -[ext_resource path="res://scripts/FontManager.gd" type="Script" id=28] -[ext_resource path="res://scenes/FontSizeHelpDialog.tscn" type="PackedScene" id=29] -[ext_resource path="res://icons/help.svg" type="Texture" id=30] -[ext_resource path="res://icons/lang/tex_lang_zh.res" type="Texture" id=31] -[ext_resource path="res://scenes/ChangelogDialog.tscn" type="PackedScene" id=32] -[ext_resource path="res://scripts/BackupsUI.gd" type="Script" id=33] -[ext_resource path="res://scripts/BackupManager.gd" type="Script" id=34] -[ext_resource path="res://icons/theme/tex_light.res" type="Texture" id=35] -[ext_resource path="res://icons/theme/tex_solarized_dark.res" type="Texture" id=36] -[ext_resource path="res://icons/theme/tex_godot3.res" type="Texture" id=37] -[ext_resource path="res://icons/theme/tex_solarized_light.res" type="Texture" id=38] -[ext_resource path="res://icons/theme/tex_grey.res" type="Texture" id=39] -[ext_resource path="res://icons/buttons/tex_delete.tex" type="Texture" id=40] -[ext_resource path="res://icons/buttons/tex_activate.tex" type="Texture" id=41] -[ext_resource path="res://icons/lang/tex_lang_pl.res" type="Texture" id=42] -[ext_resource path="res://icons/lang/tex_lang_tr.res" type="Texture" id=43] -[ext_resource path="res://icons/lang/tex_lang_pt.res" type="Texture" id=44] -[ext_resource path="res://icons/lang/tex_lang_ko.res" type="Texture" id=45] - -[sub_resource type="StyleBoxEmpty" id=2] +[gd_scene load_steps=28 format=3 uid="uid://j8v4j8uy58rl"] + +[ext_resource type="Texture2D" path="res://icons/buttons/tex_resume.tex" id="2"] +[ext_resource type="Texture2D" path="res://icons/buttons/tex_download.tex" id="3"] +[ext_resource type="Script" path="res://scripts/Catapult.gd" id="4"] +[ext_resource type="Script" path="res://scripts/ReleaseManager.gd" id="5"] +[ext_resource type="Script" path="res://scripts/InstallsList.gd" id="6"] +[ext_resource type="Script" path="res://scripts/SettingsUI.gd" id="8"] +[ext_resource type="Script" path="res://scripts/ReleaseInstaller.gd" id="9"] +[ext_resource type="Theme" path="res://themes/Godot_3.res" id="11"] +[ext_resource type="Script" path="res://scripts/ModManager.gd" id="12"] +[ext_resource type="Script" path="res://scripts/SoundpackManager.gd" id="13"] +[ext_resource type="Script" path="res://scripts/Debug.gd" id="14"] +[ext_resource type="Script" path="res://scripts/SoundpacksUI.gd" id="15"] +[ext_resource type="Script" path="res://scripts/Tabs.gd" id="16"] +[ext_resource type="Script" path="res://scripts/ItemList.gd" id="17"] +[ext_resource type="Script" path="res://scripts/ModsUI.gd" id="18"] +[ext_resource type="PackedScene" path="res://scenes/ModReinstallDialog.tscn" id="20"] +[ext_resource type="Texture2D" path="res://icons/buttons/tex_play.tex" id="25"] +[ext_resource type="PackedScene" path="res://scenes/InlineIconButton.tscn" id="26"] +[ext_resource type="Script" path="res://scripts/FontsUI.gd" id="27"] +[ext_resource type="Script" path="res://scripts/FontManager.gd" id="28"] +[ext_resource type="PackedScene" path="res://scenes/FontSizeHelpDialog.tscn" id="29"] +[ext_resource type="PackedScene" path="res://scenes/ChangelogDialog.tscn" id="32"] +[ext_resource type="Script" path="res://scripts/BackupsUI.gd" id="33"] +[ext_resource type="Script" path="res://scripts/BackupManager.gd" id="34"] +[ext_resource type="Texture2D" path="res://icons/buttons/tex_delete.tex" id="40"] +[ext_resource type="Texture2D" path="res://icons/buttons/tex_activate.tex" id="41"] + +[sub_resource type="StyleBoxEmpty" id="2"] content_margin_left = 4.0 -content_margin_right = 4.0 content_margin_top = 4.0 +content_margin_right = 4.0 content_margin_bottom = 4.0 -[sub_resource type="ButtonGroup" id=1] - [node name="Catapult" type="Panel"] +anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -theme = ExtResource( 11 ) -script = ExtResource( 4 ) +theme = ExtResource("11") +script = ExtResource("4") [node name="Main" type="VBoxContainer" parent="."] +layout_mode = 0 anchor_right = 1.0 anchor_bottom = 1.0 -margin_left = 4.0 -margin_top = 4.0 -margin_right = -4.0 -margin_bottom = -4.0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = -4.0 +offset_bottom = -4.0 [node name="GameChoice" type="HBoxContainer" parent="Main"] -margin_right = 592.0 -margin_bottom = 24.0 +layout_mode = 2 [node name="Label" type="Label" parent="Main/GameChoice"] -margin_right = 65.0 -margin_bottom = 24.0 +layout_mode = 2 text = "lbl_game" [node name="GamesList" type="OptionButton" parent="Main/GameChoice" groups=["disable_during_mod_operations", "disable_during_soundpack_operations", "disable_while_fetching_releases", "disable_while_installing_game"]] -margin_left = 71.0 -margin_right = 592.0 -margin_bottom = 24.0 -hint_tooltip = "tooltip_game" +layout_mode = 2 size_flags_horizontal = 3 -text = "Cataclysm: Dark Days Ahead" -items = [ "Cataclysm: Dark Days Ahead", null, false, 0, null, "Cataclysm: Bright Nights", null, false, 1, null, "Cataclysm: Era Of Decay", null, false, 2, null, "Cataclysm: There Is Still Hope", null, false, 3, null ] -selected = 0 +tooltip_text = "tooltip_game" [node name="GameInfo" type="HBoxContainer" parent="Main"] -margin_top = 28.0 -margin_right = 592.0 -margin_bottom = 96.0 -custom_constants/separation = 8 +layout_mode = 2 +theme_override_constants/separation = 8 [node name="Spacer" type="Control" parent="Main/GameInfo"] -margin_bottom = 68.0 +layout_mode = 2 [node name="Icon" type="TextureRect" parent="Main/GameInfo"] -margin_left = 8.0 -margin_top = 18.0 -margin_right = 40.0 -margin_bottom = 50.0 -rect_min_size = Vector2( 32, 32 ) +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 -texture = ExtResource( 1 ) -expand = true +expand_mode = 1 stretch_mode = 6 [node name="Description" type="RichTextLabel" parent="Main/GameInfo"] -margin_left = 48.0 -margin_right = 592.0 -margin_bottom = 68.0 +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 bbcode_enabled = true -bbcode_text = "[b]Game Title[/b] is a game in which... This is a placeholder text to gauge how much space will be taken for the game description that will be loaded into this label at runtime. The descriptions are around 4 lines each at this width, so the placeholder text mush have a similar length to perform its function. This length is about right." text = "Game Title is a game in which... This is a placeholder text to gauge how much space will be taken for the game description that will be loaded into this label at runtime. The descriptions are around 4 lines each at this width, so the placeholder text mush have a similar length to perform its function. This length is about right." -fit_content_height = true [node name="Spacer" type="Control" parent="Main"] -margin_top = 100.0 -margin_right = 592.0 -margin_bottom = 100.0 - -[node name="Tabs" type="TabContainer" parent="Main" groups=["disable_during_backup_operations", "disable_during_mod_operations", "disable_during_release_operations", "disable_during_soundpack_operations", "disable_while_fetching_releases"]] -margin_top = 104.0 -margin_right = 592.0 -margin_bottom = 535.0 -tab_align = 0 -script = ExtResource( 16 ) - -[node name="Game" type="VBoxContainer" parent="Main/Tabs"] -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 7.5 -margin_top = 33.5 -margin_right = -7.5 -margin_bottom = -7.5 - -[node name="Channel" type="VBoxContainer" parent="Main/Tabs/Game"] -margin_right = 577.0 -margin_bottom = 56.0 - -[node name="HBox" type="HBoxContainer" parent="Main/Tabs/Game/Channel"] -margin_right = 577.0 -margin_bottom = 24.0 - -[node name="Label" type="Label" parent="Main/Tabs/Game/Channel/HBox"] -margin_right = 79.0 -margin_bottom = 24.0 +layout_mode = 2 + +[node name="TabBar" type="TabContainer" parent="Main" groups=["disable_during_backup_operations", "disable_during_mod_operations", "disable_during_release_operations", "disable_during_soundpack_operations", "disable_while_fetching_releases"]] +layout_mode = 2 +script = ExtResource("16") + +[node name="Game" type="VBoxContainer" parent="Main/TabBar"] +layout_mode = 2 + +[node name="Channel" type="VBoxContainer" parent="Main/TabBar/Game"] +layout_mode = 2 + +[node name="HBox" type="HBoxContainer" parent="Main/TabBar/Game/Channel"] +layout_mode = 2 + +[node name="Label" type="Label" parent="Main/TabBar/Game/Channel/HBox"] +layout_mode = 2 text = "lbl_channel" -[node name="ChangelogLink" type="RichTextLabel" parent="Main/Tabs/Game/Channel/HBox"] -margin_left = 85.0 -margin_right = 577.0 -margin_bottom = 24.0 -rect_min_size = Vector2( 300, 0 ) -hint_tooltip = "tooltip_changelog" +[node name="ChangelogLink" type="RichTextLabel" parent="Main/TabBar/Game/Channel/HBox"] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 size_flags_horizontal = 3 -custom_styles/normal = SubResource( 2 ) +tooltip_text = "tooltip_changelog" +theme_override_styles/normal = SubResource("2") bbcode_enabled = true text = "lbl_changelog" scroll_active = false -[node name="Group" type="HBoxContainer" parent="Main/Tabs/Game/Channel"] -margin_top = 28.0 -margin_right = 577.0 -margin_bottom = 56.0 +[node name="Group" type="HBoxContainer" parent="Main/TabBar/Game/Channel"] +layout_mode = 2 -[node name="RBtnStable" type="CheckBox" parent="Main/Tabs/Game/Channel/Group" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] -margin_right = 102.0 -margin_bottom = 28.0 -hint_tooltip = "tooltip_stable" -group = SubResource( 1 ) +[node name="RBtnStable" type="CheckBox" parent="Main/TabBar/Game/Channel/Group" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +layout_mode = 2 +tooltip_text = "tooltip_stable" text = "rbtn_stable" -[node name="RBtnExperimental" type="CheckBox" parent="Main/Tabs/Game/Channel/Group" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] -margin_left = 108.0 -margin_right = 253.0 -margin_bottom = 28.0 -hint_tooltip = "tooltip_experimental" -pressed = true -group = SubResource( 1 ) +[node name="RBtnExperimental" type="CheckBox" parent="Main/TabBar/Game/Channel/Group" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +layout_mode = 2 +tooltip_text = "tooltip_experimental" text = "rbtn_experimental" -[node name="Builds" type="HBoxContainer" parent="Main/Tabs/Game"] -margin_top = 60.0 -margin_right = 577.0 -margin_bottom = 84.0 +[node name="Builds" type="HBoxContainer" parent="Main/TabBar/Game"] +layout_mode = 2 -[node name="Label" type="Label" parent="Main/Tabs/Game/Builds"] -margin_right = 68.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Game/Builds"] +layout_mode = 2 text = "lbl_builds" -[node name="BuildsList" type="OptionButton" parent="Main/Tabs/Game/Builds" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] -margin_left = 74.0 -margin_right = 490.0 -margin_bottom = 24.0 -hint_tooltip = "tooltip_builds" +[node name="BuildsList" type="OptionButton" parent="Main/TabBar/Game/Builds" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +layout_mode = 2 size_flags_horizontal = 3 +tooltip_text = "tooltip_builds" clip_text = true -[node name="BtnRefresh" type="Button" parent="Main/Tabs/Game/Builds" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] -margin_left = 496.0 -margin_right = 577.0 -margin_bottom = 24.0 -hint_tooltip = "tooltip_refresh" +[node name="BtnRefresh" type="Button" parent="Main/TabBar/Game/Builds" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +layout_mode = 2 +tooltip_text = "tooltip_refresh" text = "btn_refresh" -[node name="BtnInstall" type="Button" parent="Main/Tabs/Game" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] -margin_left = 239.0 -margin_top = 88.0 -margin_right = 337.0 -margin_bottom = 120.0 -hint_tooltip = "tooltip_install" +[node name="BtnInstall" type="Button" parent="Main/TabBar/Game" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +layout_mode = 2 size_flags_horizontal = 4 +tooltip_text = "tooltip_install" text = "btn_install" -icon = ExtResource( 3 ) - -[node name="UpdateCurrent" type="CheckBox" parent="Main/Tabs/Game" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] -margin_left = 219.0 -margin_top = 124.0 -margin_right = 357.0 -margin_bottom = 152.0 -hint_tooltip = "tooltip_update" +icon = ExtResource("3") + +[node name="UpdateCurrent" type="CheckBox" parent="Main/TabBar/Game" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +layout_mode = 2 size_flags_horizontal = 4 -pressed = true +tooltip_text = "tooltip_update" text = "cb_update_active" -[node name="HSeparator" type="HSeparator" parent="Main/Tabs/Game"] -margin_top = 156.0 -margin_right = 577.0 -margin_bottom = 164.0 +[node name="HSeparator" type="HSeparator" parent="Main/TabBar/Game"] +layout_mode = 2 -[node name="ActiveInstall" type="VBoxContainer" parent="Main/Tabs/Game"] -margin_top = 168.0 -margin_right = 577.0 -margin_bottom = 256.0 +[node name="ActiveInstall" type="VBoxContainer" parent="Main/TabBar/Game"] +layout_mode = 2 -[node name="Label" type="Label" parent="Main/Tabs/Game/ActiveInstall"] -margin_right = 577.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Game/ActiveInstall"] +layout_mode = 2 text = "lbl_active_install" -align = 1 -[node name="Build" type="HBoxContainer" parent="Main/Tabs/Game/ActiveInstall"] -margin_left = 217.0 -margin_top = 28.0 -margin_right = 360.0 -margin_bottom = 52.0 +[node name="Build" type="HBoxContainer" parent="Main/TabBar/Game/ActiveInstall"] +layout_mode = 2 size_flags_horizontal = 4 -custom_constants/separation = 4 +theme_override_constants/separation = 4 -[node name="Name" type="Label" parent="Main/Tabs/Game/ActiveInstall/Build"] -margin_right = 99.0 -margin_bottom = 24.0 +[node name="Name" type="Label" parent="Main/TabBar/Game/ActiveInstall/Build"] +layout_mode = 2 text = "lbl_build_none" -align = 1 - -[node name="GameDir" parent="Main/Tabs/Game/ActiveInstall/Build" instance=ExtResource( 26 )] -margin_left = 103.0 -margin_top = 3.0 -margin_right = 121.0 -margin_bottom = 21.0 -hint_tooltip = "tooltip_game_dir" -texture_normal = ExtResource( 24 ) - -[node name="UserDir" parent="Main/Tabs/Game/ActiveInstall/Build" instance=ExtResource( 26 )] -margin_left = 125.0 -margin_top = 3.0 -margin_right = 143.0 -margin_bottom = 21.0 -hint_tooltip = "tooltip_user_dir" -texture_normal = ExtResource( 23 ) - -[node name="Launch" type="HBoxContainer" parent="Main/Tabs/Game/ActiveInstall"] -margin_left = 187.0 -margin_top = 56.0 -margin_right = 389.0 -margin_bottom = 88.0 + +[node name="GameDir" parent="Main/TabBar/Game/ActiveInstall/Build" instance=ExtResource("26")] +layout_mode = 2 +tooltip_text = "tooltip_game_dir" + +[node name="UserDir" parent="Main/TabBar/Game/ActiveInstall/Build" instance=ExtResource("26")] +layout_mode = 2 +tooltip_text = "tooltip_user_dir" + +[node name="Launch" type="HBoxContainer" parent="Main/TabBar/Game/ActiveInstall"] +layout_mode = 2 size_flags_horizontal = 4 -[node name="BtnPlay" type="Button" parent="Main/Tabs/Game/ActiveInstall/Launch" groups=["disable_during_release_operations"]] -margin_right = 88.0 -margin_bottom = 32.0 -hint_tooltip = "tooltip_play" +[node name="BtnPlay" type="Button" parent="Main/TabBar/Game/ActiveInstall/Launch" groups=["disable_during_release_operations"]] +layout_mode = 2 size_flags_horizontal = 4 +tooltip_text = "tooltip_play" text = "btn_play" -icon = ExtResource( 25 ) +icon = ExtResource("25") -[node name="BtnResume" type="Button" parent="Main/Tabs/Game/ActiveInstall/Launch" groups=["disable_during_release_operations"]] -margin_left = 94.0 -margin_right = 202.0 -margin_bottom = 32.0 -hint_tooltip = "tooltip_resume" +[node name="BtnResume" type="Button" parent="Main/TabBar/Game/ActiveInstall/Launch" groups=["disable_during_release_operations"]] +layout_mode = 2 size_flags_horizontal = 4 +tooltip_text = "tooltip_resume" text = "btn_resume" -icon = ExtResource( 2 ) +icon = ExtResource("2") -[node name="GameInstalls" type="VBoxContainer" parent="Main/Tabs/Game"] -margin_top = 260.0 -margin_right = 577.0 -margin_bottom = 390.0 +[node name="GameInstalls" type="VBoxContainer" parent="Main/TabBar/Game"] +layout_mode = 2 -[node name="HSeparator2" type="HSeparator" parent="Main/Tabs/Game/GameInstalls"] -margin_right = 577.0 -margin_bottom = 8.0 +[node name="HSeparator2" type="HSeparator" parent="Main/TabBar/Game/GameInstalls"] +layout_mode = 2 -[node name="Label2" type="Label" parent="Main/Tabs/Game/GameInstalls"] -margin_top = 12.0 -margin_right = 577.0 -margin_bottom = 36.0 +[node name="Label2" type="Label" parent="Main/TabBar/Game/GameInstalls"] +layout_mode = 2 text = "lbl_installs" -align = 1 -[node name="HBox" type="HBoxContainer" parent="Main/Tabs/Game/GameInstalls"] -margin_top = 40.0 -margin_right = 577.0 -margin_bottom = 130.0 +[node name="HBox" type="HBoxContainer" parent="Main/TabBar/Game/GameInstalls"] +layout_mode = 2 -[node name="InstallsList" type="ItemList" parent="Main/Tabs/Game/GameInstalls/HBox" groups=["disable_during_release_operations"]] -margin_right = 461.0 -margin_bottom = 90.0 -rect_min_size = Vector2( 0, 90 ) +[node name="InstallsList" type="ItemList" parent="Main/TabBar/Game/GameInstalls/HBox" groups=["disable_during_release_operations"]] +custom_minimum_size = Vector2(0, 90) +layout_mode = 2 size_flags_horizontal = 3 -items = [ "Item 0", null, false, "Item 1", null, false, "Item 2", null, false, "Item 3", null, false, "Item 4", null, false, "Item 5", null, false ] -script = ExtResource( 6 ) - -[node name="VBox" type="VBoxContainer" parent="Main/Tabs/Game/GameInstalls/HBox"] -margin_left = 467.0 -margin_right = 577.0 -margin_bottom = 90.0 - -[node name="btnMakeActive" type="Button" parent="Main/Tabs/Game/GameInstalls/HBox/VBox" groups=["disable_during_release_operations"]] -margin_right = 110.0 -margin_bottom = 32.0 -hint_tooltip = "tooltip_activate" +item_count = 6 +item_0/text = "Item 0" +item_1/text = "Item 1" +item_2/text = "Item 2" +item_3/text = "Item 3" +item_4/text = "Item 4" +item_5/text = "Item 5" +script = ExtResource("6") + +[node name="VBox" type="VBoxContainer" parent="Main/TabBar/Game/GameInstalls/HBox"] +layout_mode = 2 + +[node name="btnMakeActive" type="Button" parent="Main/TabBar/Game/GameInstalls/HBox/VBox" groups=["disable_during_release_operations"]] +layout_mode = 2 +tooltip_text = "tooltip_activate" disabled = true text = "btn_activate" -icon = ExtResource( 41 ) +icon = ExtResource("41") -[node name="btnDelete" type="Button" parent="Main/Tabs/Game/GameInstalls/HBox/VBox" groups=["disable_during_release_operations"]] -margin_top = 36.0 -margin_right = 110.0 -margin_bottom = 68.0 -hint_tooltip = "tooltip_delete" +[node name="btnDelete" type="Button" parent="Main/TabBar/Game/GameInstalls/HBox/VBox" groups=["disable_during_release_operations"]] +layout_mode = 2 +tooltip_text = "tooltip_delete" disabled = true text = "btn_delete" -icon = ExtResource( 40 ) +icon = ExtResource("40") -[node name="ChangelogDialog" parent="Main/Tabs/Game" instance=ExtResource( 32 )] +[node name="ChangelogDialog" parent="Main/TabBar/Game" instance=ExtResource("32")] +position = Vector2i(0, 36) -[node name="Mods" type="VBoxContainer" parent="Main/Tabs"] +[node name="Mods" type="VBoxContainer" parent="Main/TabBar"] visible = false -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 7.5 -margin_top = 33.5 -margin_right = -7.5 -margin_bottom = -7.5 -script = ExtResource( 18 ) - -[node name="HBox" type="HBoxContainer" parent="Main/Tabs/Mods"] -margin_right = 577.0 -margin_bottom = 296.0 - -[node name="Installed" type="VBoxContainer" parent="Main/Tabs/Mods/HBox"] -margin_right = 278.0 -margin_bottom = 296.0 +layout_mode = 2 +script = ExtResource("18") + +[node name="HBox" type="HBoxContainer" parent="Main/TabBar/Mods"] +layout_mode = 2 + +[node name="Installed" type="VBoxContainer" parent="Main/TabBar/Mods/HBox"] +layout_mode = 2 size_flags_horizontal = 3 -[node name="Label" type="Label" parent="Main/Tabs/Mods/HBox/Installed"] -margin_right = 278.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Mods/HBox/Installed"] +layout_mode = 2 text = "lbl_installed_mods" -align = 1 -[node name="InstalledList" type="ItemList" parent="Main/Tabs/Mods/HBox/Installed" groups=["disable_during_mod_operations"]] -margin_top = 28.0 -margin_right = 278.0 -margin_bottom = 208.0 -rect_min_size = Vector2( 0, 180 ) +[node name="InstalledList" type="ItemList" parent="Main/TabBar/Mods/HBox/Installed" groups=["disable_during_mod_operations"]] +custom_minimum_size = Vector2(0, 180) +layout_mode = 2 size_flags_horizontal = 3 -items = [ "Item 0", null, false, "Item 1", null, false, "Item 2", null, false, "Item 3", null, false ] select_mode = 1 allow_reselect = true +item_count = 4 same_column_width = true -script = ExtResource( 17 ) - -[node name="ShowStock" type="CheckBox" parent="Main/Tabs/Mods/HBox/Installed" groups=["disable_during_mod_operations"]] -margin_left = 69.0 -margin_top = 212.0 -margin_right = 208.0 -margin_bottom = 240.0 -hint_tooltip = "tooltip_stock_mods" +item_0/text = "Item 0" +item_1/text = "Item 1" +item_2/text = "Item 2" +item_3/text = "Item 3" +script = ExtResource("17") + +[node name="ShowStock" type="CheckBox" parent="Main/TabBar/Mods/HBox/Installed" groups=["disable_during_mod_operations"]] +layout_mode = 2 size_flags_horizontal = 4 +tooltip_text = "tooltip_stock_mods" text = "cbtn_stock_mods" -[node name="BtnDelete" type="Button" parent="Main/Tabs/Mods/HBox/Installed" groups=["disable_during_mod_operations"]] -margin_left = 81.0 -margin_top = 244.0 -margin_right = 197.0 -margin_bottom = 268.0 -hint_tooltip = "tooltip_delete_mods" +[node name="BtnDelete" type="Button" parent="Main/TabBar/Mods/HBox/Installed" groups=["disable_during_mod_operations"]] +layout_mode = 2 size_flags_horizontal = 4 +tooltip_text = "tooltip_delete_mods" disabled = true text = "btn_delete_mods" -[node name="VSeparator" type="VSeparator" parent="Main/Tabs/Mods/HBox"] -margin_left = 284.0 -margin_right = 292.0 -margin_bottom = 296.0 +[node name="VSeparator" type="VSeparator" parent="Main/TabBar/Mods/HBox"] +layout_mode = 2 -[node name="Available" type="VBoxContainer" parent="Main/Tabs/Mods/HBox"] -margin_left = 298.0 -margin_right = 577.0 -margin_bottom = 296.0 +[node name="Available" type="VBoxContainer" parent="Main/TabBar/Mods/HBox"] +layout_mode = 2 size_flags_horizontal = 3 -[node name="Label" type="Label" parent="Main/Tabs/Mods/HBox/Available"] -margin_right = 279.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Mods/HBox/Available"] +layout_mode = 2 text = "lbl_mod_repo" -align = 1 -[node name="AvailableList" type="ItemList" parent="Main/Tabs/Mods/HBox/Available" groups=["disable_during_mod_operations"]] -margin_top = 28.0 -margin_right = 279.0 -margin_bottom = 208.0 -rect_min_size = Vector2( 0, 180 ) +[node name="AvailableList" type="ItemList" parent="Main/TabBar/Mods/HBox/Available" groups=["disable_during_mod_operations"]] +custom_minimum_size = Vector2(0, 180) +layout_mode = 2 size_flags_horizontal = 3 -items = [ "Item 0", null, false, "Item 1", null, false, "Item 2", null, false, "Item 3", null, false ] select_mode = 1 allow_reselect = true +item_count = 4 same_column_width = true -script = ExtResource( 17 ) - -[node name="ShowInstalled" type="CheckBox" parent="Main/Tabs/Mods/HBox/Available" groups=["disable_during_mod_operations"]] -margin_left = 61.0 -margin_top = 212.0 -margin_right = 218.0 -margin_bottom = 240.0 -hint_tooltip = "tooltip_installed_mods" +item_0/text = "Item 0" +item_1/text = "Item 1" +item_2/text = "Item 2" +item_3/text = "Item 3" +script = ExtResource("17") + +[node name="ShowInstalled" type="CheckBox" parent="Main/TabBar/Mods/HBox/Available" groups=["disable_during_mod_operations"]] +layout_mode = 2 size_flags_horizontal = 4 +tooltip_text = "tooltip_installed_mods" text = "cbtn_installed_mods" -[node name="VBox" type="HBoxContainer" parent="Main/Tabs/Mods/HBox/Available"] -margin_top = 244.0 -margin_right = 279.0 -margin_bottom = 268.0 +[node name="VBox" type="HBoxContainer" parent="Main/TabBar/Mods/HBox/Available"] +layout_mode = 2 alignment = 1 -[node name="BtnAddSelectedMod" type="Button" parent="Main/Tabs/Mods/HBox/Available/VBox" groups=["disable_during_mod_operations"]] -margin_left = 14.0 -margin_right = 138.0 -margin_bottom = 24.0 -hint_tooltip = "tooltip_add_sel_mods" +[node name="BtnAddSelectedMod" type="Button" parent="Main/TabBar/Mods/HBox/Available/VBox" groups=["disable_during_mod_operations"]] +layout_mode = 2 size_flags_horizontal = 4 +tooltip_text = "tooltip_add_sel_mods" text = "btn_add_sel_mods" -[node name="BtnAddAllMods" type="Button" parent="Main/Tabs/Mods/HBox/Available/VBox" groups=["disable_during_mod_operations"]] -margin_left = 144.0 -margin_right = 265.0 -margin_bottom = 24.0 -hint_tooltip = "tooltip_add_all_mods" +[node name="BtnAddAllMods" type="Button" parent="Main/TabBar/Mods/HBox/Available/VBox" groups=["disable_during_mod_operations"]] +layout_mode = 2 +tooltip_text = "tooltip_add_all_mods" text = "btn_add_all_mods" -[node name="BtnDownloadKenan" type="Button" parent="Main/Tabs/Mods/HBox/Available" groups=["disable_during_mod_operations"]] -margin_left = 72.0 -margin_top = 272.0 -margin_right = 207.0 -margin_bottom = 296.0 -hint_tooltip = "tooltip_get_kenan_pack" +[node name="BtnDownloadKenan" type="Button" parent="Main/TabBar/Mods/HBox/Available" groups=["disable_during_mod_operations"]] +layout_mode = 2 size_flags_horizontal = 4 +tooltip_text = "tooltip_get_kenan_pack" text = "btn_get_kenan_pack" -[node name="HSeparator" type="HSeparator" parent="Main/Tabs/Mods"] -margin_top = 300.0 -margin_right = 577.0 -margin_bottom = 308.0 +[node name="HSeparator" type="HSeparator" parent="Main/TabBar/Mods"] +layout_mode = 2 -[node name="ModInfo" type="RichTextLabel" parent="Main/Tabs/Mods"] -margin_top = 312.0 -margin_right = 577.0 -margin_bottom = 412.0 -rect_min_size = Vector2( 0, 100 ) +[node name="ModInfo" type="RichTextLabel" parent="Main/TabBar/Mods"] +custom_minimum_size = Vector2(0, 100) +layout_mode = 2 focus_mode = 2 -custom_constants/line_separation = 4 +theme_override_constants/line_separation = 4 bbcode_enabled = true -bbcode_text = "Mod info will appear here." text = "Mod info will appear here." selection_enabled = true -[node name="DeleteMultipleDialog" type="ConfirmationDialog" parent="Main/Tabs/Mods"] -margin_top = 648.0 -margin_right = 250.0 -margin_bottom = 748.0 -rect_min_size = Vector2( 300, 105 ) -window_title = "dlg_deleting_n_mods_title" +[node name="DeleteMultipleDialog" type="ConfirmationDialog" parent="Main/TabBar/Mods"] dialog_text = "(this text is assigned at runtime)" dialog_autowrap = true -[node name="ModReinstallDialog" parent="Main/Tabs/Mods" instance=ExtResource( 20 )] +[node name="ModReinstallDialog" parent="Main/TabBar/Mods" instance=ExtResource("20")] visible = false -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 476.0 -margin_right = 619.0 -margin_bottom = 477.0 -[node name="Soundpacks" type="VBoxContainer" parent="Main/Tabs"] +[node name="Soundpacks" type="VBoxContainer" parent="Main/TabBar"] visible = false -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 7.5 -margin_top = 33.5 -margin_right = -7.5 -margin_bottom = -7.5 +layout_mode = 2 size_flags_vertical = 3 -script = ExtResource( 15 ) +script = ExtResource("15") -[node name="HBox" type="HBoxContainer" parent="Main/Tabs/Soundpacks"] -margin_right = 577.0 -margin_bottom = 288.0 +[node name="HBox" type="HBoxContainer" parent="Main/TabBar/Soundpacks"] +layout_mode = 2 -[node name="Installed" type="VBoxContainer" parent="Main/Tabs/Soundpacks/HBox"] -margin_right = 278.0 -margin_bottom = 288.0 +[node name="Installed" type="VBoxContainer" parent="Main/TabBar/Soundpacks/HBox"] +layout_mode = 2 size_flags_horizontal = 3 -[node name="Label" type="Label" parent="Main/Tabs/Soundpacks/HBox/Installed"] -margin_right = 278.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Soundpacks/HBox/Installed"] +layout_mode = 2 text = "lbl_installed_sound" -align = 1 -[node name="InstalledList" type="ItemList" parent="Main/Tabs/Soundpacks/HBox/Installed" groups=["disable_during_soundpack_operations"]] -margin_top = 28.0 -margin_right = 278.0 -margin_bottom = 228.0 -rect_min_size = Vector2( 0, 200 ) +[node name="InstalledList" type="ItemList" parent="Main/TabBar/Soundpacks/HBox/Installed" groups=["disable_during_soundpack_operations"]] +custom_minimum_size = Vector2(0, 200) +layout_mode = 2 size_flags_horizontal = 3 -items = [ "Item 0", null, false, "Item 1", null, false, "Item 2", null, false, "Item 3", null, false, "Item 4", null, false, "Item 5", null, false, "Item 6", null, false, "Item 7", null, false, "Item 8", null, false, "Item 9", null, false, "Item 10", null, false, "Item 11", null, false, "Item 12", null, false, "Item 13", null, false, "Item 14", null, false, "Item 15", null, false, "Item 16", null, false, "Item 17", null, false, "Item 18", null, false, "Item 19", null, false, "Item 20", null, false, "Item 21", null, false ] +item_count = 22 same_column_width = true -script = ExtResource( 17 ) - -[node name="ShowStock" type="CheckBox" parent="Main/Tabs/Soundpacks/HBox/Installed" groups=["disable_during_soundpack_operations"]] -margin_left = 67.0 -margin_top = 232.0 -margin_right = 210.0 -margin_bottom = 260.0 -hint_tooltip = "tooltip_stock_sound" +item_0/text = "Item 0" +item_1/text = "Item 1" +item_2/text = "Item 2" +item_3/text = "Item 3" +item_4/text = "Item 4" +item_5/text = "Item 5" +item_6/text = "Item 6" +item_7/text = "Item 7" +item_8/text = "Item 8" +item_9/text = "Item 9" +item_10/text = "Item 10" +item_11/text = "Item 11" +item_12/text = "Item 12" +item_13/text = "Item 13" +item_14/text = "Item 14" +item_15/text = "Item 15" +item_16/text = "Item 16" +item_17/text = "Item 17" +item_18/text = "Item 18" +item_19/text = "Item 19" +item_20/text = "Item 20" +item_21/text = "Item 21" +script = ExtResource("17") + +[node name="ShowStock" type="CheckBox" parent="Main/TabBar/Soundpacks/HBox/Installed" groups=["disable_during_soundpack_operations"]] +layout_mode = 2 size_flags_horizontal = 4 +tooltip_text = "tooltip_stock_sound" text = "cbtn_stock_sound" -[node name="BtnDelete" type="Button" parent="Main/Tabs/Soundpacks/HBox/Installed" groups=["disable_during_soundpack_operations"]] -margin_left = 79.0 -margin_top = 264.0 -margin_right = 199.0 -margin_bottom = 288.0 -hint_tooltip = "tooltip_delete_sound" +[node name="BtnDelete" type="Button" parent="Main/TabBar/Soundpacks/HBox/Installed" groups=["disable_during_soundpack_operations"]] +layout_mode = 2 size_flags_horizontal = 4 +tooltip_text = "tooltip_delete_sound" disabled = true text = "btn_delete_sound" -[node name="VSeparator" type="VSeparator" parent="Main/Tabs/Soundpacks/HBox"] -margin_left = 284.0 -margin_right = 292.0 -margin_bottom = 288.0 +[node name="VSeparator" type="VSeparator" parent="Main/TabBar/Soundpacks/HBox"] +layout_mode = 2 -[node name="Downloadable" type="VBoxContainer" parent="Main/Tabs/Soundpacks/HBox"] -margin_left = 298.0 -margin_right = 577.0 -margin_bottom = 288.0 +[node name="Downloadable" type="VBoxContainer" parent="Main/TabBar/Soundpacks/HBox"] +layout_mode = 2 size_flags_horizontal = 3 -[node name="Label" type="Label" parent="Main/Tabs/Soundpacks/HBox/Downloadable"] -margin_right = 279.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Soundpacks/HBox/Downloadable"] +layout_mode = 2 text = "lbl_avail_sound" -align = 1 -[node name="AvailableList" type="ItemList" parent="Main/Tabs/Soundpacks/HBox/Downloadable" groups=["disable_during_soundpack_operations"]] -margin_top = 28.0 -margin_right = 279.0 -margin_bottom = 228.0 -rect_min_size = Vector2( 0, 200 ) +[node name="AvailableList" type="ItemList" parent="Main/TabBar/Soundpacks/HBox/Downloadable" groups=["disable_during_soundpack_operations"]] +custom_minimum_size = Vector2(0, 200) +layout_mode = 2 size_flags_horizontal = 3 -items = [ "Item 0", null, false, "Item 1", null, false, "Item 2", null, false, "Item 3", null, false ] +item_count = 4 same_column_width = true -script = ExtResource( 17 ) - -[node name="BtnInstall" type="Button" parent="Main/Tabs/Soundpacks/HBox/Downloadable" groups=["disable_during_soundpack_operations"]] -margin_left = 80.0 -margin_top = 232.0 -margin_right = 198.0 -margin_bottom = 256.0 -hint_tooltip = "tooltip_install_sound" +item_0/text = "Item 0" +item_1/text = "Item 1" +item_2/text = "Item 2" +item_3/text = "Item 3" +script = ExtResource("17") + +[node name="BtnInstall" type="Button" parent="Main/TabBar/Soundpacks/HBox/Downloadable" groups=["disable_during_soundpack_operations"]] +layout_mode = 2 size_flags_horizontal = 4 +tooltip_text = "tooltip_install_sound" disabled = true text = "btn_install_sound" -[node name="ConfirmDelete" type="ConfirmationDialog" parent="Main/Tabs/Soundpacks"] -margin_top = 385.0 -margin_right = 769.0 -margin_bottom = 507.0 -rect_min_size = Vector2( 300, 105 ) -window_title = "dlg_sound_deletion_title" +[node name="ConfirmDelete" type="ConfirmationDialog" parent="Main/TabBar/Soundpacks"] dialog_text = "dlg_sound_deletion_text" dialog_autowrap = true -[node name="ConfirmManualDownload" type="ConfirmationDialog" parent="Main/Tabs/Soundpacks"] -margin_right = 300.0 -margin_bottom = 122.0 -rect_min_size = Vector2( 300, 105 ) -window_title = "dlg_sound_manual_dl_title" +[node name="ConfirmManualDownload" type="ConfirmationDialog" parent="Main/TabBar/Soundpacks"] dialog_text = "dlg_sound_manual_dl_text" dialog_autowrap = true -[node name="InstallFromFileDialog" type="FileDialog" parent="Main/Tabs/Soundpacks"] -margin_right = 593.0 -margin_bottom = 250.0 -rect_min_size = Vector2( 300, 105 ) -window_title = "Open a File" -mode = 0 +[node name="InstallFromFileDialog" type="FileDialog" parent="Main/TabBar/Soundpacks"] access = 2 -filters = PoolStringArray( "*.zip" ) +filters = PackedStringArray("*.zip") -[node name="Fonts" type="VBoxContainer" parent="Main/Tabs"] +[node name="Fonts" type="VBoxContainer" parent="Main/TabBar"] visible = false -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 7.5 -margin_top = 33.5 -margin_right = -7.5 -margin_bottom = -7.5 -script = ExtResource( 27 ) - -[node name="FontSelection" type="HBoxContainer" parent="Main/Tabs/Fonts"] -margin_right = 577.0 -margin_bottom = 348.0 - -[node name="RightPane" type="VBoxContainer" parent="Main/Tabs/Fonts/FontSelection"] -margin_right = 222.0 -margin_bottom = 348.0 +layout_mode = 2 +script = ExtResource("27") + +[node name="FontSelection" type="HBoxContainer" parent="Main/TabBar/Fonts"] +layout_mode = 2 + +[node name="RightPane" type="VBoxContainer" parent="Main/TabBar/Fonts/FontSelection"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 2.0 -[node name="Label" type="Label" parent="Main/Tabs/Fonts/FontSelection/RightPane"] -margin_left = 63.0 -margin_right = 159.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Fonts/FontSelection/RightPane"] +layout_mode = 2 size_flags_horizontal = 4 text = "lbl_avail_fonts" -align = 1 -[node name="FontsList" type="ItemList" parent="Main/Tabs/Fonts/FontSelection/RightPane"] -margin_top = 28.0 -margin_right = 222.0 -margin_bottom = 208.0 -rect_min_size = Vector2( 0, 180 ) +[node name="FontsList" type="ItemList" parent="Main/TabBar/Fonts/FontSelection/RightPane"] +custom_minimum_size = Vector2(0, 180) +layout_mode = 2 size_flags_stretch_ratio = 2.0 -items = [ "Item 0", null, false, "Item 1", null, false, "Item 2", null, false, "Item 3", null, false ] allow_reselect = true - -[node name="Buttons" type="VBoxContainer" parent="Main/Tabs/Fonts/FontSelection/RightPane"] -margin_top = 212.0 -margin_right = 222.0 -margin_bottom = 348.0 +item_count = 4 +item_0/text = "Item 0" +item_1/text = "Item 1" +item_2/text = "Item 2" +item_3/text = "Item 3" + +[node name="Buttons" type="VBoxContainer" parent="Main/TabBar/Fonts/FontSelection/RightPane"] +layout_mode = 2 size_flags_horizontal = 5 size_flags_vertical = 6 -[node name="BtnSetFontUI" type="Button" parent="Main/Tabs/Fonts/FontSelection/RightPane/Buttons"] -margin_right = 222.0 -margin_bottom = 24.0 -hint_tooltip = "tooltip_set_font_ui" +[node name="BtnSetFontUI" type="Button" parent="Main/TabBar/Fonts/FontSelection/RightPane/Buttons"] +layout_mode = 2 size_flags_horizontal = 5 +tooltip_text = "tooltip_set_font_ui" text = "btn_set_font_ui" -[node name="BtnSetFontMap" type="Button" parent="Main/Tabs/Fonts/FontSelection/RightPane/Buttons"] -margin_top = 28.0 -margin_right = 222.0 -margin_bottom = 52.0 -hint_tooltip = "tooltip_set_font_map" +[node name="BtnSetFontMap" type="Button" parent="Main/TabBar/Fonts/FontSelection/RightPane/Buttons"] +layout_mode = 2 size_flags_horizontal = 5 +tooltip_text = "tooltip_set_font_map" text = "btn_set_font_map" -[node name="BtnSetFontOvermap" type="Button" parent="Main/Tabs/Fonts/FontSelection/RightPane/Buttons"] -margin_top = 56.0 -margin_right = 222.0 -margin_bottom = 80.0 -hint_tooltip = "tooltip_set_font_omap" +[node name="BtnSetFontOvermap" type="Button" parent="Main/TabBar/Fonts/FontSelection/RightPane/Buttons"] +layout_mode = 2 size_flags_horizontal = 5 +tooltip_text = "tooltip_set_font_omap" text = "btn_set_font_omap" -[node name="BtnSetFontAll" type="Button" parent="Main/Tabs/Fonts/FontSelection/RightPane/Buttons"] -margin_top = 84.0 -margin_right = 222.0 -margin_bottom = 108.0 -hint_tooltip = "tooltip_set_font_all" +[node name="BtnSetFontAll" type="Button" parent="Main/TabBar/Fonts/FontSelection/RightPane/Buttons"] +layout_mode = 2 size_flags_horizontal = 5 +tooltip_text = "tooltip_set_font_all" text = "btn_set_font_all" -[node name="BtnResetFont" type="Button" parent="Main/Tabs/Fonts/FontSelection/RightPane/Buttons"] -margin_top = 112.0 -margin_right = 222.0 -margin_bottom = 136.0 -hint_tooltip = "tooltip_reset_font" +[node name="BtnResetFont" type="Button" parent="Main/TabBar/Fonts/FontSelection/RightPane/Buttons"] +layout_mode = 2 size_flags_horizontal = 5 +tooltip_text = "tooltip_reset_font" text = "btn_reset_font" -[node name="VSeparator" type="VSeparator" parent="Main/Tabs/Fonts/FontSelection"] -margin_left = 228.0 -margin_right = 236.0 -margin_bottom = 348.0 +[node name="VSeparator" type="VSeparator" parent="Main/TabBar/Fonts/FontSelection"] +layout_mode = 2 -[node name="LeftPane" type="VBoxContainer" parent="Main/Tabs/Fonts/FontSelection"] -margin_left = 242.0 -margin_right = 577.0 -margin_bottom = 336.0 +[node name="LeftPane" type="VBoxContainer" parent="Main/TabBar/Fonts/FontSelection"] +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 size_flags_stretch_ratio = 3.0 -custom_constants/separation = 4 +theme_override_constants/separation = 4 -[node name="Label" type="Label" parent="Main/Tabs/Fonts/FontSelection/LeftPane"] -margin_left = 112.0 -margin_right = 222.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +layout_mode = 2 size_flags_horizontal = 4 text = "lbl_font_preview" -align = 1 - -[node name="Preview" type="RichTextLabel" parent="Main/Tabs/Fonts/FontSelection/LeftPane"] -margin_top = 28.0 -margin_right = 335.0 -margin_bottom = 128.0 -rect_min_size = Vector2( 0, 100 ) -custom_constants/line_separation = -2 + +[node name="Preview" type="RichTextLabel" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +custom_minimum_size = Vector2(0, 100) +layout_mode = 2 +theme_override_constants/line_separation = -2 bbcode_enabled = true -[node name="PreviewCyrillic" type="CheckBox" parent="Main/Tabs/Fonts/FontSelection/LeftPane"] -margin_left = 86.0 -margin_top = 132.0 -margin_right = 248.0 -margin_bottom = 160.0 -hint_tooltip = "tooltip_preview_cyrillics" +[node name="PreviewCyrillic" type="CheckBox" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +layout_mode = 2 size_flags_horizontal = 4 +tooltip_text = "tooltip_preview_cyrillics" text = "cbtn_preview_cyrillics" -[node name="HSeparator" type="HSeparator" parent="Main/Tabs/Fonts/FontSelection/LeftPane"] -margin_top = 164.0 -margin_right = 335.0 -margin_bottom = 164.0 -custom_constants/separation = 0 - -[node name="OtherSettings" type="HBoxContainer" parent="Main/Tabs/Fonts/FontSelection/LeftPane"] -margin_left = 95.0 -margin_top = 168.0 -margin_right = 239.0 -margin_bottom = 192.0 +[node name="HSeparator" type="HSeparator" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="OtherSettings" type="HBoxContainer" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 -[node name="Label" type="Label" parent="Main/Tabs/Fonts/FontSelection/LeftPane/OtherSettings"] -margin_right = 118.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Fonts/FontSelection/LeftPane/OtherSettings"] +layout_mode = 2 size_flags_horizontal = 4 text = "lbl_other_settings" -align = 1 - -[node name="HelpIcon" parent="Main/Tabs/Fonts/FontSelection/LeftPane/OtherSettings" instance=ExtResource( 26 )] -margin_left = 124.0 -margin_top = 2.0 -margin_right = 144.0 -margin_bottom = 22.0 -rect_min_size = Vector2( 20, 20 ) -hint_tooltip = "View detailed description of these settings." -texture_normal = ExtResource( 30 ) - -[node name="FontSizeUI" type="HBoxContainer" parent="Main/Tabs/Fonts/FontSelection/LeftPane"] -margin_top = 196.0 -margin_right = 335.0 -margin_bottom = 220.0 -hint_tooltip = "tooltip_font_sz_ui" + +[node name="HelpIcon" parent="Main/TabBar/Fonts/FontSelection/LeftPane/OtherSettings" instance=ExtResource("26")] +custom_minimum_size = Vector2(20, 20) +layout_mode = 2 +tooltip_text = "View detailed description of these settings." + +[node name="FontSizeUI" type="HBoxContainer" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +layout_mode = 2 size_flags_vertical = 6 +tooltip_text = "tooltip_font_sz_ui" -[node name="Label" type="Label" parent="Main/Tabs/Fonts/FontSelection/LeftPane/FontSizeUI"] -margin_right = 92.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Fonts/FontSelection/LeftPane/FontSizeUI"] +layout_mode = 2 text = "lbl_font_sz_ui" -[node name="sbFontSizeUI" type="SpinBox" parent="Main/Tabs/Fonts/FontSelection/LeftPane/FontSizeUI"] -margin_left = 235.0 -margin_right = 335.0 -margin_bottom = 24.0 +[node name="sbFontSizeUI" type="SpinBox" parent="Main/TabBar/Fonts/FontSelection/LeftPane/FontSizeUI"] +layout_mode = 2 size_flags_horizontal = 10 min_value = 8.0 max_value = 64.0 value = 8.0 -[node name="FontSizeMap" type="HBoxContainer" parent="Main/Tabs/Fonts/FontSelection/LeftPane"] -margin_top = 224.0 -margin_right = 335.0 -margin_bottom = 248.0 -hint_tooltip = "tooltip_font_sz_map" +[node name="FontSizeMap" type="HBoxContainer" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +layout_mode = 2 size_flags_vertical = 6 +tooltip_text = "tooltip_font_sz_map" -[node name="Label" type="Label" parent="Main/Tabs/Fonts/FontSelection/LeftPane/FontSizeMap"] -margin_right = 108.0 -margin_bottom = 24.0 -hint_tooltip = "tooltip_font_sz_map" +[node name="Label" type="Label" parent="Main/TabBar/Fonts/FontSelection/LeftPane/FontSizeMap"] +layout_mode = 2 +tooltip_text = "tooltip_font_sz_map" text = "lbl_font_sz_map" -[node name="sbFontSizeMap" type="SpinBox" parent="Main/Tabs/Fonts/FontSelection/LeftPane/FontSizeMap"] -margin_left = 235.0 -margin_right = 335.0 -margin_bottom = 24.0 +[node name="sbFontSizeMap" type="SpinBox" parent="Main/TabBar/Fonts/FontSelection/LeftPane/FontSizeMap"] +layout_mode = 2 size_flags_horizontal = 10 min_value = 8.0 max_value = 64.0 value = 8.0 -[node name="FontSizeOvermap" type="HBoxContainer" parent="Main/Tabs/Fonts/FontSelection/LeftPane"] -margin_top = 252.0 -margin_right = 335.0 -margin_bottom = 276.0 -hint_tooltip = "tooltip_font_sz_overmap" +[node name="FontSizeOvermap" type="HBoxContainer" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +layout_mode = 2 size_flags_vertical = 6 +tooltip_text = "tooltip_font_sz_overmap" -[node name="Label" type="Label" parent="Main/Tabs/Fonts/FontSelection/LeftPane/FontSizeOvermap"] -margin_right = 135.0 -margin_bottom = 24.0 -hint_tooltip = "tooltip_font_sz_overmap" +[node name="Label" type="Label" parent="Main/TabBar/Fonts/FontSelection/LeftPane/FontSizeOvermap"] +layout_mode = 2 +tooltip_text = "tooltip_font_sz_overmap" text = "lbl_font_sz_overmap" -[node name="sbFontSizeOM" type="SpinBox" parent="Main/Tabs/Fonts/FontSelection/LeftPane/FontSizeOvermap"] -margin_left = 235.0 -margin_right = 335.0 -margin_bottom = 24.0 +[node name="sbFontSizeOM" type="SpinBox" parent="Main/TabBar/Fonts/FontSelection/LeftPane/FontSizeOvermap"] +layout_mode = 2 size_flags_horizontal = 10 min_value = 8.0 max_value = 64.0 value = 8.0 -[node name="FontBlending" type="CheckButton" parent="Main/Tabs/Fonts/FontSelection/LeftPane"] -margin_top = 280.0 -margin_right = 335.0 -margin_bottom = 308.0 -hint_tooltip = "tooltip_font_blending" +[node name="FontBlending" type="CheckButton" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +layout_mode = 2 +tooltip_text = "tooltip_font_blending" text = "cbtn_font_blending" -[node name="BtnSaveFontOptions" type="Button" parent="Main/Tabs/Fonts/FontSelection/LeftPane"] -margin_left = 119.0 -margin_top = 312.0 -margin_right = 216.0 -margin_bottom = 336.0 -hint_tooltip = "tooltip_save_font" +[node name="BtnSaveFontOptions" type="Button" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +layout_mode = 2 size_flags_horizontal = 4 +tooltip_text = "tooltip_save_font" text = "btn_save_font" -[node name="HSeparator" type="HSeparator" parent="Main/Tabs/Fonts"] -margin_top = 352.0 -margin_right = 577.0 -margin_bottom = 352.0 -custom_constants/separation = 0 +[node name="HSeparator" type="HSeparator" parent="Main/TabBar/Fonts"] +layout_mode = 2 +theme_override_constants/separation = 0 -[node name="FontConfigInfo" type="RichTextLabel" parent="Main/Tabs/Fonts"] -margin_top = 356.0 -margin_right = 577.0 -margin_bottom = 424.0 +[node name="FontConfigInfo" type="RichTextLabel" parent="Main/TabBar/Fonts"] +layout_mode = 2 bbcode_enabled = true -bbcode_text = "Existing font configuration will be shown here. -... -... -..." text = "Existing font configuration will be shown here. ... ... ..." -fit_content_height = true -[node name="FontSizeHelpDialog" parent="Main/Tabs/Fonts" instance=ExtResource( 29 )] -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 492.0 -margin_right = 619.0 -margin_bottom = 493.0 +[node name="FontSizeHelpDialog" parent="Main/TabBar/Fonts" instance=ExtResource("29")] +position = Vector2i(0, 36) -[node name="Backups" type="VBoxContainer" parent="Main/Tabs"] +[node name="Backups" type="VBoxContainer" parent="Main/TabBar"] visible = false -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 7.5 -margin_top = 33.5 -margin_right = -7.5 -margin_bottom = -7.5 -script = ExtResource( 33 ) - -[node name="Available" type="VBoxContainer" parent="Main/Tabs/Backups"] -margin_right = 577.0 -margin_bottom = 256.0 - -[node name="Label" type="Label" parent="Main/Tabs/Backups/Available"] -margin_right = 577.0 -margin_bottom = 24.0 +layout_mode = 2 +script = ExtResource("33") + +[node name="Available" type="VBoxContainer" parent="Main/TabBar/Backups"] +layout_mode = 2 + +[node name="Label" type="Label" parent="Main/TabBar/Backups/Available"] +layout_mode = 2 text = "lbl_save_backups" -align = 1 -[node name="HBox" type="HBoxContainer" parent="Main/Tabs/Backups/Available"] -margin_top = 28.0 -margin_right = 577.0 -margin_bottom = 228.0 +[node name="HBox" type="HBoxContainer" parent="Main/TabBar/Backups/Available"] +layout_mode = 2 -[node name="BackupsList" type="ItemList" parent="Main/Tabs/Backups/Available/HBox" groups=["disable_during_backup_operations"]] -margin_right = 285.0 -margin_bottom = 200.0 -rect_min_size = Vector2( 0, 200 ) +[node name="BackupsList" type="ItemList" parent="Main/TabBar/Backups/Available/HBox" groups=["disable_during_backup_operations"]] +custom_minimum_size = Vector2(0, 200) +layout_mode = 2 size_flags_horizontal = 3 -items = [ "Item 0", null, false, "Item 1", null, false, "Item 2", null, false, "Item 3", null, false, "Item 4", null, false, "Item 5", null, false, "Item 6", null, false, "Item 7", null, false, "Item 8", null, false, "Item 9", null, false ] +item_count = 10 same_column_width = true - -[node name="BackupInfo" type="RichTextLabel" parent="Main/Tabs/Backups/Available/HBox"] -margin_left = 291.0 -margin_right = 577.0 -margin_bottom = 200.0 -focus_mode = 2 +item_0/text = "Item 0" +item_1/text = "Item 1" +item_2/text = "Item 2" +item_3/text = "Item 3" +item_4/text = "Item 4" +item_5/text = "Item 5" +item_6/text = "Item 6" +item_7/text = "Item 7" +item_8/text = "Item 8" +item_9/text = "Item 9" + +[node name="BackupInfo" type="RichTextLabel" parent="Main/TabBar/Backups/Available/HBox"] +layout_mode = 2 size_flags_horizontal = 3 +focus_mode = 2 bbcode_enabled = true -bbcode_text = "Backup details will appear here." text = "Backup details will appear here." selection_enabled = true -[node name="Buttons" type="HBoxContainer" parent="Main/Tabs/Backups/Available"] -margin_top = 232.0 -margin_right = 577.0 -margin_bottom = 256.0 +[node name="Buttons" type="HBoxContainer" parent="Main/TabBar/Backups/Available"] +layout_mode = 2 alignment = 1 -[node name="BtnRestore" type="Button" parent="Main/Tabs/Backups/Available/Buttons" groups=["disable_during_backup_operations"]] -margin_left = 85.0 -margin_right = 217.0 -margin_bottom = 24.0 +[node name="BtnRestore" type="Button" parent="Main/TabBar/Backups/Available/Buttons" groups=["disable_during_backup_operations"]] +layout_mode = 2 text = "btn_restore_backup" -[node name="BtnDelete" type="Button" parent="Main/Tabs/Backups/Available/Buttons" groups=["disable_during_backup_operations"]] -margin_left = 223.0 -margin_right = 349.0 -margin_bottom = 24.0 +[node name="BtnDelete" type="Button" parent="Main/TabBar/Backups/Available/Buttons" groups=["disable_during_backup_operations"]] +layout_mode = 2 text = "btn_delete_backup" -[node name="BtnRefresh" type="Button" parent="Main/Tabs/Backups/Available/Buttons" groups=["disable_during_backup_operations"]] -margin_left = 355.0 -margin_right = 492.0 -margin_bottom = 24.0 +[node name="BtnRefresh" type="Button" parent="Main/TabBar/Backups/Available/Buttons" groups=["disable_during_backup_operations"]] +layout_mode = 2 text = "btn_refresh_backups" -[node name="HSeparator" type="HSeparator" parent="Main/Tabs/Backups"] -margin_top = 260.0 -margin_right = 577.0 -margin_bottom = 268.0 +[node name="HSeparator" type="HSeparator" parent="Main/TabBar/Backups"] +layout_mode = 2 -[node name="Current" type="VBoxContainer" parent="Main/Tabs/Backups"] -margin_top = 272.0 -margin_right = 577.0 -margin_bottom = 328.0 +[node name="Current" type="VBoxContainer" parent="Main/TabBar/Backups"] +layout_mode = 2 -[node name="Label" type="Label" parent="Main/Tabs/Backups/Current"] -margin_right = 577.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Backups/Current"] +layout_mode = 2 text = "lbl_manual_backup" -align = 1 -[node name="HBox" type="HBoxContainer" parent="Main/Tabs/Backups/Current"] -margin_top = 28.0 -margin_right = 577.0 -margin_bottom = 52.0 +[node name="HBox" type="HBoxContainer" parent="Main/TabBar/Backups/Current"] +layout_mode = 2 -[node name="Label" type="Label" parent="Main/Tabs/Backups/Current/HBox"] -margin_right = 116.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Backups/Current/HBox"] +layout_mode = 2 text = "lbl_backup_name" -[node name="EditName" type="LineEdit" parent="Main/Tabs/Backups/Current/HBox"] -margin_left = 122.0 -margin_right = 445.0 -margin_bottom = 24.0 +[node name="EditName" type="LineEdit" parent="Main/TabBar/Backups/Current/HBox"] +layout_mode = 2 size_flags_horizontal = 3 placeholder_text = "Enter name for new backup" -[node name="BtnCreate" type="Button" parent="Main/Tabs/Backups/Current/HBox" groups=["disable_during_backup_operations"]] -margin_left = 451.0 -margin_right = 577.0 -margin_bottom = 24.0 +[node name="BtnCreate" type="Button" parent="Main/TabBar/Backups/Current/HBox" groups=["disable_during_backup_operations"]] +layout_mode = 2 size_flags_horizontal = 4 text = "btn_create_backup" -[node name="Spacer" type="Control" parent="Main/Tabs/Backups/Current"] -margin_top = 56.0 -margin_right = 577.0 -margin_bottom = 56.0 +[node name="Spacer" type="Control" parent="Main/TabBar/Backups/Current"] +layout_mode = 2 -[node name="Settings" type="VBoxContainer" parent="Main/Tabs"] +[node name="Settings" type="VBoxContainer" parent="Main/TabBar"] visible = false -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 7.5 -margin_top = 33.5 -margin_right = -7.5 -margin_bottom = -7.5 -custom_constants/separation = 2 -script = ExtResource( 8 ) - -[node name="LauncherLanguage" type="HBoxContainer" parent="Main/Tabs/Settings"] -margin_right = 577.0 -margin_bottom = 24.0 - -[node name="Label" type="Label" parent="Main/Tabs/Settings/LauncherLanguage"] -margin_right = 144.0 -margin_bottom = 24.0 +layout_mode = 2 +theme_override_constants/separation = 2 +script = ExtResource("8") + +[node name="LauncherLanguage" type="HBoxContainer" parent="Main/TabBar/Settings"] +layout_mode = 2 + +[node name="Label" type="Label" parent="Main/TabBar/Settings/LauncherLanguage"] +layout_mode = 2 text = "lbl_launcher_language" -[node name="obtnLanguage" type="OptionButton" parent="Main/Tabs/Settings/LauncherLanguage"] -margin_left = 397.0 -margin_right = 577.0 -margin_bottom = 24.0 -rect_min_size = Vector2( 180, 0 ) +[node name="obtnLanguage" type="OptionButton" parent="Main/TabBar/Settings/LauncherLanguage"] +custom_minimum_size = Vector2(180, 0) +layout_mode = 2 size_flags_horizontal = 10 -text = "English" -icon = ExtResource( 22 ) expand_icon = true -items = [ "English", ExtResource( 22 ), false, 0, null, "Français", ExtResource( 10 ), false, 1, null, "Русский", ExtResource( 21 ), false, 2, null, "简体字", ExtResource( 31 ), false, 3, null, "Čeština", ExtResource( 7 ), false, 4, null, "Español", ExtResource( 19 ), false, 5, null, "Polski", ExtResource( 42 ), false, 6, null, "Türkçe", ExtResource( 43 ), false, 7, null, "Português (BR)", ExtResource( 44 ), false, 8, null, "한국어", ExtResource( 45 ), false, 9, null ] -selected = 0 -[node name="LauncherTheme" type="HBoxContainer" parent="Main/Tabs/Settings"] -margin_top = 26.0 -margin_right = 577.0 -margin_bottom = 50.0 +[node name="LauncherTheme" type="HBoxContainer" parent="Main/TabBar/Settings"] +layout_mode = 2 -[node name="Label" type="Label" parent="Main/Tabs/Settings/LauncherTheme"] -margin_right = 129.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Settings/LauncherTheme"] +layout_mode = 2 text = "lbl_launcher_theme" -[node name="obtnTheme" type="OptionButton" parent="Main/Tabs/Settings/LauncherTheme"] -margin_left = 397.0 -margin_right = 577.0 -margin_bottom = 24.0 -rect_min_size = Vector2( 180, 0 ) +[node name="obtnTheme" type="OptionButton" parent="Main/TabBar/Settings/LauncherTheme"] +custom_minimum_size = Vector2(180, 0) +layout_mode = 2 size_flags_horizontal = 10 -text = "Godot 3" -icon = ExtResource( 37 ) expand_icon = true -items = [ "Godot 3", ExtResource( 37 ), false, 0, null, "Light", ExtResource( 35 ), false, 1, null, "Grey", ExtResource( 39 ), false, 2, null, "Solarized Dark", ExtResource( 36 ), false, 3, null, "Solarized Light", ExtResource( 38 ), false, 4, null ] -selected = 0 - -[node name="ShowGameDesc" type="CheckButton" parent="Main/Tabs/Settings"] -margin_top = 52.0 -margin_right = 577.0 -margin_bottom = 80.0 -hint_tooltip = "tooltip_show_game_desc" + +[node name="ShowGameDesc" type="CheckButton" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_show_game_desc" text = "cbtn_show_game_desc" -[node name="KeepLauncherOpen" type="CheckButton" parent="Main/Tabs/Settings"] -margin_top = 82.0 -margin_right = 577.0 -margin_bottom = 110.0 -hint_tooltip = "tooltip_keep_launcher_open" +[node name="KeepLauncherOpen" type="CheckButton" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_keep_launcher_open" text = "cbtn_keep_launcher_open" -[node name="PrintTips" type="CheckButton" parent="Main/Tabs/Settings"] -margin_top = 112.0 -margin_right = 577.0 -margin_bottom = 140.0 -hint_tooltip = "tooltip_print_tips" +[node name="PrintTips" type="CheckButton" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_print_tips" text = "cbtn_print_tips" -[node name="UpdateToSame" type="CheckButton" parent="Main/Tabs/Settings"] -margin_top = 142.0 -margin_right = 577.0 -margin_bottom = 170.0 -hint_tooltip = "tooltip_updating_to_same_build" +[node name="UpdateToSame" type="CheckButton" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_updating_to_same_build" text = "cbtn_updating_to_same_build" -[node name="ShortenNames" type="CheckButton" parent="Main/Tabs/Settings"] -margin_top = 172.0 -margin_right = 577.0 -margin_bottom = 200.0 -hint_tooltip = "tooltip_shorten_release_names" +[node name="ShortenNames" type="CheckButton" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_shorten_release_names" text = "cbtn_shorten_release_names" -[node name="AlwaysShowInstalls" type="CheckButton" parent="Main/Tabs/Settings"] -margin_top = 202.0 -margin_right = 577.0 -margin_bottom = 230.0 -hint_tooltip = "tooltip_always_show_installs" +[node name="AlwaysShowInstalls" type="CheckButton" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_always_show_installs" text = "cbtn_always_show_installs" -[node name="ShowObsoleteMods" type="CheckButton" parent="Main/Tabs/Settings"] -margin_top = 232.0 -margin_right = 577.0 -margin_bottom = 260.0 -hint_tooltip = "tooltip_show_obsolete_mods" +[node name="ShowObsoleteMods" type="CheckButton" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_show_obsolete_mods" text = "cbtn_show_obsolete_mods" -[node name="InstallArchivedMods" type="CheckButton" parent="Main/Tabs/Settings"] -margin_top = 262.0 -margin_right = 577.0 -margin_bottom = 290.0 -hint_tooltip = "tooltip_install_archived_mods" +[node name="InstallArchivedMods" type="CheckButton" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_install_archived_mods" text = "cbtn_install_archived_mods" -[node name="KeepCache" type="CheckButton" parent="Main/Tabs/Settings"] -margin_top = 292.0 -margin_right = 577.0 -margin_bottom = 320.0 -hint_tooltip = "tooltip_keep_cache" +[node name="KeepCache" type="CheckButton" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_keep_cache" text = "cbtn_keep_cache" -[node name="IgnoreCache" type="CheckButton" parent="Main/Tabs/Settings"] -margin_top = 322.0 -margin_right = 577.0 -margin_bottom = 350.0 -hint_tooltip = "tooltip_ignore_cache" +[node name="IgnoreCache" type="CheckButton" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_ignore_cache" text = "cbtn_ignore_cache" -[node name="ShowDebug" type="CheckButton" parent="Main/Tabs/Settings"] -margin_top = 352.0 -margin_right = 577.0 -margin_bottom = 380.0 -hint_tooltip = "tooltip_debug_mode" +[node name="ShowDebug" type="CheckButton" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_debug_mode" text = "cbtn_debug_mode" -[node name="NumReleases" type="HBoxContainer" parent="Main/Tabs/Settings"] -margin_top = 382.0 -margin_right = 577.0 -margin_bottom = 406.0 -hint_tooltip = "tooltip_num_releases_to_request" +[node name="NumReleases" type="HBoxContainer" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_num_releases_to_request" -[node name="Label" type="Label" parent="Main/Tabs/Settings/NumReleases"] -margin_right = 185.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Settings/NumReleases"] +layout_mode = 2 text = "lbl_num_releases_to_request" -[node name="sbNumReleases" type="SpinBox" parent="Main/Tabs/Settings/NumReleases"] -margin_left = 477.0 -margin_right = 577.0 -margin_bottom = 24.0 +[node name="sbNumReleases" type="SpinBox" parent="Main/TabBar/Settings/NumReleases"] +layout_mode = 2 size_flags_horizontal = 10 min_value = 1.0 value = 30.0 rounded = true -[node name="NumPrs" type="HBoxContainer" parent="Main/Tabs/Settings"] -margin_top = 408.0 -margin_right = 577.0 -margin_bottom = 432.0 -hint_tooltip = "tooltip_num_prs_to_request" +[node name="NumPrs" type="HBoxContainer" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_num_prs_to_request" -[node name="Label" type="Label" parent="Main/Tabs/Settings/NumPrs"] -margin_right = 156.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Settings/NumPrs"] +layout_mode = 2 text = "lbl_num_prs_to_request" -[node name="sbNumPRs" type="SpinBox" parent="Main/Tabs/Settings/NumPrs"] -margin_left = 477.0 -margin_right = 577.0 -margin_bottom = 24.0 +[node name="sbNumPRs" type="SpinBox" parent="Main/TabBar/Settings/NumPrs"] +layout_mode = 2 size_flags_horizontal = 10 min_value = 10.0 step = 10.0 value = 100.0 rounded = true -[node name="ProxySettings" type="HBoxContainer" parent="Main/Tabs/Settings"] -margin_top = 434.0 -margin_right = 577.0 -margin_bottom = 458.0 -hint_tooltip = "tooltip_proxy_settings" +[node name="ProxySettings" type="HBoxContainer" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_proxy_settings" -[node name="Label" type="Label" parent="Main/Tabs/Settings/ProxySettings"] -margin_right = 120.0 -margin_bottom = 24.0 +[node name="Label" type="Label" parent="Main/TabBar/Settings/ProxySettings"] +layout_mode = 2 text = "lbl_proxy_settings" -[node name="obtnProxyOption" type="OptionButton" parent="Main/Tabs/Settings/ProxySettings"] -margin_left = 127.0 -margin_right = 295.0 -margin_bottom = 24.0 -hint_tooltip = "tooltip_proxy_options" +[node name="obtnProxyOption" type="OptionButton" parent="Main/TabBar/Settings/ProxySettings"] +layout_mode = 2 size_flags_horizontal = 10 size_flags_stretch_ratio = 20.0 -text = "obtn_proxy_option_off" -items = [ "obtn_proxy_option_off", null, false, 0, null, "obtn_proxy_option_on", null, false, 1, null, "obtn_proxy_option_download", null, false, 2, null ] -selected = 0 - -[node name="leProxyHost" type="LineEdit" parent="Main/Tabs/Settings/ProxySettings"] -margin_left = 301.0 -margin_right = 471.0 -margin_bottom = 24.0 -rect_min_size = Vector2( 170, 0 ) +tooltip_text = "tooltip_proxy_options" + +[node name="leProxyHost" type="LineEdit" parent="Main/TabBar/Settings/ProxySettings"] +custom_minimum_size = Vector2(170, 0) +layout_mode = 2 size_flags_horizontal = 10 placeholder_text = "localhost" -[node name="sbProxyPort" type="SpinBox" parent="Main/Tabs/Settings/ProxySettings"] -margin_left = 477.0 -margin_right = 577.0 -margin_bottom = 24.0 +[node name="sbProxyPort" type="SpinBox" parent="Main/TabBar/Settings/ProxySettings"] +layout_mode = 2 size_flags_horizontal = 10 max_value = 65535.0 -[node name="ScaleOverride" type="HBoxContainer" parent="Main/Tabs/Settings"] -margin_top = 460.0 -margin_right = 577.0 -margin_bottom = 488.0 -hint_tooltip = "tooltip_ui_scale_override" -__meta__ = { -"_edit_use_anchors_": false -} - -[node name="Label" type="Label" parent="Main/Tabs/Settings/ScaleOverride"] -margin_top = 2.0 -margin_right = 134.0 -margin_bottom = 26.0 +[node name="ScaleOverride" type="HBoxContainer" parent="Main/TabBar/Settings"] +layout_mode = 2 +tooltip_text = "tooltip_ui_scale_override" + +[node name="Label" type="Label" parent="Main/TabBar/Settings/ScaleOverride"] +layout_mode = 2 text = "lbl_ui_scale_override" -[node name="cbScaleOverrideEnable" type="CheckBox" parent="Main/Tabs/Settings/ScaleOverride"] -margin_left = 329.0 -margin_right = 471.0 -margin_bottom = 28.0 +[node name="cbScaleOverrideEnable" type="CheckBox" parent="Main/TabBar/Settings/ScaleOverride"] +layout_mode = 2 size_flags_horizontal = 10 size_flags_stretch_ratio = 20.0 text = "cbtn_enable_scale" -[node name="sbScaleOverride" type="SpinBox" parent="Main/Tabs/Settings/ScaleOverride"] -margin_left = 477.0 -margin_right = 577.0 -margin_bottom = 28.0 +[node name="sbScaleOverride" type="SpinBox" parent="Main/TabBar/Settings/ScaleOverride"] +layout_mode = 2 size_flags_horizontal = 10 min_value = 75.0 max_value = 300.0 @@ -1247,110 +903,70 @@ value = 100.0 editable = false suffix = "%" -[node name="Debug" type="VBoxContainer" parent="Main/Tabs"] +[node name="Debug" type="VBoxContainer" parent="Main/TabBar"] visible = false -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 7.5 -margin_top = 33.5 -margin_right = -7.5 -margin_bottom = -7.5 -script = ExtResource( 14 ) - -[node name="Label" type="Label" parent="Main/Tabs/Debug"] -margin_right = 577.0 -margin_bottom = 40.0 +layout_mode = 2 +script = ExtResource("14") + +[node name="Label" type="Label" parent="Main/TabBar/Debug"] +layout_mode = 2 text = "This tab contains functions helpful in debugging parts of the launcher during development. Useless for anything else." -align = 1 -autowrap = true - -[node name="Button" type="Button" parent="Main/Tabs/Debug"] -margin_left = 202.0 -margin_top = 44.0 -margin_right = 374.0 -margin_bottom = 68.0 + +[node name="Button" type="Button" parent="Main/TabBar/Debug"] +layout_mode = 2 size_flags_horizontal = 6 text = "Test mod directory parsing" -[node name="Button2" type="Button" parent="Main/Tabs/Debug"] -margin_left = 197.0 -margin_top = 72.0 -margin_right = 379.0 -margin_bottom = 96.0 +[node name="Button2" type="Button" parent="Main/TabBar/Debug"] +layout_mode = 2 size_flags_horizontal = 6 text = "Test sound directory parsing" -[node name="Button3" type="Button" parent="Main/Tabs/Debug"] -margin_left = 146.0 -margin_top = 100.0 -margin_right = 430.0 -margin_bottom = 124.0 +[node name="Button3" type="Button" parent="Main/TabBar/Debug"] +layout_mode = 2 size_flags_horizontal = 6 text = "Test passing of arguments to shell commands" -[node name="Button4" type="Button" parent="Main/Tabs/Debug"] -margin_left = 167.0 -margin_top = 128.0 -margin_right = 410.0 -margin_bottom = 152.0 +[node name="Button4" type="Button" parent="Main/TabBar/Debug"] +layout_mode = 2 size_flags_horizontal = 6 text = "Test different types of status messages" -[node name="Button5" type="Button" parent="Main/Tabs/Debug"] -margin_left = 194.0 -margin_top = 156.0 -margin_right = 383.0 -margin_bottom = 180.0 +[node name="Button5" type="Button" parent="Main/TabBar/Debug"] +layout_mode = 2 size_flags_horizontal = 4 text = "Test recursive directory listing" -[node name="Button6" type="Button" parent="Main/Tabs/Debug"] -margin_left = 195.0 -margin_top = 184.0 -margin_right = 382.0 -margin_bottom = 208.0 +[node name="Button6" type="Button" parent="Main/TabBar/Debug"] +layout_mode = 2 size_flags_horizontal = 4 text = "Print a random Tip of the Day" -[node name="Button7" type="Button" parent="Main/Tabs/Debug"] -margin_left = 180.0 -margin_top = 212.0 -margin_right = 397.0 -margin_bottom = 236.0 +[node name="Button7" type="Button" parent="Main/TabBar/Debug"] +layout_mode = 2 size_flags_horizontal = 4 text = "Test path resolution in PathHelper" -[node name="Button8" type="Button" parent="Main/Tabs/Debug"] -margin_left = 210.0 -margin_top = 240.0 -margin_right = 367.0 -margin_bottom = 264.0 +[node name="Button8" type="Button" parent="Main/TabBar/Debug"] +layout_mode = 2 size_flags_horizontal = 4 -text = "Test translation retrieval" +text = "Test position retrieval" -[node name="Button9" type="Button" parent="Main/Tabs/Debug"] -margin_left = 234.0 -margin_top = 268.0 -margin_right = 343.0 -margin_bottom = 292.0 +[node name="Button9" type="Button" parent="Main/TabBar/Debug"] +layout_mode = 2 size_flags_horizontal = 4 text = "Print screen info" [node name="Log" type="RichTextLabel" parent="Main"] -margin_top = 539.0 -margin_right = 592.0 -margin_bottom = 692.0 -focus_mode = 2 +layout_mode = 2 size_flags_vertical = 3 +focus_mode = 2 bbcode_enabled = true scroll_following = true selection_enabled = true [node name="Releases" type="Node" parent="."] -script = ExtResource( 5 ) -__meta__ = { -"_editor_description_": "Fetches and keeps track of latest releases for each game/version. Re-fetches when asked." -} +script = ExtResource("5") [node name="HTTPRequest_DDA" type="HTTPRequest" parent="Releases"] @@ -1361,116 +977,103 @@ __meta__ = { [node name="HTTPRequest_TISH" type="HTTPRequest" parent="Releases"] [node name="ReleaseInstaller" type="Node" parent="."] -script = ExtResource( 9 ) -__meta__ = { -"_editor_description_": "Installs game releases from scratch into specified location. Makes use of the Downloader." -} +script = ExtResource("9") [node name="Mods" type="Node" parent="."] -script = ExtResource( 12 ) +script = ExtResource("12") [node name="Sound" type="Node" parent="."] -script = ExtResource( 13 ) +script = ExtResource("13") [node name="Fonts" type="Node" parent="."] -script = ExtResource( 28 ) -__meta__ = { -"_editor_description_": "Installs fonts from launcher's internal storage to the game directory, reads, manipulates and saves font-related settings." -} +script = ExtResource("28") [node name="Backups" type="Node" parent="."] -script = ExtResource( 34 ) -__meta__ = { -"_editor_description_": "Provides backup management utilities" -} +script = ExtResource("34") [connection signal="gui_input" from="Main/GameInfo/Icon" to="." method="_on_InfoIcon_gui_input"] [connection signal="meta_clicked" from="Main/GameInfo/Description" to="." method="_on_Description_meta_clicked"] -[connection signal="tab_changed" from="Main/Tabs" to="." method="_on_Tabs_tab_changed"] -[connection signal="tab_changed" from="Main/Tabs" to="Main/Tabs/Mods" method="_on_Tabs_tab_changed"] -[connection signal="tab_changed" from="Main/Tabs" to="Main/Tabs/Soundpacks" method="_on_Tabs_tab_changed"] -[connection signal="tab_changed" from="Main/Tabs" to="Main/Tabs/Fonts" method="_on_Tabs_tab_changed"] -[connection signal="tab_changed" from="Main/Tabs" to="Main/Tabs/Backups" method="_on_Tabs_tab_changed"] -[connection signal="meta_clicked" from="Main/Tabs/Game/Channel/HBox/ChangelogLink" to="." method="_on_ChangelogLink_meta_clicked"] -[connection signal="item_selected" from="Main/Tabs/Game/Builds/BuildsList" to="." method="_on_BuildsList_item_selected"] -[connection signal="pressed" from="Main/Tabs/Game/Builds/BtnRefresh" to="." method="_on_BtnRefresh_pressed"] -[connection signal="pressed" from="Main/Tabs/Game/BtnInstall" to="." method="_on_BtnInstall_pressed"] -[connection signal="toggled" from="Main/Tabs/Game/UpdateCurrent" to="." method="_on_cbUpdateCurrent_toggled"] -[connection signal="pressed" from="Main/Tabs/Game/ActiveInstall/Build/GameDir" to="." method="_on_GameDir_pressed"] -[connection signal="pressed" from="Main/Tabs/Game/ActiveInstall/Build/UserDir" to="." method="_on_UserDir_pressed"] -[connection signal="pressed" from="Main/Tabs/Game/ActiveInstall/Launch/BtnPlay" to="." method="_on_BtnPlay_pressed"] -[connection signal="pressed" from="Main/Tabs/Game/ActiveInstall/Launch/BtnResume" to="." method="_on_BtnResume_pressed"] -[connection signal="item_activated" from="Main/Tabs/Game/GameInstalls/HBox/InstallsList" to="." method="_on_InstallsList_item_activated"] -[connection signal="item_selected" from="Main/Tabs/Game/GameInstalls/HBox/InstallsList" to="." method="_on_InstallsList_item_selected"] -[connection signal="pressed" from="Main/Tabs/Game/GameInstalls/HBox/VBox/btnMakeActive" to="." method="_on_btnMakeActive_pressed"] -[connection signal="pressed" from="Main/Tabs/Game/GameInstalls/HBox/VBox/btnDelete" to="." method="_on_btnDelete_pressed"] -[connection signal="item_selected" from="Main/Tabs/Mods/HBox/Installed/InstalledList" to="Main/Tabs/Mods" method="_on_InstalledList_item_selected"] -[connection signal="multi_selected" from="Main/Tabs/Mods/HBox/Installed/InstalledList" to="Main/Tabs/Mods" method="_on_InstalledList_multi_selected"] -[connection signal="toggled" from="Main/Tabs/Mods/HBox/Installed/ShowStock" to="Main/Tabs/Mods" method="_on_ShowStock_toggled"] -[connection signal="pressed" from="Main/Tabs/Mods/HBox/Installed/BtnDelete" to="Main/Tabs/Mods" method="_on_BtnDelete_pressed"] -[connection signal="item_selected" from="Main/Tabs/Mods/HBox/Available/AvailableList" to="Main/Tabs/Mods" method="_on_AvailableList_item_selected"] -[connection signal="multi_selected" from="Main/Tabs/Mods/HBox/Available/AvailableList" to="Main/Tabs/Mods" method="_on_AvailableList_multi_selected"] -[connection signal="toggled" from="Main/Tabs/Mods/HBox/Available/ShowInstalled" to="Main/Tabs/Mods" method="_on_ShowInstalled_toggled"] -[connection signal="pressed" from="Main/Tabs/Mods/HBox/Available/VBox/BtnAddSelectedMod" to="Main/Tabs/Mods" method="_on_BtnAddSelectedMod_pressed"] -[connection signal="pressed" from="Main/Tabs/Mods/HBox/Available/VBox/BtnAddAllMods" to="Main/Tabs/Mods" method="_on_BtnAddAllMods_pressed"] -[connection signal="pressed" from="Main/Tabs/Mods/HBox/Available/BtnDownloadKenan" to="Main/Tabs/Mods" method="_on_BtnDownloadKenan_pressed"] -[connection signal="confirmed" from="Main/Tabs/Mods/DeleteMultipleDialog" to="Main/Tabs/Mods" method="_on_DeleteMultipleDialog_confirmed"] -[connection signal="response_no" from="Main/Tabs/Mods/ModReinstallDialog" to="Main/Tabs/Mods" method="_on_ModReinstallDialog_response_no"] -[connection signal="response_yes" from="Main/Tabs/Mods/ModReinstallDialog" to="Main/Tabs/Mods" method="_on_ModReinstallDialog_response_yes"] -[connection signal="item_selected" from="Main/Tabs/Soundpacks/HBox/Installed/InstalledList" to="Main/Tabs/Soundpacks" method="_on_InstalledList_item_selected"] -[connection signal="toggled" from="Main/Tabs/Soundpacks/HBox/Installed/ShowStock" to="Main/Tabs/Soundpacks" method="_on_ShowStock_toggled"] -[connection signal="pressed" from="Main/Tabs/Soundpacks/HBox/Installed/BtnDelete" to="Main/Tabs/Soundpacks" method="_on_BtnDelete_pressed"] -[connection signal="item_selected" from="Main/Tabs/Soundpacks/HBox/Downloadable/AvailableList" to="Main/Tabs/Soundpacks" method="_on_AvailableList_item_selected"] -[connection signal="pressed" from="Main/Tabs/Soundpacks/HBox/Downloadable/BtnInstall" to="Main/Tabs/Soundpacks" method="_on_BtnInstall_pressed"] -[connection signal="confirmed" from="Main/Tabs/Soundpacks/ConfirmDelete" to="Main/Tabs/Soundpacks" method="_on_ConfirmDelete_confirmed"] -[connection signal="confirmed" from="Main/Tabs/Soundpacks/ConfirmManualDownload" to="Main/Tabs/Soundpacks" method="_on_ConfirmManualDownload_confirmed"] -[connection signal="file_selected" from="Main/Tabs/Soundpacks/InstallFromFileDialog" to="Main/Tabs/Soundpacks" method="_on_InstallFromFileDialog_file_selected"] -[connection signal="item_selected" from="Main/Tabs/Fonts/FontSelection/RightPane/FontsList" to="Main/Tabs/Fonts" method="_on_FontsList_item_selected"] -[connection signal="pressed" from="Main/Tabs/Fonts/FontSelection/RightPane/Buttons/BtnSetFontUI" to="Main/Tabs/Fonts" method="_on_BtnSetFontX_pressed" binds= [ true, false, false ]] -[connection signal="pressed" from="Main/Tabs/Fonts/FontSelection/RightPane/Buttons/BtnSetFontMap" to="Main/Tabs/Fonts" method="_on_BtnSetFontX_pressed" binds= [ false, true, false ]] -[connection signal="pressed" from="Main/Tabs/Fonts/FontSelection/RightPane/Buttons/BtnSetFontOvermap" to="Main/Tabs/Fonts" method="_on_BtnSetFontX_pressed" binds= [ false, false, true ]] -[connection signal="pressed" from="Main/Tabs/Fonts/FontSelection/RightPane/Buttons/BtnSetFontAll" to="Main/Tabs/Fonts" method="_on_BtnSetFontX_pressed" binds= [ true, true, true ]] -[connection signal="pressed" from="Main/Tabs/Fonts/FontSelection/RightPane/Buttons/BtnResetFont" to="Main/Tabs/Fonts" method="_on_BtnResetFont_pressed"] -[connection signal="toggled" from="Main/Tabs/Fonts/FontSelection/LeftPane/PreviewCyrillic" to="Main/Tabs/Fonts" method="_on_PreviewCyrillic_toggled"] -[connection signal="pressed" from="Main/Tabs/Fonts/FontSelection/LeftPane/OtherSettings/HelpIcon" to="Main/Tabs/Fonts" method="_on_HelpIcon_pressed"] -[connection signal="pressed" from="Main/Tabs/Fonts/FontSelection/LeftPane/BtnSaveFontOptions" to="Main/Tabs/Fonts" method="_on_BtnSaveFontOptions_pressed"] -[connection signal="item_selected" from="Main/Tabs/Backups/Available/HBox/BackupsList" to="Main/Tabs/Backups" method="_on_BackupsList_item_selected"] -[connection signal="meta_clicked" from="Main/Tabs/Backups/Available/HBox/BackupInfo" to="Main/Tabs/Backups" method="_on_BackupInfo_meta_clicked"] -[connection signal="pressed" from="Main/Tabs/Backups/Available/Buttons/BtnRestore" to="Main/Tabs/Backups" method="_on_BtnRestore_pressed"] -[connection signal="pressed" from="Main/Tabs/Backups/Available/Buttons/BtnDelete" to="Main/Tabs/Backups" method="_on_BtnDelete_pressed"] -[connection signal="pressed" from="Main/Tabs/Backups/Available/Buttons/BtnRefresh" to="Main/Tabs/Backups" method="_on_BtnRefresh_pressed"] -[connection signal="text_changed" from="Main/Tabs/Backups/Current/HBox/EditName" to="Main/Tabs/Backups" method="_on_EditName_text_changed"] -[connection signal="text_entered" from="Main/Tabs/Backups/Current/HBox/EditName" to="Main/Tabs/Backups" method="_on_EditName_text_entered"] -[connection signal="pressed" from="Main/Tabs/Backups/Current/HBox/BtnCreate" to="Main/Tabs/Backups" method="_on_BtnCreate_pressed"] -[connection signal="item_selected" from="Main/Tabs/Settings/LauncherLanguage/obtnLanguage" to="Main/Tabs/Settings" method="_on_obtnLanguage_item_selected"] -[connection signal="item_selected" from="Main/Tabs/Settings/LauncherTheme/obtnTheme" to="Main/Tabs/Settings" method="_on_obtnTheme_item_selected"] -[connection signal="toggled" from="Main/Tabs/Settings/ShowGameDesc" to="Main/Tabs/Settings" method="_on_ShowGameDesc_toggled"] -[connection signal="toggled" from="Main/Tabs/Settings/KeepLauncherOpen" to="Main/Tabs/Settings" method="_on_KeepLauncherOpen_toggled"] -[connection signal="toggled" from="Main/Tabs/Settings/PrintTips" to="Main/Tabs/Settings" method="_on_PrintTips_toggled"] -[connection signal="toggled" from="Main/Tabs/Settings/UpdateToSame" to="Main/Tabs/Settings" method="_on_UpdateToSame_toggled"] -[connection signal="toggled" from="Main/Tabs/Settings/ShortenNames" to="Main/Tabs/Settings" method="_on_ShortenNames_toggled"] -[connection signal="toggled" from="Main/Tabs/Settings/AlwaysShowInstalls" to="Main/Tabs/Settings" method="_on_AlwaysShowInstalls_toggled"] -[connection signal="toggled" from="Main/Tabs/Settings/ShowObsoleteMods" to="Main/Tabs/Settings" method="_on_ShowObsoleteMods_toggled"] -[connection signal="toggled" from="Main/Tabs/Settings/InstallArchivedMods" to="Main/Tabs/Settings" method="_on_InstallArchivedMods_toggled"] -[connection signal="toggled" from="Main/Tabs/Settings/KeepCache" to="Main/Tabs/Settings" method="_on_KeepCache_toggled"] -[connection signal="toggled" from="Main/Tabs/Settings/IgnoreCache" to="Main/Tabs/Settings" method="_on_IgnoreCache_toggled"] -[connection signal="toggled" from="Main/Tabs/Settings/ShowDebug" to="Main/Tabs/Settings" method="_on_ShowDebug_toggled"] -[connection signal="value_changed" from="Main/Tabs/Settings/NumReleases/sbNumReleases" to="Main/Tabs/Settings" method="_on_sbNumReleases_value_changed"] -[connection signal="value_changed" from="Main/Tabs/Settings/NumPrs/sbNumPRs" to="Main/Tabs/Settings" method="_on_sbNumPRs_value_changed"] -[connection signal="item_selected" from="Main/Tabs/Settings/ProxySettings/obtnProxyOption" to="Main/Tabs/Settings" method="_on_obtnProxyOption_item_selected"] -[connection signal="text_changed" from="Main/Tabs/Settings/ProxySettings/leProxyHost" to="Main/Tabs/Settings" method="_on_leProxyHost_text_changed"] -[connection signal="value_changed" from="Main/Tabs/Settings/ProxySettings/sbProxyPort" to="Main/Tabs/Settings" method="_on_sbProxyPort_value_changed"] -[connection signal="toggled" from="Main/Tabs/Settings/ScaleOverride/cbScaleOverrideEnable" to="Main/Tabs/Settings" method="_on_cbScaleOverrideEnable_toggled"] -[connection signal="value_changed" from="Main/Tabs/Settings/ScaleOverride/sbScaleOverride" to="Main/Tabs/Settings" method="_on_sbScaleOverride_value_changed"] -[connection signal="pressed" from="Main/Tabs/Debug/Button" to="Main/Tabs/Debug" method="_on_Button_pressed"] -[connection signal="pressed" from="Main/Tabs/Debug/Button2" to="Main/Tabs/Debug" method="_on_Button2_pressed"] -[connection signal="pressed" from="Main/Tabs/Debug/Button3" to="Main/Tabs/Debug" method="_on_Button3_pressed"] -[connection signal="pressed" from="Main/Tabs/Debug/Button4" to="Main/Tabs/Debug" method="_on_Button4_pressed"] -[connection signal="pressed" from="Main/Tabs/Debug/Button5" to="Main/Tabs/Debug" method="_on_Button5_pressed"] -[connection signal="pressed" from="Main/Tabs/Debug/Button6" to="Main/Tabs/Debug" method="_on_Button6_pressed"] -[connection signal="pressed" from="Main/Tabs/Debug/Button7" to="Main/Tabs/Debug" method="_on_Button7_pressed"] -[connection signal="pressed" from="Main/Tabs/Debug/Button8" to="Main/Tabs/Debug" method="_on_Button8_pressed"] -[connection signal="pressed" from="Main/Tabs/Debug/Button9" to="Main/Tabs/Debug" method="_on_Button9_pressed"] +[connection signal="tab_changed" from="Main/TabBar" to="." method="_on_Tabs_tab_changed"] +[connection signal="tab_changed" from="Main/TabBar" to="Main/TabBar/Mods" method="_on_Tabs_tab_changed"] +[connection signal="tab_changed" from="Main/TabBar" to="Main/TabBar/Soundpacks" method="_on_Tabs_tab_changed"] +[connection signal="tab_changed" from="Main/TabBar" to="Main/TabBar/Fonts" method="_on_Tabs_tab_changed"] +[connection signal="tab_changed" from="Main/TabBar" to="Main/TabBar/Backups" method="_on_Tabs_tab_changed"] +[connection signal="meta_clicked" from="Main/TabBar/Game/Channel/HBox/ChangelogLink" to="." method="_on_ChangelogLink_meta_clicked"] +[connection signal="item_selected" from="Main/TabBar/Game/Builds/BuildsList" to="." method="_on_BuildsList_item_selected"] +[connection signal="pressed" from="Main/TabBar/Game/Builds/BtnRefresh" to="." method="_on_BtnRefresh_pressed"] +[connection signal="pressed" from="Main/TabBar/Game/BtnInstall" to="." method="_on_BtnInstall_pressed"] +[connection signal="toggled" from="Main/TabBar/Game/UpdateCurrent" to="." method="_on_cbUpdateCurrent_toggled"] +[connection signal="pressed" from="Main/TabBar/Game/ActiveInstall/Build/GameDir" to="." method="_on_GameDir_pressed"] +[connection signal="pressed" from="Main/TabBar/Game/ActiveInstall/Build/UserDir" to="." method="_on_UserDir_pressed"] +[connection signal="pressed" from="Main/TabBar/Game/ActiveInstall/Launch/BtnPlay" to="." method="_on_BtnPlay_pressed"] +[connection signal="pressed" from="Main/TabBar/Game/ActiveInstall/Launch/BtnResume" to="." method="_on_BtnResume_pressed"] +[connection signal="item_activated" from="Main/TabBar/Game/GameInstalls/HBox/InstallsList" to="." method="_on_InstallsList_item_activated"] +[connection signal="item_selected" from="Main/TabBar/Game/GameInstalls/HBox/InstallsList" to="." method="_on_InstallsList_item_selected"] +[connection signal="pressed" from="Main/TabBar/Game/GameInstalls/HBox/VBox/btnMakeActive" to="." method="_on_btnMakeActive_pressed"] +[connection signal="pressed" from="Main/TabBar/Game/GameInstalls/HBox/VBox/btnDelete" to="." method="_on_btnDelete_pressed"] +[connection signal="item_selected" from="Main/TabBar/Mods/HBox/Installed/InstalledList" to="Main/TabBar/Mods" method="_on_InstalledList_item_selected"] +[connection signal="multi_selected" from="Main/TabBar/Mods/HBox/Installed/InstalledList" to="Main/TabBar/Mods" method="_on_InstalledList_multi_selected"] +[connection signal="toggled" from="Main/TabBar/Mods/HBox/Installed/ShowStock" to="Main/TabBar/Mods" method="_on_ShowStock_toggled"] +[connection signal="pressed" from="Main/TabBar/Mods/HBox/Installed/BtnDelete" to="Main/TabBar/Mods" method="_on_BtnDelete_pressed"] +[connection signal="item_selected" from="Main/TabBar/Mods/HBox/Available/AvailableList" to="Main/TabBar/Mods" method="_on_AvailableList_item_selected"] +[connection signal="multi_selected" from="Main/TabBar/Mods/HBox/Available/AvailableList" to="Main/TabBar/Mods" method="_on_AvailableList_multi_selected"] +[connection signal="toggled" from="Main/TabBar/Mods/HBox/Available/ShowInstalled" to="Main/TabBar/Mods" method="_on_ShowInstalled_toggled"] +[connection signal="pressed" from="Main/TabBar/Mods/HBox/Available/VBox/BtnAddSelectedMod" to="Main/TabBar/Mods" method="_on_BtnAddSelectedMod_pressed"] +[connection signal="pressed" from="Main/TabBar/Mods/HBox/Available/VBox/BtnAddAllMods" to="Main/TabBar/Mods" method="_on_BtnAddAllMods_pressed"] +[connection signal="pressed" from="Main/TabBar/Mods/HBox/Available/BtnDownloadKenan" to="Main/TabBar/Mods" method="_on_BtnDownloadKenan_pressed"] +[connection signal="confirmed" from="Main/TabBar/Mods/DeleteMultipleDialog" to="Main/TabBar/Mods" method="_on_DeleteMultipleDialog_confirmed"] +[connection signal="response_no" from="Main/TabBar/Mods/ModReinstallDialog" to="Main/TabBar/Mods" method="_on_ModReinstallDialog_response_no"] +[connection signal="response_yes" from="Main/TabBar/Mods/ModReinstallDialog" to="Main/TabBar/Mods" method="_on_ModReinstallDialog_response_yes"] +[connection signal="item_selected" from="Main/TabBar/Soundpacks/HBox/Installed/InstalledList" to="Main/TabBar/Soundpacks" method="_on_InstalledList_item_selected"] +[connection signal="toggled" from="Main/TabBar/Soundpacks/HBox/Installed/ShowStock" to="Main/TabBar/Soundpacks" method="_on_ShowStock_toggled"] +[connection signal="pressed" from="Main/TabBar/Soundpacks/HBox/Installed/BtnDelete" to="Main/TabBar/Soundpacks" method="_on_BtnDelete_pressed"] +[connection signal="item_selected" from="Main/TabBar/Soundpacks/HBox/Downloadable/AvailableList" to="Main/TabBar/Soundpacks" method="_on_AvailableList_item_selected"] +[connection signal="pressed" from="Main/TabBar/Soundpacks/HBox/Downloadable/BtnInstall" to="Main/TabBar/Soundpacks" method="_on_BtnInstall_pressed"] +[connection signal="confirmed" from="Main/TabBar/Soundpacks/ConfirmDelete" to="Main/TabBar/Soundpacks" method="_on_ConfirmDelete_confirmed"] +[connection signal="confirmed" from="Main/TabBar/Soundpacks/ConfirmManualDownload" to="Main/TabBar/Soundpacks" method="_on_ConfirmManualDownload_confirmed"] +[connection signal="file_selected" from="Main/TabBar/Soundpacks/InstallFromFileDialog" to="Main/TabBar/Soundpacks" method="_on_InstallFromFileDialog_file_selected"] +[connection signal="item_selected" from="Main/TabBar/Fonts/FontSelection/RightPane/FontsList" to="Main/TabBar/Fonts" method="_on_FontsList_item_selected"] +[connection signal="pressed" from="Main/TabBar/Fonts/FontSelection/RightPane/Buttons/BtnResetFont" to="Main/TabBar/Fonts" method="_on_BtnResetFont_pressed"] +[connection signal="toggled" from="Main/TabBar/Fonts/FontSelection/LeftPane/PreviewCyrillic" to="Main/TabBar/Fonts" method="_on_PreviewCyrillic_toggled"] +[connection signal="pressed" from="Main/TabBar/Fonts/FontSelection/LeftPane/OtherSettings/HelpIcon" to="Main/TabBar/Fonts" method="_on_HelpIcon_pressed"] +[connection signal="pressed" from="Main/TabBar/Fonts/FontSelection/LeftPane/BtnSaveFontOptions" to="Main/TabBar/Fonts" method="_on_BtnSaveFontOptions_pressed"] +[connection signal="item_selected" from="Main/TabBar/Backups/Available/HBox/BackupsList" to="Main/TabBar/Backups" method="_on_BackupsList_item_selected"] +[connection signal="meta_clicked" from="Main/TabBar/Backups/Available/HBox/BackupInfo" to="Main/TabBar/Backups" method="_on_BackupInfo_meta_clicked"] +[connection signal="pressed" from="Main/TabBar/Backups/Available/Buttons/BtnRestore" to="Main/TabBar/Backups" method="_on_BtnRestore_pressed"] +[connection signal="pressed" from="Main/TabBar/Backups/Available/Buttons/BtnDelete" to="Main/TabBar/Backups" method="_on_BtnDelete_pressed"] +[connection signal="pressed" from="Main/TabBar/Backups/Available/Buttons/BtnRefresh" to="Main/TabBar/Backups" method="_on_BtnRefresh_pressed"] +[connection signal="text_changed" from="Main/TabBar/Backups/Current/HBox/EditName" to="Main/TabBar/Backups" method="_on_EditName_text_changed"] +[connection signal="text_submitted" from="Main/TabBar/Backups/Current/HBox/EditName" to="Main/TabBar/Backups" method="_on_EditName_text_entered"] +[connection signal="pressed" from="Main/TabBar/Backups/Current/HBox/BtnCreate" to="Main/TabBar/Backups" method="_on_BtnCreate_pressed"] +[connection signal="item_selected" from="Main/TabBar/Settings/LauncherLanguage/obtnLanguage" to="Main/TabBar/Settings" method="_on_obtnLanguage_item_selected"] +[connection signal="item_selected" from="Main/TabBar/Settings/LauncherTheme/obtnTheme" to="Main/TabBar/Settings" method="_on_obtnTheme_item_selected"] +[connection signal="toggled" from="Main/TabBar/Settings/ShowGameDesc" to="Main/TabBar/Settings" method="_on_ShowGameDesc_toggled"] +[connection signal="toggled" from="Main/TabBar/Settings/KeepLauncherOpen" to="Main/TabBar/Settings" method="_on_KeepLauncherOpen_toggled"] +[connection signal="toggled" from="Main/TabBar/Settings/PrintTips" to="Main/TabBar/Settings" method="_on_PrintTips_toggled"] +[connection signal="toggled" from="Main/TabBar/Settings/UpdateToSame" to="Main/TabBar/Settings" method="_on_UpdateToSame_toggled"] +[connection signal="toggled" from="Main/TabBar/Settings/ShortenNames" to="Main/TabBar/Settings" method="_on_ShortenNames_toggled"] +[connection signal="toggled" from="Main/TabBar/Settings/AlwaysShowInstalls" to="Main/TabBar/Settings" method="_on_AlwaysShowInstalls_toggled"] +[connection signal="toggled" from="Main/TabBar/Settings/ShowObsoleteMods" to="Main/TabBar/Settings" method="_on_ShowObsoleteMods_toggled"] +[connection signal="toggled" from="Main/TabBar/Settings/InstallArchivedMods" to="Main/TabBar/Settings" method="_on_InstallArchivedMods_toggled"] +[connection signal="toggled" from="Main/TabBar/Settings/KeepCache" to="Main/TabBar/Settings" method="_on_KeepCache_toggled"] +[connection signal="toggled" from="Main/TabBar/Settings/IgnoreCache" to="Main/TabBar/Settings" method="_on_IgnoreCache_toggled"] +[connection signal="toggled" from="Main/TabBar/Settings/ShowDebug" to="Main/TabBar/Settings" method="_on_ShowDebug_toggled"] +[connection signal="value_changed" from="Main/TabBar/Settings/NumReleases/sbNumReleases" to="Main/TabBar/Settings" method="_on_sbNumReleases_value_changed"] +[connection signal="value_changed" from="Main/TabBar/Settings/NumPrs/sbNumPRs" to="Main/TabBar/Settings" method="_on_sbNumPRs_value_changed"] +[connection signal="item_selected" from="Main/TabBar/Settings/ProxySettings/obtnProxyOption" to="Main/TabBar/Settings" method="_on_obtnProxyOption_item_selected"] +[connection signal="text_changed" from="Main/TabBar/Settings/ProxySettings/leProxyHost" to="Main/TabBar/Settings" method="_on_leProxyHost_text_changed"] +[connection signal="value_changed" from="Main/TabBar/Settings/ProxySettings/sbProxyPort" to="Main/TabBar/Settings" method="_on_sbProxyPort_value_changed"] +[connection signal="toggled" from="Main/TabBar/Settings/ScaleOverride/cbScaleOverrideEnable" to="Main/TabBar/Settings" method="_on_cbScaleOverrideEnable_toggled"] +[connection signal="value_changed" from="Main/TabBar/Settings/ScaleOverride/sbScaleOverride" to="Main/TabBar/Settings" method="_on_sbScaleOverride_value_changed"] +[connection signal="pressed" from="Main/TabBar/Debug/Button" to="Main/TabBar/Debug" method="_on_Button_pressed"] +[connection signal="pressed" from="Main/TabBar/Debug/Button2" to="Main/TabBar/Debug" method="_on_Button2_pressed"] +[connection signal="pressed" from="Main/TabBar/Debug/Button3" to="Main/TabBar/Debug" method="_on_Button3_pressed"] +[connection signal="pressed" from="Main/TabBar/Debug/Button4" to="Main/TabBar/Debug" method="_on_Button4_pressed"] +[connection signal="pressed" from="Main/TabBar/Debug/Button5" to="Main/TabBar/Debug" method="_on_Button5_pressed"] +[connection signal="pressed" from="Main/TabBar/Debug/Button6" to="Main/TabBar/Debug" method="_on_Button6_pressed"] +[connection signal="pressed" from="Main/TabBar/Debug/Button7" to="Main/TabBar/Debug" method="_on_Button7_pressed"] +[connection signal="pressed" from="Main/TabBar/Debug/Button8" to="Main/TabBar/Debug" method="_on_Button8_pressed"] +[connection signal="pressed" from="Main/TabBar/Debug/Button9" to="Main/TabBar/Debug" method="_on_Button9_pressed"] [connection signal="meta_clicked" from="Main/Log" to="." method="_on_Log_meta_clicked"] [connection signal="done_fetching_releases" from="Releases" to="." method="_on_Releases_done_fetching_releases"] [connection signal="started_fetching_releases" from="Releases" to="." method="_on_Releases_started_fetching_releases"] @@ -1478,19 +1081,3 @@ __meta__ = { [connection signal="request_completed" from="Releases/HTTPRequest_BN" to="Releases" method="_on_request_completed_bn"] [connection signal="request_completed" from="Releases/HTTPRequest_EOD" to="Releases" method="_on_request_completed_eod"] [connection signal="request_completed" from="Releases/HTTPRequest_TISH" to="Releases" method="_on_request_completed_tish"] -[connection signal="operation_finished" from="ReleaseInstaller" to="." method="_on_ReleaseInstaller_operation_finished"] -[connection signal="operation_started" from="ReleaseInstaller" to="." method="_on_ReleaseInstaller_operation_started"] -[connection signal="mod_deletion_finished" from="Mods" to="." method="_on_mod_operation_finished"] -[connection signal="mod_deletion_started" from="Mods" to="." method="_on_mod_operation_started"] -[connection signal="mod_installation_finished" from="Mods" to="." method="_on_mod_operation_finished"] -[connection signal="mod_installation_started" from="Mods" to="." method="_on_mod_operation_started"] -[connection signal="modpack_retrieval_finished" from="Mods" to="." method="_on_mod_operation_finished"] -[connection signal="modpack_retrieval_started" from="Mods" to="." method="_on_mod_operation_started"] -[connection signal="soundpack_deletion_finished" from="Sound" to="." method="_on_soundpack_operation_finished"] -[connection signal="soundpack_deletion_started" from="Sound" to="." method="_on_soundpack_operation_started"] -[connection signal="soundpack_installation_finished" from="Sound" to="." method="_on_soundpack_operation_finished"] -[connection signal="soundpack_installation_started" from="Sound" to="." method="_on_soundpack_operation_started"] -[connection signal="backup_creation_finished" from="Backups" to="." method="_on_backup_operation_finished"] -[connection signal="backup_creation_started" from="Backups" to="." method="_on_backup_operation_started"] -[connection signal="backup_restoration_finished" from="Backups" to="." method="_on_backup_operation_finished"] -[connection signal="backup_restoration_started" from="Backups" to="." method="_on_backup_operation_started"] diff --git a/scenes/ChangelogDialog.tscn b/scenes/ChangelogDialog.tscn index 0ba5e77a..af8500b9 100644 --- a/scenes/ChangelogDialog.tscn +++ b/scenes/ChangelogDialog.tscn @@ -1,20 +1,20 @@ [gd_scene load_steps=6 format=2] [ext_resource path="res://scripts/ChangelogDialod.gd" type="Script" id=1] -[ext_resource path="res://fonts/OpenSans-SemiboldItalic.tres" type="DynamicFont" id=2] -[ext_resource path="res://fonts/OpenSans-Regular.tres" type="DynamicFont" id=3] -[ext_resource path="res://fonts/OpenSans-Italic.tres" type="DynamicFont" id=4] -[ext_resource path="res://fonts/OpenSans-Semibold.tres" type="DynamicFont" id=5] +[ext_resource path="res://fonts/OpenSans-SemiboldItalic.tres" type="FontFile" id=2] +[ext_resource path="res://fonts/OpenSans-Regular.tres" type="FontFile" id=3] +[ext_resource path="res://fonts/OpenSans-Italic.tres" type="FontFile" id=4] +[ext_resource path="res://fonts/OpenSans-Semibold.tres" type="FontFile" id=5] -[node name="ChangelogDialog" type="WindowDialog"] +[node name="ChangelogDialog" type="Window"] anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -margin_left = -240.0 -margin_top = -160.0 -margin_right = 240.0 -margin_bottom = 160.0 +offset_left = -240.0 +offset_top = -160.0 +offset_right = 240.0 +offset_bottom = 160.0 window_title = "dlg_changelog_title" script = ExtResource( 1 ) __meta__ = { @@ -29,34 +29,34 @@ __meta__ = { } [node name="Margin" type="MarginContainer" parent="Panel"] -margin_left = 9.0 -margin_top = 6.0 -margin_right = 471.0 -margin_bottom = 314.0 -custom_constants/margin_top = 8 -custom_constants/margin_bottom = 8 +offset_left = 9.0 +offset_top = 6.0 +offset_right = 471.0 +offset_bottom = 314.0 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_bottom = 8 __meta__ = { "_edit_use_anchors_": false } [node name="VBox" type="VBoxContainer" parent="Panel/Margin"] -margin_top = 8.0 -margin_right = 462.0 -margin_bottom = 300.0 -custom_constants/separation = 8 +offset_top = 8.0 +offset_right = 462.0 +offset_bottom = 300.0 +theme_override_constants/separation = 8 __meta__ = { "_edit_use_anchors_": false } [node name="ChangelogText" type="RichTextLabel" parent="Panel/Margin/VBox"] -margin_right = 462.0 -margin_bottom = 255.0 +offset_right = 462.0 +offset_bottom = 255.0 size_flags_horizontal = 3 size_flags_vertical = 3 -custom_fonts/bold_italics_font = ExtResource( 2 ) -custom_fonts/italics_font = ExtResource( 4 ) -custom_fonts/bold_font = ExtResource( 5 ) -custom_fonts/normal_font = ExtResource( 3 ) +theme_override_fonts/bold_italics_font = ExtResource( 2 ) +theme_override_fonts/italics_font = ExtResource( 4 ) +theme_override_fonts/bold_font = ExtResource( 5 ) +theme_override_fonts/normal_font = ExtResource( 3 ) bbcode_enabled = true text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." __meta__ = { @@ -64,10 +64,10 @@ __meta__ = { } [node name="BtnCloseChangelog" type="Button" parent="Panel/Margin/VBox"] -margin_left = 201.0 -margin_top = 263.0 -margin_right = 260.0 -margin_bottom = 292.0 +offset_left = 201.0 +offset_top = 263.0 +offset_right = 260.0 +offset_bottom = 292.0 size_flags_horizontal = 4 text = "btn_close" __meta__ = { diff --git a/scenes/FontSizeHelpDialog.tscn b/scenes/FontSizeHelpDialog.tscn index dc295479..9ff1b7ed 100644 --- a/scenes/FontSizeHelpDialog.tscn +++ b/scenes/FontSizeHelpDialog.tscn @@ -1,12 +1,12 @@ [gd_scene load_steps=6 format=2] -[ext_resource path="res://fonts/OpenSans-Regular.tres" type="DynamicFont" id=1] -[ext_resource path="res://fonts/OpenSans-SemiboldItalic.tres" type="DynamicFont" id=2] -[ext_resource path="res://fonts/OpenSans-Italic.tres" type="DynamicFont" id=3] -[ext_resource path="res://fonts/OpenSans-Semibold.tres" type="DynamicFont" id=4] +[ext_resource path="res://fonts/OpenSans-Regular.tres" type="FontFile" id=1] +[ext_resource path="res://fonts/OpenSans-SemiboldItalic.tres" type="FontFile" id=2] +[ext_resource path="res://fonts/OpenSans-Italic.tres" type="FontFile" id=3] +[ext_resource path="res://fonts/OpenSans-Semibold.tres" type="FontFile" id=4] [ext_resource path="res://scripts/FontSizeHelpDialog.gd" type="Script" id=5] -[node name="FontSizeHelpDialog" type="WindowDialog"] +[node name="FontSizeHelpDialog" type="Window"] anchor_right = 1.0 anchor_bottom = 1.0 window_title = "dlg_font_size_help_title" @@ -23,35 +23,35 @@ __meta__ = { } [node name="Margin" type="MarginContainer" parent="Panel"] -margin_left = 14.0 -margin_top = 14.0 -margin_right = 586.0 -margin_bottom = 686.0 -custom_constants/margin_top = 8 -custom_constants/margin_bottom = 8 +offset_left = 14.0 +offset_top = 14.0 +offset_right = 586.0 +offset_bottom = 686.0 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_bottom = 8 [node name="VBox" type="VBoxContainer" parent="Panel/Margin"] -margin_top = 8.0 -margin_right = 572.0 -margin_bottom = 664.0 +offset_top = 8.0 +offset_right = 572.0 +offset_bottom = 664.0 [node name="Help" type="RichTextLabel" parent="Panel/Margin/VBox"] -margin_right = 572.0 -margin_bottom = 619.0 +offset_right = 572.0 +offset_bottom = 619.0 size_flags_vertical = 3 -custom_fonts/bold_italics_font = ExtResource( 2 ) -custom_fonts/italics_font = ExtResource( 3 ) -custom_fonts/bold_font = ExtResource( 4 ) -custom_fonts/normal_font = ExtResource( 1 ) +theme_override_fonts/bold_italics_font = ExtResource( 2 ) +theme_override_fonts/italics_font = ExtResource( 3 ) +theme_override_fonts/bold_font = ExtResource( 4 ) +theme_override_fonts/normal_font = ExtResource( 1 ) bbcode_enabled = true -bbcode_text = "dlg_font_config_help" +text = "dlg_font_config_help" text = "dlg_font_config_help" [node name="BtnOK" type="Button" parent="Panel/Margin/VBox"] -margin_left = 245.0 -margin_top = 627.0 -margin_right = 327.0 -margin_bottom = 664.0 +offset_left = 245.0 +offset_top = 627.0 +offset_right = 327.0 +offset_bottom = 664.0 size_flags_horizontal = 4 text = "Close" diff --git a/scenes/InlineIconButton.tscn b/scenes/InlineIconButton.tscn index 3dd45951..182a74dc 100644 --- a/scenes/InlineIconButton.tscn +++ b/scenes/InlineIconButton.tscn @@ -1,12 +1,12 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://icons/placeholder.svg" type="Texture" id=1] +[ext_resource path="res://icons/placeholder.svg" type="Texture2D" id=1] [ext_resource path="res://scripts/InlineIconButton.gd" type="Script" id=2] [node name="InlineIconButton" type="TextureButton"] -margin_right = 20.0 -margin_bottom = 20.0 -rect_min_size = Vector2( 18, 18 ) +offset_right = 20.0 +offset_bottom = 20.0 +custom_minimum_size = Vector2( 18, 18 ) size_flags_horizontal = 4 size_flags_vertical = 4 texture_normal = ExtResource( 1 ) diff --git a/scenes/ModReinstallDialog.tscn b/scenes/ModReinstallDialog.tscn index 92de8c14..253f6acf 100644 --- a/scenes/ModReinstallDialog.tscn +++ b/scenes/ModReinstallDialog.tscn @@ -2,12 +2,12 @@ [ext_resource path="res://scripts/ModReinstallDialog.gd" type="Script" id=1] -[node name="ModReinstallDialog" type="WindowDialog"] +[node name="ModReinstallDialog" type="Window"] visible = true anchor_right = 1.0 anchor_bottom = 0.268 -margin_right = -150.0 -margin_bottom = -14.4 +offset_right = -150.0 +offset_bottom = -14.4 size_flags_horizontal = 3 size_flags_vertical = 3 window_title = "dlg_mod_reinstall_title" @@ -24,65 +24,65 @@ __meta__ = { } [node name="Margin" type="MarginContainer" parent="Panel"] -margin_left = 14.0 -margin_top = 14.0 -margin_right = 486.0 -margin_bottom = 186.0 -custom_constants/margin_right = 16 -custom_constants/margin_top = 16 -custom_constants/margin_left = 16 -custom_constants/margin_bottom = 16 +offset_left = 14.0 +offset_top = 14.0 +offset_right = 486.0 +offset_bottom = 186.0 +theme_override_constants/margin_right = 16 +theme_override_constants/margin_top = 16 +theme_override_constants/margin_left = 16 +theme_override_constants/margin_bottom = 16 __meta__ = { "_edit_use_anchors_": false } [node name="VBox" type="VBoxContainer" parent="Panel/Margin"] -margin_left = 16.0 -margin_top = 31.0 -margin_right = 456.0 -margin_bottom = 140.0 +offset_left = 16.0 +offset_top = 31.0 +offset_right = 456.0 +offset_bottom = 140.0 size_flags_vertical = 4 __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Panel/Margin/VBox"] -margin_right = 440.0 -margin_bottom = 56.0 +offset_right = 440.0 +offset_bottom = 56.0 text = "(this text is assigned at runtime) (this text is assigned at runtime)" align = 1 autowrap = true [node name="Spacer" type="Control" parent="Panel/Margin/VBox"] -margin_top = 64.0 -margin_right = 440.0 -margin_bottom = 64.0 +offset_top = 64.0 +offset_right = 440.0 +offset_bottom = 64.0 [node name="HBox" type="HBoxContainer" parent="Panel/Margin/VBox"] -margin_left = 8.0 -margin_top = 72.0 -margin_right = 432.0 -margin_bottom = 109.0 +offset_left = 8.0 +offset_top = 72.0 +offset_right = 432.0 +offset_bottom = 109.0 size_flags_horizontal = 4 [node name="BtnYes" type="Button" parent="Panel/Margin/VBox/HBox"] -margin_right = 157.0 -margin_bottom = 37.0 +offset_right = 157.0 +offset_bottom = 37.0 size_flags_horizontal = 4 text = "btn_reinstall" [node name="BtnNo" type="Button" parent="Panel/Margin/VBox/HBox"] -margin_left = 165.0 -margin_right = 278.0 -margin_bottom = 37.0 +offset_left = 165.0 +offset_right = 278.0 +offset_bottom = 37.0 size_flags_horizontal = 4 text = "btn_skip" [node name="BtnCancel" type="Button" parent="Panel/Margin/VBox/HBox"] -margin_left = 286.0 -margin_right = 424.0 -margin_bottom = 37.0 +offset_left = 286.0 +offset_right = 424.0 +offset_bottom = 37.0 size_flags_horizontal = 4 text = "btn_cancel" diff --git a/scripts/BackupManager.gd b/scripts/BackupManager.gd index 40581df8..ba5ceec3 100644 --- a/scripts/BackupManager.gd +++ b/scripts/BackupManager.gd @@ -8,7 +8,7 @@ signal backup_restoration_finished signal backup_deletion_started signal backup_deletion_finished -var available = null setget , _get_available +var available = null: get = _get_available func backup_current(backup_name: String) -> void: @@ -17,14 +17,13 @@ func backup_current(backup_name: String) -> void: Status.post(tr("msg_backing_up_saves") % backup_name) emit_signal("backup_creation_started") - var dest_dir = Paths.save_backups.plus_file(backup_name) - var d = Directory.new() + var dest_dir = Paths.save_backups.path_join(backup_name) - if not d.dir_exists(dest_dir): - d.make_dir_recursive(dest_dir) + if not DirAccess.dir_exists_absolute(dest_dir): + DirAccess.make_dir_recursive_absolute(dest_dir) for world in FS.list_dir(Paths.savegames): - FS.zip(Paths.savegames, world, dest_dir.plus_file(world + ".zip")) - yield(FS, "zip_done") + FS.zip(Paths.savegames, world, dest_dir.path_join(world + ".zip")) + await FS.zip_done Status.post(tr("msg_backup_created")) else: @@ -36,7 +35,7 @@ func backup_current(backup_name: String) -> void: func get_save_summary(path: String) -> Dictionary: # Get information about a game save directory (any directory containing one or more game worlds) - if not Directory.new().dir_exists(path): + if not DirAccess.dir_exists_absolute(path): return {} var summary = { @@ -63,11 +62,11 @@ func refresh_available(): available = [] - if not Directory.new().dir_exists(Paths.save_backups): + if not DirAccess.dir_exists_absolute(Paths.save_backups): return for backup in FS.list_dir(Paths.save_backups): - var path = Paths.save_backups.plus_file(backup) + var path = Paths.save_backups.path_join(backup) available.append(get_save_summary(path)) @@ -82,15 +81,15 @@ func restore(backup_index: int) -> void: emit_signal("backup_restoration_started") - if Directory.new().dir_exists(source_dir): - if Directory.new().dir_exists(dest_dir): + if DirAccess.dir_exists_absolute(source_dir): + if DirAccess.dir_exists_absolute(dest_dir): FS.rm_dir(dest_dir) - yield(FS, "rm_dir_done") + await FS.rm_dir_done - Directory.new().make_dir(dest_dir) + DirAccess.make_dir_absolute(dest_dir) for world_zip in FS.list_dir(source_dir): - FS.extract(source_dir.plus_file(world_zip), dest_dir) - yield(FS, "extract_done") + FS.extract(source_dir.path_join(world_zip), dest_dir) + await FS.extract_done Status.post(tr("msg_backup_restored")) else: @@ -102,14 +101,14 @@ func restore(backup_index: int) -> void: func delete(backup_name: String) -> void: # Delete a backup. - var target_dir = Paths.save_backups.plus_file(backup_name) + var target_dir = Paths.save_backups.path_join(backup_name) emit_signal("backup_deletion_started") - if Directory.new().dir_exists(target_dir): + if DirAccess.dir_exists_absolute(target_dir): Status.post(tr("msg_deleting_backup") % backup_name) FS.rm_dir(target_dir) - yield(FS, "rm_dir_done") + await FS.rm_dir_done Status.post(tr("msg_backup_deleted")) emit_signal("backup_deletion_finished") diff --git a/scripts/BackupsUI.gd b/scripts/BackupsUI.gd index 074039ac..de7c8f71 100644 --- a/scripts/BackupsUI.gd +++ b/scripts/BackupsUI.gd @@ -1,14 +1,14 @@ extends VBoxContainer -onready var _backups = $"/root/Catapult/Backups" -onready var _edit_name = $Current/HBox/EditName -onready var _btn_create = $Current/HBox/BtnCreate -onready var _list_backups = $Available/HBox/BackupsList -onready var _btn_refresh = $Available/Buttons/BtnRefresh -onready var _btn_restore = $Available/Buttons/BtnRestore -onready var _btn_delete = $Available/Buttons/BtnDelete -onready var _lbl_info = $Available/HBox/BackupInfo +@onready var _backups = $"/root/Catapult/Backups" +@onready var _edit_name = $Current/HBox/EditName +@onready var _btn_create = $Current/HBox/BtnCreate +@onready var _list_backups = $Available/HBox/BackupsList +@onready var _btn_refresh = $Available/Buttons/BtnRefresh +@onready var _btn_restore = $Available/Buttons/BtnRestore +@onready var _btn_delete = $Available/Buttons/BtnDelete +@onready var _lbl_info = $Available/HBox/BackupInfo func _refresh_available() -> void: @@ -16,7 +16,7 @@ func _refresh_available() -> void: _list_backups.clear() _btn_restore.disabled = true _btn_delete.disabled = true - _lbl_info.bbcode_text = tr("lbl_backup_info_placeholder") + _lbl_info.text = tr("lbl_backup_info_placeholder") _backups.refresh_available() for item in _backups.available: @@ -25,7 +25,7 @@ func _refresh_available() -> void: func _populate_default_new_name() -> void: - var datetime = OS.get_datetime() + var datetime = Time.get_datetime_dict_from_system() _edit_name.text = "Manual_%02d-%02d-%02d_%02d-%02d" % [ datetime["year"] % 100, datetime["month"], @@ -47,7 +47,7 @@ func _on_Tabs_tab_changed(tab: int) -> void: ## Update the default backup filename when the app gains focus. func _notification(what: int) -> void: - if what == MainLoop.NOTIFICATION_WM_FOCUS_IN: + if what == MainLoop.NOTIFICATION_APPLICATION_FOCUS_IN: _populate_default_new_name() @@ -56,7 +56,7 @@ func _on_BtnCreate_pressed(): var target_file = _edit_name.text if target_file.is_valid_filename(): _backups.backup_current(target_file) - yield(_backups, "backup_creation_finished") + await _backups.backup_creation_finished _refresh_available() @@ -88,7 +88,7 @@ func _on_BtnDelete_pressed(): if selection != "": _backups.delete(selection) - yield(_backups, "backup_deletion_finished") + await _backups.backup_deletion_finished _refresh_available() @@ -100,16 +100,16 @@ func _on_EditName_text_changed(new_text: String): # Keep normal color if text is empty to avoid red placeholder text. if (new_text == "") or (new_text.is_valid_filename()): - _edit_name.add_color_override("font_color", get_color("font_color", "LineEdit")) + _edit_name.add_theme_color_override("font_color", get_theme_color("font_color", "LineEdit")) else: - _edit_name.add_color_override("font_color", Color.red) + _edit_name.add_theme_color_override("font_color", Color.RED) func _on_BackupsList_item_selected(index): _btn_restore.disabled = false _btn_delete.disabled = false - _lbl_info.bbcode_text = _make_backup_info_string(index) + _lbl_info.text = _make_backup_info_string(index) func _make_backup_info_string(index: int) -> String: diff --git a/scripts/Catapult.gd b/scripts/Catapult.gd index eaaf9e82..ccca702f 100644 --- a/scripts/Catapult.gd +++ b/scripts/Catapult.gd @@ -1,33 +1,33 @@ extends Node -onready var _debug_ui = $Main/Tabs/Debug -onready var _log = $Main/Log -onready var _game_info = $Main/GameInfo -onready var _game_desc = $Main/GameInfo/Description -onready var _mod_info = $Main/Tabs/Mods/ModInfo -onready var _tabs = $Main/Tabs -onready var _mods = $Mods -onready var _releases = $Releases -onready var _installer = $ReleaseInstaller -onready var _btn_install = $Main/Tabs/Game/BtnInstall -onready var _btn_refresh = $Main/Tabs/Game/Builds/BtnRefresh -onready var _changelog = $Main/Tabs/Game/ChangelogDialog -onready var _lbl_changelog = $Main/Tabs/Game/Channel/HBox/ChangelogLink -onready var _btn_game_dir = $Main/Tabs/Game/ActiveInstall/Build/GameDir -onready var _btn_user_dir = $Main/Tabs/Game/ActiveInstall/Build/UserDir -onready var _btn_play = $Main/Tabs/Game/ActiveInstall/Launch/BtnPlay -onready var _btn_resume = $Main/Tabs/Game/ActiveInstall/Launch/BtnResume -onready var _lst_builds = $Main/Tabs/Game/Builds/BuildsList -onready var _lst_games = $Main/GameChoice/GamesList -onready var _rbtn_stable = $Main/Tabs/Game/Channel/Group/RBtnStable -onready var _rbtn_exper = $Main/Tabs/Game/Channel/Group/RBtnExperimental -onready var _lbl_build = $Main/Tabs/Game/ActiveInstall/Build/Name -onready var _cb_update = $Main/Tabs/Game/UpdateCurrent -onready var _lst_installs = $Main/Tabs/Game/GameInstalls/HBox/InstallsList -onready var _btn_make_active = $Main/Tabs/Game/GameInstalls/HBox/VBox/btnMakeActive -onready var _btn_delete = $Main/Tabs/Game/GameInstalls/HBox/VBox/btnDelete -onready var _panel_installs = $Main/Tabs/Game/GameInstalls +@onready var _debug_ui = $Main/TabBar/Debug +@onready var _log = $Main/Log +@onready var _game_info = $Main/GameInfo +@onready var _game_desc = $Main/GameInfo/Description +@onready var _mod_info = $Main/TabBar/Mods/ModInfo +@onready var _tabs = $Main/TabBar +@onready var _mods = $Mods +@onready var _releases = $Releases +@onready var _installer = $ReleaseInstaller +@onready var _btn_install = $Main/TabBar/Game/BtnInstall +@onready var _btn_refresh = $Main/TabBar/Game/Builds/BtnRefresh +@onready var _changelog = $Main/TabBar/Game/ChangelogDialog +@onready var _lbl_changelog = $Main/TabBar/Game/Channel/HBox/ChangelogLink +@onready var _btn_game_dir = $Main/TabBar/Game/ActiveInstall/Build/GameDir +@onready var _btn_user_dir = $Main/TabBar/Game/ActiveInstall/Build/UserDir +@onready var _btn_play = $Main/TabBar/Game/ActiveInstall/Launch/BtnPlay +@onready var _btn_resume = $Main/TabBar/Game/ActiveInstall/Launch/BtnResume +@onready var _lst_builds = $Main/TabBar/Game/Builds/BuildsList +@onready var _lst_games = $Main/GameChoice/GamesList +@onready var _rbtn_stable = $Main/TabBar/Game/Channel/Group/RBtnStable +@onready var _rbtn_exper = $Main/TabBar/Game/Channel/Group/RBtnExperimental +@onready var _lbl_build = $Main/TabBar/Game/ActiveInstall/Build/Name +@onready var _cb_update = $Main/TabBar/Game/UpdateCurrent +@onready var _lst_installs = $Main/TabBar/Game/GameInstalls/HBox/InstallsList +@onready var _btn_make_active = $Main/TabBar/Game/GameInstalls/HBox/VBox/btnMakeActive +@onready var _btn_delete = $Main/TabBar/Game/GameInstalls/HBox/VBox/btnDelete +@onready var _panel_installs = $Main/TabBar/Game/GameInstalls var _disable_savestate := {} var _installs := {} @@ -47,7 +47,7 @@ func _ready() -> void: _save_control_min_sizes() _scale_control_min_sizes(Geom.scale) - Geom.connect("scale_changed", self, "_on_ui_scale_changed") + Geom.connect("scale_changed", Callable(self, "_on_ui_scale_changed")) assign_localized_text() @@ -65,14 +65,14 @@ func _ready() -> void: func _save_control_min_sizes() -> void: for node in Helpers.get_all_nodes_within(self): - if ("rect_min_size" in node) and (node.rect_min_size != Vector2.ZERO): - _base_min_sizes[node] = node.rect_min_size + if ("custom_minimum_size" in node) and (node.custom_minimum_size != Vector2.ZERO): + _base_min_sizes[node] = node.custom_minimum_size func _scale_control_min_sizes(factor: float) -> void: for node in _base_min_sizes: - node.rect_min_size = _base_min_sizes[node] * factor + node.custom_minimum_size = _base_min_sizes[node] * factor func _save_icon_sizes() -> void: @@ -82,7 +82,7 @@ func _save_icon_sizes() -> void: func assign_localized_text() -> void: - OS.set_window_title(tr("window_title")) + get_window().set_title(tr("window_title")) _tabs.set_tab_title(0, tr("tab_game")) _tabs.set_tab_title(1, tr("tab_mods")) @@ -91,17 +91,17 @@ func assign_localized_text() -> void: _tabs.set_tab_title(4, tr("tab_backups")) _tabs.set_tab_title(5, tr("tab_settings")) - _lbl_changelog.bbcode_text = tr("lbl_changelog") + _lbl_changelog.text = tr("lbl_changelog") var game = Settings.read("game") if game == "dda": - _game_desc.bbcode_text = tr("desc_dda") + _game_desc.text = tr("desc_dda") elif game == "bn": - _game_desc.bbcode_text = tr("desc_bn") + _game_desc.text = tr("desc_bn") elif game == "eod": - _game_desc.bbcode_text = tr("desc_eod") + _game_desc.text = tr("desc_eod") elif game == "tish": - _game_desc.bbcode_text = tr("desc_tish") + _game_desc.text = tr("desc_tish") func load_ui_theme(theme_file: String) -> void: @@ -113,7 +113,7 @@ func load_ui_theme(theme_file: String) -> void: # the new theme. self.theme.apply_scale(1.0) - var new_theme := load("res://themes".plus_file(theme_file)) as ScalableTheme + var new_theme := load("res://themes".path_join(theme_file)) as ScalableTheme if new_theme: new_theme.apply_scale(Geom.scale) @@ -125,19 +125,18 @@ func load_ui_theme(theme_file: String) -> void: func _unpack_utils() -> void: - var d = Directory.new() - var unzip_exe = Paths.utils_dir.plus_file("unzip.exe") - if (OS.get_name() == "Windows") and (not d.file_exists(unzip_exe)): - if not d.dir_exists(Paths.utils_dir): - d.make_dir(Paths.utils_dir) + var unzip_exe = Paths.utils_dir.path_join("unzip.exe") + if (OS.get_name() == "Windows") and (not FileAccess.file_exists(unzip_exe)): + if not DirAccess.dir_exists_absolute(Paths.utils_dir): + DirAccess.make_dir_absolute(Paths.utils_dir) Status.post(tr("msg_unpacking_unzip")) - d.copy("res://utils/unzip.exe", unzip_exe) - var zip_exe = Paths.utils_dir.plus_file("zip.exe") - if (OS.get_name() == "Windows") and (not d.file_exists(zip_exe)): - if not d.dir_exists(Paths.utils_dir): - d.make_dir(Paths.utils_dir) + DirAccess.copy_absolute("res://utils/unzip.exe", unzip_exe) + var zip_exe = Paths.utils_dir.path_join("zip.exe") + if (OS.get_name() == "Windows") and (not FileAccess.file_exists(zip_exe)): + if not DirAccess.dir_exists_absolute(Paths.utils_dir): + DirAccess.make_dir_absolute(Paths.utils_dir) Status.post(tr("msg_unpacking_zip")) - d.copy("res://utils/zip.exe", zip_exe) + DirAccess.copy_absolute("res://utils/zip.exe", zip_exe) @@ -181,16 +180,16 @@ func _on_GamesList_item_selected(index: int) -> void: match index: 0: Settings.store("game", "dda") - _game_desc.bbcode_text = tr("desc_dda") + _game_desc.text = tr("desc_dda") 1: Settings.store("game", "bn") - _game_desc.bbcode_text = tr("desc_bn") + _game_desc.text = tr("desc_bn") 2: Settings.store("game", "eod") - _game_desc.bbcode_text = tr("desc_eod") + _game_desc.text = tr("desc_eod") 3: Settings.store("game", "tish") - _game_desc.bbcode_text = tr("desc_tish") + _game_desc.text = tr("desc_tish") _tabs.current_tab = 0 apply_game_choice() @@ -332,14 +331,14 @@ func _get_release_key() -> String: func _on_GameDir_pressed() -> void: var gamedir = Paths.game_dir - if Directory.new().dir_exists(gamedir): + if DirAccess.dir_exists_absolute(gamedir): OS.shell_open(gamedir) func _on_UserDir_pressed() -> void: var userdir = Paths.userdata - if Directory.new().dir_exists(userdir): + if DirAccess.dir_exists_absolute(userdir): OS.shell_open(userdir) @@ -349,12 +348,12 @@ func _setup_ui() -> void: if not Settings.read("debug_mode"): _tabs.remove_child(_debug_ui) - _cb_update.pressed = Settings.read("update_current_when_installing") + _cb_update.button_pressed = Settings.read("update_current_when_installing") apply_game_choice() - _lst_games.connect("item_selected", self, "_on_GamesList_item_selected") - _rbtn_stable.connect("toggled", self, "_on_RBtnStable_toggled") + _lst_games.connect("item_selected", Callable(self, "_on_GamesList_item_selected")) + _rbtn_stable.connect("toggled", Callable(self, "_on_RBtnStable_toggled")) # Had to leave these signals unconnected in the editor and only connect # them now from code to avoid cyclic calls of apply_game_choice. @@ -380,12 +379,12 @@ func apply_game_choice() -> void: _rbtn_exper.disabled = false _rbtn_stable.disabled = false if channel == "stable": - _rbtn_stable.pressed = true + _rbtn_stable.button_pressed = true _btn_refresh.disabled = true else: _btn_refresh.disabled = false elif (game == "eod") or (game == "tish"): - _rbtn_exper.pressed = true + _rbtn_exper.button_pressed = true _rbtn_exper.disabled = true _rbtn_stable.disabled = true _btn_refresh.disabled = false @@ -393,19 +392,19 @@ func apply_game_choice() -> void: match game: "dda": _lst_games.select(0) - _game_desc.bbcode_text = tr("desc_dda") + _game_desc.text = tr("desc_dda") "bn": _lst_games.select(1) - _game_desc.bbcode_text = tr("desc_bn") + _game_desc.text = tr("desc_bn") "eod": _lst_games.select(2) - _game_desc.bbcode_text = tr("desc_eod") + _game_desc.text = tr("desc_eod") "tish": _lst_games.select(3) - _game_desc.bbcode_text = tr("desc_tish") + _game_desc.text = tr("desc_tish") if len(_releases.releases[_get_release_key()]) == 0: _releases.fetch(_get_release_key()) @@ -420,7 +419,7 @@ func _on_BtnPlay_pressed() -> void: func _on_BtnResume_pressed() -> void: - var lastworld: String = Paths.config.plus_file("lastworld.json") + var lastworld: String = Paths.config.path_join("lastworld.json") var info = Helpers.load_json_file(lastworld) if info: _start_game(info["world_name"]) @@ -428,28 +427,30 @@ func _on_BtnResume_pressed() -> void: func _start_game(world := "") -> void: - match OS.get_name(): - "X11": - var params := ["--userdir", Paths.userdata + "/"] - if world != "": - params.append_array(["--world", world]) - OS.execute(Paths.game_dir.plus_file("cataclysm-launcher"), params, false) - "Windows": - var world_str := "" - if world != "": - world_str = "--world \"%s\"" % world - - var exe_file = "cataclysm-tiles.exe" - if Settings.read("game") == "bn" and Directory.new().file_exists(Paths.game_dir.plus_file("cataclysm-bn-tiles.exe")): - exe_file = "cataclysm-bn-tiles.exe" - - var command = "cd /d %s && start %s --userdir \"%s/\" %s" % [Paths.game_dir, exe_file, Paths.userdata, world_str] - OS.execute("cmd", ["/C", command], false) - _: - return - - if not Settings.read("keep_open_after_starting_game"): - get_tree().quit() + pass # FIXME + + #match OS.get_name(): + #"X11": + #var params := ["--userdir", Paths.userdata + "/"] + #if world != "": + #params.append_array(["--world", world]) + #OS.execute(Paths.game_dir.path_join("cataclysm-launcher"), params, false) + #"Windows": + #var world_str := "" + #if world != "": + #world_str = "--world \"%s\"" % world +# + #var exe_file = "cataclysm-tiles.exe" + #if Settings.read("game") == "bn" and DirAccess.new().file_exists(Paths.game_dir.path_join("cataclysm-bn-tiles.exe")): + #exe_file = "cataclysm-bn-tiles.exe" +# + #var command = "cd /d %s && start %s --userdir \"%s/\" %s" % [Paths.game_dir, exe_file, Paths.userdata, world_str] + #OS.execute("cmd", ["/C", command], false) + #_: + #return + # + #if not Settings.read("keep_open_after_starting_game"): + #get_tree().quit() func _on_InstallsList_item_selected(index: int) -> void: @@ -463,7 +464,7 @@ func _on_InstallsList_item_activated(index: int) -> void: var name = _lst_installs.get_item_text(index) var path = _installs[Settings.read("game")][name] - if Directory.new().dir_exists(path): + if DirAccess.dir_exists_absolute(path): OS.shell_open(path) @@ -504,7 +505,7 @@ func _refresh_currently_installed() -> void: if game in _installs: _lbl_build.text = active_name _btn_play.disabled = false - _btn_resume.disabled = not (Directory.new().file_exists(Paths.config.plus_file("lastworld.json"))) + _btn_resume.disabled = not (FileAccess.file_exists(Paths.config.path_join("lastworld.json"))) _btn_game_dir.visible = true _btn_user_dir.visible = true if (_lst_builds.selected != -1) and (_lst_builds.selected < len(releases)): @@ -535,7 +536,7 @@ func _refresh_currently_installed() -> void: func _on_InfoIcon_gui_input(event: InputEvent) -> void: - if (event is InputEventMouseButton) and (event.button_index == BUTTON_LEFT) and (event.is_pressed()): + if (event is InputEventMouseButton) and (event.button_index == MOUSE_BUTTON_LEFT) and (event.is_pressed()): _easter_egg_counter += 1 if _easter_egg_counter == 3: Status.post("[color=red]%s[/color]" % tr("msg_easter_egg_warning")) @@ -547,11 +548,11 @@ func _activate_easter_egg() -> void: for node in Helpers.get_all_nodes_within(self): if node is Control: - node.rect_pivot_offset = node.rect_size / 2.0 - node.rect_rotation = randf() * 2.0 - 1.0 + node.pivot_offset = node.size / 2.0 + node.rotation = randf() * 2.0 - 1.0 Status.rainbow_text = true for i in range(20): Status.post(tr("msg_easter_egg_activated")) - yield(get_tree().create_timer(0.1), "timeout") + await get_tree().create_timer(0.1).timeout diff --git a/scripts/ChangelogDialod.gd b/scripts/ChangelogDialod.gd index 55c3f684..339591ae 100644 --- a/scripts/ChangelogDialod.gd +++ b/scripts/ChangelogDialod.gd @@ -1,4 +1,4 @@ -extends WindowDialog +extends Window const _PR_URL = { @@ -8,8 +8,8 @@ const _PR_URL = { "tish": "https://api.github.com/search/issues?q=repo%3ACataclysm-TISH-team/Cataclysm-TISH/", } -onready var _pullRequests := $PullRequests -onready var _changelogTextBox := $Panel/Margin/VBox/ChangelogText +@onready var _pullRequests := $PullRequests +@onready var _changelogTextBox := $Panel/Margin/VBox/ChangelogText var _pr_data = "" @@ -47,7 +47,9 @@ func download_pull_requests(): func _on_PullRequests_request_completed(result, response_code, headers, body): - var json = parse_json(body.get_string_from_utf8()) + var test_json_conv = JSON.new() + test_json_conv.parse(body.get_string_from_utf8()) + var json = test_json_conv.get_data() if response_code != 200: _pr_data = tr("str_error_retrieving_data") _pr_data += tr("str_hhtp_response_code") % response_code @@ -65,8 +67,8 @@ func process_pr_data(data): for json in data["items"]: var pr = PullRequest.pullrequest_from_datestring(json["closed_at"], json["title"], json["html_url"]) pr_array.push_back(pr) - pr_array.sort_custom(PullRequest, "compare_to") - var now = OS.get_datetime(true) + pr_array.sort_custom(Callable(PullRequest, "compare_to")) + var now = Time.get_datetime_dict_from_system(true) var latest_year = now["year"] + 1 var latest_month = now["month"] var latest_day = now["day"] @@ -109,15 +111,15 @@ func _on_ChangelogText_meta_clicked(meta): class PullRequest: - var timestring setget set_timestring,get_timestring - var year setget ,get_year - var month setget ,get_month - var day setget ,get_day - var hour setget ,get_hour - var minute setget ,get_minute - var second setget ,get_second - var summary setget ,get_summary - var link setget ,get_link + var timestring : get = get_timestring, set = set_timestring + var year : get = get_year + var month : get = get_month + var day : get = get_day + var hour : get = get_hour + var minute : get = get_minute + var second : get = get_second + var summary : get = get_summary + var link : get = get_link func get_year(): return year diff --git a/scripts/Debug.gd b/scripts/Debug.gd index f672c20b..14c1cd91 100644 --- a/scripts/Debug.gd +++ b/scripts/Debug.gd @@ -1,8 +1,8 @@ extends VBoxContainer -onready var _mods = $"../../../Mods" -onready var _sound = $"../../../Sound" +@onready var _mods = $"../../../Mods" +@onready var _sound = $"../../../Sound" func _on_Button_pressed() -> void: @@ -40,9 +40,8 @@ func _on_Button2_pressed() -> void: func _on_Button3_pressed(): - var d = Directory.new() - var dir = Paths.own_dir.plus_file("testdir") - d.make_dir(dir) + var dir = Paths.own_dir.path_join("testdir") + DirAccess.make_dir_absolute(dir) var command_linux = { "name": "sh", @@ -61,11 +60,11 @@ func _on_Button3_pressed(): command = command_windows Status.post("Command data: " + str(command)) - yield(get_tree().create_timer(2), "timeout") + await get_tree().create_timer(2).timeout var oew = OSExecWrapper.new() oew.execute(command["name"], command["args"]) - yield(oew, "process_exited") + await oew.process_exited Status.post("Command exited with code %s. Output:\n%s" % [oew.exit_code, oew.output[0]]) @@ -73,13 +72,13 @@ func _on_Button3_pressed(): func _on_Button4_pressed() -> void: Status.post("Testing status messages:\n") - yield(get_tree().create_timer(0.05), "timeout") + await get_tree().create_timer(0.05).timeout Status.post("This is a normal (info) message.", Enums.MSG_INFO) - yield(get_tree().create_timer(0.05), "timeout") + await get_tree().create_timer(0.05).timeout Status.post("This is a warning message.", Enums.MSG_WARN) - yield(get_tree().create_timer(0.05), "timeout") + await get_tree().create_timer(0.05).timeout Status.post("This is an error message.", Enums.MSG_ERROR) - yield(get_tree().create_timer(0.05), "timeout") + await get_tree().create_timer(0.05).timeout Status.post("This is a debug message.\n", Enums.MSG_DEBUG) @@ -87,7 +86,7 @@ func _on_Button5_pressed() -> void: var path = Paths.own_dir Status.post("Listing directory %s..." % path, Enums.MSG_DEBUG) - yield(get_tree().create_timer(0.1), "timeout") + await get_tree().create_timer(0.1).timeout var listing_msg = "\n" for p in FS.list_dir(path, true): @@ -135,12 +134,12 @@ func _on_Button9_pressed() -> void: Window position: %s Window size: %s Real window size: %s\n""" % [ \ - OS.get_screen_count(), - OS.current_screen, - OS.get_screen_position(), - OS.get_screen_size(), - OS.window_position, - OS.window_size, - OS.get_real_window_size()] + DisplayServer.get_screen_count(), + get_window().current_screen, + DisplayServer.screen_get_position(), + DisplayServer.screen_get_size(), + get_window().position, + get_window().size, + get_window().get_size_with_decorations()] Status.post(msg, Enums.MSG_DEBUG) diff --git a/scripts/FontManager.gd b/scripts/FontManager.gd index 10a5ccd2..a554ea0e 100644 --- a/scripts/FontManager.gd +++ b/scripts/FontManager.gd @@ -5,8 +5,8 @@ const _DEFAULT_FONTS = ["data/font/Terminus.ttf", "data/font/unifont.ttf"] var _game_options: Array = [] -var available_fonts: Array = [] setget , _get_available_fonts -var font_config: Dictionary = {} setget , _get_font_config +var available_fonts: Array = []: get = _get_available_fonts +var font_config: Dictionary = {}: get = _get_font_config func _get_available_fonts() -> Array: @@ -40,91 +40,86 @@ func set_game_option(name: String, value: String): func load_available_fonts() -> void: - var f := File.new() - var error := f.open("res://fonts/ingame/font_info.json", File.READ) + var f := FileAccess.open("res://fonts/ingame/font_info.json", FileAccess.READ) - if error: + if f == null: Status.post(tr("msg_failed_to_open_font_info"), Enums.MSG_ERROR) return - var json_result := JSON.parse(f.get_as_text()) + var json := JSON.new() + var error := json.parse(f.get_as_text()) - if json_result.error: + if error: Status.post(tr("msg_could_not_parse_font_info"), Enums.MSG_ERROR) Status.post(tr("msg_font_info_error_details") - % [json_result.error, json_result.error_line, json_result.error_string], Enums.MSG_DEBUG) + % [error, json.get_error_line(), json.get_error_message()], Enums.MSG_DEBUG) return - available_fonts = json_result.result + available_fonts = json.data -func font_config_file_exists() -> bool: +func font_config_file_exists() -> bool: # TODO: This does not need to be a separate function. - var config_file: String = Paths.config.plus_file("fonts.json") - - return Directory.new().file_exists(config_file) + var config_file: String = Paths.config.path_join("fonts.json") + return FileAccess.file_exists(config_file) func load_font_config() -> void: var result: Dictionary = {} - var config_file: String = Paths.config.plus_file("fonts.json") - - if Directory.new().file_exists(config_file): - var f := File.new() - var err = f.open(config_file, File.READ) - if err == 0: - var parse_result := JSON.parse(f.get_as_text()) - if parse_result.error == 0: - result = parse_result.result - else: + var config_file: String = Paths.config.path_join("fonts.json") + + if FileAccess.file_exists(config_file): + var f := FileAccess.open(config_file, FileAccess.READ) + if f != null: + var json = JSON.new() + var error := json.parse(f.get_as_text()) + if error != OK: Status.post(tr("msg_could_not_parse_font_config") % config_file, Enums.MSG_ERROR) Status.post(tr("msg_font_config_error_details") - % [parse_result.error, parse_result.error_line, parse_result.error_string], Enums.MSG_DEBUG) + % [error, json.get_error_line(), json.get_error_message()], Enums.MSG_DEBUG) else: - Status.post(tr("msg_failed_to_open_font_config") % [config_file, err], Enums.MSG_ERROR) + Status.post(tr("msg_failed_to_open_font_config") % [config_file, FileAccess.get_open_error()], Enums.MSG_ERROR) else: Status.post(tr("msg_font_config_not_found") % config_file, Enums.MSG_ERROR) font_config = result -func options_file_exists() -> bool: +func options_file_exists() -> bool: # TODO: This does not need to be a separate function. - var options_file: String = Paths.config.plus_file("options.json") - - return Directory.new().file_exists(options_file) + var options_file: String = Paths.config.path_join("options.json") + return FileAccess.file_exists(options_file) func load_game_options() -> void: - var options_file: String = Paths.config.plus_file("options.json") + var options_file: String = Paths.config.path_join("options.json") - if Directory.new().file_exists(options_file): - var f := File.new() - var err = f.open(options_file, File.READ) - if err == 0: - var parse_result := JSON.parse(f.get_as_text()) - if parse_result.error == 0: - _game_options = parse_result.result + if FileAccess.file_exists(options_file): + var f := FileAccess.open(options_file, FileAccess.READ) + if f != null: + var json := JSON.new() + var error := json.parse(f.get_as_text()) + if error == OK: + _game_options = json.data else: Status.post(tr("msg_could_not_parse_game_options") % options_file, Enums.MSG_ERROR) Status.post(tr("msg_game_options_error_details") - % [parse_result.error, parse_result.error_line, parse_result.error_string], Enums.MSG_DEBUG) + % [error, json.get_error_line(), json.get_error_message()], Enums.MSG_DEBUG) else: - Status.post(tr("msg_could_not_open_game_options") % [options_file, err], Enums.MSG_ERROR) + Status.post(tr("msg_could_not_open_game_options") % [options_file, FileAccess.get_open_error()], Enums.MSG_ERROR) else: Status.post(tr("msg_game_options_not_found") % options_file, Enums.MSG_ERROR) func _write_font_config() -> void: - var config_file: String = Paths.config.plus_file("fonts.json") + var config_file: String = Paths.config.path_join("fonts.json") - var f = File.new() - var err = f.open(config_file, File.WRITE) - if err == 0: - var json = JSON.print(font_config, " ") + var f := FileAccess.open(config_file, FileAccess.WRITE) + if f != null: + var json = JSON.stringify(font_config, " ") f.store_string(json) f.close() else: @@ -133,12 +128,11 @@ func _write_font_config() -> void: func write_game_options() -> void: - var options_file: String = Paths.config.plus_file("options.json") + var options_file: String = Paths.config.path_join("options.json") - var f = File.new() - var err = f.open(options_file, File.WRITE) - if err == 0: - var json = JSON.print(_game_options, " ") + var f := FileAccess.open(options_file, FileAccess.WRITE) + if f != null: + var json = JSON.stringify(_game_options, " ") f.store_string(json) f.close() Status.post(tr("msg_game_options_saved")) @@ -148,11 +142,10 @@ func write_game_options() -> void: func _install_font(font_index: int) -> bool: - var d := Directory.new() var font_file = available_fonts[font_index]["file"] - var source := "res://fonts/ingame".plus_file(font_file) - var dest: String = Paths.font_user.plus_file(font_file) - var err = d.copy(source, dest) + var source := "res://fonts/ingame".path_join(font_file) + var dest: String = Paths.font_user.path_join(font_file) + var err := DirAccess.copy_absolute(source, dest) if err: Status.post(tr("msg_could_not_install_font") % [font_file, err], Enums.MSG_ERROR) diff --git a/scripts/FontSizeHelpDialog.gd b/scripts/FontSizeHelpDialog.gd index 6fefe6d7..6916ac5d 100644 --- a/scripts/FontSizeHelpDialog.gd +++ b/scripts/FontSizeHelpDialog.gd @@ -1,7 +1,7 @@ -extends WindowDialog +extends Window -onready var _label := $Panel/Margin/VBox/Help +@onready var _label := $Panel/Margin/VBox/Help func open() -> void: @@ -9,7 +9,7 @@ func open() -> void: var text := tr("dlg_font_config_help") text = text.replace("[IMG_1]", "[img=%d]res://images/font-sizes.png[/img]" % (180 * Geom.scale)) text = text.replace("[IMG_2]", "[img=%d]res://images/font-rect.png[/img]" % (400 * Geom.scale)) - _label.bbcode_text = text + _label.text = text _label.scroll_to_line(0) # popup_centered_ratio(0.9) diff --git a/scripts/FontsUI.gd b/scripts/FontsUI.gd index 62e894dc..19d70b32 100644 --- a/scripts/FontsUI.gd +++ b/scripts/FontsUI.gd @@ -50,22 +50,22 @@ const _PREVIEW_TEXT_RU := [ const _PREVIEW_TEXT_NUM := "1234567890 !@#$ %^&* ()[]{}" -onready var _rng := RandomNumberGenerator.new() -onready var _tabs := $".." -onready var _fonts := $"/root/Catapult/Fonts" -onready var _list := $FontSelection/RightPane/FontsList -onready var _btn_set_ui := $FontSelection/RightPane/Buttons/BtnSetFontUI -onready var _btn_set_map := $FontSelection/RightPane/Buttons/BtnSetFontMap -onready var _btn_set_om := $FontSelection/RightPane/Buttons/BtnSetFontOvermap -onready var _btn_set_all := $FontSelection/RightPane/Buttons/BtnSetFontAll -onready var _preview := $FontSelection/LeftPane/Preview -onready var _cbox_cyrillic = $FontSelection/LeftPane/PreviewCyrillic -onready var _info := $FontConfigInfo -onready var _sb_font_ui := $FontSelection/LeftPane/FontSizeUI/sbFontSizeUI -onready var _sb_font_map := $FontSelection/LeftPane/FontSizeMap/sbFontSizeMap -onready var _sb_font_om := $FontSelection/LeftPane/FontSizeOvermap/sbFontSizeOM -onready var _cbtn_blending := $FontSelection/LeftPane/FontBlending -onready var _help_dlg := $FontSizeHelpDialog +@onready var _rng := RandomNumberGenerator.new() +@onready var _tabs := $".." +@onready var _fonts := $"/root/Catapult/Fonts" +@onready var _list := $FontSelection/RightPane/FontsList +@onready var _btn_set_ui := $FontSelection/RightPane/Buttons/BtnSetFontUI +@onready var _btn_set_map := $FontSelection/RightPane/Buttons/BtnSetFontMap +@onready var _btn_set_om := $FontSelection/RightPane/Buttons/BtnSetFontOvermap +@onready var _btn_set_all := $FontSelection/RightPane/Buttons/BtnSetFontAll +@onready var _preview := $FontSelection/LeftPane/Preview +@onready var _cbox_cyrillic = $FontSelection/LeftPane/PreviewCyrillic +@onready var _info := $FontConfigInfo +@onready var _sb_font_ui := $FontSelection/LeftPane/FontSizeUI/sbFontSizeUI +@onready var _sb_font_map := $FontSelection/LeftPane/FontSizeMap/sbFontSizeMap +@onready var _sb_font_om := $FontSelection/LeftPane/FontSizeOvermap/sbFontSizeOM +@onready var _cbtn_blending := $FontSelection/LeftPane/FontBlending +@onready var _help_dlg := $FontSizeHelpDialog func _make_preview_string(cyrillic: bool = false) -> String: @@ -105,7 +105,7 @@ func _show_current_config_info() -> void: text += "\n[/table]" - _info.bbcode_text = text + _info.text = text func _load_font_options() -> void: @@ -115,7 +115,7 @@ func _load_font_options() -> void: _sb_font_ui.value = _fonts.get_game_option("FONT_SIZE") as int _sb_font_map.value = _fonts.get_game_option("MAP_FONT_SIZE") as int _sb_font_om.value = _fonts.get_game_option("OVERMAP_FONT_SIZE") as int - _cbtn_blending.pressed = (_fonts.get_game_option("FONT_BLENDING").to_lower() == "true") + _cbtn_blending.button_pressed = (_fonts.get_game_option("FONT_BLENDING").to_lower() == "true") func _on_Tabs_tab_changed(tab: int) -> void: @@ -144,25 +144,25 @@ func _on_Tabs_tab_changed(tab: int) -> void: _list.add_item(font["name"]) _list.set_item_tooltip(_list.get_item_count() - 1, tr(font["desc_key"])) - _cbox_cyrillic.pressed = Settings.read("font_preview_cyrillic") + _cbox_cyrillic.button_pressed = Settings.read("font_preview_cyrillic") _load_font_options() - _preview.bbcode_text = "" + _preview.text = "" _show_current_config_info() func _on_FontsList_item_selected(index: int) -> void: var font_info = _fonts.available_fonts[index] - var font_path := "res://fonts/ingame".plus_file(font_info["file"]) - var font_res = DynamicFont.new() + var font_path := "res://fonts/ingame".path_join(font_info["file"]) + var font_res = FontFile.new() font_res.font_data = load(font_path) font_res.size = 15.0 * Geom.scale font_res.use_filter = true - _preview.add_font_override("normal_font", font_res) - _preview.bbcode_text = _make_preview_string(Settings.read("font_preview_cyrillic")) + _preview.add_theme_font_override("normal_font", font_res) + _preview.text = _make_preview_string(Settings.read("font_preview_cyrillic")) for btn in [_btn_set_ui, _btn_set_map, _btn_set_om, _btn_set_all]: btn.disabled = false @@ -195,7 +195,7 @@ func _on_BtnResetFont_pressed() -> void: func _on_PreviewCyrillic_toggled(button_pressed: bool) -> void: Settings.store("font_preview_cyrillic", button_pressed) - _preview.bbcode_text = _make_preview_string(Settings.read("font_preview_cyrillic")) + _preview.text = _make_preview_string(Settings.read("font_preview_cyrillic")) func _on_BtnSaveFontOptions_pressed() -> void: diff --git a/scripts/InlineIconButton.gd b/scripts/InlineIconButton.gd index 6f5f723a..ec0eb414 100644 --- a/scripts/InlineIconButton.gd +++ b/scripts/InlineIconButton.gd @@ -1,20 +1,20 @@ extends TextureButton -export(float, 1.0, 1.5) var _scale_when_hovered = 1.1 +@export var _scale_when_hovered = 1.1 # (float, 1.0, 1.5) var _normal_position := Vector2() func _on_mouse_entered() -> void: - _normal_position = rect_position - rect_size = rect_min_size * _scale_when_hovered - var offset := (rect_size - rect_min_size) / 2.0 - rect_position -= offset + _normal_position = position + size = custom_minimum_size * _scale_when_hovered + var offset := (size - custom_minimum_size) / 2.0 + position -= offset func _on_mouse_exited() -> void: - rect_size = rect_min_size - rect_position = _normal_position + size = custom_minimum_size + position = _normal_position diff --git a/scripts/InstallsList.gd b/scripts/InstallsList.gd index 122796d5..3894fc5a 100644 --- a/scripts/InstallsList.gd +++ b/scripts/InstallsList.gd @@ -1,7 +1,7 @@ extends ItemList -var disabled: bool setget _set_disabled, _get_disabled +var disabled: bool: get = _get_disabled, set = _set_disabled func _set_disabled(value: bool) -> void: @@ -10,7 +10,7 @@ func _set_disabled(value: bool) -> void: set_item_disabled(i, value) if value == true: - unselect_all() + deselect_all() disabled = value diff --git a/scripts/ItemList.gd b/scripts/ItemList.gd index 3ff8f5b2..f2ada7e5 100644 --- a/scripts/ItemList.gd +++ b/scripts/ItemList.gd @@ -2,7 +2,7 @@ extends ItemList # A small extension that adds the "disabled" propertry to ItemList. -export var disabled: bool = false setget _set_disabled +@export var disabled: bool = false: set = _set_disabled func _set_disabled(value: bool) -> void: diff --git a/scripts/ModManager.gd b/scripts/ModManager.gd index 8af3ce7b..0b8d9b77 100644 --- a/scripts/ModManager.gd +++ b/scripts/ModManager.gd @@ -35,8 +35,8 @@ const _MODPACKS = { } -var installed: Dictionary = {} setget , _get_installed -var available: Dictionary = {} setget , _get_available +var installed: Dictionary = {}: get = _get_installed +var available: Dictionary = {}: get = _get_available func _get_installed() -> Dictionary: @@ -57,19 +57,20 @@ func _get_available() -> Dictionary: func parse_mods_dir(mods_dir: String) -> Dictionary: - if not Directory.new().dir_exists(mods_dir): + if not DirAccess.dir_exists_absolute(mods_dir): return {} var result = {} for subdir in FS.list_dir(mods_dir): - var f = File.new() - var modinfo = mods_dir.plus_file(subdir).plus_file("/modinfo.json") + var modinfo = mods_dir.path_join(subdir).path_join("/modinfo.json") - if f.file_exists(modinfo): + if FileAccess.file_exists(modinfo): - f.open(modinfo, File.READ) - var json = JSON.parse(f.get_as_text()) + var f := FileAccess.open(modinfo, FileAccess.READ) + var test_json_conv = JSON.new() + test_json_conv.parse(f.get_as_text()) + var json = test_json_conv.get_data() if json.error != OK: Status.post(tr("msg_mod_json_parsing_failed") % modinfo, Enums.MSG_ERROR) continue @@ -144,7 +145,7 @@ func refresh_installed(): installed = {} var non_stock := {} - if Directory.new().dir_exists(Paths.mods_user): + if DirAccess.dir_exists_absolute(Paths.mods_user): non_stock = parse_mods_dir(Paths.mods_user) for id in non_stock: non_stock[id]["is_stock"] = false @@ -173,14 +174,14 @@ func refresh_available(): func _delete_mod(mod_id: String) -> void: - yield(get_tree().create_timer(0.05), "timeout") + await get_tree().create_timer(0.05).timeout # Have to introduce an artificial delay, otherwise the engine becomes very # crash-happy when processing large numbers of mods. if mod_id in installed: var mod = installed[mod_id] FS.rm_dir(mod["location"]) - yield(FS, "rm_dir_done") + await FS.rm_dir_done Status.post(tr("msg_mod_deleted") % mod["modinfo"]["name"]) else: Status.post(tr("msg_mod_not_found") % mod_id, Enums.MSG_ERROR) @@ -203,7 +204,7 @@ func delete_mods(mod_ids: Array) -> void: _delete_mod(id + "__") else: _delete_mod(id) - yield(self, "_done_deleting_mod") + await self._done_deleting_mod refresh_installed() emit_signal("mod_deletion_finished") @@ -211,7 +212,7 @@ func delete_mods(mod_ids: Array) -> void: func _install_mod(mod_id: String) -> void: - yield(get_tree().create_timer(0.05), "timeout") + await get_tree().create_timer(0.05).timeout # For stability; see above. var mods_dir = Paths.mods_user @@ -220,17 +221,16 @@ func _install_mod(mod_id: String) -> void: var mod = available[mod_id] FS.copy_dir(mod["location"], mods_dir) - yield(FS, "copy_dir_done") + await FS.copy_dir_done if (mod_id in installed) and (installed[mod_id]["is_obsolete"] == true): Status.post(tr("msg_obsolete_mod_collision") % [mod_id, mod["modinfo"]["name"]]) var modinfo = mod["modinfo"].duplicate() modinfo["id"] += "__" modinfo["name"] += "*" - var f = File.new() - f.open(mods_dir.plus_file(mod["location"].get_file()).plus_file("modinfo.json"), File.WRITE) - f.store_string(JSON.print(modinfo, " ")) - + var f := FileAccess.open(mods_dir.path_join(mod["location"].get_file()).path_join("modinfo.json"), FileAccess.WRITE) + f.store_string(JSON.stringify(modinfo, " ")) + Status.post(tr("msg_mod_installed") % mod["modinfo"]["name"]) else: Status.post(tr("msg_mod_not_found") % mod_id, Enums.MSG_ERROR) @@ -250,7 +250,7 @@ func install_mods(mod_ids: Array) -> void: for id in mod_ids: _install_mod(id) - yield(self, "_done_installing_mod") + await self._done_installing_mod refresh_installed() emit_signal("mod_installation_finished") @@ -264,36 +264,36 @@ func retrieve_kenan_pack() -> void: emit_signal("modpack_retrieval_started") Status.post(tr("msg_getting_kenan_pack") % game.to_upper()) - var archive = Paths.cache_dir.plus_file(pack["filename"]) + var archive = Paths.cache_dir.path_join(pack["filename"]) - if Settings.read("ignore_cache") or not Directory.new().file_exists(archive): + if Settings.read("ignore_cache") or not FileAccess.file_exists(archive): Downloader.download_file(pack["url"], Paths.cache_dir, pack["filename"]) - yield(Downloader, "download_finished") + await Downloader.download_finished - if Directory.new().file_exists(archive): + if FileAccess.file_exists(archive): FS.extract(archive, Paths.tmp_dir) - yield(FS, "extract_done") + await FS.extract_done if not Settings.read("keep_cache"): - Directory.new().remove(archive) + DirAccess.remove_absolute(archive) Status.post(tr("msg_wiping_mod_repo")) - if (Directory.new().dir_exists(Paths.mod_repo)): + if (DirAccess.dir_exists_absolute(Paths.mod_repo)): FS.rm_dir(Paths.mod_repo) - yield(FS, "rm_dir_done") + await FS.rm_dir_done Status.post(tr("msg_unpacking_kenan_mods")) for int_path in pack["internal_paths"]: - FS.move_dir(Paths.tmp_dir.plus_file(int_path), Paths.mod_repo) - yield(FS, "move_dir_done") + FS.move_dir(Paths.tmp_dir.path_join(int_path), Paths.mod_repo) + await FS.move_dir_done if Settings.read("install_archived_mods"): Status.post(tr("msg_unpacking_archived_mods")) - FS.move_dir(Paths.tmp_dir.plus_file(pack["archived_path"]), Paths.mod_repo) - yield(FS, "move_dir_done") + FS.move_dir(Paths.tmp_dir.path_join(pack["archived_path"]), Paths.mod_repo) + await FS.move_dir_done Status.post(tr("msg_kenan_install_cleanup")) - FS.rm_dir(Paths.tmp_dir.plus_file(pack["internal_paths"][0].split("/")[0])) - yield(FS, "rm_dir_done") + FS.rm_dir(Paths.tmp_dir.path_join(pack["internal_paths"][0].split("/")[0])) + await FS.rm_dir_done Status.post(tr("msg_kenan_install_done")) diff --git a/scripts/ModReinstallDialog.gd b/scripts/ModReinstallDialog.gd index 507b715a..2bb6dfff 100644 --- a/scripts/ModReinstallDialog.gd +++ b/scripts/ModReinstallDialog.gd @@ -1,10 +1,10 @@ -extends WindowDialog +extends Window signal response_yes signal response_no -onready var _label = $Panel/Margin/VBox/Label +@onready var _label = $Panel/Margin/VBox/Label func open(num_mods: int) -> void: @@ -14,7 +14,7 @@ func open(num_mods: int) -> void: else: _label.text = tr("dlg_mod_reinstall_text_multiple") % num_mods - rect_size = Vector2(400, 150) + size = Vector2(400, 150) popup_centered() diff --git a/scripts/ModsUI.gd b/scripts/ModsUI.gd index 9f8981f3..16eed618 100644 --- a/scripts/ModsUI.gd +++ b/scripts/ModsUI.gd @@ -1,21 +1,21 @@ extends VBoxContainer -onready var _root = $"/root/Catapult" -onready var _mods = $"../../../Mods" -onready var _installed_list = $HBox/Installed/InstalledList -onready var _available_list = $HBox/Available/AvailableList -onready var _cbox_show_stock = $HBox/Installed/ShowStock -onready var _btn_delete = $HBox/Installed/BtnDelete -onready var _btn_add = $HBox/Available/VBox/BtnAddSelectedMod -onready var _btn_add_all = $HBox/Available/VBox/BtnAddAllMods -onready var _btn_get_kenan = $HBox/Available/BtnDownloadKenan -onready var _cbox_show_installed = $HBox/Available/ShowInstalled -onready var _lbl_mod_info = $ModInfo -onready var _lbl_installed = $HBox/Installed/Label -onready var _lbl_repo = $HBox/Available/Label -onready var _dlg_reinstall = $ModReinstallDialog -onready var _dlg_del_multiple = $DeleteMultipleDialog +@onready var _root = $"/root/Catapult" +@onready var _mods = $"../../../Mods" +@onready var _installed_list = $HBox/Installed/InstalledList +@onready var _available_list = $HBox/Available/AvailableList +@onready var _cbox_show_stock = $HBox/Installed/ShowStock +@onready var _btn_delete = $HBox/Installed/BtnDelete +@onready var _btn_add = $HBox/Available/VBox/BtnAddSelectedMod +@onready var _btn_add_all = $HBox/Available/VBox/BtnAddAllMods +@onready var _btn_get_kenan = $HBox/Available/BtnDownloadKenan +@onready var _cbox_show_installed = $HBox/Available/ShowInstalled +@onready var _lbl_mod_info = $ModInfo +@onready var _lbl_installed = $HBox/Installed/Label +@onready var _lbl_repo = $HBox/Available/Label +@onready var _dlg_reinstall = $ModReinstallDialog +@onready var _dlg_del_multiple = $DeleteMultipleDialog var _installed_mods_view := [] var _available_mods_view := [] @@ -73,7 +73,7 @@ func reload_installed() -> void: if (show_obsolete) and (status == 3): _installed_mods_view[-1]["name"] += " [obsolete]" - _installed_mods_view.sort_custom(self, "_sorting_comparison") + _installed_mods_view.sort_custom(Callable(self, "_sorting_comparison")) _btn_delete.disabled = true @@ -116,7 +116,7 @@ func reload_available() -> void: else: hidden_mods += 1 - _available_mods_view.sort_custom(self, "_sorting_comparison") + _available_mods_view.sort_custom(Callable(self, "_sorting_comparison")) var hidden_str = "" if hidden_mods > 0: @@ -204,9 +204,9 @@ func _on_Tabs_tab_changed(tab: int) -> void: if tab != 1: return - _cbox_show_stock.pressed = Settings.read("show_stock_mods") - _cbox_show_installed.pressed = Settings.read("show_installed_mods_in_available") - _lbl_mod_info.bbcode_text = tr("lbl_mod_info") + _cbox_show_stock.button_pressed = Settings.read("show_stock_mods") + _cbox_show_installed.button_pressed = Settings.read("show_installed_mods_in_available") + _lbl_mod_info.text = tr("lbl_mod_info") _btn_delete.disabled = true _btn_add.disabled = true @@ -224,7 +224,7 @@ func _on_InstalledList_multi_selected(index: int, selected: bool) -> void: active_idx = selection.max() var active_id = _installed_mods_view[active_idx]["id"] - _lbl_mod_info.bbcode_text = _make_mod_info_string(_mods.installed[active_id]) + _lbl_mod_info.text = _make_mod_info_string(_mods.installed[active_id]) _lbl_mod_info.scroll_to_line(0) var only_stock_selected = true @@ -250,7 +250,7 @@ func _on_AvailableList_multi_selected(index: int, selected: bool) -> void: active_idx = selection.max() var active_id = _available_mods_view[active_idx]["id"] - _lbl_mod_info.bbcode_text = _make_mod_info_string(_mods.available[active_id]) + _lbl_mod_info.text = _make_mod_info_string(_mods.available[active_id]) _lbl_mod_info.scroll_to_line(0) var only_non_installable_selected = true @@ -269,7 +269,7 @@ func _on_AvailableList_multi_selected(index: int, selected: bool) -> void: func _on_BtnDownloadKenan_pressed() -> void: _mods.retrieve_kenan_pack() - yield(_mods, "modpack_retrieval_finished") + await _mods.modpack_retrieval_finished reload_available() @@ -294,13 +294,13 @@ func _on_BtnDelete_pressed() -> void: var num = len(_mods_to_delete) if num > 1: _dlg_del_multiple.dialog_text = tr("dlg_deleting_n_mods_text") % num - _dlg_del_multiple.get_cancel().text = tr("btn_cancel") - _dlg_del_multiple.rect_size = Vector2(250, 100) + _dlg_del_multiple.get_cancel_button().text = tr("btn_cancel") + _dlg_del_multiple.size = Vector2(250, 100) _dlg_del_multiple.popup_centered() return _mods.delete_mods(_mods_to_delete) - yield(_mods, "mod_deletion_finished") + await _mods.mod_deletion_finished reload_installed() reload_available() @@ -308,7 +308,7 @@ func _on_BtnDelete_pressed() -> void: func _on_DeleteMultipleDialog_confirmed() -> void: _mods.delete_mods(_mods_to_delete) - yield(_mods, "mod_deletion_finished") + await _mods.mod_deletion_finished reload_installed() reload_available() @@ -365,12 +365,12 @@ func _do_mod_installation() -> void: if len(_ids_to_delete) > 0: _mods.delete_mods(_ids_to_reinstall) - yield(_mods, "mod_deletion_finished") + await _mods.mod_deletion_finished _mods.install_mods(_ids_to_install + _ids_to_reinstall) - yield(_mods, "mod_installation_finished") + await _mods.mod_installation_finished else: _mods.install_mods(_ids_to_install) - yield(_mods, "mod_installation_finished") + await _mods.mod_installation_finished reload_installed() reload_available() diff --git a/scripts/OSExecWrapper.gd b/scripts/OSExecWrapper.gd index b680812d..d6b72147 100644 --- a/scripts/OSExecWrapper.gd +++ b/scripts/OSExecWrapper.gd @@ -10,13 +10,14 @@ var exit_code = null func _wrapper(path_and_args: Array) -> void: - - exit_code = OS.execute(path_and_args[0], path_and_args[1], true, output, true) - emit_signal("process_exited") - _worker.call_deferred("wait_to_finish") + pass # FIXME + #exit_code = OS.execute(path_and_args[0], path_and_args[1], true, output, true) + #emit_signal("process_exited") + #_worker.call_deferred("wait_to_finish") -func execute(path: String, args: PoolStringArray) -> void: +func execute(path: String, args: PackedStringArray) -> void: - _worker = Thread.new() - _worker.start(self, "_wrapper", [path, args]) + pass # FIXME + #_worker = Thread.new() + #_worker.start(Callable(self, "_wrapper").bind([path, args])) diff --git a/scripts/ReleaseInstaller.gd b/scripts/ReleaseInstaller.gd index e1b0f16f..ceadcd28 100644 --- a/scripts/ReleaseInstaller.gd +++ b/scripts/ReleaseInstaller.gd @@ -14,25 +14,25 @@ func install_release(release_info: Dictionary, game: String, update_in: String = else: Status.post(tr("msg_installing_game") % release_info["name"]) - var archive: String = Paths.cache_dir.plus_file(release_info["filename"]) + var archive: String = Paths.cache_dir.path_join(release_info["filename"]) - if Settings.read("ignore_cache") or not Directory.new().file_exists(archive): + if Settings.read("ignore_cache") or not FileAccess.file_exists(archive): Downloader.download_file(release_info["url"], Paths.cache_dir, release_info["filename"]) - yield(Downloader, "download_finished") + await Downloader.download_finished - if Directory.new().file_exists(archive): + if FileAccess.file_exists(archive): FS.extract(archive, Paths.tmp_dir) - yield(FS, "extract_done") + await FS.extract_done if not Settings.read("keep_cache"): - Directory.new().remove(archive) + DirAccess.remove_absolute(archive) if FS.last_extract_result == 0: var extracted_root match OS.get_name(): "X11": - extracted_root = Paths.tmp_dir.plus_file(FS.list_dir(Paths.tmp_dir)[0]) + extracted_root = Paths.tmp_dir.path_join(FS.list_dir(Paths.tmp_dir)[0]) "Windows": extracted_root = Paths.tmp_dir @@ -42,12 +42,12 @@ func install_release(release_info: Dictionary, game: String, update_in: String = if update_in: target_dir = update_in FS.rm_dir(target_dir) - yield(FS, "rm_dir_done") + await FS.rm_dir_done else: target_dir = Paths.next_install_dir FS.move_dir(extracted_root, target_dir) - yield(FS, "move_dir_done") + await FS.move_dir_done if update_in: Settings.store("active_install_" + Settings.read("game"), release_info["name"]) @@ -69,7 +69,7 @@ func remove_release_by_name(name: String) -> void: Status.post(tr("msg_deleting_game") % name) var location = installs[game][name] FS.rm_dir(location) - yield(FS, "rm_dir_done") + await FS.rm_dir_done Status.post(tr("msg_game_deleted")) else: Status.post(tr("msg_delete_not_found") % name, Enums.MSG_ERROR) diff --git a/scripts/ReleaseManager.gd b/scripts/ReleaseManager.gd index f4a6b3c2..2387ad72 100644 --- a/scripts/ReleaseManager.gd +++ b/scripts/ReleaseManager.gd @@ -287,7 +287,7 @@ func _request_releases(http: HTTPRequest, release: String) -> void: func _on_request_completed_dda(result: int, response_code: int, - headers: PoolStringArray, body: PoolByteArray) -> void: + headers: PackedStringArray, body: PackedByteArray) -> void: Status.post(tr("msg_http_request_info") % [result, response_code, headers], Enums.MSG_DEBUG) @@ -301,7 +301,7 @@ func _on_request_completed_dda(result: int, response_code: int, func _on_request_completed_bn(result: int, response_code: int, - headers: PoolStringArray, body: PoolByteArray) -> void: + headers: PackedStringArray, body: PackedByteArray) -> void: Status.post(tr("msg_http_request_info") % [result, response_code, headers], Enums.MSG_DEBUG) @@ -314,7 +314,7 @@ func _on_request_completed_bn(result: int, response_code: int, emit_signal("done_fetching_releases") func _on_request_completed_eod(result: int, response_code: int, - headers: PoolStringArray, body: PoolByteArray) -> void: + headers: PackedStringArray, body: PackedByteArray) -> void: Status.post(tr("msg_http_request_info") % [result, response_code, headers], Enums.MSG_DEBUG) @@ -327,7 +327,7 @@ func _on_request_completed_eod(result: int, response_code: int, emit_signal("done_fetching_releases") func _on_request_completed_tish(result: int, response_code: int, - headers: PoolStringArray, body: PoolByteArray) -> void: + headers: PackedStringArray, body: PackedByteArray) -> void: Status.post(tr("msg_http_request_info") % [result, response_code, headers], Enums.MSG_DEBUG) @@ -339,9 +339,11 @@ func _on_request_completed_tish(result: int, response_code: int, emit_signal("done_fetching_releases") -func _parse_builds(data: PoolByteArray, write_to: Array, filter: Dictionary) -> void: +func _parse_builds(data: PackedByteArray, write_to: Array, filter: Dictionary) -> void: - var json = JSON.parse(data.get_string_from_utf8()).result + var json_conv := JSON.new() + json_conv.parse(data.get_string_from_utf8()) + var json = json_conv.data # Check if API rate limit is exceeded if "message" in json: diff --git a/scripts/SettingsUI.gd b/scripts/SettingsUI.gd index ea7e3837..889fb1e5 100644 --- a/scripts/SettingsUI.gd +++ b/scripts/SettingsUI.gd @@ -5,7 +5,7 @@ var _langs := ["en", "fr", "ru", "zh", "cs", "es", "pl", "tr", "pt", "ko"] var _themes := [ "Godot_3.res", - "Light.res", + "Light3D.res", "Grey.res", "Solarized_Dark.res", "Solarized_Light.res", @@ -13,9 +13,9 @@ var _themes := [ var _proxy_options := ["off", "on", "download"] -onready var _root = $"/root/Catapult" -onready var _tabs = $"/root/Catapult/Main/Tabs" -onready var _debug_ui = $"/root/Catapult/Main/Tabs/Debug" +@onready var _root = $"/root/Catapult" +@onready var _tabs = $"/root/Catapult/Main/TabBar" +@onready var _debug_ui = $"/root/Catapult/Main/TabBar/Debug" func _ready() -> void: @@ -35,17 +35,17 @@ func _ready() -> void: if theme_idx >= 0: $LauncherTheme/obtnTheme.selected = theme_idx - $ShowGameDesc.pressed = Settings.read("show_game_desc") - $KeepLauncherOpen.pressed = Settings.read("keep_open_after_starting_game") - $PrintTips.pressed = Settings.read("print_tips_of_the_day") - $UpdateToSame.pressed = Settings.read("update_to_same_build_allowed") - $ShortenNames.pressed = Settings.read("shorten_release_names") - $AlwaysShowInstalls.pressed = Settings.read("always_show_installs") - $ShowObsoleteMods.pressed = Settings.read("show_obsolete_mods") - $InstallArchivedMods.pressed = Settings.read("install_archived_mods") - $KeepCache.pressed = Settings.read("keep_cache") - $IgnoreCache.pressed = Settings.read("ignore_cache") - $ShowDebug.pressed = Settings.read("debug_mode") + $ShowGameDesc.button_pressed = Settings.read("show_game_desc") + $KeepLauncherOpen.button_pressed = Settings.read("keep_open_after_starting_game") + $PrintTips.button_pressed = Settings.read("print_tips_of_the_day") + $UpdateToSame.button_pressed = Settings.read("update_to_same_build_allowed") + $ShortenNames.button_pressed = Settings.read("shorten_release_names") + $AlwaysShowInstalls.button_pressed = Settings.read("always_show_installs") + $ShowObsoleteMods.button_pressed = Settings.read("show_obsolete_mods") + $InstallArchivedMods.button_pressed = Settings.read("install_archived_mods") + $KeepCache.button_pressed = Settings.read("keep_cache") + $IgnoreCache.button_pressed = Settings.read("ignore_cache") + $ShowDebug.button_pressed = Settings.read("debug_mode") $NumReleases/sbNumReleases.value = Settings.read("num_releases_to_request") as int $NumPrs/sbNumPRs.value = Settings.read("num_prs_to_request") as int @@ -57,7 +57,7 @@ func _ready() -> void: $ProxySettings/leProxyHost.text = Settings.read("proxy_host") $ProxySettings/sbProxyPort.value = Settings.read("proxy_port") as int - $ScaleOverride/cbScaleOverrideEnable.pressed = Settings.read("ui_scale_override_enabled") + $ScaleOverride/cbScaleOverrideEnable.button_pressed = Settings.read("ui_scale_override_enabled") $ScaleOverride/sbScaleOverride.editable = Settings.read("ui_scale_override_enabled") $ScaleOverride/sbScaleOverride.value = (Settings.read("ui_scale_override") as float) * 100.0 diff --git a/scripts/SoundpackManager.gd b/scripts/SoundpackManager.gd index 6ea6fe0c..802ca320 100644 --- a/scripts/SoundpackManager.gd +++ b/scripts/SoundpackManager.gd @@ -80,17 +80,16 @@ const SOUNDPACKS = [ func parse_sound_dir(sound_dir: String) -> Array: - if not Directory.new().dir_exists(sound_dir): + if not DirAccess.dir_exists_absolute(sound_dir): Status.post(tr("msg_no_sound_dir") % sound_dir, Enums.MSG_ERROR) return [] var result = [] for subdir in FS.list_dir(sound_dir): - var f = File.new() - var info = sound_dir.plus_file(subdir).plus_file("soundpack.txt") - if f.file_exists(info): - f.open(info, File.READ) + var info = sound_dir.path_join(subdir).path_join("soundpack.txt") + if FileAccess.file_exists(info): + var f := FileAccess.open(info, FileAccess.READ) var lines = f.get_as_text().split("\n", false) var name = "" var desc = "" @@ -102,7 +101,7 @@ func parse_sound_dir(sound_dir: String) -> Array: var item = {} item["name"] = name item["description"] = desc - item["location"] = sound_dir.plus_file(subdir) + item["location"] = sound_dir.path_join(subdir) result.append(item) f.close() @@ -113,7 +112,7 @@ func get_installed(include_stock = false) -> Array: var packs = [] - if Directory.new().dir_exists(Paths.sound_user): + if DirAccess.dir_exists_absolute(Paths.sound_user): packs.append_array(parse_sound_dir(Paths.sound_user)) for pack in packs: pack["is_stock"] = false @@ -134,7 +133,7 @@ func delete_pack(name: String) -> void: emit_signal("soundpack_deletion_started") Status.post(tr("msg_deleting_sound") % pack["location"]) FS.rm_dir(pack["location"]) - yield(FS, "rm_dir_done") + await FS.rm_dir_done emit_signal("soundpack_deletion_finished") return @@ -146,7 +145,7 @@ func install_pack(soundpack_index: int, from_file = null, reinstall = false, kee var pack = SOUNDPACKS[soundpack_index] var game = Settings.read("game") var sound_dir = Paths.sound_user - var tmp_dir = Paths.tmp_dir.plus_file(pack["name"]) + var tmp_dir = Paths.tmp_dir.path_join(pack["name"]) var archive = "" emit_signal("soundpack_installation_started") @@ -159,27 +158,27 @@ func install_pack(soundpack_index: int, from_file = null, reinstall = false, kee if from_file: archive = from_file else: - archive = Paths.cache_dir.plus_file(pack["filename"]) - if Settings.read("ignore_cache") or not Directory.new().file_exists(archive): + archive = Paths.cache_dir.path_join(pack["filename"]) + if Settings.read("ignore_cache") or not FileAccess.file_exists(archive): Downloader.download_file(pack["url"], Paths.cache_dir, pack["filename"]) - yield(Downloader, "download_finished") - if not Directory.new().file_exists(archive): + await Downloader.download_finished + if not FileAccess.file_exists(archive): Status.post(tr("msg_sound_download_failed"), Enums.MSG_ERROR) emit_signal("soundpack_installation_finished") return if reinstall: FS.rm_dir(sound_dir + "/" + pack["name"]) - yield(FS, "rm_dir_done") + await FS.rm_dir_done FS.extract(archive, tmp_dir) - yield(FS, "extract_done") + await FS.extract_done if not keep_archive and not Settings.read("keep_cache"): - Directory.new().remove(archive) + DirAccess.remove_absolute(archive) FS.move_dir(tmp_dir + "/" + pack["internal_path"], sound_dir + "/" + pack["name"]) - yield(FS, "move_dir_done") + await FS.move_dir_done FS.rm_dir(tmp_dir) - yield(FS, "rm_dir_done") + await FS.rm_dir_done Status.post(tr("msg_sound_installed")) emit_signal("soundpack_installation_finished") diff --git a/scripts/SoundpacksUI.gd b/scripts/SoundpacksUI.gd index 502a48e1..d0f6491f 100644 --- a/scripts/SoundpacksUI.gd +++ b/scripts/SoundpacksUI.gd @@ -1,15 +1,15 @@ extends VBoxContainer -onready var _sound = $"/root/Catapult/Sound" -onready var _installed_list = $HBox/Installed/InstalledList -onready var _available_list = $HBox/Downloadable/AvailableList -onready var _btn_delete = $HBox/Installed/BtnDelete -onready var _btn_install = $HBox/Downloadable/BtnInstall -onready var _dlg_confirm_del = $ConfirmDelete -onready var _dlg_manual_dl = $ConfirmManualDownload -onready var _dlg_file = $InstallFromFileDialog -onready var _cbox_stock = $HBox/Installed/ShowStock +@onready var _sound = $"/root/Catapult/Sound" +@onready var _installed_list = $HBox/Installed/InstalledList +@onready var _available_list = $HBox/Downloadable/AvailableList +@onready var _btn_delete = $HBox/Installed/BtnDelete +@onready var _btn_install = $HBox/Downloadable/BtnInstall +@onready var _dlg_confirm_del = $ConfirmDelete +@onready var _dlg_manual_dl = $ConfirmManualDownload +@onready var _dlg_file = $InstallFromFileDialog +@onready var _cbox_stock = $HBox/Installed/ShowStock var _installed_packs = [] @@ -67,7 +67,7 @@ func _on_Tabs_tab_changed(tab: int) -> void: if tab != 2: return - _cbox_stock.pressed = Settings.read("show_stock_sound") + _cbox_stock.button_pressed = Settings.read("show_stock_sound") _btn_delete.disabled = true _btn_install.disabled = true @@ -98,15 +98,15 @@ func _on_BtnDelete_pressed() -> void: var name = _installed_packs[_installed_list.get_selected_items()[0]]["name"] _dlg_confirm_del.dialog_text = tr("dlg_sound_deletion_text") % name - _dlg_confirm_del.get_cancel().text = tr("btn_cancel") - _dlg_confirm_del.rect_size = Vector2(200, 100) + _dlg_confirm_del.get_cancel_button().text = tr("btn_cancel") + _dlg_confirm_del.size = Vector2(200, 100) _dlg_confirm_del.popup_centered() func _on_ConfirmDelete_confirmed() -> void: _sound.delete_pack(_installed_packs[_installed_list.get_selected_items()[0]]["name"]) - yield(_sound, "soundpack_deletion_finished") + await _sound.soundpack_deletion_finished refresh_installed() if len(_installed_list.get_selected_items()) == 0: @@ -132,15 +132,15 @@ func _on_BtnInstall_pressed() -> void: var pack = _sound.SOUNDPACKS[pack_index] if ("manual_download" in pack) and (pack["manual_download"] == true): - _dlg_manual_dl.rect_size = Vector2(300, 150) - _dlg_manual_dl.get_cancel().text = tr("btn_cancel") + _dlg_manual_dl.size = Vector2(300, 150) + _dlg_manual_dl.get_cancel_button().text = tr("btn_cancel") _dlg_manual_dl.popup_centered() else: if _is_pack_installed(pack["name"]): _sound.install_pack(pack_index, null, true) else: _sound.install_pack(pack_index) - yield(_sound, "soundpack_installation_finished") + await _sound.soundpack_installation_finished refresh_installed() @@ -164,5 +164,5 @@ func _on_InstallFromFileDialog_file_selected(path: String) -> void: else: _sound.install_pack(index, path, false, true) - yield(_sound, "soundpack_installation_finished") + await _sound.soundpack_installation_finished refresh_installed() diff --git a/scripts/Tabs.gd b/scripts/Tabs.gd index 92b9a166..fc24e7ff 100644 --- a/scripts/Tabs.gd +++ b/scripts/Tabs.gd @@ -5,7 +5,7 @@ extends TabContainer var _manually_disabled = [] -export var disabled: bool = false setget _set_disabled +@export var disabled: bool = false: set = _set_disabled func _set_disabled(value: bool) -> void: @@ -15,17 +15,17 @@ func _set_disabled(value: bool) -> void: # https://github.com/godotengine/godot/issues/52290 continue if not i in _manually_disabled: - .set_tab_disabled(i, value) + super.set_tab_disabled(i, value) disabled = value - -func set_tab_disabled(index: int, value: bool) -> void: - - if (value == true) and (not index in _manually_disabled): - _manually_disabled.append(index) - elif index in _manually_disabled: - _manually_disabled.erase(index) - - if not disabled: - .set_tab_disabled(index, value) +# FIXME!! +#func set_tab_disabled(index: int, value: bool) -> void: + # + #if (value == true) and (not index in _manually_disabled): + #_manually_disabled.append(index) + #elif index in _manually_disabled: + #_manually_disabled.erase(index) + # + #if not disabled: + #super.set_tab_disabled(index, value) diff --git a/scripts/ThreadedFuncExecutor.gd b/scripts/ThreadedFuncExecutor.gd index 493c370a..408d37ff 100644 --- a/scripts/ThreadedFuncExecutor.gd +++ b/scripts/ThreadedFuncExecutor.gd @@ -23,7 +23,7 @@ func execute(instance: Object, method: String, userdata = null, _worker = Thread.new() _result = null var data = [instance, method, userdata] - _worker.start(self, "_wrapper", data, priority) + _worker.start(Callable(self, "_wrapper").bind(data), priority) func collect(): diff --git a/scripts/download_manager.gd b/scripts/download_manager.gd index d864fbc9..3dd21b64 100644 --- a/scripts/download_manager.gd +++ b/scripts/download_manager.gd @@ -13,7 +13,7 @@ var _current_filename := "" var _current_file_path := "" var _download_ongoing := false -onready var _http: HTTPRequest +@onready var _http: HTTPRequest func _enter_tree() -> void: @@ -21,7 +21,7 @@ func _enter_tree() -> void: _http = HTTPRequest.new() _http.use_threads = true self.add_child(_http) - _http.connect("request_completed", self, "_on_HTTPRequest_request_completed") + _http.connect("request_completed", Callable(self, "_on_HTTPRequest_request_completed")) func set_proxy(host: String, port: int) -> void: @@ -38,9 +38,8 @@ func download_file(url: String, target_dir: String, target_filename: String) -> else: set_proxy("", -1) - var d = Directory.new() - if not d.dir_exists(target_dir): - var err = d.make_dir_recursive(target_dir) + if not DirAccess.dir_exists_absolute(target_dir): + var err := DirAccess.make_dir_recursive_absolute(target_dir) if err: Status.post(tr("msg_download_failed") % target_filename, Enums.MSG_ERROR) emit_signal("download_finished") @@ -49,11 +48,11 @@ func download_file(url: String, target_dir: String, target_filename: String) -> Status.post(tr("msg_downloading_file") % target_filename) emit_signal("download_started") _current_filename = target_filename - _current_file_path = target_dir.plus_file(target_filename) + _current_file_path = target_dir.path_join(target_filename) _http.download_file = target_dir + "/" + target_filename _http.request(url) _download_ongoing = true - var last_progress_time = OS.get_system_time_msecs() + var last_progress_time = Time.get_ticks_msec() var last_progress_bytes = 0 while _download_ongoing: @@ -62,18 +61,18 @@ func download_file(url: String, target_dir: String, target_filename: String) -> var total = _http.get_body_size() if downloaded < 1: - yield(get_tree(), "idle_frame") + await get_tree().idle_frame continue - var delta_time = OS.get_system_time_msecs() - last_progress_time + var delta_time = Time.get_ticks_msec() - last_progress_time var delta_bytes = downloaded - last_progress_bytes if (delta_time >= _PROGRESS_AFTER_MSECS) or (delta_bytes >= _PROGRESS_AFTER_BYTES): Status.post(_get_progress_string(downloaded, total, delta_time, delta_bytes)) - last_progress_time = OS.get_system_time_msecs() + last_progress_time = Time.get_ticks_msec() last_progress_bytes = downloaded - yield(get_tree(), "idle_frame") + await get_tree().idle_frame func _get_progress_string(downloaded: int, total: int, @@ -102,12 +101,12 @@ func _get_progress_string(downloaded: int, total: int, func _on_HTTPRequest_request_completed(_result: int, _response_code: int, - _headers: PoolStringArray, _body: PoolByteArray) -> void: + _headers: PackedStringArray, _body: PackedByteArray) -> void: _download_ongoing = false Status.post(tr("msg_http_request_info") % [_result, _response_code, _headers], Enums.MSG_DEBUG) - if Directory.new().file_exists(_current_file_path): + if FileAccess.file_exists(_current_file_path): Status.post(tr("msg_download_finished") % _current_filename) else: Status.post(tr("msg_download_failed") % _current_filename, Enums.MSG_ERROR) diff --git a/scripts/filesystem_helper.gd b/scripts/filesystem_helper.gd index 497df99d..9f4edcfc 100644 --- a/scripts/filesystem_helper.gd +++ b/scripts/filesystem_helper.gd @@ -10,9 +10,9 @@ signal zip_done var _platform: String = "" -var last_extract_result: int = 0 setget , _get_last_extract_result +var last_extract_result: int = 0: get = _get_last_extract_result # Stores the exit code of the last extract operation (0 if successful). -var last_zip_result: int = 0 setget , _get_last_zip_result +var last_zip_result: int = 0: get = _get_last_zip_result # Stores the exit code of the last zip operation (0 if successful). @@ -33,10 +33,9 @@ func _get_last_zip_result() -> int: func list_dir(path: String, recursive := false) -> Array: # Lists the files and subdirectories within a directory. - var d = Directory.new() - d.open(path) + var d := DirAccess.open(path) - var error = d.list_dir_begin(true) + var error = d.list_dir_begin() # TODOConverter3To4 fill missing arguments https://github.com/godotengine/godot/pull/40547 if error: Status.post(tr("msg_list_dir_failed") % [path, error], Enums.MSG_ERROR) return [] @@ -48,9 +47,9 @@ func list_dir(path: String, recursive := false) -> Array: if name: result.append(name) if recursive and d.current_is_dir(): - var subdir = list_dir(path.plus_file(name), true) + var subdir = list_dir(path.path_join(name), true) for child in subdir: - result.append(name.plus_file(child)) + result.append(name.path_join(child)) else: break @@ -63,22 +62,21 @@ func _copy_dir_internal(data: Array) -> void: var dest_dir: String = data[1] var dir = abs_path.get_file() - var d = Directory.new() - var error = d.make_dir_recursive(dest_dir.plus_file(dir)) + var error = DirAccess.make_dir_recursive_absolute(dest_dir.path_join(dir)) if error: - Status.post(tr("msg_cannot_create_target_dir") % [dest_dir.plus_file(dir), error], Enums.MSG_ERROR) + Status.post(tr("msg_cannot_create_target_dir") % [dest_dir.path_join(dir), error], Enums.MSG_ERROR) return for item in list_dir(abs_path): - var path = abs_path.plus_file(item) - if d.file_exists(path): - error = d.copy(path, dest_dir.plus_file(dir).plus_file(item)) + var path = abs_path.path_join(item) + if FileAccess.file_exists(path): + error = DirAccess.copy_absolute(path, dest_dir.path_join(dir).path_join(item)) if error: Status.post(tr("msg_copy_file_failed") % [item, error], Enums.MSG_ERROR) - Status.post(tr("msg_copy_file_failed_details") % [path, dest_dir.plus_file(dir).plus_file(item)]) - elif d.dir_exists(path): - _copy_dir_internal([path, dest_dir.plus_file(dir)]) + Status.post(tr("msg_copy_file_failed_details") % [path, dest_dir.path_join(dir).path_join(item)]) + elif DirAccess.dir_exists_absolute(path): + _copy_dir_internal([path, dest_dir.path_join(dir)]) func copy_dir(abs_path: String, dest_dir: String) -> void: @@ -86,7 +84,7 @@ func copy_dir(abs_path: String, dest_dir: String) -> void: var tfe = ThreadedFuncExecutor.new() tfe.execute(self, "_copy_dir_internal", [abs_path, dest_dir]) - yield(tfe, "func_returned") + await tfe.func_returned tfe.collect() emit_signal("copy_dir_done") @@ -94,20 +92,18 @@ func copy_dir(abs_path: String, dest_dir: String) -> void: func _rm_dir_internal(data: Array) -> void: var abs_path = data[0] - var d = Directory.new() var error - for item in list_dir(abs_path): - var path = abs_path.plus_file(item) - if d.file_exists(path): - error = d.remove(path) + var path = abs_path.path_join(item) + if FileAccess.file_exists(path): + error = DirAccess.remove_absolute(path) if error: Status.post(tr("msg_remove_file_failed") % [item, error], Enums.MSG_ERROR) Status.post(tr("msg_remove_file_failed_details") % path, Enums.MSG_DEBUG) - elif d.dir_exists(path): + elif DirAccess.dir_exists_absolute(path): _rm_dir_internal([path]) - error = d.remove(abs_path) + error = DirAccess.remove_absolute(abs_path) if error: Status.post(tr("msg_rm_dir_failed") % [abs_path, error], Enums.MSG_ERROR) @@ -117,7 +113,7 @@ func rm_dir(abs_path: String) -> void: var tfe = ThreadedFuncExecutor.new() tfe.execute(self, "_rm_dir_internal", [abs_path]) - yield(tfe, "func_returned") + await tfe.func_returned tfe.collect() emit_signal("rm_dir_done") @@ -127,24 +123,23 @@ func _move_dir_internal(data: Array) -> void: var abs_path: String = data[0] var abs_dest: String = data[1] - var d = Directory.new() - var error = d.make_dir_recursive(abs_dest) + var error = DirAccess.make_dir_recursive_absolute(abs_dest) if error: Status.post(tr("msg_create_dir_failed") % [abs_dest, error], Enums.MSG_ERROR) return for item in list_dir(abs_path): - var path = abs_path.plus_file(item) - var dest = abs_dest.plus_file(item) - if d.file_exists(path): - error = d.rename(path, abs_dest.plus_file(item)) + var path = abs_path.path_join(item) + var dest = abs_dest.path_join(item) + if FileAccess.file_exists(path): + error = DirAccess.rename_absolute(path, abs_dest.path_join(item)) if error: Status.post(tr("msg_move_file_failed") % [item, error], Enums.MSG_ERROR) Status.post(tr("msg_move_file_failed_details") % [path, dest]) - elif d.dir_exists(path): - _move_dir_internal([path, abs_dest.plus_file(item)]) + elif DirAccess.dir_exists_absolute(path): + _move_dir_internal([path, abs_dest.path_join(item)]) - error = d.remove(abs_path) + error = DirAccess.remove_absolute(abs_path) if error: Status.post(tr("msg_move_rmdir_failed") % [abs_path, error], Enums.MSG_ERROR) @@ -155,7 +150,7 @@ func move_dir(abs_path: String, abs_dest: String) -> void: var tfe = ThreadedFuncExecutor.new() tfe.execute(self, "_move_dir_internal", [abs_path, abs_dest]) - yield(tfe, "func_returned") + await tfe.func_returned tfe.collect() emit_signal("move_dir_done") @@ -164,7 +159,7 @@ func extract(path: String, dest_dir: String) -> void: # Extracts a .zip or .tar.gz archive using the system utilities on Linux # and bundled unzip.exe from InfoZip on Windows. - var unzip_exe = Paths.utils_dir.plus_file("unzip.exe") + var unzip_exe = Paths.utils_dir.path_join("unzip.exe") var command_linux_zip = { "name": "unzip", @@ -193,15 +188,14 @@ func extract(path: String, dest_dir: String) -> void: emit_signal("extract_done") return - var d = Directory.new() - if not d.dir_exists(dest_dir): - d.make_dir_recursive(dest_dir) + if not DirAccess.dir_exists_absolute(dest_dir): + DirAccess.make_dir_recursive_absolute(dest_dir) Status.post(tr("msg_extracting_file") % path.get_file()) var oew = OSExecWrapper.new() oew.execute(command["name"], command["args"]) - yield(oew, "process_exited") + await oew.process_exited last_extract_result = oew.exit_code if oew.exit_code: Status.post(tr("msg_extract_error") % oew.exit_code, Enums.MSG_ERROR) @@ -220,7 +214,7 @@ func zip(parent: String, dir_to_zip: String, dest_zip: String) -> void: # runs a command like: # cd && zip -r MyWorld.zip MyWorld - var zip_exe = Paths.utils_dir.plus_file("zip.exe") + var zip_exe = Paths.utils_dir.path_join("zip.exe") var command_linux_zip = { "name": "/bin/bash", @@ -241,19 +235,18 @@ func zip(parent: String, dir_to_zip: String, dest_zip: String) -> void: emit_signal("zip_done") return - var d = Directory.new() - if not d.dir_exists(Paths.tmp_dir): - d.make_dir_recursive(Paths.tmp_dir) + if not DirAccess.dir_exists_absolute(Paths.tmp_dir): + DirAccess.make_dir_recursive_absolute(Paths.tmp_dir) Status.post(tr("msg_zipping_file") % dest_zip.get_file()) var oew = OSExecWrapper.new() oew.execute(command["name"], command["args"]) - yield(oew, "process_exited") + await oew.process_exited last_zip_result = oew.exit_code if oew.exit_code: Status.post(tr("msg_zip_error") % oew.exit_code, Enums.MSG_ERROR) Status.post(tr("msg_extract_failed_cmd") % str(command), Enums.MSG_DEBUG) Status.post(tr("msg_extract_fail_output") % oew.output[0], Enums.MSG_DEBUG) emit_signal("zip_done") - \ No newline at end of file + diff --git a/scripts/helpers.gd b/scripts/helpers.gd index 5588d433..bb5bd9dd 100644 --- a/scripts/helpers.gd +++ b/scripts/helpers.gd @@ -8,10 +8,10 @@ func create_info_file(location: String, name: String) -> void: var info = {"name": name} var path = location + "/" + INFO_FILENAME - var f = File.new() - if (f.open(path, File.WRITE) == 0): - f.store_string(JSON.print(info, " ")) - f.close() + var info_file := FileAccess.open(path, FileAccess.WRITE) + if info_file: + info_file.store_string(JSON.stringify(info, " ")) + info_file.close() else: Status.post(tr("msg_cannot_create_install_info") % path, Enums.MSG_ERROR) @@ -26,38 +26,38 @@ func get_all_nodes_within(n: Node) -> Array: return result -func load_json_file(file: String): +func load_json_file(file: String) -> Variant: - var f := File.new() - var err := f.open(file, File.READ) + var f := FileAccess.open(file, FileAccess.READ) - if err: - Status.post(tr("msg_file_read_fail") % [file.get_file(), err], Enums.MSG_ERROR) + if f == null: + Status.post(tr("msg_file_read_fail") % [file.get_file(), FileAccess.get_open_error()], Enums.MSG_ERROR) Status.post(tr("msg_debug_file_path") % file, Enums.MSG_DEBUG) return null - var r := JSON.parse(f.get_as_text()) + var json := JSON.new() + var err := json.parse(f.get_as_text()) + var data = json.get_data() f.close() - if r.error: + if err: Status.post(tr("msg_json_parse_fail") % file.get_file(), Enums.MSG_ERROR) - Status.post(tr("msg_debug_json_result") % [r.error, r.error_string, r.error_line], Enums.MSG_DEBUG) + Status.post(tr("msg_debug_json_result") % [err, json.get_error_message(), json.get_error_line()], Enums.MSG_DEBUG) return null - return r.result + return data func save_to_json_file(data, file: String) -> bool: - var f := File.new() - var err := f.open(file, File.WRITE) + var f := FileAccess.open(file, FileAccess.WRITE) - if err: - Status.post(tr("msg_file_write_fail") % [file.get_file(), err], Enums.MSG_ERROR) + if f == null: + Status.post(tr("msg_file_write_fail") % [file.get_file(), FileAccess.get_open_error()], Enums.MSG_ERROR) Status.post(tr("msg_debug_file_path") % file, Enums.MSG_DEBUG) return false - var text := JSON.print(data, " ") + var text := JSON.stringify(data, " ") f.store_string(text) f.close() diff --git a/scripts/path_helper.gd b/scripts/path_helper.gd index 3b1e9a66..58cd567c 100644 --- a/scripts/path_helper.gd +++ b/scripts/path_helper.gd @@ -4,28 +4,28 @@ extends Node signal status_message -var own_dir: String setget , _get_own_dir -var installs_summary: Dictionary setget , _get_installs_summary -var cache_dir: String setget , _get_cache_dir -var game_dir: String setget , _get_game_dir -var next_install_dir: String setget , _get_next_install_dir -var userdata: String setget , _get_userdata_dir -var config: String setget , _get_config_dir -var savegames: String setget , _get_savegame_dir -var mods_stock: String setget , _get_mods_dir_default -var mods_user: String setget , _get_mods_dir_user -var sound_stock: String setget , _get_sound_dir_default -var sound_user: String setget , _get_sound_dir_user -var gfx_default: String setget , _get_gfx_dir_default -var gfx_user: String setget , _get_gfx_dir_user -var font_user: String setget , _get_font_dir_user -var templates: String setget , _get_templates_dir -var memorial: String setget , _get_memorial_dir -var graveyard: String setget , _get_graveyard_dir -var mod_repo: String setget , _get_modrepo_dir -var tmp_dir: String setget , _get_tmp_dir -var utils_dir: String setget , _get_utils_dir -var save_backups: String setget , _get_save_backups_dir +var own_dir: String: get = _get_own_dir +var installs_summary: Dictionary: get = _get_installs_summary +var cache_dir: String: get = _get_cache_dir +var game_dir: String: get = _get_game_dir +var next_install_dir: String: get = _get_next_install_dir +var userdata: String: get = _get_userdata_dir +var config: String: get = _get_config_dir +var savegames: String: get = _get_savegame_dir +var mods_stock: String: get = _get_mods_dir_default +var mods_user: String: get = _get_mods_dir_user +var sound_stock: String: get = _get_sound_dir_default +var sound_user: String: get = _get_sound_dir_user +var gfx_default: String: get = _get_gfx_dir_default +var gfx_user: String: get = _get_gfx_dir_user +var font_user: String: get = _get_font_dir_user +var templates: String: get = _get_templates_dir +var memorial: String: get = _get_memorial_dir +var graveyard: String: get = _get_graveyard_dir +var mod_repo: String: get = _get_modrepo_dir +var tmp_dir: String: get = _get_tmp_dir +var utils_dir: String: get = _get_utils_dir +var save_backups: String: get = _get_save_backups_dir var _last_active_install_name := "" var _last_active_install_dir := "" @@ -39,17 +39,16 @@ func _get_own_dir() -> String: func _get_installs_summary() -> Dictionary: var result = {} - var d = Directory.new() for game in ["dda", "bn", "eod", "tish"]: var installs = {} - var base_dir = Paths.own_dir.plus_file(game) + var base_dir = Paths.own_dir.path_join(game) for subdir in FS.list_dir(base_dir): - var info_file = base_dir.plus_file(subdir).plus_file(Helpers.INFO_FILENAME) - if d.file_exists(info_file): + var info_file = base_dir.path_join(subdir).path_join(Helpers.INFO_FILENAME) + if FileAccess.file_exists(info_file): var info = Helpers.load_json_file(info_file) - installs[info["name"]] = base_dir.plus_file(subdir) - if not installs.empty(): + installs[info["name"]] = base_dir.path_join(subdir) + if not installs.is_empty(): result[game] = installs # Ensure that some installation of the game is set as active @@ -64,7 +63,7 @@ func _get_installs_summary() -> Dictionary: func _get_cache_dir() -> String: - return _get_own_dir().plus_file("cache") + return _get_own_dir().path_join("cache") func _get_game_dir() -> String: @@ -81,12 +80,11 @@ func _get_game_dir() -> String: func _find_active_game_dir() -> String: - var d = Directory.new() - var base_dir = _get_own_dir().plus_file(Settings.read("game")) + var base_dir = _get_own_dir().path_join(Settings.read("game")) for subdir in FS.list_dir(base_dir): - var curr_dir = base_dir.plus_file(subdir) - var info_file = curr_dir.plus_file("catapult_install_info.json") - if d.file_exists(info_file): + var curr_dir = base_dir.path_join(subdir) + var info_file = curr_dir.path_join("catapult_install_info.json") + if FileAccess.file_exists(info_file): var info = Helpers.load_json_file(info_file) if ("name" in info) and (info["name"] == Settings.read("active_install_" + Settings.read("game"))): _last_active_install_dir = curr_dir @@ -99,94 +97,93 @@ func _get_next_install_dir() -> String: # Finds a suitable directory name for a new game installation in the # multi-install system. The names follow the pattern "game0, game1, ..." - var base_dir := _get_own_dir().plus_file(Settings.read("game")) + var base_dir := _get_own_dir().path_join(Settings.read("game")) var dir_number := 0 - var d := Directory.new() - while d.dir_exists(base_dir.plus_file("game" + str(dir_number))): + while DirAccess.dir_exists_absolute(base_dir.path_join("game" + str(dir_number))): dir_number += 1 - return base_dir.plus_file("game" + str(dir_number)) + return base_dir.path_join("game" + str(dir_number)) func _get_userdata_dir() -> String: - return _get_own_dir().plus_file(Settings.read("game")).plus_file("userdata") + return _get_own_dir().path_join(Settings.read("game")).path_join("userdata") func _get_config_dir() -> String: - return _get_userdata_dir().plus_file("config") + return _get_userdata_dir().path_join("config") func _get_savegame_dir() -> String: - return _get_userdata_dir().plus_file("save") + return _get_userdata_dir().path_join("save") func _get_mods_dir_default() -> String: - return _get_game_dir().plus_file("data").plus_file("mods") + return _get_game_dir().path_join("data").path_join("mods") func _get_mods_dir_user() -> String: - return _get_userdata_dir().plus_file("mods") + return _get_userdata_dir().path_join("mods") func _get_sound_dir_default() -> String: - return _get_game_dir().plus_file("data").plus_file("sound") + return _get_game_dir().path_join("data").path_join("sound") func _get_sound_dir_user() -> String: - return _get_userdata_dir().plus_file("sound") + return _get_userdata_dir().path_join("sound") func _get_gfx_dir_default() -> String: - return _get_game_dir().plus_file("gfx") + return _get_game_dir().path_join("gfx") func _get_gfx_dir_user() -> String: - return _get_userdata_dir().plus_file("gfx") + return _get_userdata_dir().path_join("gfx") func _get_font_dir_user() -> String: - return _get_userdata_dir().plus_file("font") + return _get_userdata_dir().path_join("font") func _get_templates_dir() -> String: - return _get_userdata_dir().plus_file("templates") + return _get_userdata_dir().path_join("templates") func _get_memorial_dir() -> String: - return _get_userdata_dir().plus_file("memorial") + return _get_userdata_dir().path_join("memorial") func _get_graveyard_dir() -> String: - return _get_userdata_dir().plus_file("graveyard") + return _get_userdata_dir().path_join("graveyard") func _get_modrepo_dir() -> String: - return _get_own_dir().plus_file(Settings.read("game")).plus_file("mod_repo") + return _get_own_dir().path_join(Settings.read("game")).path_join("mod_repo") func _get_tmp_dir() -> String: - return _get_own_dir().plus_file(Settings.read("game")).plus_file("tmp") + return _get_own_dir().path_join(Settings.read("game")).path_join("tmp") func _get_utils_dir() -> String: - return _get_own_dir().plus_file("utils") + return _get_own_dir().path_join("utils") func _get_save_backups_dir() -> String: - return _get_own_dir().plus_file(Settings.read("game")).plus_file("save_backups") + return _get_own_dir().path_join(Settings.read("game")).path_join("save_backups") diff --git a/scripts/scalable_texture.gd b/scripts/scalable_texture.gd index 18ed849f..7a46d2d6 100644 --- a/scripts/scalable_texture.gd +++ b/scripts/scalable_texture.gd @@ -8,7 +8,7 @@ var _base_size: Vector2 func _init() -> void: _base_size = self.get_size() - Geom.connect("scale_changed", self, "_on_ui_scale_changed") + Geom.connect("scale_changed", Callable(self, "_on_ui_scale_changed")) func _on_ui_scale_changed(new_scale: float) -> void: diff --git a/scripts/scalable_theme.gd b/scripts/scalable_theme.gd index f1f0e9aa..8c3011c2 100644 --- a/scripts/scalable_theme.gd +++ b/scripts/scalable_theme.gd @@ -3,22 +3,22 @@ class_name ScalableTheme const _SCALABLE_CONSTANTS := { - # Theme item constants subject to scaling (by item type). + # Theme item constants that need to be scaled (by item type). # Editor types are not included. "BoxContainer": [ "separation" ], "Button": [ - "hseparation" + "h_separation" ], "CheckBox": [ - "check_vadjust", - "hseparation", + "check_v_offset", + "h_separation", ], "CheckButton": [ - "check_vadjust", - "hseparation", + "check_v_offset", + "h_separation", ], "ColorPicker": [ "h_width", @@ -28,11 +28,11 @@ const _SCALABLE_CONSTANTS := { "sv_width", ], "ColorPickerButton": [ - "hseparation", + "h_separation", ], "GridContainer": [ - "hseparation", - "vseparation", + "h_separation", + "v_separation", ], "HBoxContainer": [ "separation", @@ -44,10 +44,10 @@ const _SCALABLE_CONSTANTS := { "separation", ], "ItemList": [ - "hseparation", + "h_separation", "icon_margin", "line_separation", - "vseparation", + "v_separation", ], "Label": [ "line_spacing", @@ -58,38 +58,38 @@ const _SCALABLE_CONSTANTS := { "underline_spacing", ], "MarginContainer": [ - "margin_bottom", - "margin_left", - "margin_right", - "margin_top", + "offset_bottom", + "offset_left", + "offset_right", + "offset_top", ], "MenuButton": [ - "hseparation", + "h_separation", ], "OptionButton": [ "arrow_margin", - "hseparation", + "h_separation", ], "PopupMenu": [ - "hseparation", - "vseparation", + "h_separation", + "v_separation", ], "RichTextLabel": [ "line_separation", "shadow_offset_x", "shadow_offset_y", - "table_hseparation", - "table_vseparation", + "table_h_separation", + "table_v_separation", ], "TabContainer": [ - "hseparation", + "h_separation", "label_valign_bg", "label_valign_fg", "side_margin", "top_margin", ], - "Tabs": [ - "hseparation", + "TabBar": [ + "h_separation", "label_valign_bg", "label_valign_fg", "top_margin", @@ -97,20 +97,17 @@ const _SCALABLE_CONSTANTS := { "TextEdit": [ "line_spacing", ], - "ToolButton": [ - "hseparation", - ], "TooltipLabel": [ "shadow_offset_x", "shadow_offset_y", ], "Tree": [ "button_margin", - "hseparation", + "h_separation", "item_margin", "scroll_border", "scroll_speed", - "vseparation", + "v_separation", ], "VBoxContainer": [ "separation", @@ -121,9 +118,9 @@ const _SCALABLE_CONSTANTS := { "VSplitContainer": [ "separation", ], - "WindowDialog": [ - "close_h_ofs", - "close_v_ofs", + "Window": [ + "close_h_offset", + "close_v_offset", "scaleborder_size", "title_height", ], @@ -134,8 +131,8 @@ const _SCALABLE_FONT_PROPS := [ "size", "outline_size", - "extra_spacing_top", - "extra_spacing_bottom", + "spacing_top", + "spacing_bottom", "extra_spacing_char", "extra_spacing_space", ] @@ -167,10 +164,10 @@ const _SCALABLE_SBOX_PROPS := { "expand_margin_right", "expand_margin_top", "expand_margin_bottom", - "margin_left", - "margin_right", - "margin_top", - "margin_bottom", + "offset_left", + "offset_right", + "offset_top", + "offset_bottom", "region_rect", ], "StyleBoxFlat": [ @@ -222,7 +219,7 @@ func _save_constants() -> Dictionary: var constants := {} - for item_type in get_constant_types(): + for item_type in get_constant_type_list(): if item_type in _SCALABLE_CONSTANTS: constants[item_type] = {} for const_name in get_constant_list(item_type): @@ -238,13 +235,13 @@ func _save_texture_sizes() -> Dictionary: var tex_sizes := {} - for item_type in get_icon_types(): + for item_type in get_icon_type_list(): for icon_name in get_icon_list(item_type): var icon := get_icon(icon_name, item_type) if (icon is ImageTexture) and (not icon in tex_sizes) and (icon.size != Vector2.ZERO): tex_sizes[icon] = icon.size - for item_type in get_stylebox_types(): + for item_type in get_stylebox_type_list(): for sbox_name in get_stylebox_list(item_type): var sbox = get_stylebox(sbox_name, item_type) if sbox is StyleBoxTexture: @@ -261,10 +258,10 @@ func _save_font_properties() -> Dictionary: default_font: {} } - for item_type in get_font_types(): + for item_type in get_font_type_list(): for font_name in get_font_list(item_type): var font := get_font(font_name, item_type) - if (font is DynamicFont) and (not font in font_props): + if (font is FontFile) and (not font in font_props): font_props[font] = {} for font in font_props: @@ -282,7 +279,7 @@ func _save_stylebox_properties() -> Dictionary: var sbox_props := {} - for item_type in get_stylebox_types(): + for item_type in get_stylebox_type_list(): for sbox_name in get_stylebox_list(item_type): var sbox = get_stylebox(sbox_name, item_type) diff --git a/scripts/settings_manager.gd b/scripts/settings_manager.gd index e1bba8be..7e0511e5 100644 --- a/scripts/settings_manager.gd +++ b/scripts/settings_manager.gd @@ -48,9 +48,9 @@ func _exit_tree() -> void: func _load() -> void: - _settings_file = Paths.own_dir.plus_file(_SETTINGS_FILENAME) + _settings_file = Paths.own_dir.path_join(_SETTINGS_FILENAME) - if File.new().file_exists(_settings_file): + if FileAccess.file_exists(_settings_file): _current = _read_from_file(_settings_file) else: @@ -61,17 +61,17 @@ func _load() -> void: func _read_from_file(path: String) -> Dictionary: - var f = File.new() - - if not f.file_exists(path): + if not FileAccess.file_exists(path): Status.post(tr("msg_nonexistent_attempt") % path, Enums.MSG_ERROR) return {} Status.post(tr("msg_loading_settings") % _SETTINGS_FILENAME) - f.open(path, File.READ) + var f := FileAccess.open(path, FileAccess.READ) var s = f.get_as_text() - var result: JSONParseResult = JSON.parse(s) + var test_json_conv = JSON.new() + test_json_conv.parse(s) + var result: JSON = test_json_conv.get_data() if result.error: Status.post(tr("msg_settings_parse_error") % [result.error_line, result.error_string], Enums.MSG_ERROR) @@ -82,9 +82,8 @@ func _read_from_file(path: String) -> Dictionary: func _write_to_file(data: Dictionary, path: String) -> void: - var f = File.new() - var content = JSON.print(data, " ") - f.open(path, File.WRITE) + var content = JSON.stringify(data, " ") + var f := FileAccess.open(path, FileAccess.WRITE) f.store_string(content) f.close() diff --git a/scripts/status.gd b/scripts/status.gd index 3a1e0540..40773135 100644 --- a/scripts/status.gd +++ b/scripts/status.gd @@ -18,7 +18,7 @@ func _ready() -> void: _flush_buffer() break else: - yield(get_tree().create_timer(0.2), "timeout") + await get_tree().create_timer(0.2).timeout func post(msg: String, type: int = Enums.MSG_INFO) -> void: @@ -42,8 +42,8 @@ func post(msg: String, type: int = Enums.MSG_INFO) -> void: func _datetime_with_msecs(utc = false) -> Dictionary: - var datetime = OS.get_datetime(utc) - datetime["millisecond"] = OS.get_system_time_msecs() % 1000 + var datetime = Time.get_datetime_dict_from_system(utc) + datetime["millisecond"] = Time.get_ticks_msec() % 1000 return datetime diff --git a/scripts/totd.gd b/scripts/totd.gd index 377b6848..cd9b7d03 100644 --- a/scripts/totd.gd +++ b/scripts/totd.gd @@ -20,5 +20,5 @@ const _TOTD = [ func get_tip() -> String: - var index = OS.get_system_time_msecs() % len(_TOTD) + var index = Time.get_ticks_usec() % len(_TOTD) return tr(_TOTD[index]) diff --git a/scripts/window_geometry.gd b/scripts/window_geometry.gd index 820f6ab6..434d9ae1 100644 --- a/scripts/window_geometry.gd +++ b/scripts/window_geometry.gd @@ -7,13 +7,13 @@ extends Node signal scale_changed -var scale: float setget _set_scale +var scale: float: set = _set_scale var min_base_size := Vector2( - ProjectSettings.get("display/window/size/width"), - ProjectSettings.get("display/window/size/height")) + ProjectSettings.get("display/window/size/viewport_width"), + ProjectSettings.get("display/window/size/viewport_height")) var base_size := min_base_size -var decor_offset := Vector2.ZERO +var decor_offset := Vector2i.ZERO func _set_scale(new_scale: float) -> void: @@ -25,14 +25,14 @@ func _set_scale(new_scale: float) -> void: func _apply_scale() -> void: - OS.min_window_size = min_base_size * scale - OS.set_window_size(base_size * scale) + get_window().min_size = min_base_size * scale + get_window().set_size(base_size * scale) func calculate_scale_from_dpi() -> float: - var ratio = OS.get_screen_dpi() / 96.0 - return stepify(ratio, 0.125) + var ratio = DisplayServer.screen_get_dpi() / 96.0 + return snapped(ratio, 0.125) func save_window_state() -> void: @@ -40,8 +40,8 @@ func save_window_state() -> void: var state := { "size_x": base_size.x, "size_y": base_size.y, - "position_x": OS.window_position.x, - "position_y": OS.window_position.y, + "position_x": get_window().position.x, + "position_y": get_window().position.y, "decor_offset_x": decor_offset.x, "decor_offset_y": decor_offset.y, } @@ -52,13 +52,13 @@ func recover_window_state() -> void: var state: Dictionary = Settings.read("window_state") - if state.empty(): + if state.is_empty(): OS.call_deferred("center_window") return - base_size = Vector2(state["size_x"] as float, state["size_y"] as float) - var pos := Vector2(state["position_x"] as float, state["position_y"] as float) - decor_offset = Vector2(state["decor_offset_x"] as float, state["decor_offset_y"] as float) + base_size = Vector2i(state["size_x"] as int, state["size_y"] as int) + var pos := Vector2i(state["position_x"] as int, state["position_y"] as int) + decor_offset = Vector2i(state["decor_offset_x"] as int, state["decor_offset_y"] as int) pos += decor_offset OS.set_deferred("window_position", pos) @@ -68,14 +68,14 @@ func recover_window_state() -> void: # get added to the window (there is a measurable delay before that happens) # and storing the resulting offset for compensation on the next launch. - while OS.window_size == OS.get_real_window_size(): - yield(get_tree(), "idle_frame") - decor_offset = pos - OS.window_position + while get_window().size == get_window().get_size_with_decorations(): + await get_tree().idle_frame + decor_offset = pos - get_window().position func _on_SceneTree_idle(): - yield(get_tree(), "idle_frame") + await get_tree().idle_frame ProjectSettings.call_deferred("set_setting", "display/window/per_pixel_transparency/allowed", false) OS.set_deferred("window_per_pixel_transparency_enabled", false) OS.set_deferred("window_borderless", false) @@ -96,7 +96,7 @@ func _ready(): func _on_window_resized() -> void: - base_size = OS.window_size / scale + base_size = get_window().size / scale func _exit_tree() -> void: diff --git a/text/cs/backup_manager.csv.import b/text/cs/backup_manager.csv.import index 5ad91f9d..6fbe2a01 100644 --- a/text/cs/backup_manager.csv.import +++ b/text/cs/backup_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d3i6q0fowan7p" [deps] -files=[ "res://text/cs/backup_manager.cs.translation" ] +files=["res://text/cs/backup_manager.cs.translation"] source_file="res://text/cs/backup_manager.csv" -dest_files=[ "res://text/cs/backup_manager.cs.translation" ] +dest_files=["res://text/cs/backup_manager.cs.translation"] [params] diff --git a/text/cs/backups_tab.csv.import b/text/cs/backups_tab.csv.import index 26cb10df..19f36942 100644 --- a/text/cs/backups_tab.csv.import +++ b/text/cs/backups_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dt5jfuln5uvi1" [deps] -files=[ "res://text/cs/backups_tab.cs.translation" ] +files=["res://text/cs/backups_tab.cs.translation"] source_file="res://text/cs/backups_tab.csv" -dest_files=[ "res://text/cs/backups_tab.cs.translation" ] +dest_files=["res://text/cs/backups_tab.cs.translation"] [params] diff --git a/text/cs/changelog_dialog.csv.import b/text/cs/changelog_dialog.csv.import index 7e81384c..d1d871b4 100644 --- a/text/cs/changelog_dialog.csv.import +++ b/text/cs/changelog_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://wsefaf8g2sn5" [deps] -files=[ "res://text/cs/changelog_dialog.cs.translation" ] +files=["res://text/cs/changelog_dialog.cs.translation"] source_file="res://text/cs/changelog_dialog.csv" -dest_files=[ "res://text/cs/changelog_dialog.cs.translation" ] +dest_files=["res://text/cs/changelog_dialog.cs.translation"] [params] diff --git a/text/cs/dialog_buttons.csv.import b/text/cs/dialog_buttons.csv.import index ea5f5435..2063e3a8 100644 --- a/text/cs/dialog_buttons.csv.import +++ b/text/cs/dialog_buttons.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bd0gy6jpj68x4" [deps] -files=[ "res://text/cs/dialog_buttons.cs.translation" ] +files=["res://text/cs/dialog_buttons.cs.translation"] source_file="res://text/cs/dialog_buttons.csv" -dest_files=[ "res://text/cs/dialog_buttons.cs.translation" ] +dest_files=["res://text/cs/dialog_buttons.cs.translation"] [params] diff --git a/text/cs/download_manager.csv.import b/text/cs/download_manager.csv.import index 5e321b77..e8ee57a7 100644 --- a/text/cs/download_manager.csv.import +++ b/text/cs/download_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cfvkhjtoasqlt" [deps] -files=[ "res://text/cs/download_manager.cs.translation" ] +files=["res://text/cs/download_manager.cs.translation"] source_file="res://text/cs/download_manager.csv" -dest_files=[ "res://text/cs/download_manager.cs.translation" ] +dest_files=["res://text/cs/download_manager.cs.translation"] [params] diff --git a/text/cs/easter_egg.csv.import b/text/cs/easter_egg.csv.import index 0869e3f9..2dbe06d4 100644 --- a/text/cs/easter_egg.csv.import +++ b/text/cs/easter_egg.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bvy06pabl65iq" [deps] -files=[ "res://text/cs/easter_egg.cs.translation" ] +files=["res://text/cs/easter_egg.cs.translation"] source_file="res://text/cs/easter_egg.csv" -dest_files=[ "res://text/cs/easter_egg.cs.translation" ] +dest_files=["res://text/cs/easter_egg.cs.translation"] [params] diff --git a/text/cs/filesystem_helper.csv.import b/text/cs/filesystem_helper.csv.import index f7cb5f37..cd714172 100644 --- a/text/cs/filesystem_helper.csv.import +++ b/text/cs/filesystem_helper.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://b5kdil0avpdgc" [deps] -files=[ "res://text/cs/filesystem_helper.cs.translation" ] +files=["res://text/cs/filesystem_helper.cs.translation"] source_file="res://text/cs/filesystem_helper.csv" -dest_files=[ "res://text/cs/filesystem_helper.cs.translation" ] +dest_files=["res://text/cs/filesystem_helper.cs.translation"] [params] diff --git a/text/cs/font_help_dialog.csv.import b/text/cs/font_help_dialog.csv.import index 1dd0d0ee..1f599cdc 100644 --- a/text/cs/font_help_dialog.csv.import +++ b/text/cs/font_help_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://gw4wi1luca67" [deps] -files=[ "res://text/cs/font_help_dialog.cs.translation" ] +files=["res://text/cs/font_help_dialog.cs.translation"] source_file="res://text/cs/font_help_dialog.csv" -dest_files=[ "res://text/cs/font_help_dialog.cs.translation" ] +dest_files=["res://text/cs/font_help_dialog.cs.translation"] [params] diff --git a/text/cs/font_info.csv.import b/text/cs/font_info.csv.import index df5bc0bf..e0c6bdf2 100644 --- a/text/cs/font_info.csv.import +++ b/text/cs/font_info.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c0lo5rk63kf4v" [deps] -files=[ "res://text/cs/font_info.cs.translation" ] +files=["res://text/cs/font_info.cs.translation"] source_file="res://text/cs/font_info.csv" -dest_files=[ "res://text/cs/font_info.cs.translation" ] +dest_files=["res://text/cs/font_info.cs.translation"] [params] diff --git a/text/cs/font_manager.csv.import b/text/cs/font_manager.csv.import index 1cb75389..8adc3cd1 100644 --- a/text/cs/font_manager.csv.import +++ b/text/cs/font_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dohu11w84ho3g" [deps] -files=[ "res://text/cs/font_manager.cs.translation" ] +files=["res://text/cs/font_manager.cs.translation"] source_file="res://text/cs/font_manager.csv" -dest_files=[ "res://text/cs/font_manager.cs.translation" ] +dest_files=["res://text/cs/font_manager.cs.translation"] [params] diff --git a/text/cs/fonts_tab.csv.import b/text/cs/fonts_tab.csv.import index d71f693f..087eb84a 100644 --- a/text/cs/fonts_tab.csv.import +++ b/text/cs/fonts_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cd2covcr1hod0" [deps] -files=[ "res://text/cs/fonts_tab.cs.translation" ] +files=["res://text/cs/fonts_tab.cs.translation"] source_file="res://text/cs/fonts_tab.csv" -dest_files=[ "res://text/cs/fonts_tab.cs.translation" ] +dest_files=["res://text/cs/fonts_tab.cs.translation"] [params] diff --git a/text/cs/game_tab.csv.import b/text/cs/game_tab.csv.import index b1d101ad..89f6abcf 100644 --- a/text/cs/game_tab.csv.import +++ b/text/cs/game_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d1stb2nduw4ud" [deps] -files=[ "res://text/cs/game_tab.cs.translation" ] +files=["res://text/cs/game_tab.cs.translation"] source_file="res://text/cs/game_tab.csv" -dest_files=[ "res://text/cs/game_tab.cs.translation" ] +dest_files=["res://text/cs/game_tab.cs.translation"] [params] diff --git a/text/cs/general.csv.import b/text/cs/general.csv.import index f3d3984a..22720826 100644 --- a/text/cs/general.csv.import +++ b/text/cs/general.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://blhanwk3yj7ba" [deps] -files=[ "res://text/cs/general.cs.translation" ] +files=["res://text/cs/general.cs.translation"] source_file="res://text/cs/general.csv" -dest_files=[ "res://text/cs/general.cs.translation" ] +dest_files=["res://text/cs/general.cs.translation"] [params] diff --git a/text/cs/helpers.csv.import b/text/cs/helpers.csv.import index eaaf1a21..dce3b238 100644 --- a/text/cs/helpers.csv.import +++ b/text/cs/helpers.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://baxl7wg0wmlm1" [deps] -files=[ "res://text/cs/helpers.cs.translation" ] +files=["res://text/cs/helpers.cs.translation"] source_file="res://text/cs/helpers.csv" -dest_files=[ "res://text/cs/helpers.cs.translation" ] +dest_files=["res://text/cs/helpers.cs.translation"] [params] diff --git a/text/cs/install_probe.csv.import b/text/cs/install_probe.csv.import index 98279bf8..f406a5d0 100644 --- a/text/cs/install_probe.csv.import +++ b/text/cs/install_probe.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dbfopuu14b3b2" [deps] -files=[ "res://text/cs/install_probe.cs.translation" ] +files=["res://text/cs/install_probe.cs.translation"] source_file="res://text/cs/install_probe.csv" -dest_files=[ "res://text/cs/install_probe.cs.translation" ] +dest_files=["res://text/cs/install_probe.cs.translation"] [params] diff --git a/text/cs/mod_manager.csv.import b/text/cs/mod_manager.csv.import index 76a34e1a..a6c2d2d5 100644 --- a/text/cs/mod_manager.csv.import +++ b/text/cs/mod_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cp6f37vik02io" [deps] -files=[ "res://text/cs/mod_manager.cs.translation" ] +files=["res://text/cs/mod_manager.cs.translation"] source_file="res://text/cs/mod_manager.csv" -dest_files=[ "res://text/cs/mod_manager.cs.translation" ] +dest_files=["res://text/cs/mod_manager.cs.translation"] [params] diff --git a/text/cs/mod_reinstall_dialog.csv.import b/text/cs/mod_reinstall_dialog.csv.import index faf1b2e3..c5ea2c26 100644 --- a/text/cs/mod_reinstall_dialog.csv.import +++ b/text/cs/mod_reinstall_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://6tb5gfbdq14r" [deps] -files=[ "res://text/cs/mod_reinstall_dialog.cs.translation" ] +files=["res://text/cs/mod_reinstall_dialog.cs.translation"] source_file="res://text/cs/mod_reinstall_dialog.csv" -dest_files=[ "res://text/cs/mod_reinstall_dialog.cs.translation" ] +dest_files=["res://text/cs/mod_reinstall_dialog.cs.translation"] [params] diff --git a/text/cs/mods_tab.csv.import b/text/cs/mods_tab.csv.import index 5ac4b463..addb8782 100644 --- a/text/cs/mods_tab.csv.import +++ b/text/cs/mods_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bxxg58ehick0d" [deps] -files=[ "res://text/cs/mods_tab.cs.translation" ] +files=["res://text/cs/mods_tab.cs.translation"] source_file="res://text/cs/mods_tab.csv" -dest_files=[ "res://text/cs/mods_tab.cs.translation" ] +dest_files=["res://text/cs/mods_tab.cs.translation"] [params] diff --git a/text/cs/release_installer.csv.import b/text/cs/release_installer.csv.import index 6e701dd9..be0cb21e 100644 --- a/text/cs/release_installer.csv.import +++ b/text/cs/release_installer.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ba0scjssrhn7i" [deps] -files=[ "res://text/cs/release_installer.cs.translation" ] +files=["res://text/cs/release_installer.cs.translation"] source_file="res://text/cs/release_installer.csv" -dest_files=[ "res://text/cs/release_installer.cs.translation" ] +dest_files=["res://text/cs/release_installer.cs.translation"] [params] diff --git a/text/cs/release_manager.csv.import b/text/cs/release_manager.csv.import index a3321d2c..72949066 100644 --- a/text/cs/release_manager.csv.import +++ b/text/cs/release_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dfd5cqeiu25ob" [deps] -files=[ "res://text/cs/release_manager.cs.translation" ] +files=["res://text/cs/release_manager.cs.translation"] source_file="res://text/cs/release_manager.csv" -dest_files=[ "res://text/cs/release_manager.cs.translation" ] +dest_files=["res://text/cs/release_manager.cs.translation"] [params] diff --git a/text/cs/settings_manager.csv.import b/text/cs/settings_manager.csv.import index 96580a99..271dd387 100644 --- a/text/cs/settings_manager.csv.import +++ b/text/cs/settings_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bb4pjy5tvcnqr" [deps] -files=[ "res://text/cs/settings_manager.cs.translation" ] +files=["res://text/cs/settings_manager.cs.translation"] source_file="res://text/cs/settings_manager.csv" -dest_files=[ "res://text/cs/settings_manager.cs.translation" ] +dest_files=["res://text/cs/settings_manager.cs.translation"] [params] diff --git a/text/cs/settings_tab.csv.import b/text/cs/settings_tab.csv.import index 94425f6f..dbb3fec9 100644 --- a/text/cs/settings_tab.csv.import +++ b/text/cs/settings_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cyrwfiumfpva2" [deps] -files=[ "res://text/cs/settings_tab.cs.translation" ] +files=["res://text/cs/settings_tab.cs.translation"] source_file="res://text/cs/settings_tab.csv" -dest_files=[ "res://text/cs/settings_tab.cs.translation" ] +dest_files=["res://text/cs/settings_tab.cs.translation"] [params] diff --git a/text/cs/soundpack_manager.csv.import b/text/cs/soundpack_manager.csv.import index f38c85cc..bf465e66 100644 --- a/text/cs/soundpack_manager.csv.import +++ b/text/cs/soundpack_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ydhji30xnicm" [deps] -files=[ "res://text/cs/soundpack_manager.cs.translation" ] +files=["res://text/cs/soundpack_manager.cs.translation"] source_file="res://text/cs/soundpack_manager.csv" -dest_files=[ "res://text/cs/soundpack_manager.cs.translation" ] +dest_files=["res://text/cs/soundpack_manager.cs.translation"] [params] diff --git a/text/cs/soundpacks_tab.csv.import b/text/cs/soundpacks_tab.csv.import index 59449844..27516e6a 100644 --- a/text/cs/soundpacks_tab.csv.import +++ b/text/cs/soundpacks_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d322tmi7qoqef" [deps] -files=[ "res://text/cs/soundpacks_tab.cs.translation" ] +files=["res://text/cs/soundpacks_tab.cs.translation"] source_file="res://text/cs/soundpacks_tab.csv" -dest_files=[ "res://text/cs/soundpacks_tab.cs.translation" ] +dest_files=["res://text/cs/soundpacks_tab.cs.translation"] [params] diff --git a/text/cs/tips.csv.import b/text/cs/tips.csv.import index 02cb3874..cee0a03e 100644 --- a/text/cs/tips.csv.import +++ b/text/cs/tips.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bgvkafuh28fsa" [deps] -files=[ "res://text/cs/tips.cs.translation" ] +files=["res://text/cs/tips.cs.translation"] source_file="res://text/cs/tips.csv" -dest_files=[ "res://text/cs/tips.cs.translation" ] +dest_files=["res://text/cs/tips.cs.translation"] [params] diff --git a/text/en/backup_manager.csv.import b/text/en/backup_manager.csv.import index db8b3204..f8fb0677 100644 --- a/text/en/backup_manager.csv.import +++ b/text/en/backup_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://eg7b24gndfdn" [deps] -files=[ "res://text/en/backup_manager.en.translation" ] +files=["res://text/en/backup_manager.en.translation"] source_file="res://text/en/backup_manager.csv" -dest_files=[ "res://text/en/backup_manager.en.translation" ] +dest_files=["res://text/en/backup_manager.en.translation"] [params] diff --git a/text/en/backups_tab.csv.import b/text/en/backups_tab.csv.import index a7684293..027787a9 100644 --- a/text/en/backups_tab.csv.import +++ b/text/en/backups_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d0qd55axgufik" [deps] -files=[ "res://text/en/backups_tab.en.translation" ] +files=["res://text/en/backups_tab.en.translation"] source_file="res://text/en/backups_tab.csv" -dest_files=[ "res://text/en/backups_tab.en.translation" ] +dest_files=["res://text/en/backups_tab.en.translation"] [params] diff --git a/text/en/changelog_dialog.csv.import b/text/en/changelog_dialog.csv.import index fa2e1963..5e881a74 100644 --- a/text/en/changelog_dialog.csv.import +++ b/text/en/changelog_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ddok6pkgxfij6" [deps] -files=[ "res://text/en/changelog_dialog.en.translation" ] +files=["res://text/en/changelog_dialog.en.translation"] source_file="res://text/en/changelog_dialog.csv" -dest_files=[ "res://text/en/changelog_dialog.en.translation" ] +dest_files=["res://text/en/changelog_dialog.en.translation"] [params] diff --git a/text/en/dialog_buttons.csv.import b/text/en/dialog_buttons.csv.import index 6c97f1e6..1d0cb0eb 100644 --- a/text/en/dialog_buttons.csv.import +++ b/text/en/dialog_buttons.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c0wkdyvyl0s0v" [deps] -files=[ "res://text/en/dialog_buttons.en.translation" ] +files=["res://text/en/dialog_buttons.en.translation"] source_file="res://text/en/dialog_buttons.csv" -dest_files=[ "res://text/en/dialog_buttons.en.translation" ] +dest_files=["res://text/en/dialog_buttons.en.translation"] [params] diff --git a/text/en/download_manager.csv.import b/text/en/download_manager.csv.import index 478e8d26..f962f5bc 100644 --- a/text/en/download_manager.csv.import +++ b/text/en/download_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bk4gpkap7n6kd" [deps] -files=[ "res://text/en/download_manager.en.translation" ] +files=["res://text/en/download_manager.en.translation"] source_file="res://text/en/download_manager.csv" -dest_files=[ "res://text/en/download_manager.en.translation" ] +dest_files=["res://text/en/download_manager.en.translation"] [params] diff --git a/text/en/easter_egg.csv.import b/text/en/easter_egg.csv.import index db8148ec..c3ad802f 100644 --- a/text/en/easter_egg.csv.import +++ b/text/en/easter_egg.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://gqemk1ohiwme" [deps] -files=[ "res://text/en/easter_egg.en.translation" ] +files=["res://text/en/easter_egg.en.translation"] source_file="res://text/en/easter_egg.csv" -dest_files=[ "res://text/en/easter_egg.en.translation" ] +dest_files=["res://text/en/easter_egg.en.translation"] [params] diff --git a/text/en/filesystem_helper.csv.import b/text/en/filesystem_helper.csv.import index a72108bd..97032d45 100644 --- a/text/en/filesystem_helper.csv.import +++ b/text/en/filesystem_helper.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://do2oormvv2kmd" [deps] -files=[ "res://text/en/filesystem_helper.en.translation" ] +files=["res://text/en/filesystem_helper.en.translation"] source_file="res://text/en/filesystem_helper.csv" -dest_files=[ "res://text/en/filesystem_helper.en.translation" ] +dest_files=["res://text/en/filesystem_helper.en.translation"] [params] diff --git a/text/en/font_help_dialog.csv.import b/text/en/font_help_dialog.csv.import index 6d95e9ee..e56c20be 100644 --- a/text/en/font_help_dialog.csv.import +++ b/text/en/font_help_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bkn52xg1nmmh3" [deps] -files=[ "res://text/en/font_help_dialog.en.translation" ] +files=["res://text/en/font_help_dialog.en.translation"] source_file="res://text/en/font_help_dialog.csv" -dest_files=[ "res://text/en/font_help_dialog.en.translation" ] +dest_files=["res://text/en/font_help_dialog.en.translation"] [params] diff --git a/text/en/font_info.csv.import b/text/en/font_info.csv.import index ff034b78..1ad9e917 100644 --- a/text/en/font_info.csv.import +++ b/text/en/font_info.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dlel2v7ffovex" [deps] -files=[ "res://text/en/font_info.en.translation" ] +files=["res://text/en/font_info.en.translation"] source_file="res://text/en/font_info.csv" -dest_files=[ "res://text/en/font_info.en.translation" ] +dest_files=["res://text/en/font_info.en.translation"] [params] diff --git a/text/en/font_manager.csv.import b/text/en/font_manager.csv.import index 42a0a55a..0db6a65a 100644 --- a/text/en/font_manager.csv.import +++ b/text/en/font_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cfdm8f6c7m7bc" [deps] -files=[ "res://text/en/font_manager.en.translation" ] +files=["res://text/en/font_manager.en.translation"] source_file="res://text/en/font_manager.csv" -dest_files=[ "res://text/en/font_manager.en.translation" ] +dest_files=["res://text/en/font_manager.en.translation"] [params] diff --git a/text/en/fonts_tab.csv.import b/text/en/fonts_tab.csv.import index d393c5d0..ed664263 100644 --- a/text/en/fonts_tab.csv.import +++ b/text/en/fonts_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cxm2lawvlcmq7" [deps] -files=[ "res://text/en/fonts_tab.en.translation" ] +files=["res://text/en/fonts_tab.en.translation"] source_file="res://text/en/fonts_tab.csv" -dest_files=[ "res://text/en/fonts_tab.en.translation" ] +dest_files=["res://text/en/fonts_tab.en.translation"] [params] diff --git a/text/en/game_tab.csv.import b/text/en/game_tab.csv.import index 1720534b..6bfd9eb8 100644 --- a/text/en/game_tab.csv.import +++ b/text/en/game_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cl4nqdwdq5456" [deps] -files=[ "res://text/en/game_tab.en.translation" ] +files=["res://text/en/game_tab.en.translation"] source_file="res://text/en/game_tab.csv" -dest_files=[ "res://text/en/game_tab.en.translation" ] +dest_files=["res://text/en/game_tab.en.translation"] [params] diff --git a/text/en/general.csv.import b/text/en/general.csv.import index e731a3fb..888d1f11 100644 --- a/text/en/general.csv.import +++ b/text/en/general.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://pfg74aa4pds5" [deps] -files=[ "res://text/en/general.en.translation" ] +files=["res://text/en/general.en.translation"] source_file="res://text/en/general.csv" -dest_files=[ "res://text/en/general.en.translation" ] +dest_files=["res://text/en/general.en.translation"] [params] diff --git a/text/en/helpers.csv.import b/text/en/helpers.csv.import index e94b970d..c4e45f2b 100644 --- a/text/en/helpers.csv.import +++ b/text/en/helpers.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ddt31yprajdje" [deps] -files=[ "res://text/en/helpers.en.translation" ] +files=["res://text/en/helpers.en.translation"] source_file="res://text/en/helpers.csv" -dest_files=[ "res://text/en/helpers.en.translation" ] +dest_files=["res://text/en/helpers.en.translation"] [params] diff --git a/text/en/install_probe.csv.import b/text/en/install_probe.csv.import index 293d9e21..04ebd2f5 100644 --- a/text/en/install_probe.csv.import +++ b/text/en/install_probe.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://di63vi7hv4eeh" [deps] -files=[ "res://text/en/install_probe.en.translation" ] +files=["res://text/en/install_probe.en.translation"] source_file="res://text/en/install_probe.csv" -dest_files=[ "res://text/en/install_probe.en.translation" ] +dest_files=["res://text/en/install_probe.en.translation"] [params] diff --git a/text/en/mod_manager.csv.import b/text/en/mod_manager.csv.import index 1f6a5128..36ede14a 100644 --- a/text/en/mod_manager.csv.import +++ b/text/en/mod_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://b0capel8p7ff6" [deps] -files=[ "res://text/en/mod_manager.en.translation" ] +files=["res://text/en/mod_manager.en.translation"] source_file="res://text/en/mod_manager.csv" -dest_files=[ "res://text/en/mod_manager.en.translation" ] +dest_files=["res://text/en/mod_manager.en.translation"] [params] diff --git a/text/en/mod_reinstall_dialog.csv.import b/text/en/mod_reinstall_dialog.csv.import index 466ca032..3e20115f 100644 --- a/text/en/mod_reinstall_dialog.csv.import +++ b/text/en/mod_reinstall_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://co201q3ira15x" [deps] -files=[ "res://text/en/mod_reinstall_dialog.en.translation" ] +files=["res://text/en/mod_reinstall_dialog.en.translation"] source_file="res://text/en/mod_reinstall_dialog.csv" -dest_files=[ "res://text/en/mod_reinstall_dialog.en.translation" ] +dest_files=["res://text/en/mod_reinstall_dialog.en.translation"] [params] diff --git a/text/en/mods_tab.csv.import b/text/en/mods_tab.csv.import index c417e8dc..f673bdeb 100644 --- a/text/en/mods_tab.csv.import +++ b/text/en/mods_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://o8es0w5pjbcm" [deps] -files=[ "res://text/en/mods_tab.en.translation" ] +files=["res://text/en/mods_tab.en.translation"] source_file="res://text/en/mods_tab.csv" -dest_files=[ "res://text/en/mods_tab.en.translation" ] +dest_files=["res://text/en/mods_tab.en.translation"] [params] diff --git a/text/en/release_installer.csv.import b/text/en/release_installer.csv.import index cb7f388e..c5b347e5 100644 --- a/text/en/release_installer.csv.import +++ b/text/en/release_installer.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bnjcsm3jnysqc" [deps] -files=[ "res://text/en/release_installer.en.translation" ] +files=["res://text/en/release_installer.en.translation"] source_file="res://text/en/release_installer.csv" -dest_files=[ "res://text/en/release_installer.en.translation" ] +dest_files=["res://text/en/release_installer.en.translation"] [params] diff --git a/text/en/release_manager.csv.import b/text/en/release_manager.csv.import index c55fe8b1..5055c248 100644 --- a/text/en/release_manager.csv.import +++ b/text/en/release_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bmuo2bx7ev03a" [deps] -files=[ "res://text/en/release_manager.en.translation" ] +files=["res://text/en/release_manager.en.translation"] source_file="res://text/en/release_manager.csv" -dest_files=[ "res://text/en/release_manager.en.translation" ] +dest_files=["res://text/en/release_manager.en.translation"] [params] diff --git a/text/en/settings_manager.csv.import b/text/en/settings_manager.csv.import index ae40171a..1a5a27d7 100644 --- a/text/en/settings_manager.csv.import +++ b/text/en/settings_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://piyjqrqiigxp" [deps] -files=[ "res://text/en/settings_manager.en.translation" ] +files=["res://text/en/settings_manager.en.translation"] source_file="res://text/en/settings_manager.csv" -dest_files=[ "res://text/en/settings_manager.en.translation" ] +dest_files=["res://text/en/settings_manager.en.translation"] [params] diff --git a/text/en/settings_tab.csv.import b/text/en/settings_tab.csv.import index a7dd9aea..fcf7df62 100644 --- a/text/en/settings_tab.csv.import +++ b/text/en/settings_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ym2sgn8wv3yq" [deps] -files=[ "res://text/en/settings_tab.en.translation" ] +files=["res://text/en/settings_tab.en.translation"] source_file="res://text/en/settings_tab.csv" -dest_files=[ "res://text/en/settings_tab.en.translation" ] +dest_files=["res://text/en/settings_tab.en.translation"] [params] diff --git a/text/en/soundpack_manager.csv.import b/text/en/soundpack_manager.csv.import index 485ce925..30479263 100644 --- a/text/en/soundpack_manager.csv.import +++ b/text/en/soundpack_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c0lb5gwrylym7" [deps] -files=[ "res://text/en/soundpack_manager.en.translation" ] +files=["res://text/en/soundpack_manager.en.translation"] source_file="res://text/en/soundpack_manager.csv" -dest_files=[ "res://text/en/soundpack_manager.en.translation" ] +dest_files=["res://text/en/soundpack_manager.en.translation"] [params] diff --git a/text/en/soundpacks_tab.csv.import b/text/en/soundpacks_tab.csv.import index c4fe89a7..3df279ab 100644 --- a/text/en/soundpacks_tab.csv.import +++ b/text/en/soundpacks_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://boqed2j8xsdm6" [deps] -files=[ "res://text/en/soundpacks_tab.en.translation" ] +files=["res://text/en/soundpacks_tab.en.translation"] source_file="res://text/en/soundpacks_tab.csv" -dest_files=[ "res://text/en/soundpacks_tab.en.translation" ] +dest_files=["res://text/en/soundpacks_tab.en.translation"] [params] diff --git a/text/en/tips.csv.import b/text/en/tips.csv.import index 82fa5d74..544f232e 100644 --- a/text/en/tips.csv.import +++ b/text/en/tips.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cro7w5inirhyw" [deps] -files=[ "res://text/en/tips.en.translation" ] +files=["res://text/en/tips.en.translation"] source_file="res://text/en/tips.csv" -dest_files=[ "res://text/en/tips.en.translation" ] +dest_files=["res://text/en/tips.en.translation"] [params] diff --git a/text/es/backup_manager.csv.import b/text/es/backup_manager.csv.import index c102612d..df3c46a0 100644 --- a/text/es/backup_manager.csv.import +++ b/text/es/backup_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://7jfao0p53el1" [deps] -files=[ "res://text/es/backup_manager.es.translation" ] +files=["res://text/es/backup_manager.es.translation"] source_file="res://text/es/backup_manager.csv" -dest_files=[ "res://text/es/backup_manager.es.translation" ] +dest_files=["res://text/es/backup_manager.es.translation"] [params] diff --git a/text/es/backups_tab.csv.import b/text/es/backups_tab.csv.import index 6564882e..627b662f 100644 --- a/text/es/backups_tab.csv.import +++ b/text/es/backups_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bb28yajm6riww" [deps] -files=[ "res://text/es/backups_tab.es.translation" ] +files=["res://text/es/backups_tab.es.translation"] source_file="res://text/es/backups_tab.csv" -dest_files=[ "res://text/es/backups_tab.es.translation" ] +dest_files=["res://text/es/backups_tab.es.translation"] [params] diff --git a/text/es/changelog_dialog.csv.import b/text/es/changelog_dialog.csv.import index 3995353b..8ee09c51 100644 --- a/text/es/changelog_dialog.csv.import +++ b/text/es/changelog_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bd1vcrdyt8hxb" [deps] -files=[ "res://text/es/changelog_dialog.es.translation" ] +files=["res://text/es/changelog_dialog.es.translation"] source_file="res://text/es/changelog_dialog.csv" -dest_files=[ "res://text/es/changelog_dialog.es.translation" ] +dest_files=["res://text/es/changelog_dialog.es.translation"] [params] diff --git a/text/es/dialog_buttons.csv.import b/text/es/dialog_buttons.csv.import index 97b95ae7..957f93cf 100644 --- a/text/es/dialog_buttons.csv.import +++ b/text/es/dialog_buttons.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://q1j5iva1mt57" [deps] -files=[ "res://text/es/dialog_buttons.es.translation" ] +files=["res://text/es/dialog_buttons.es.translation"] source_file="res://text/es/dialog_buttons.csv" -dest_files=[ "res://text/es/dialog_buttons.es.translation" ] +dest_files=["res://text/es/dialog_buttons.es.translation"] [params] diff --git a/text/es/download_manager.csv.import b/text/es/download_manager.csv.import index 54f03192..bb0e850e 100644 --- a/text/es/download_manager.csv.import +++ b/text/es/download_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://8k2p65osypvl" [deps] -files=[ "res://text/es/download_manager.es.translation" ] +files=["res://text/es/download_manager.es.translation"] source_file="res://text/es/download_manager.csv" -dest_files=[ "res://text/es/download_manager.es.translation" ] +dest_files=["res://text/es/download_manager.es.translation"] [params] diff --git a/text/es/easter_egg.csv.import b/text/es/easter_egg.csv.import index df1f9ab2..0a3ecae3 100644 --- a/text/es/easter_egg.csv.import +++ b/text/es/easter_egg.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://w2wqci1q4jfw" [deps] -files=[ "res://text/es/easter_egg.es.translation" ] +files=["res://text/es/easter_egg.es.translation"] source_file="res://text/es/easter_egg.csv" -dest_files=[ "res://text/es/easter_egg.es.translation" ] +dest_files=["res://text/es/easter_egg.es.translation"] [params] diff --git a/text/es/filesystem_helper.csv.import b/text/es/filesystem_helper.csv.import index 475ebe52..b7668903 100644 --- a/text/es/filesystem_helper.csv.import +++ b/text/es/filesystem_helper.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://b2d8q2bl3un5y" [deps] -files=[ "res://text/es/filesystem_helper.es.translation" ] +files=["res://text/es/filesystem_helper.es.translation"] source_file="res://text/es/filesystem_helper.csv" -dest_files=[ "res://text/es/filesystem_helper.es.translation" ] +dest_files=["res://text/es/filesystem_helper.es.translation"] [params] diff --git a/text/es/font_help_dialog.csv.import b/text/es/font_help_dialog.csv.import index 6004b0d8..d0e65baf 100644 --- a/text/es/font_help_dialog.csv.import +++ b/text/es/font_help_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bwqj0wg368ntl" [deps] -files=[ "res://text/es/font_help_dialog.es.translation" ] +files=["res://text/es/font_help_dialog.es.translation"] source_file="res://text/es/font_help_dialog.csv" -dest_files=[ "res://text/es/font_help_dialog.es.translation" ] +dest_files=["res://text/es/font_help_dialog.es.translation"] [params] diff --git a/text/es/font_info.csv.import b/text/es/font_info.csv.import index da3c48da..5558ae90 100644 --- a/text/es/font_info.csv.import +++ b/text/es/font_info.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://hbk1qsinthdv" [deps] -files=[ "res://text/es/font_info.es.translation" ] +files=["res://text/es/font_info.es.translation"] source_file="res://text/es/font_info.csv" -dest_files=[ "res://text/es/font_info.es.translation" ] +dest_files=["res://text/es/font_info.es.translation"] [params] diff --git a/text/es/font_manager.csv.import b/text/es/font_manager.csv.import index 8e54e426..192af39f 100644 --- a/text/es/font_manager.csv.import +++ b/text/es/font_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dcenmugcqlcay" [deps] -files=[ "res://text/es/font_manager.es.translation" ] +files=["res://text/es/font_manager.es.translation"] source_file="res://text/es/font_manager.csv" -dest_files=[ "res://text/es/font_manager.es.translation" ] +dest_files=["res://text/es/font_manager.es.translation"] [params] diff --git a/text/es/fonts_tab.csv.import b/text/es/fonts_tab.csv.import index 825ec557..f5e863c3 100644 --- a/text/es/fonts_tab.csv.import +++ b/text/es/fonts_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dhyb0ss1a2atu" [deps] -files=[ "res://text/es/fonts_tab.es.translation" ] +files=["res://text/es/fonts_tab.es.translation"] source_file="res://text/es/fonts_tab.csv" -dest_files=[ "res://text/es/fonts_tab.es.translation" ] +dest_files=["res://text/es/fonts_tab.es.translation"] [params] diff --git a/text/es/game_tab.csv.import b/text/es/game_tab.csv.import index 775a9f4e..c995bda2 100644 --- a/text/es/game_tab.csv.import +++ b/text/es/game_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c3677yjdmi1pj" [deps] -files=[ "res://text/es/game_tab.es.translation" ] +files=["res://text/es/game_tab.es.translation"] source_file="res://text/es/game_tab.csv" -dest_files=[ "res://text/es/game_tab.es.translation" ] +dest_files=["res://text/es/game_tab.es.translation"] [params] diff --git a/text/es/general.csv.import b/text/es/general.csv.import index 7b89e7b2..2ecd110f 100644 --- a/text/es/general.csv.import +++ b/text/es/general.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://fism0dvctrsv" [deps] -files=[ "res://text/es/general.es.translation" ] +files=["res://text/es/general.es.translation"] source_file="res://text/es/general.csv" -dest_files=[ "res://text/es/general.es.translation" ] +dest_files=["res://text/es/general.es.translation"] [params] diff --git a/text/es/helpers.csv.import b/text/es/helpers.csv.import index 702922fb..fe09b312 100644 --- a/text/es/helpers.csv.import +++ b/text/es/helpers.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bpr1hs2n2378c" [deps] -files=[ "res://text/es/helpers.es.translation" ] +files=["res://text/es/helpers.es.translation"] source_file="res://text/es/helpers.csv" -dest_files=[ "res://text/es/helpers.es.translation" ] +dest_files=["res://text/es/helpers.es.translation"] [params] diff --git a/text/es/install_probe.csv.import b/text/es/install_probe.csv.import index 97ffdd4f..30dd14e7 100644 --- a/text/es/install_probe.csv.import +++ b/text/es/install_probe.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cxih0wy55aeg4" [deps] -files=[ "res://text/es/install_probe.es.translation" ] +files=["res://text/es/install_probe.es.translation"] source_file="res://text/es/install_probe.csv" -dest_files=[ "res://text/es/install_probe.es.translation" ] +dest_files=["res://text/es/install_probe.es.translation"] [params] diff --git a/text/es/mod_manager.csv.import b/text/es/mod_manager.csv.import index a4cf16bc..6f7ff93b 100644 --- a/text/es/mod_manager.csv.import +++ b/text/es/mod_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c1u8odexvorx" [deps] -files=[ "res://text/es/mod_manager.es.translation" ] +files=["res://text/es/mod_manager.es.translation"] source_file="res://text/es/mod_manager.csv" -dest_files=[ "res://text/es/mod_manager.es.translation" ] +dest_files=["res://text/es/mod_manager.es.translation"] [params] diff --git a/text/es/mod_reinstall_dialog.csv.import b/text/es/mod_reinstall_dialog.csv.import index 29fea435..7a07ea31 100644 --- a/text/es/mod_reinstall_dialog.csv.import +++ b/text/es/mod_reinstall_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://b50ipxl4e4xkl" [deps] -files=[ "res://text/es/mod_reinstall_dialog.es.translation" ] +files=["res://text/es/mod_reinstall_dialog.es.translation"] source_file="res://text/es/mod_reinstall_dialog.csv" -dest_files=[ "res://text/es/mod_reinstall_dialog.es.translation" ] +dest_files=["res://text/es/mod_reinstall_dialog.es.translation"] [params] diff --git a/text/es/mods_tab.csv.import b/text/es/mods_tab.csv.import index c99f4c2d..cb007255 100644 --- a/text/es/mods_tab.csv.import +++ b/text/es/mods_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://g58tq4nm6l86" [deps] -files=[ "res://text/es/mods_tab.es.translation" ] +files=["res://text/es/mods_tab.es.translation"] source_file="res://text/es/mods_tab.csv" -dest_files=[ "res://text/es/mods_tab.es.translation" ] +dest_files=["res://text/es/mods_tab.es.translation"] [params] diff --git a/text/es/release_installer.csv.import b/text/es/release_installer.csv.import index e2219e4e..da962c41 100644 --- a/text/es/release_installer.csv.import +++ b/text/es/release_installer.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://biev3o0g0uhdf" [deps] -files=[ "res://text/es/release_installer.es.translation" ] +files=["res://text/es/release_installer.es.translation"] source_file="res://text/es/release_installer.csv" -dest_files=[ "res://text/es/release_installer.es.translation" ] +dest_files=["res://text/es/release_installer.es.translation"] [params] diff --git a/text/es/release_manager.csv.import b/text/es/release_manager.csv.import index 7edf8077..c8bcc573 100644 --- a/text/es/release_manager.csv.import +++ b/text/es/release_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bf3iis6u42mmw" [deps] -files=[ "res://text/es/release_manager.es.translation" ] +files=["res://text/es/release_manager.es.translation"] source_file="res://text/es/release_manager.csv" -dest_files=[ "res://text/es/release_manager.es.translation" ] +dest_files=["res://text/es/release_manager.es.translation"] [params] diff --git a/text/es/settings_manager.csv.import b/text/es/settings_manager.csv.import index c5e5e442..95657f9f 100644 --- a/text/es/settings_manager.csv.import +++ b/text/es/settings_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bsesxuxvmk48p" [deps] -files=[ "res://text/es/settings_manager.es.translation" ] +files=["res://text/es/settings_manager.es.translation"] source_file="res://text/es/settings_manager.csv" -dest_files=[ "res://text/es/settings_manager.es.translation" ] +dest_files=["res://text/es/settings_manager.es.translation"] [params] diff --git a/text/es/settings_tab.csv.import b/text/es/settings_tab.csv.import index 7535dc80..9e34b0f5 100644 --- a/text/es/settings_tab.csv.import +++ b/text/es/settings_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c73iork2i8y66" [deps] -files=[ "res://text/es/settings_tab.es.translation" ] +files=["res://text/es/settings_tab.es.translation"] source_file="res://text/es/settings_tab.csv" -dest_files=[ "res://text/es/settings_tab.es.translation" ] +dest_files=["res://text/es/settings_tab.es.translation"] [params] diff --git a/text/es/soundpack_manager.csv.import b/text/es/soundpack_manager.csv.import index 97a025ae..f93c4a4c 100644 --- a/text/es/soundpack_manager.csv.import +++ b/text/es/soundpack_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://nprxt3ltsgb5" [deps] -files=[ "res://text/es/soundpack_manager.es.translation" ] +files=["res://text/es/soundpack_manager.es.translation"] source_file="res://text/es/soundpack_manager.csv" -dest_files=[ "res://text/es/soundpack_manager.es.translation" ] +dest_files=["res://text/es/soundpack_manager.es.translation"] [params] diff --git a/text/es/soundpacks_tab.csv.import b/text/es/soundpacks_tab.csv.import index 4d1195cd..4bcad777 100644 --- a/text/es/soundpacks_tab.csv.import +++ b/text/es/soundpacks_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://de11580d2ctpx" [deps] -files=[ "res://text/es/soundpacks_tab.es.translation" ] +files=["res://text/es/soundpacks_tab.es.translation"] source_file="res://text/es/soundpacks_tab.csv" -dest_files=[ "res://text/es/soundpacks_tab.es.translation" ] +dest_files=["res://text/es/soundpacks_tab.es.translation"] [params] diff --git a/text/es/tips.csv.import b/text/es/tips.csv.import index a221c4d7..43777fa5 100644 --- a/text/es/tips.csv.import +++ b/text/es/tips.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bkaxk63cg2ncv" [deps] -files=[ "res://text/es/tips.es.translation" ] +files=["res://text/es/tips.es.translation"] source_file="res://text/es/tips.csv" -dest_files=[ "res://text/es/tips.es.translation" ] +dest_files=["res://text/es/tips.es.translation"] [params] diff --git a/text/fr/backup_manager.csv.import b/text/fr/backup_manager.csv.import index 83a143e7..7485d659 100644 --- a/text/fr/backup_manager.csv.import +++ b/text/fr/backup_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://unbdhu6f3gyr" [deps] -files=[ "res://text/fr/backup_manager.fr.translation" ] +files=["res://text/fr/backup_manager.fr.translation"] source_file="res://text/fr/backup_manager.csv" -dest_files=[ "res://text/fr/backup_manager.fr.translation" ] +dest_files=["res://text/fr/backup_manager.fr.translation"] [params] diff --git a/text/fr/backups_tab.csv.import b/text/fr/backups_tab.csv.import index ccd9e06d..8b8597b0 100644 --- a/text/fr/backups_tab.csv.import +++ b/text/fr/backups_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bvgbieal7fdic" [deps] -files=[ "res://text/fr/backups_tab.fr.translation" ] +files=["res://text/fr/backups_tab.fr.translation"] source_file="res://text/fr/backups_tab.csv" -dest_files=[ "res://text/fr/backups_tab.fr.translation" ] +dest_files=["res://text/fr/backups_tab.fr.translation"] [params] diff --git a/text/fr/changelog_dialog.csv.import b/text/fr/changelog_dialog.csv.import index 176ae10e..8202f662 100644 --- a/text/fr/changelog_dialog.csv.import +++ b/text/fr/changelog_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dd3bvv12yue0e" [deps] -files=[ "res://text/fr/changelog_dialog.fr.translation" ] +files=["res://text/fr/changelog_dialog.fr.translation"] source_file="res://text/fr/changelog_dialog.csv" -dest_files=[ "res://text/fr/changelog_dialog.fr.translation" ] +dest_files=["res://text/fr/changelog_dialog.fr.translation"] [params] diff --git a/text/fr/dialog_buttons.csv.import b/text/fr/dialog_buttons.csv.import index 2497f7fd..4f759f4b 100644 --- a/text/fr/dialog_buttons.csv.import +++ b/text/fr/dialog_buttons.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dhvliuhb8u2bk" [deps] -files=[ "res://text/fr/dialog_buttons.fr.translation" ] +files=["res://text/fr/dialog_buttons.fr.translation"] source_file="res://text/fr/dialog_buttons.csv" -dest_files=[ "res://text/fr/dialog_buttons.fr.translation" ] +dest_files=["res://text/fr/dialog_buttons.fr.translation"] [params] diff --git a/text/fr/download_manager.csv.import b/text/fr/download_manager.csv.import index 5000a0e3..ebc0460b 100644 --- a/text/fr/download_manager.csv.import +++ b/text/fr/download_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dsgrn6tfbniy1" [deps] -files=[ "res://text/fr/download_manager.fr.translation" ] +files=["res://text/fr/download_manager.fr.translation"] source_file="res://text/fr/download_manager.csv" -dest_files=[ "res://text/fr/download_manager.fr.translation" ] +dest_files=["res://text/fr/download_manager.fr.translation"] [params] diff --git a/text/fr/easter_egg.csv.import b/text/fr/easter_egg.csv.import index e9900690..45232a4d 100644 --- a/text/fr/easter_egg.csv.import +++ b/text/fr/easter_egg.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c7cedmj108abw" [deps] -files=[ "res://text/fr/easter_egg.fr.translation" ] +files=["res://text/fr/easter_egg.fr.translation"] source_file="res://text/fr/easter_egg.csv" -dest_files=[ "res://text/fr/easter_egg.fr.translation" ] +dest_files=["res://text/fr/easter_egg.fr.translation"] [params] diff --git a/text/fr/filesystem_helper.csv.import b/text/fr/filesystem_helper.csv.import index 5efc543e..6bf1b381 100644 --- a/text/fr/filesystem_helper.csv.import +++ b/text/fr/filesystem_helper.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dne4duetkaa6e" [deps] -files=[ "res://text/fr/filesystem_helper.fr.translation" ] +files=["res://text/fr/filesystem_helper.fr.translation"] source_file="res://text/fr/filesystem_helper.csv" -dest_files=[ "res://text/fr/filesystem_helper.fr.translation" ] +dest_files=["res://text/fr/filesystem_helper.fr.translation"] [params] diff --git a/text/fr/font_help_dialog.csv.import b/text/fr/font_help_dialog.csv.import index e741dc09..ca1b7e6d 100644 --- a/text/fr/font_help_dialog.csv.import +++ b/text/fr/font_help_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://b1ma22snj5k1m" [deps] -files=[ "res://text/fr/font_help_dialog.fr.translation" ] +files=["res://text/fr/font_help_dialog.fr.translation"] source_file="res://text/fr/font_help_dialog.csv" -dest_files=[ "res://text/fr/font_help_dialog.fr.translation" ] +dest_files=["res://text/fr/font_help_dialog.fr.translation"] [params] diff --git a/text/fr/font_info.csv.import b/text/fr/font_info.csv.import index 18bb13f8..0f3c03cb 100644 --- a/text/fr/font_info.csv.import +++ b/text/fr/font_info.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bf5kc3ltinjh3" [deps] -files=[ "res://text/fr/font_info.fr.translation" ] +files=["res://text/fr/font_info.fr.translation"] source_file="res://text/fr/font_info.csv" -dest_files=[ "res://text/fr/font_info.fr.translation" ] +dest_files=["res://text/fr/font_info.fr.translation"] [params] diff --git a/text/fr/font_manager.csv.import b/text/fr/font_manager.csv.import index c4078f44..36dec11e 100644 --- a/text/fr/font_manager.csv.import +++ b/text/fr/font_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bx2t8ocqkg2ol" [deps] -files=[ "res://text/fr/font_manager.fr.translation" ] +files=["res://text/fr/font_manager.fr.translation"] source_file="res://text/fr/font_manager.csv" -dest_files=[ "res://text/fr/font_manager.fr.translation" ] +dest_files=["res://text/fr/font_manager.fr.translation"] [params] diff --git a/text/fr/fonts_tab.csv.import b/text/fr/fonts_tab.csv.import index 3bb43b3a..703a59de 100644 --- a/text/fr/fonts_tab.csv.import +++ b/text/fr/fonts_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://6s0x16gjls0o" [deps] -files=[ "res://text/fr/fonts_tab.fr.translation" ] +files=["res://text/fr/fonts_tab.fr.translation"] source_file="res://text/fr/fonts_tab.csv" -dest_files=[ "res://text/fr/fonts_tab.fr.translation" ] +dest_files=["res://text/fr/fonts_tab.fr.translation"] [params] diff --git a/text/fr/game_tab.csv.import b/text/fr/game_tab.csv.import index 4dffed27..b492211d 100644 --- a/text/fr/game_tab.csv.import +++ b/text/fr/game_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ccjb42vpygkrs" [deps] -files=[ "res://text/fr/game_tab.fr.translation" ] +files=["res://text/fr/game_tab.fr.translation"] source_file="res://text/fr/game_tab.csv" -dest_files=[ "res://text/fr/game_tab.fr.translation" ] +dest_files=["res://text/fr/game_tab.fr.translation"] [params] diff --git a/text/fr/general.csv.import b/text/fr/general.csv.import index ee567df7..44562ecb 100644 --- a/text/fr/general.csv.import +++ b/text/fr/general.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cf4x4w7cp6ouw" [deps] -files=[ "res://text/fr/general.fr.translation" ] +files=["res://text/fr/general.fr.translation"] source_file="res://text/fr/general.csv" -dest_files=[ "res://text/fr/general.fr.translation" ] +dest_files=["res://text/fr/general.fr.translation"] [params] diff --git a/text/fr/helpers.csv.import b/text/fr/helpers.csv.import index 5737de50..e929a318 100644 --- a/text/fr/helpers.csv.import +++ b/text/fr/helpers.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bm7qii1xg03wb" [deps] -files=[ "res://text/fr/helpers.fr.translation" ] +files=["res://text/fr/helpers.fr.translation"] source_file="res://text/fr/helpers.csv" -dest_files=[ "res://text/fr/helpers.fr.translation" ] +dest_files=["res://text/fr/helpers.fr.translation"] [params] diff --git a/text/fr/install_probe.csv.import b/text/fr/install_probe.csv.import index 3eff25a0..9fd62059 100644 --- a/text/fr/install_probe.csv.import +++ b/text/fr/install_probe.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bsy5ax4h6cg5a" [deps] -files=[ "res://text/fr/install_probe.fr.translation" ] +files=["res://text/fr/install_probe.fr.translation"] source_file="res://text/fr/install_probe.csv" -dest_files=[ "res://text/fr/install_probe.fr.translation" ] +dest_files=["res://text/fr/install_probe.fr.translation"] [params] diff --git a/text/fr/mod_manager.csv.import b/text/fr/mod_manager.csv.import index 552a76d0..66c48c3b 100644 --- a/text/fr/mod_manager.csv.import +++ b/text/fr/mod_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cbrwq5dcqkfgm" [deps] -files=[ "res://text/fr/mod_manager.fr.translation" ] +files=["res://text/fr/mod_manager.fr.translation"] source_file="res://text/fr/mod_manager.csv" -dest_files=[ "res://text/fr/mod_manager.fr.translation" ] +dest_files=["res://text/fr/mod_manager.fr.translation"] [params] diff --git a/text/fr/mod_reinstall_dialog.csv.import b/text/fr/mod_reinstall_dialog.csv.import index 8f863eed..0c02447b 100644 --- a/text/fr/mod_reinstall_dialog.csv.import +++ b/text/fr/mod_reinstall_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://btd3ejk2vik7d" [deps] -files=[ "res://text/fr/mod_reinstall_dialog.fr.translation" ] +files=["res://text/fr/mod_reinstall_dialog.fr.translation"] source_file="res://text/fr/mod_reinstall_dialog.csv" -dest_files=[ "res://text/fr/mod_reinstall_dialog.fr.translation" ] +dest_files=["res://text/fr/mod_reinstall_dialog.fr.translation"] [params] diff --git a/text/fr/mods_tab.csv.import b/text/fr/mods_tab.csv.import index 5e5e8850..a7fd2dd3 100644 --- a/text/fr/mods_tab.csv.import +++ b/text/fr/mods_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bsyrf1t8pli4e" [deps] -files=[ "res://text/fr/mods_tab.fr.translation" ] +files=["res://text/fr/mods_tab.fr.translation"] source_file="res://text/fr/mods_tab.csv" -dest_files=[ "res://text/fr/mods_tab.fr.translation" ] +dest_files=["res://text/fr/mods_tab.fr.translation"] [params] diff --git a/text/fr/release_installer.csv.import b/text/fr/release_installer.csv.import index d7cf4275..6c35b3e7 100644 --- a/text/fr/release_installer.csv.import +++ b/text/fr/release_installer.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://buokk5rpnwfx8" [deps] -files=[ "res://text/fr/release_installer.fr.translation" ] +files=["res://text/fr/release_installer.fr.translation"] source_file="res://text/fr/release_installer.csv" -dest_files=[ "res://text/fr/release_installer.fr.translation" ] +dest_files=["res://text/fr/release_installer.fr.translation"] [params] diff --git a/text/fr/release_manager.csv.import b/text/fr/release_manager.csv.import index 53908450..17f25efd 100644 --- a/text/fr/release_manager.csv.import +++ b/text/fr/release_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c47jwaots3m5x" [deps] -files=[ "res://text/fr/release_manager.fr.translation" ] +files=["res://text/fr/release_manager.fr.translation"] source_file="res://text/fr/release_manager.csv" -dest_files=[ "res://text/fr/release_manager.fr.translation" ] +dest_files=["res://text/fr/release_manager.fr.translation"] [params] diff --git a/text/fr/settings_manager.csv.import b/text/fr/settings_manager.csv.import index 7fa13efc..9a6078f2 100644 --- a/text/fr/settings_manager.csv.import +++ b/text/fr/settings_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bjxx8ksqqanf2" [deps] -files=[ "res://text/fr/settings_manager.fr.translation" ] +files=["res://text/fr/settings_manager.fr.translation"] source_file="res://text/fr/settings_manager.csv" -dest_files=[ "res://text/fr/settings_manager.fr.translation" ] +dest_files=["res://text/fr/settings_manager.fr.translation"] [params] diff --git a/text/fr/settings_tab.csv.import b/text/fr/settings_tab.csv.import index e1c72302..c49400cf 100644 --- a/text/fr/settings_tab.csv.import +++ b/text/fr/settings_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bwf7hq6y58k2r" [deps] -files=[ "res://text/fr/settings_tab.fr.translation" ] +files=["res://text/fr/settings_tab.fr.translation"] source_file="res://text/fr/settings_tab.csv" -dest_files=[ "res://text/fr/settings_tab.fr.translation" ] +dest_files=["res://text/fr/settings_tab.fr.translation"] [params] diff --git a/text/fr/soundpack_manager.csv.import b/text/fr/soundpack_manager.csv.import index 0634d5a6..63f83e24 100644 --- a/text/fr/soundpack_manager.csv.import +++ b/text/fr/soundpack_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ch00611fbxdmh" [deps] -files=[ "res://text/fr/soundpack_manager.fr.translation" ] +files=["res://text/fr/soundpack_manager.fr.translation"] source_file="res://text/fr/soundpack_manager.csv" -dest_files=[ "res://text/fr/soundpack_manager.fr.translation" ] +dest_files=["res://text/fr/soundpack_manager.fr.translation"] [params] diff --git a/text/fr/soundpacks_tab.csv.import b/text/fr/soundpacks_tab.csv.import index cbe33745..911d1df7 100644 --- a/text/fr/soundpacks_tab.csv.import +++ b/text/fr/soundpacks_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://co6pqxy371qql" [deps] -files=[ "res://text/fr/soundpacks_tab.fr.translation" ] +files=["res://text/fr/soundpacks_tab.fr.translation"] source_file="res://text/fr/soundpacks_tab.csv" -dest_files=[ "res://text/fr/soundpacks_tab.fr.translation" ] +dest_files=["res://text/fr/soundpacks_tab.fr.translation"] [params] diff --git a/text/fr/tips.csv.import b/text/fr/tips.csv.import index 2a1918b6..aa1b1b4e 100644 --- a/text/fr/tips.csv.import +++ b/text/fr/tips.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://5bh675ut6vfl" [deps] -files=[ "res://text/fr/tips.fr.translation" ] +files=["res://text/fr/tips.fr.translation"] source_file="res://text/fr/tips.csv" -dest_files=[ "res://text/fr/tips.fr.translation" ] +dest_files=["res://text/fr/tips.fr.translation"] [params] diff --git a/text/ko/backup_manager.csv.import b/text/ko/backup_manager.csv.import index fb349296..fb0a2557 100644 --- a/text/ko/backup_manager.csv.import +++ b/text/ko/backup_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cdfwtyvo8f3xi" [deps] -files=[ "res://text/ko/backup_manager.ko.translation" ] +files=["res://text/ko/backup_manager.ko.translation"] source_file="res://text/ko/backup_manager.csv" -dest_files=[ "res://text/ko/backup_manager.ko.translation" ] +dest_files=["res://text/ko/backup_manager.ko.translation"] [params] diff --git a/text/ko/backups_tab.csv.import b/text/ko/backups_tab.csv.import index d1957f9e..d8667b9e 100644 --- a/text/ko/backups_tab.csv.import +++ b/text/ko/backups_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ckqm1e78huw4r" [deps] -files=[ "res://text/ko/backups_tab.ko.translation" ] +files=["res://text/ko/backups_tab.ko.translation"] source_file="res://text/ko/backups_tab.csv" -dest_files=[ "res://text/ko/backups_tab.ko.translation" ] +dest_files=["res://text/ko/backups_tab.ko.translation"] [params] diff --git a/text/ko/changelog_dialog.csv.import b/text/ko/changelog_dialog.csv.import index 993881bd..92695633 100644 --- a/text/ko/changelog_dialog.csv.import +++ b/text/ko/changelog_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://gm1xd4ojx7p" [deps] -files=[ "res://text/ko/changelog_dialog.ko.translation" ] +files=["res://text/ko/changelog_dialog.ko.translation"] source_file="res://text/ko/changelog_dialog.csv" -dest_files=[ "res://text/ko/changelog_dialog.ko.translation" ] +dest_files=["res://text/ko/changelog_dialog.ko.translation"] [params] diff --git a/text/ko/dialog_buttons.csv.import b/text/ko/dialog_buttons.csv.import index a82ecee2..c353e528 100644 --- a/text/ko/dialog_buttons.csv.import +++ b/text/ko/dialog_buttons.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://coo7y14t1x1uo" [deps] -files=[ "res://text/ko/dialog_buttons.ko.translation" ] +files=["res://text/ko/dialog_buttons.ko.translation"] source_file="res://text/ko/dialog_buttons.csv" -dest_files=[ "res://text/ko/dialog_buttons.ko.translation" ] +dest_files=["res://text/ko/dialog_buttons.ko.translation"] [params] diff --git a/text/ko/download_manager.csv.import b/text/ko/download_manager.csv.import index 1b03f344..bca0896d 100644 --- a/text/ko/download_manager.csv.import +++ b/text/ko/download_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dqxqc6q75o4ad" [deps] -files=[ "res://text/ko/download_manager.ko.translation" ] +files=["res://text/ko/download_manager.ko.translation"] source_file="res://text/ko/download_manager.csv" -dest_files=[ "res://text/ko/download_manager.ko.translation" ] +dest_files=["res://text/ko/download_manager.ko.translation"] [params] diff --git a/text/ko/easter_egg.csv.import b/text/ko/easter_egg.csv.import index 4a876846..59fbd6e0 100644 --- a/text/ko/easter_egg.csv.import +++ b/text/ko/easter_egg.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c4hibuqjw3xby" [deps] -files=[ "res://text/ko/easter_egg.ko.translation" ] +files=["res://text/ko/easter_egg.ko.translation"] source_file="res://text/ko/easter_egg.csv" -dest_files=[ "res://text/ko/easter_egg.ko.translation" ] +dest_files=["res://text/ko/easter_egg.ko.translation"] [params] diff --git a/text/ko/filesystem_helper.csv.import b/text/ko/filesystem_helper.csv.import index 5622e187..020fd6ae 100644 --- a/text/ko/filesystem_helper.csv.import +++ b/text/ko/filesystem_helper.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cesrsfhl1tep6" [deps] -files=[ "res://text/ko/filesystem_helper.ko.translation" ] +files=["res://text/ko/filesystem_helper.ko.translation"] source_file="res://text/ko/filesystem_helper.csv" -dest_files=[ "res://text/ko/filesystem_helper.ko.translation" ] +dest_files=["res://text/ko/filesystem_helper.ko.translation"] [params] diff --git a/text/ko/font_help_dialog.csv.import b/text/ko/font_help_dialog.csv.import index aca08fe9..74941926 100644 --- a/text/ko/font_help_dialog.csv.import +++ b/text/ko/font_help_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://qf0vhn2oybo4" [deps] -files=[ "res://text/ko/font_help_dialog.ko.translation" ] +files=["res://text/ko/font_help_dialog.ko.translation"] source_file="res://text/ko/font_help_dialog.csv" -dest_files=[ "res://text/ko/font_help_dialog.ko.translation" ] +dest_files=["res://text/ko/font_help_dialog.ko.translation"] [params] diff --git a/text/ko/font_info.csv.import b/text/ko/font_info.csv.import index bb7de56e..77a6bf99 100644 --- a/text/ko/font_info.csv.import +++ b/text/ko/font_info.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://455353n18a25" [deps] -files=[ "res://text/ko/font_info.ko.translation" ] +files=["res://text/ko/font_info.ko.translation"] source_file="res://text/ko/font_info.csv" -dest_files=[ "res://text/ko/font_info.ko.translation" ] +dest_files=["res://text/ko/font_info.ko.translation"] [params] diff --git a/text/ko/font_manager.csv.import b/text/ko/font_manager.csv.import index a0ac8cb8..f28d5cd3 100644 --- a/text/ko/font_manager.csv.import +++ b/text/ko/font_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://435px61ydkfy" [deps] -files=[ "res://text/ko/font_manager.ko.translation" ] +files=["res://text/ko/font_manager.ko.translation"] source_file="res://text/ko/font_manager.csv" -dest_files=[ "res://text/ko/font_manager.ko.translation" ] +dest_files=["res://text/ko/font_manager.ko.translation"] [params] diff --git a/text/ko/fonts_tab.csv.import b/text/ko/fonts_tab.csv.import index ca0a0384..f8f3d444 100644 --- a/text/ko/fonts_tab.csv.import +++ b/text/ko/fonts_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dq6xr4pv3a0tw" [deps] -files=[ "res://text/ko/fonts_tab.ko.translation" ] +files=["res://text/ko/fonts_tab.ko.translation"] source_file="res://text/ko/fonts_tab.csv" -dest_files=[ "res://text/ko/fonts_tab.ko.translation" ] +dest_files=["res://text/ko/fonts_tab.ko.translation"] [params] diff --git a/text/ko/game_tab.csv.import b/text/ko/game_tab.csv.import index 00b0652b..fb986458 100644 --- a/text/ko/game_tab.csv.import +++ b/text/ko/game_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://brayljgf1eipb" [deps] -files=[ "res://text/ko/game_tab.ko.translation" ] +files=["res://text/ko/game_tab.ko.translation"] source_file="res://text/ko/game_tab.csv" -dest_files=[ "res://text/ko/game_tab.ko.translation" ] +dest_files=["res://text/ko/game_tab.ko.translation"] [params] diff --git a/text/ko/general.csv.import b/text/ko/general.csv.import index fbefc041..f03c2256 100644 --- a/text/ko/general.csv.import +++ b/text/ko/general.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cv8fswvdbo8ll" [deps] -files=[ "res://text/ko/general.ko.translation" ] +files=["res://text/ko/general.ko.translation"] source_file="res://text/ko/general.csv" -dest_files=[ "res://text/ko/general.ko.translation" ] +dest_files=["res://text/ko/general.ko.translation"] [params] diff --git a/text/ko/helpers.csv.import b/text/ko/helpers.csv.import index be70ab58..b706a58d 100644 --- a/text/ko/helpers.csv.import +++ b/text/ko/helpers.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://uqljcvm7ghhl" [deps] -files=[ "res://text/ko/helpers.ko.translation" ] +files=["res://text/ko/helpers.ko.translation"] source_file="res://text/ko/helpers.csv" -dest_files=[ "res://text/ko/helpers.ko.translation" ] +dest_files=["res://text/ko/helpers.ko.translation"] [params] diff --git a/text/ko/install_probe.csv.import b/text/ko/install_probe.csv.import index fd5813f6..389d5d64 100644 --- a/text/ko/install_probe.csv.import +++ b/text/ko/install_probe.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://pgxih2r8oaae" [deps] -files=[ "res://text/ko/install_probe.ko.translation" ] +files=["res://text/ko/install_probe.ko.translation"] source_file="res://text/ko/install_probe.csv" -dest_files=[ "res://text/ko/install_probe.ko.translation" ] +dest_files=["res://text/ko/install_probe.ko.translation"] [params] diff --git a/text/ko/mod_manager.csv.import b/text/ko/mod_manager.csv.import index 7e7c789b..a0822338 100644 --- a/text/ko/mod_manager.csv.import +++ b/text/ko/mod_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://v58q0oe8w17g" [deps] -files=[ "res://text/ko/mod_manager.ko.translation" ] +files=["res://text/ko/mod_manager.ko.translation"] source_file="res://text/ko/mod_manager.csv" -dest_files=[ "res://text/ko/mod_manager.ko.translation" ] +dest_files=["res://text/ko/mod_manager.ko.translation"] [params] diff --git a/text/ko/mod_reinstall_dialog.csv.import b/text/ko/mod_reinstall_dialog.csv.import index 76440179..6622d265 100644 --- a/text/ko/mod_reinstall_dialog.csv.import +++ b/text/ko/mod_reinstall_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cfrdebwswdhfy" [deps] -files=[ "res://text/ko/mod_reinstall_dialog.ko.translation" ] +files=["res://text/ko/mod_reinstall_dialog.ko.translation"] source_file="res://text/ko/mod_reinstall_dialog.csv" -dest_files=[ "res://text/ko/mod_reinstall_dialog.ko.translation" ] +dest_files=["res://text/ko/mod_reinstall_dialog.ko.translation"] [params] diff --git a/text/ko/mods_tab.csv.import b/text/ko/mods_tab.csv.import index e4861ed4..4c41456a 100644 --- a/text/ko/mods_tab.csv.import +++ b/text/ko/mods_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d32dum63o4yga" [deps] -files=[ "res://text/ko/mods_tab.ko.translation" ] +files=["res://text/ko/mods_tab.ko.translation"] source_file="res://text/ko/mods_tab.csv" -dest_files=[ "res://text/ko/mods_tab.ko.translation" ] +dest_files=["res://text/ko/mods_tab.ko.translation"] [params] diff --git a/text/ko/release_installer.csv.import b/text/ko/release_installer.csv.import index 16952618..93900cd1 100644 --- a/text/ko/release_installer.csv.import +++ b/text/ko/release_installer.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d1e4bv5dseop" [deps] -files=[ "res://text/ko/release_installer.ko.translation" ] +files=["res://text/ko/release_installer.ko.translation"] source_file="res://text/ko/release_installer.csv" -dest_files=[ "res://text/ko/release_installer.ko.translation" ] +dest_files=["res://text/ko/release_installer.ko.translation"] [params] diff --git a/text/ko/release_manager.csv.import b/text/ko/release_manager.csv.import index 33f13f55..ac740d06 100644 --- a/text/ko/release_manager.csv.import +++ b/text/ko/release_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://b58iu20p8dksw" [deps] -files=[ "res://text/ko/release_manager.ko.translation" ] +files=["res://text/ko/release_manager.ko.translation"] source_file="res://text/ko/release_manager.csv" -dest_files=[ "res://text/ko/release_manager.ko.translation" ] +dest_files=["res://text/ko/release_manager.ko.translation"] [params] diff --git a/text/ko/settings_manager.csv.import b/text/ko/settings_manager.csv.import index 48103ca8..1a704133 100644 --- a/text/ko/settings_manager.csv.import +++ b/text/ko/settings_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://knmrdo41arvh" [deps] -files=[ "res://text/ko/settings_manager.ko.translation" ] +files=["res://text/ko/settings_manager.ko.translation"] source_file="res://text/ko/settings_manager.csv" -dest_files=[ "res://text/ko/settings_manager.ko.translation" ] +dest_files=["res://text/ko/settings_manager.ko.translation"] [params] diff --git a/text/ko/settings_tab.csv.import b/text/ko/settings_tab.csv.import index dc2153f4..d57eb8b1 100644 --- a/text/ko/settings_tab.csv.import +++ b/text/ko/settings_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://da0850xu3k8fc" [deps] -files=[ "res://text/ko/settings_tab.ko.translation" ] +files=["res://text/ko/settings_tab.ko.translation"] source_file="res://text/ko/settings_tab.csv" -dest_files=[ "res://text/ko/settings_tab.ko.translation" ] +dest_files=["res://text/ko/settings_tab.ko.translation"] [params] diff --git a/text/ko/soundpack_manager.csv.import b/text/ko/soundpack_manager.csv.import index 31ef2249..2b633478 100644 --- a/text/ko/soundpack_manager.csv.import +++ b/text/ko/soundpack_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://b08bd7pe7u0ne" [deps] -files=[ "res://text/ko/soundpack_manager.ko.translation" ] +files=["res://text/ko/soundpack_manager.ko.translation"] source_file="res://text/ko/soundpack_manager.csv" -dest_files=[ "res://text/ko/soundpack_manager.ko.translation" ] +dest_files=["res://text/ko/soundpack_manager.ko.translation"] [params] diff --git a/text/ko/soundpacks_tab.csv.import b/text/ko/soundpacks_tab.csv.import index 50a77918..082aa37b 100644 --- a/text/ko/soundpacks_tab.csv.import +++ b/text/ko/soundpacks_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://chf2optv3n52q" [deps] -files=[ "res://text/ko/soundpacks_tab.ko.translation" ] +files=["res://text/ko/soundpacks_tab.ko.translation"] source_file="res://text/ko/soundpacks_tab.csv" -dest_files=[ "res://text/ko/soundpacks_tab.ko.translation" ] +dest_files=["res://text/ko/soundpacks_tab.ko.translation"] [params] diff --git a/text/ko/tips.csv.import b/text/ko/tips.csv.import index 17aabe2c..4a842e46 100644 --- a/text/ko/tips.csv.import +++ b/text/ko/tips.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cmc5s1q212s4b" [deps] -files=[ "res://text/ko/tips.ko.translation" ] +files=["res://text/ko/tips.ko.translation"] source_file="res://text/ko/tips.csv" -dest_files=[ "res://text/ko/tips.ko.translation" ] +dest_files=["res://text/ko/tips.ko.translation"] [params] diff --git a/text/pl/backup_manager.csv.import b/text/pl/backup_manager.csv.import index 4a2a7a64..282faca0 100644 --- a/text/pl/backup_manager.csv.import +++ b/text/pl/backup_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c3ls3pp7oubt3" [deps] -files=[ "res://text/pl/backup_manager.pl.translation" ] +files=["res://text/pl/backup_manager.pl.translation"] source_file="res://text/pl/backup_manager.csv" -dest_files=[ "res://text/pl/backup_manager.pl.translation" ] +dest_files=["res://text/pl/backup_manager.pl.translation"] [params] diff --git a/text/pl/backups_tab.csv.import b/text/pl/backups_tab.csv.import index b066ee93..0a7f7711 100644 --- a/text/pl/backups_tab.csv.import +++ b/text/pl/backups_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://clqtoj1ukt5o7" [deps] -files=[ "res://text/pl/backups_tab.pl.translation" ] +files=["res://text/pl/backups_tab.pl.translation"] source_file="res://text/pl/backups_tab.csv" -dest_files=[ "res://text/pl/backups_tab.pl.translation" ] +dest_files=["res://text/pl/backups_tab.pl.translation"] [params] diff --git a/text/pl/changelog_dialog.csv.import b/text/pl/changelog_dialog.csv.import index d07e9fe7..71a9150a 100644 --- a/text/pl/changelog_dialog.csv.import +++ b/text/pl/changelog_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cmmemjnpjuutv" [deps] -files=[ "res://text/pl/changelog_dialog.pl.translation" ] +files=["res://text/pl/changelog_dialog.pl.translation"] source_file="res://text/pl/changelog_dialog.csv" -dest_files=[ "res://text/pl/changelog_dialog.pl.translation" ] +dest_files=["res://text/pl/changelog_dialog.pl.translation"] [params] diff --git a/text/pl/dialog_buttons.csv.import b/text/pl/dialog_buttons.csv.import index 8020e4d8..4ada6831 100644 --- a/text/pl/dialog_buttons.csv.import +++ b/text/pl/dialog_buttons.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c5h8dheci6inb" [deps] -files=[ "res://text/pl/dialog_buttons.pl.translation" ] +files=["res://text/pl/dialog_buttons.pl.translation"] source_file="res://text/pl/dialog_buttons.csv" -dest_files=[ "res://text/pl/dialog_buttons.pl.translation" ] +dest_files=["res://text/pl/dialog_buttons.pl.translation"] [params] diff --git a/text/pl/download_manager.csv.import b/text/pl/download_manager.csv.import index c5224d4f..983e299b 100644 --- a/text/pl/download_manager.csv.import +++ b/text/pl/download_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ws7q5pj8tj44" [deps] -files=[ "res://text/pl/download_manager.pl.translation" ] +files=["res://text/pl/download_manager.pl.translation"] source_file="res://text/pl/download_manager.csv" -dest_files=[ "res://text/pl/download_manager.pl.translation" ] +dest_files=["res://text/pl/download_manager.pl.translation"] [params] diff --git a/text/pl/easter_egg.csv.import b/text/pl/easter_egg.csv.import index e1420fa2..e746c6db 100644 --- a/text/pl/easter_egg.csv.import +++ b/text/pl/easter_egg.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cmbay1r28dqyw" [deps] -files=[ "res://text/pl/easter_egg.pl.translation" ] +files=["res://text/pl/easter_egg.pl.translation"] source_file="res://text/pl/easter_egg.csv" -dest_files=[ "res://text/pl/easter_egg.pl.translation" ] +dest_files=["res://text/pl/easter_egg.pl.translation"] [params] diff --git a/text/pl/filesystem_helper.csv.import b/text/pl/filesystem_helper.csv.import index 02bd6963..3ec827df 100644 --- a/text/pl/filesystem_helper.csv.import +++ b/text/pl/filesystem_helper.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bwpgwhwpqo5qt" [deps] -files=[ "res://text/pl/filesystem_helper.pl.translation" ] +files=["res://text/pl/filesystem_helper.pl.translation"] source_file="res://text/pl/filesystem_helper.csv" -dest_files=[ "res://text/pl/filesystem_helper.pl.translation" ] +dest_files=["res://text/pl/filesystem_helper.pl.translation"] [params] diff --git a/text/pl/font_help_dialog.csv.import b/text/pl/font_help_dialog.csv.import index 6a654c81..f7bb8370 100644 --- a/text/pl/font_help_dialog.csv.import +++ b/text/pl/font_help_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://oxe86jki4w14" [deps] -files=[ "res://text/pl/font_help_dialog.pl.translation" ] +files=["res://text/pl/font_help_dialog.pl.translation"] source_file="res://text/pl/font_help_dialog.csv" -dest_files=[ "res://text/pl/font_help_dialog.pl.translation" ] +dest_files=["res://text/pl/font_help_dialog.pl.translation"] [params] diff --git a/text/pl/font_info.csv.import b/text/pl/font_info.csv.import index 5d1a31ea..60977919 100644 --- a/text/pl/font_info.csv.import +++ b/text/pl/font_info.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bqegvjej1vtls" [deps] -files=[ "res://text/pl/font_info.pl.translation" ] +files=["res://text/pl/font_info.pl.translation"] source_file="res://text/pl/font_info.csv" -dest_files=[ "res://text/pl/font_info.pl.translation" ] +dest_files=["res://text/pl/font_info.pl.translation"] [params] diff --git a/text/pl/font_manager.csv.import b/text/pl/font_manager.csv.import index 46547a74..030f71b9 100644 --- a/text/pl/font_manager.csv.import +++ b/text/pl/font_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://lhxcwtbb71r1" [deps] -files=[ "res://text/pl/font_manager.pl.translation" ] +files=["res://text/pl/font_manager.pl.translation"] source_file="res://text/pl/font_manager.csv" -dest_files=[ "res://text/pl/font_manager.pl.translation" ] +dest_files=["res://text/pl/font_manager.pl.translation"] [params] diff --git a/text/pl/fonts_tab.csv.import b/text/pl/fonts_tab.csv.import index a3e2dbf3..57242d3b 100644 --- a/text/pl/fonts_tab.csv.import +++ b/text/pl/fonts_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dubmuu4h6541x" [deps] -files=[ "res://text/pl/fonts_tab.pl.translation" ] +files=["res://text/pl/fonts_tab.pl.translation"] source_file="res://text/pl/fonts_tab.csv" -dest_files=[ "res://text/pl/fonts_tab.pl.translation" ] +dest_files=["res://text/pl/fonts_tab.pl.translation"] [params] diff --git a/text/pl/game_tab.csv.import b/text/pl/game_tab.csv.import index 91a73d25..dc963007 100644 --- a/text/pl/game_tab.csv.import +++ b/text/pl/game_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c2xw80dqrnlvi" [deps] -files=[ "res://text/pl/game_tab.pl.translation" ] +files=["res://text/pl/game_tab.pl.translation"] source_file="res://text/pl/game_tab.csv" -dest_files=[ "res://text/pl/game_tab.pl.translation" ] +dest_files=["res://text/pl/game_tab.pl.translation"] [params] diff --git a/text/pl/general.csv.import b/text/pl/general.csv.import index 2ac8dae9..60a280ea 100644 --- a/text/pl/general.csv.import +++ b/text/pl/general.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bvcasbs02f86c" [deps] -files=[ "res://text/pl/general.pl.translation" ] +files=["res://text/pl/general.pl.translation"] source_file="res://text/pl/general.csv" -dest_files=[ "res://text/pl/general.pl.translation" ] +dest_files=["res://text/pl/general.pl.translation"] [params] diff --git a/text/pl/helpers.csv.import b/text/pl/helpers.csv.import index 86fc3539..781b6a40 100644 --- a/text/pl/helpers.csv.import +++ b/text/pl/helpers.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bhcr0s0vhdy0t" [deps] -files=[ "res://text/pl/helpers.pl.translation" ] +files=["res://text/pl/helpers.pl.translation"] source_file="res://text/pl/helpers.csv" -dest_files=[ "res://text/pl/helpers.pl.translation" ] +dest_files=["res://text/pl/helpers.pl.translation"] [params] diff --git a/text/pl/install_probe.csv.import b/text/pl/install_probe.csv.import index ffab6268..e8de2193 100644 --- a/text/pl/install_probe.csv.import +++ b/text/pl/install_probe.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cnvge48i4ls0f" [deps] -files=[ "res://text/pl/install_probe.pl.translation" ] +files=["res://text/pl/install_probe.pl.translation"] source_file="res://text/pl/install_probe.csv" -dest_files=[ "res://text/pl/install_probe.pl.translation" ] +dest_files=["res://text/pl/install_probe.pl.translation"] [params] diff --git a/text/pl/mod_manager.csv.import b/text/pl/mod_manager.csv.import index b9cb6f9d..a04a7d67 100644 --- a/text/pl/mod_manager.csv.import +++ b/text/pl/mod_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://diun4g2j07lll" [deps] -files=[ "res://text/pl/mod_manager.pl.translation" ] +files=["res://text/pl/mod_manager.pl.translation"] source_file="res://text/pl/mod_manager.csv" -dest_files=[ "res://text/pl/mod_manager.pl.translation" ] +dest_files=["res://text/pl/mod_manager.pl.translation"] [params] diff --git a/text/pl/mod_reinstall_dialog.csv.import b/text/pl/mod_reinstall_dialog.csv.import index 3a1f77aa..2bc6c22d 100644 --- a/text/pl/mod_reinstall_dialog.csv.import +++ b/text/pl/mod_reinstall_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://nwisxitwb5rg" [deps] -files=[ "res://text/pl/mod_reinstall_dialog.pl.translation" ] +files=["res://text/pl/mod_reinstall_dialog.pl.translation"] source_file="res://text/pl/mod_reinstall_dialog.csv" -dest_files=[ "res://text/pl/mod_reinstall_dialog.pl.translation" ] +dest_files=["res://text/pl/mod_reinstall_dialog.pl.translation"] [params] diff --git a/text/pl/mods_tab.csv.import b/text/pl/mods_tab.csv.import index 7e2732eb..20816de3 100644 --- a/text/pl/mods_tab.csv.import +++ b/text/pl/mods_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cbj47qs3walma" [deps] -files=[ "res://text/pl/mods_tab.pl.translation" ] +files=["res://text/pl/mods_tab.pl.translation"] source_file="res://text/pl/mods_tab.csv" -dest_files=[ "res://text/pl/mods_tab.pl.translation" ] +dest_files=["res://text/pl/mods_tab.pl.translation"] [params] diff --git a/text/pl/release_installer.csv.import b/text/pl/release_installer.csv.import index 248a91ad..9f84ec2a 100644 --- a/text/pl/release_installer.csv.import +++ b/text/pl/release_installer.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://0ibhlg4laa3v" [deps] -files=[ "res://text/pl/release_installer.pl.translation" ] +files=["res://text/pl/release_installer.pl.translation"] source_file="res://text/pl/release_installer.csv" -dest_files=[ "res://text/pl/release_installer.pl.translation" ] +dest_files=["res://text/pl/release_installer.pl.translation"] [params] diff --git a/text/pl/release_manager.csv.import b/text/pl/release_manager.csv.import index b713d700..ed39d993 100644 --- a/text/pl/release_manager.csv.import +++ b/text/pl/release_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://rlbw0wcy74dr" [deps] -files=[ "res://text/pl/release_manager.pl.translation" ] +files=["res://text/pl/release_manager.pl.translation"] source_file="res://text/pl/release_manager.csv" -dest_files=[ "res://text/pl/release_manager.pl.translation" ] +dest_files=["res://text/pl/release_manager.pl.translation"] [params] diff --git a/text/pl/settings_manager.csv.import b/text/pl/settings_manager.csv.import index b8c08a5f..0740d9d9 100644 --- a/text/pl/settings_manager.csv.import +++ b/text/pl/settings_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cau0fkdjb21tj" [deps] -files=[ "res://text/pl/settings_manager.pl.translation" ] +files=["res://text/pl/settings_manager.pl.translation"] source_file="res://text/pl/settings_manager.csv" -dest_files=[ "res://text/pl/settings_manager.pl.translation" ] +dest_files=["res://text/pl/settings_manager.pl.translation"] [params] diff --git a/text/pl/settings_tab.csv.import b/text/pl/settings_tab.csv.import index 1f69a6af..cfe2016a 100644 --- a/text/pl/settings_tab.csv.import +++ b/text/pl/settings_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://b64tqwd61fen1" [deps] -files=[ "res://text/pl/settings_tab.pl.translation" ] +files=["res://text/pl/settings_tab.pl.translation"] source_file="res://text/pl/settings_tab.csv" -dest_files=[ "res://text/pl/settings_tab.pl.translation" ] +dest_files=["res://text/pl/settings_tab.pl.translation"] [params] diff --git a/text/pl/soundpack_manager.csv.import b/text/pl/soundpack_manager.csv.import index 543a9cfb..80cfb9f9 100644 --- a/text/pl/soundpack_manager.csv.import +++ b/text/pl/soundpack_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://drix4opjvbh2t" [deps] -files=[ "res://text/pl/soundpack_manager.pl.translation" ] +files=["res://text/pl/soundpack_manager.pl.translation"] source_file="res://text/pl/soundpack_manager.csv" -dest_files=[ "res://text/pl/soundpack_manager.pl.translation" ] +dest_files=["res://text/pl/soundpack_manager.pl.translation"] [params] diff --git a/text/pl/soundpacks_tab.csv.import b/text/pl/soundpacks_tab.csv.import index 8558fe31..4bedaa45 100644 --- a/text/pl/soundpacks_tab.csv.import +++ b/text/pl/soundpacks_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cvodm6tx0oo1n" [deps] -files=[ "res://text/pl/soundpacks_tab.pl.translation" ] +files=["res://text/pl/soundpacks_tab.pl.translation"] source_file="res://text/pl/soundpacks_tab.csv" -dest_files=[ "res://text/pl/soundpacks_tab.pl.translation" ] +dest_files=["res://text/pl/soundpacks_tab.pl.translation"] [params] diff --git a/text/pl/tips.csv.import b/text/pl/tips.csv.import index 58b482d7..7be1a431 100644 --- a/text/pl/tips.csv.import +++ b/text/pl/tips.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d2cps771e18og" [deps] -files=[ "res://text/pl/tips.pl.translation" ] +files=["res://text/pl/tips.pl.translation"] source_file="res://text/pl/tips.csv" -dest_files=[ "res://text/pl/tips.pl.translation" ] +dest_files=["res://text/pl/tips.pl.translation"] [params] diff --git a/text/pt/backup_manager.csv.import b/text/pt/backup_manager.csv.import index b9d9b8e9..0bb1b266 100644 --- a/text/pt/backup_manager.csv.import +++ b/text/pt/backup_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bg6x4kntv1ws5" [deps] -files=[ "res://text/pt/backup_manager.pt.translation" ] +files=["res://text/pt/backup_manager.pt.translation"] source_file="res://text/pt/backup_manager.csv" -dest_files=[ "res://text/pt/backup_manager.pt.translation" ] +dest_files=["res://text/pt/backup_manager.pt.translation"] [params] diff --git a/text/pt/backups_tab.csv.import b/text/pt/backups_tab.csv.import index 08fe2c27..6e5126ce 100644 --- a/text/pt/backups_tab.csv.import +++ b/text/pt/backups_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bia2qmgycgie4" [deps] -files=[ "res://text/pt/backups_tab.pt.translation" ] +files=["res://text/pt/backups_tab.pt.translation"] source_file="res://text/pt/backups_tab.csv" -dest_files=[ "res://text/pt/backups_tab.pt.translation" ] +dest_files=["res://text/pt/backups_tab.pt.translation"] [params] diff --git a/text/pt/changelog_dialog.csv.import b/text/pt/changelog_dialog.csv.import index 0aa70040..d0a3d932 100644 --- a/text/pt/changelog_dialog.csv.import +++ b/text/pt/changelog_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dvnvc3shhjv20" [deps] -files=[ "res://text/pt/changelog_dialog.pt.translation" ] +files=["res://text/pt/changelog_dialog.pt.translation"] source_file="res://text/pt/changelog_dialog.csv" -dest_files=[ "res://text/pt/changelog_dialog.pt.translation" ] +dest_files=["res://text/pt/changelog_dialog.pt.translation"] [params] diff --git a/text/pt/dialog_buttons.csv.import b/text/pt/dialog_buttons.csv.import index 01dab564..cecbd923 100644 --- a/text/pt/dialog_buttons.csv.import +++ b/text/pt/dialog_buttons.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d1bsy17dhh1ta" [deps] -files=[ "res://text/pt/dialog_buttons.pt.translation" ] +files=["res://text/pt/dialog_buttons.pt.translation"] source_file="res://text/pt/dialog_buttons.csv" -dest_files=[ "res://text/pt/dialog_buttons.pt.translation" ] +dest_files=["res://text/pt/dialog_buttons.pt.translation"] [params] diff --git a/text/pt/download_manager.csv.import b/text/pt/download_manager.csv.import index f11abd4d..c7619c45 100644 --- a/text/pt/download_manager.csv.import +++ b/text/pt/download_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://b72oo3gtemwh2" [deps] -files=[ "res://text/pt/download_manager.pt.translation" ] +files=["res://text/pt/download_manager.pt.translation"] source_file="res://text/pt/download_manager.csv" -dest_files=[ "res://text/pt/download_manager.pt.translation" ] +dest_files=["res://text/pt/download_manager.pt.translation"] [params] diff --git a/text/pt/easter_egg.csv.import b/text/pt/easter_egg.csv.import index 04f1a28f..7e681178 100644 --- a/text/pt/easter_egg.csv.import +++ b/text/pt/easter_egg.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dh3p320j4af1g" [deps] -files=[ "res://text/pt/easter_egg.pt.translation" ] +files=["res://text/pt/easter_egg.pt.translation"] source_file="res://text/pt/easter_egg.csv" -dest_files=[ "res://text/pt/easter_egg.pt.translation" ] +dest_files=["res://text/pt/easter_egg.pt.translation"] [params] diff --git a/text/pt/filesystem_helper.csv.import b/text/pt/filesystem_helper.csv.import index a21ef606..513371e9 100644 --- a/text/pt/filesystem_helper.csv.import +++ b/text/pt/filesystem_helper.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://baxm71fbli6n6" [deps] -files=[ "res://text/pt/filesystem_helper.pt.translation" ] +files=["res://text/pt/filesystem_helper.pt.translation"] source_file="res://text/pt/filesystem_helper.csv" -dest_files=[ "res://text/pt/filesystem_helper.pt.translation" ] +dest_files=["res://text/pt/filesystem_helper.pt.translation"] [params] diff --git a/text/pt/font_help_dialog.csv.import b/text/pt/font_help_dialog.csv.import index b9e7ffb6..335cb9a4 100644 --- a/text/pt/font_help_dialog.csv.import +++ b/text/pt/font_help_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://b0dmkqxtdg6ba" [deps] -files=[ "res://text/pt/font_help_dialog.pt.translation" ] +files=["res://text/pt/font_help_dialog.pt.translation"] source_file="res://text/pt/font_help_dialog.csv" -dest_files=[ "res://text/pt/font_help_dialog.pt.translation" ] +dest_files=["res://text/pt/font_help_dialog.pt.translation"] [params] diff --git a/text/pt/font_info.csv.import b/text/pt/font_info.csv.import index 02d9269c..a1beeb13 100644 --- a/text/pt/font_info.csv.import +++ b/text/pt/font_info.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bfxfvkduwovc6" [deps] -files=[ "res://text/pt/font_info.pt.translation" ] +files=["res://text/pt/font_info.pt.translation"] source_file="res://text/pt/font_info.csv" -dest_files=[ "res://text/pt/font_info.pt.translation" ] +dest_files=["res://text/pt/font_info.pt.translation"] [params] diff --git a/text/pt/font_manager.csv.import b/text/pt/font_manager.csv.import index c00caf0a..05052569 100644 --- a/text/pt/font_manager.csv.import +++ b/text/pt/font_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dhrb36b7hgmuc" [deps] -files=[ "res://text/pt/font_manager.pt.translation" ] +files=["res://text/pt/font_manager.pt.translation"] source_file="res://text/pt/font_manager.csv" -dest_files=[ "res://text/pt/font_manager.pt.translation" ] +dest_files=["res://text/pt/font_manager.pt.translation"] [params] diff --git a/text/pt/fonts_tab.csv.import b/text/pt/fonts_tab.csv.import index 2421229c..148bb7eb 100644 --- a/text/pt/fonts_tab.csv.import +++ b/text/pt/fonts_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bleoo7ar0avi5" [deps] -files=[ "res://text/pt/fonts_tab.pt.translation" ] +files=["res://text/pt/fonts_tab.pt.translation"] source_file="res://text/pt/fonts_tab.csv" -dest_files=[ "res://text/pt/fonts_tab.pt.translation" ] +dest_files=["res://text/pt/fonts_tab.pt.translation"] [params] diff --git a/text/pt/game_tab.csv.import b/text/pt/game_tab.csv.import index 3dc69e02..d3b1e521 100644 --- a/text/pt/game_tab.csv.import +++ b/text/pt/game_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://kluwppddeu58" [deps] -files=[ "res://text/pt/game_tab.pt.translation" ] +files=["res://text/pt/game_tab.pt.translation"] source_file="res://text/pt/game_tab.csv" -dest_files=[ "res://text/pt/game_tab.pt.translation" ] +dest_files=["res://text/pt/game_tab.pt.translation"] [params] diff --git a/text/pt/general.csv.import b/text/pt/general.csv.import index 204f4bc5..78ae46cb 100644 --- a/text/pt/general.csv.import +++ b/text/pt/general.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bmx073uuoljgn" [deps] -files=[ "res://text/pt/general.pt.translation" ] +files=["res://text/pt/general.pt.translation"] source_file="res://text/pt/general.csv" -dest_files=[ "res://text/pt/general.pt.translation" ] +dest_files=["res://text/pt/general.pt.translation"] [params] diff --git a/text/pt/helpers.csv.import b/text/pt/helpers.csv.import index 5fe279c3..0a369181 100644 --- a/text/pt/helpers.csv.import +++ b/text/pt/helpers.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dgygtg2yw5odt" [deps] -files=[ "res://text/pt/helpers.pt.translation" ] +files=["res://text/pt/helpers.pt.translation"] source_file="res://text/pt/helpers.csv" -dest_files=[ "res://text/pt/helpers.pt.translation" ] +dest_files=["res://text/pt/helpers.pt.translation"] [params] diff --git a/text/pt/install_probe.csv.import b/text/pt/install_probe.csv.import index d3501c50..6bbdb1aa 100644 --- a/text/pt/install_probe.csv.import +++ b/text/pt/install_probe.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d0uj1vxrqqyhn" [deps] -files=[ "res://text/pt/install_probe.pt.translation" ] +files=["res://text/pt/install_probe.pt.translation"] source_file="res://text/pt/install_probe.csv" -dest_files=[ "res://text/pt/install_probe.pt.translation" ] +dest_files=["res://text/pt/install_probe.pt.translation"] [params] diff --git a/text/pt/mod_manager.csv.import b/text/pt/mod_manager.csv.import index 1f0941e5..b8ddbc73 100644 --- a/text/pt/mod_manager.csv.import +++ b/text/pt/mod_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bln7ctusm3b1" [deps] -files=[ "res://text/pt/mod_manager.pt.translation" ] +files=["res://text/pt/mod_manager.pt.translation"] source_file="res://text/pt/mod_manager.csv" -dest_files=[ "res://text/pt/mod_manager.pt.translation" ] +dest_files=["res://text/pt/mod_manager.pt.translation"] [params] diff --git a/text/pt/mod_reinstall_dialog.csv.import b/text/pt/mod_reinstall_dialog.csv.import index 2ccab679..14c79ad3 100644 --- a/text/pt/mod_reinstall_dialog.csv.import +++ b/text/pt/mod_reinstall_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bi04a0vt6assd" [deps] -files=[ "res://text/pt/mod_reinstall_dialog.pt.translation" ] +files=["res://text/pt/mod_reinstall_dialog.pt.translation"] source_file="res://text/pt/mod_reinstall_dialog.csv" -dest_files=[ "res://text/pt/mod_reinstall_dialog.pt.translation" ] +dest_files=["res://text/pt/mod_reinstall_dialog.pt.translation"] [params] diff --git a/text/pt/mods_tab.csv.import b/text/pt/mods_tab.csv.import index 62e863ec..1cc41adc 100644 --- a/text/pt/mods_tab.csv.import +++ b/text/pt/mods_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://b8njykmr1fppp" [deps] -files=[ "res://text/pt/mods_tab.pt.translation" ] +files=["res://text/pt/mods_tab.pt.translation"] source_file="res://text/pt/mods_tab.csv" -dest_files=[ "res://text/pt/mods_tab.pt.translation" ] +dest_files=["res://text/pt/mods_tab.pt.translation"] [params] diff --git a/text/pt/release_installer.csv.import b/text/pt/release_installer.csv.import index a0a7afae..58c4e2b4 100644 --- a/text/pt/release_installer.csv.import +++ b/text/pt/release_installer.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://deq2dgcj2srqe" [deps] -files=[ "res://text/pt/release_installer.pt.translation" ] +files=["res://text/pt/release_installer.pt.translation"] source_file="res://text/pt/release_installer.csv" -dest_files=[ "res://text/pt/release_installer.pt.translation" ] +dest_files=["res://text/pt/release_installer.pt.translation"] [params] diff --git a/text/pt/release_manager.csv.import b/text/pt/release_manager.csv.import index 52c05dc7..739207f7 100644 --- a/text/pt/release_manager.csv.import +++ b/text/pt/release_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bioduepm0cgdk" [deps] -files=[ "res://text/pt/release_manager.pt.translation" ] +files=["res://text/pt/release_manager.pt.translation"] source_file="res://text/pt/release_manager.csv" -dest_files=[ "res://text/pt/release_manager.pt.translation" ] +dest_files=["res://text/pt/release_manager.pt.translation"] [params] diff --git a/text/pt/settings_manager.csv.import b/text/pt/settings_manager.csv.import index c39bfc5f..28ef5301 100644 --- a/text/pt/settings_manager.csv.import +++ b/text/pt/settings_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cuud72dh8wy36" [deps] -files=[ "res://text/pt/settings_manager.pt.translation" ] +files=["res://text/pt/settings_manager.pt.translation"] source_file="res://text/pt/settings_manager.csv" -dest_files=[ "res://text/pt/settings_manager.pt.translation" ] +dest_files=["res://text/pt/settings_manager.pt.translation"] [params] diff --git a/text/pt/settings_tab.csv.import b/text/pt/settings_tab.csv.import index e67ddc00..ac4b3325 100644 --- a/text/pt/settings_tab.csv.import +++ b/text/pt/settings_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dv7dw2iu03vs6" [deps] -files=[ "res://text/pt/settings_tab.pt.translation" ] +files=["res://text/pt/settings_tab.pt.translation"] source_file="res://text/pt/settings_tab.csv" -dest_files=[ "res://text/pt/settings_tab.pt.translation" ] +dest_files=["res://text/pt/settings_tab.pt.translation"] [params] diff --git a/text/pt/soundpack_manager.csv.import b/text/pt/soundpack_manager.csv.import index 013aad86..44f92c54 100644 --- a/text/pt/soundpack_manager.csv.import +++ b/text/pt/soundpack_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bskft784bhdkk" [deps] -files=[ "res://text/pt/soundpack_manager.pt.translation" ] +files=["res://text/pt/soundpack_manager.pt.translation"] source_file="res://text/pt/soundpack_manager.csv" -dest_files=[ "res://text/pt/soundpack_manager.pt.translation" ] +dest_files=["res://text/pt/soundpack_manager.pt.translation"] [params] diff --git a/text/pt/soundpacks_tab.csv.import b/text/pt/soundpacks_tab.csv.import index d9f537d1..39f46712 100644 --- a/text/pt/soundpacks_tab.csv.import +++ b/text/pt/soundpacks_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bhs32dmddtwe" [deps] -files=[ "res://text/pt/soundpacks_tab.pt.translation" ] +files=["res://text/pt/soundpacks_tab.pt.translation"] source_file="res://text/pt/soundpacks_tab.csv" -dest_files=[ "res://text/pt/soundpacks_tab.pt.translation" ] +dest_files=["res://text/pt/soundpacks_tab.pt.translation"] [params] diff --git a/text/pt/tips.csv.import b/text/pt/tips.csv.import index 19728610..5c0a426b 100644 --- a/text/pt/tips.csv.import +++ b/text/pt/tips.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://pc7d1eea70mx" [deps] -files=[ "res://text/pt/tips.pt.translation" ] +files=["res://text/pt/tips.pt.translation"] source_file="res://text/pt/tips.csv" -dest_files=[ "res://text/pt/tips.pt.translation" ] +dest_files=["res://text/pt/tips.pt.translation"] [params] diff --git a/text/ru/backup_manager.csv.import b/text/ru/backup_manager.csv.import index 845937b5..fd69d029 100644 --- a/text/ru/backup_manager.csv.import +++ b/text/ru/backup_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://b5828lkhl6m4e" [deps] -files=[ "res://text/ru/backup_manager.ru.translation" ] +files=["res://text/ru/backup_manager.ru.translation"] source_file="res://text/ru/backup_manager.csv" -dest_files=[ "res://text/ru/backup_manager.ru.translation" ] +dest_files=["res://text/ru/backup_manager.ru.translation"] [params] diff --git a/text/ru/backups_tab.csv.import b/text/ru/backups_tab.csv.import index ceee28f7..1fa7fba3 100644 --- a/text/ru/backups_tab.csv.import +++ b/text/ru/backups_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://1rhjlrbwhprd" [deps] -files=[ "res://text/ru/backups_tab.ru.translation" ] +files=["res://text/ru/backups_tab.ru.translation"] source_file="res://text/ru/backups_tab.csv" -dest_files=[ "res://text/ru/backups_tab.ru.translation" ] +dest_files=["res://text/ru/backups_tab.ru.translation"] [params] diff --git a/text/ru/changelog_dialog.csv.import b/text/ru/changelog_dialog.csv.import index d1229b89..73bab87a 100644 --- a/text/ru/changelog_dialog.csv.import +++ b/text/ru/changelog_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cfxmfel6uvls" [deps] -files=[ "res://text/ru/changelog_dialog.ru.translation" ] +files=["res://text/ru/changelog_dialog.ru.translation"] source_file="res://text/ru/changelog_dialog.csv" -dest_files=[ "res://text/ru/changelog_dialog.ru.translation" ] +dest_files=["res://text/ru/changelog_dialog.ru.translation"] [params] diff --git a/text/ru/dialog_buttons.csv.import b/text/ru/dialog_buttons.csv.import index 7f82e1f3..422f5b96 100644 --- a/text/ru/dialog_buttons.csv.import +++ b/text/ru/dialog_buttons.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://chn2qlx8yxiec" [deps] -files=[ "res://text/ru/dialog_buttons.ru.translation" ] +files=["res://text/ru/dialog_buttons.ru.translation"] source_file="res://text/ru/dialog_buttons.csv" -dest_files=[ "res://text/ru/dialog_buttons.ru.translation" ] +dest_files=["res://text/ru/dialog_buttons.ru.translation"] [params] diff --git a/text/ru/download_manager.csv.import b/text/ru/download_manager.csv.import index c301d581..c65aa710 100644 --- a/text/ru/download_manager.csv.import +++ b/text/ru/download_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cengjn5aion26" [deps] -files=[ "res://text/ru/download_manager.ru.translation" ] +files=["res://text/ru/download_manager.ru.translation"] source_file="res://text/ru/download_manager.csv" -dest_files=[ "res://text/ru/download_manager.ru.translation" ] +dest_files=["res://text/ru/download_manager.ru.translation"] [params] diff --git a/text/ru/easter_egg.csv.import b/text/ru/easter_egg.csv.import index 494abfe7..c667047f 100644 --- a/text/ru/easter_egg.csv.import +++ b/text/ru/easter_egg.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bqywx4rru6mec" [deps] -files=[ "res://text/ru/easter_egg.ru.translation" ] +files=["res://text/ru/easter_egg.ru.translation"] source_file="res://text/ru/easter_egg.csv" -dest_files=[ "res://text/ru/easter_egg.ru.translation" ] +dest_files=["res://text/ru/easter_egg.ru.translation"] [params] diff --git a/text/ru/filesystem_helper.csv.import b/text/ru/filesystem_helper.csv.import index 6e8bfeca..b9917b44 100644 --- a/text/ru/filesystem_helper.csv.import +++ b/text/ru/filesystem_helper.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bo5k0ah2aegx7" [deps] -files=[ "res://text/ru/filesystem_helper.ru.translation" ] +files=["res://text/ru/filesystem_helper.ru.translation"] source_file="res://text/ru/filesystem_helper.csv" -dest_files=[ "res://text/ru/filesystem_helper.ru.translation" ] +dest_files=["res://text/ru/filesystem_helper.ru.translation"] [params] diff --git a/text/ru/font_help_dialog.csv.import b/text/ru/font_help_dialog.csv.import index d752ab95..afe10922 100644 --- a/text/ru/font_help_dialog.csv.import +++ b/text/ru/font_help_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://csjxgf4cequ1p" [deps] -files=[ "res://text/ru/font_help_dialog.ru.translation" ] +files=["res://text/ru/font_help_dialog.ru.translation"] source_file="res://text/ru/font_help_dialog.csv" -dest_files=[ "res://text/ru/font_help_dialog.ru.translation" ] +dest_files=["res://text/ru/font_help_dialog.ru.translation"] [params] diff --git a/text/ru/font_info.csv.import b/text/ru/font_info.csv.import index d85a9b9d..bc72d58c 100644 --- a/text/ru/font_info.csv.import +++ b/text/ru/font_info.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://tpmbyvh8t2rk" [deps] -files=[ "res://text/ru/font_info.ru.translation" ] +files=["res://text/ru/font_info.ru.translation"] source_file="res://text/ru/font_info.csv" -dest_files=[ "res://text/ru/font_info.ru.translation" ] +dest_files=["res://text/ru/font_info.ru.translation"] [params] diff --git a/text/ru/font_manager.csv.import b/text/ru/font_manager.csv.import index 952fcb3b..4c5c0065 100644 --- a/text/ru/font_manager.csv.import +++ b/text/ru/font_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ls466el7iko5" [deps] -files=[ "res://text/ru/font_manager.ru.translation" ] +files=["res://text/ru/font_manager.ru.translation"] source_file="res://text/ru/font_manager.csv" -dest_files=[ "res://text/ru/font_manager.ru.translation" ] +dest_files=["res://text/ru/font_manager.ru.translation"] [params] diff --git a/text/ru/fonts_tab.csv.import b/text/ru/fonts_tab.csv.import index 0ce695f8..dc24d38a 100644 --- a/text/ru/fonts_tab.csv.import +++ b/text/ru/fonts_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cg8bxwwddytne" [deps] -files=[ "res://text/ru/fonts_tab.ru.translation" ] +files=["res://text/ru/fonts_tab.ru.translation"] source_file="res://text/ru/fonts_tab.csv" -dest_files=[ "res://text/ru/fonts_tab.ru.translation" ] +dest_files=["res://text/ru/fonts_tab.ru.translation"] [params] diff --git a/text/ru/game_tab.csv.import b/text/ru/game_tab.csv.import index 2e403efa..a0ed649b 100644 --- a/text/ru/game_tab.csv.import +++ b/text/ru/game_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dnblo3ryeqdfk" [deps] -files=[ "res://text/ru/game_tab.ru.translation" ] +files=["res://text/ru/game_tab.ru.translation"] source_file="res://text/ru/game_tab.csv" -dest_files=[ "res://text/ru/game_tab.ru.translation" ] +dest_files=["res://text/ru/game_tab.ru.translation"] [params] diff --git a/text/ru/general.csv.import b/text/ru/general.csv.import index ef688a44..765169b5 100644 --- a/text/ru/general.csv.import +++ b/text/ru/general.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dxqby634imjg8" [deps] -files=[ "res://text/ru/general.ru.translation" ] +files=["res://text/ru/general.ru.translation"] source_file="res://text/ru/general.csv" -dest_files=[ "res://text/ru/general.ru.translation" ] +dest_files=["res://text/ru/general.ru.translation"] [params] diff --git a/text/ru/helpers.csv.import b/text/ru/helpers.csv.import index bfc45b60..dd14724a 100644 --- a/text/ru/helpers.csv.import +++ b/text/ru/helpers.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d2j1lqyuyldbv" [deps] -files=[ "res://text/ru/helpers.ru.translation" ] +files=["res://text/ru/helpers.ru.translation"] source_file="res://text/ru/helpers.csv" -dest_files=[ "res://text/ru/helpers.ru.translation" ] +dest_files=["res://text/ru/helpers.ru.translation"] [params] diff --git a/text/ru/install_probe.csv.import b/text/ru/install_probe.csv.import index 6dcf117b..6a5197a4 100644 --- a/text/ru/install_probe.csv.import +++ b/text/ru/install_probe.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dac2go0lomxdm" [deps] -files=[ "res://text/ru/install_probe.ru.translation" ] +files=["res://text/ru/install_probe.ru.translation"] source_file="res://text/ru/install_probe.csv" -dest_files=[ "res://text/ru/install_probe.ru.translation" ] +dest_files=["res://text/ru/install_probe.ru.translation"] [params] diff --git a/text/ru/mod_manager.csv.import b/text/ru/mod_manager.csv.import index 1f670cbd..bdb9e5e6 100644 --- a/text/ru/mod_manager.csv.import +++ b/text/ru/mod_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bkyuf6m178jwh" [deps] -files=[ "res://text/ru/mod_manager.ru.translation" ] +files=["res://text/ru/mod_manager.ru.translation"] source_file="res://text/ru/mod_manager.csv" -dest_files=[ "res://text/ru/mod_manager.ru.translation" ] +dest_files=["res://text/ru/mod_manager.ru.translation"] [params] diff --git a/text/ru/mod_reinstall_dialog.csv.import b/text/ru/mod_reinstall_dialog.csv.import index c9dad56f..6031570f 100644 --- a/text/ru/mod_reinstall_dialog.csv.import +++ b/text/ru/mod_reinstall_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dpp8ymn2j24y6" [deps] -files=[ "res://text/ru/mod_reinstall_dialog.ru.translation" ] +files=["res://text/ru/mod_reinstall_dialog.ru.translation"] source_file="res://text/ru/mod_reinstall_dialog.csv" -dest_files=[ "res://text/ru/mod_reinstall_dialog.ru.translation" ] +dest_files=["res://text/ru/mod_reinstall_dialog.ru.translation"] [params] diff --git a/text/ru/mods_tab.csv.import b/text/ru/mods_tab.csv.import index 1c0ca3d2..2f2b0a62 100644 --- a/text/ru/mods_tab.csv.import +++ b/text/ru/mods_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bvetaywlisbwm" [deps] -files=[ "res://text/ru/mods_tab.ru.translation" ] +files=["res://text/ru/mods_tab.ru.translation"] source_file="res://text/ru/mods_tab.csv" -dest_files=[ "res://text/ru/mods_tab.ru.translation" ] +dest_files=["res://text/ru/mods_tab.ru.translation"] [params] diff --git a/text/ru/release_installer.csv.import b/text/ru/release_installer.csv.import index 3e47c29e..93f12dc9 100644 --- a/text/ru/release_installer.csv.import +++ b/text/ru/release_installer.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ybdqshs361tt" [deps] -files=[ "res://text/ru/release_installer.ru.translation" ] +files=["res://text/ru/release_installer.ru.translation"] source_file="res://text/ru/release_installer.csv" -dest_files=[ "res://text/ru/release_installer.ru.translation" ] +dest_files=["res://text/ru/release_installer.ru.translation"] [params] diff --git a/text/ru/release_manager.csv.import b/text/ru/release_manager.csv.import index 1d6577dd..ff79bd57 100644 --- a/text/ru/release_manager.csv.import +++ b/text/ru/release_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://euntvw4ohl26" [deps] -files=[ "res://text/ru/release_manager.ru.translation" ] +files=["res://text/ru/release_manager.ru.translation"] source_file="res://text/ru/release_manager.csv" -dest_files=[ "res://text/ru/release_manager.ru.translation" ] +dest_files=["res://text/ru/release_manager.ru.translation"] [params] diff --git a/text/ru/settings_manager.csv.import b/text/ru/settings_manager.csv.import index cebf5f6b..0a5adb5b 100644 --- a/text/ru/settings_manager.csv.import +++ b/text/ru/settings_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dst6kmk3t3km6" [deps] -files=[ "res://text/ru/settings_manager.ru.translation" ] +files=["res://text/ru/settings_manager.ru.translation"] source_file="res://text/ru/settings_manager.csv" -dest_files=[ "res://text/ru/settings_manager.ru.translation" ] +dest_files=["res://text/ru/settings_manager.ru.translation"] [params] diff --git a/text/ru/settings_tab.csv.import b/text/ru/settings_tab.csv.import index 4386e3a2..06d4a15e 100644 --- a/text/ru/settings_tab.csv.import +++ b/text/ru/settings_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ch86nym13lg2c" [deps] -files=[ "res://text/ru/settings_tab.ru.translation" ] +files=["res://text/ru/settings_tab.ru.translation"] source_file="res://text/ru/settings_tab.csv" -dest_files=[ "res://text/ru/settings_tab.ru.translation" ] +dest_files=["res://text/ru/settings_tab.ru.translation"] [params] diff --git a/text/ru/soundpack_manager.csv.import b/text/ru/soundpack_manager.csv.import index 922cc529..6684d0df 100644 --- a/text/ru/soundpack_manager.csv.import +++ b/text/ru/soundpack_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dtwyk5w1unjsg" [deps] -files=[ "res://text/ru/soundpack_manager.ru.translation" ] +files=["res://text/ru/soundpack_manager.ru.translation"] source_file="res://text/ru/soundpack_manager.csv" -dest_files=[ "res://text/ru/soundpack_manager.ru.translation" ] +dest_files=["res://text/ru/soundpack_manager.ru.translation"] [params] diff --git a/text/ru/soundpacks_tab.csv.import b/text/ru/soundpacks_tab.csv.import index 0dd2f727..069f5fcf 100644 --- a/text/ru/soundpacks_tab.csv.import +++ b/text/ru/soundpacks_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://i8qvbiskjl8o" [deps] -files=[ "res://text/ru/soundpacks_tab.ru.translation" ] +files=["res://text/ru/soundpacks_tab.ru.translation"] source_file="res://text/ru/soundpacks_tab.csv" -dest_files=[ "res://text/ru/soundpacks_tab.ru.translation" ] +dest_files=["res://text/ru/soundpacks_tab.ru.translation"] [params] diff --git a/text/ru/tips.csv.import b/text/ru/tips.csv.import index 9a84d36c..8622ce9b 100644 --- a/text/ru/tips.csv.import +++ b/text/ru/tips.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://brspj2yl5l5hv" [deps] -files=[ "res://text/ru/tips.ru.translation" ] +files=["res://text/ru/tips.ru.translation"] source_file="res://text/ru/tips.csv" -dest_files=[ "res://text/ru/tips.ru.translation" ] +dest_files=["res://text/ru/tips.ru.translation"] [params] diff --git a/text/tr/backup_manager.csv.import b/text/tr/backup_manager.csv.import index 5e266c3c..f083d8a3 100644 --- a/text/tr/backup_manager.csv.import +++ b/text/tr/backup_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cuxnn8tinrowb" [deps] -files=[ "res://text/tr/backup_manager.tr.translation" ] +files=["res://text/tr/backup_manager.tr.translation"] source_file="res://text/tr/backup_manager.csv" -dest_files=[ "res://text/tr/backup_manager.tr.translation" ] +dest_files=["res://text/tr/backup_manager.tr.translation"] [params] diff --git a/text/tr/backups_tab.csv.import b/text/tr/backups_tab.csv.import index 5a8544ed..e19b7555 100644 --- a/text/tr/backups_tab.csv.import +++ b/text/tr/backups_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bvjrsbl73itpt" [deps] -files=[ "res://text/tr/backups_tab.tr.translation" ] +files=["res://text/tr/backups_tab.tr.translation"] source_file="res://text/tr/backups_tab.csv" -dest_files=[ "res://text/tr/backups_tab.tr.translation" ] +dest_files=["res://text/tr/backups_tab.tr.translation"] [params] diff --git a/text/tr/changelog_dialog.csv.import b/text/tr/changelog_dialog.csv.import index 7bb24f56..a62b19b6 100644 --- a/text/tr/changelog_dialog.csv.import +++ b/text/tr/changelog_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d1dh8bg4vfj4h" [deps] -files=[ "res://text/tr/changelog_dialog.tr.translation" ] +files=["res://text/tr/changelog_dialog.tr.translation"] source_file="res://text/tr/changelog_dialog.csv" -dest_files=[ "res://text/tr/changelog_dialog.tr.translation" ] +dest_files=["res://text/tr/changelog_dialog.tr.translation"] [params] diff --git a/text/tr/dialog_buttons.csv.import b/text/tr/dialog_buttons.csv.import index 067ee474..692f2885 100644 --- a/text/tr/dialog_buttons.csv.import +++ b/text/tr/dialog_buttons.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c0rcar5y5w4q0" [deps] -files=[ "res://text/tr/dialog_buttons.tr.translation" ] +files=["res://text/tr/dialog_buttons.tr.translation"] source_file="res://text/tr/dialog_buttons.csv" -dest_files=[ "res://text/tr/dialog_buttons.tr.translation" ] +dest_files=["res://text/tr/dialog_buttons.tr.translation"] [params] diff --git a/text/tr/download_manager.csv.import b/text/tr/download_manager.csv.import index 1a25affc..32e8c4dc 100644 --- a/text/tr/download_manager.csv.import +++ b/text/tr/download_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cdomvs1vv4s2u" [deps] -files=[ "res://text/tr/download_manager.tr.translation" ] +files=["res://text/tr/download_manager.tr.translation"] source_file="res://text/tr/download_manager.csv" -dest_files=[ "res://text/tr/download_manager.tr.translation" ] +dest_files=["res://text/tr/download_manager.tr.translation"] [params] diff --git a/text/tr/easter_egg.csv.import b/text/tr/easter_egg.csv.import index 50daffc7..c5987267 100644 --- a/text/tr/easter_egg.csv.import +++ b/text/tr/easter_egg.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cgqssgilo5qot" [deps] -files=[ "res://text/tr/easter_egg.tr.translation" ] +files=["res://text/tr/easter_egg.tr.translation"] source_file="res://text/tr/easter_egg.csv" -dest_files=[ "res://text/tr/easter_egg.tr.translation" ] +dest_files=["res://text/tr/easter_egg.tr.translation"] [params] diff --git a/text/tr/filesystem_helper.csv.import b/text/tr/filesystem_helper.csv.import index 42f2f16d..b74926b5 100644 --- a/text/tr/filesystem_helper.csv.import +++ b/text/tr/filesystem_helper.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cxn7je4wyen2c" [deps] -files=[ "res://text/tr/filesystem_helper.tr.translation" ] +files=["res://text/tr/filesystem_helper.tr.translation"] source_file="res://text/tr/filesystem_helper.csv" -dest_files=[ "res://text/tr/filesystem_helper.tr.translation" ] +dest_files=["res://text/tr/filesystem_helper.tr.translation"] [params] diff --git a/text/tr/font_help_dialog.csv.import b/text/tr/font_help_dialog.csv.import index 236e6922..128c2e30 100644 --- a/text/tr/font_help_dialog.csv.import +++ b/text/tr/font_help_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ccl4y44w7o06e" [deps] -files=[ "res://text/tr/font_help_dialog.tr.translation" ] +files=["res://text/tr/font_help_dialog.tr.translation"] source_file="res://text/tr/font_help_dialog.csv" -dest_files=[ "res://text/tr/font_help_dialog.tr.translation" ] +dest_files=["res://text/tr/font_help_dialog.tr.translation"] [params] diff --git a/text/tr/font_info.csv.import b/text/tr/font_info.csv.import index 2f14adfb..fa13ac4b 100644 --- a/text/tr/font_info.csv.import +++ b/text/tr/font_info.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://i57mydmkaaq1" [deps] -files=[ "res://text/tr/font_info.tr.translation" ] +files=["res://text/tr/font_info.tr.translation"] source_file="res://text/tr/font_info.csv" -dest_files=[ "res://text/tr/font_info.tr.translation" ] +dest_files=["res://text/tr/font_info.tr.translation"] [params] diff --git a/text/tr/font_manager.csv.import b/text/tr/font_manager.csv.import index 98d3b0f4..a7c8c858 100644 --- a/text/tr/font_manager.csv.import +++ b/text/tr/font_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://wd7mxjtij1vr" [deps] -files=[ "res://text/tr/font_manager.tr.translation" ] +files=["res://text/tr/font_manager.tr.translation"] source_file="res://text/tr/font_manager.csv" -dest_files=[ "res://text/tr/font_manager.tr.translation" ] +dest_files=["res://text/tr/font_manager.tr.translation"] [params] diff --git a/text/tr/fonts_tab.csv.import b/text/tr/fonts_tab.csv.import index 583cc1df..e3525da4 100644 --- a/text/tr/fonts_tab.csv.import +++ b/text/tr/fonts_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dnh7ldfs4qbjy" [deps] -files=[ "res://text/tr/fonts_tab.tr.translation" ] +files=["res://text/tr/fonts_tab.tr.translation"] source_file="res://text/tr/fonts_tab.csv" -dest_files=[ "res://text/tr/fonts_tab.tr.translation" ] +dest_files=["res://text/tr/fonts_tab.tr.translation"] [params] diff --git a/text/tr/game_tab.csv.import b/text/tr/game_tab.csv.import index b77d9565..9f2fa6f9 100644 --- a/text/tr/game_tab.csv.import +++ b/text/tr/game_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d2u7xuq6j8i2l" [deps] -files=[ "res://text/tr/game_tab.tr.translation" ] +files=["res://text/tr/game_tab.tr.translation"] source_file="res://text/tr/game_tab.csv" -dest_files=[ "res://text/tr/game_tab.tr.translation" ] +dest_files=["res://text/tr/game_tab.tr.translation"] [params] diff --git a/text/tr/general.csv.import b/text/tr/general.csv.import index cfe48983..8075ce17 100644 --- a/text/tr/general.csv.import +++ b/text/tr/general.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://chpe0dt7x7yot" [deps] -files=[ "res://text/tr/general.tr.translation" ] +files=["res://text/tr/general.tr.translation"] source_file="res://text/tr/general.csv" -dest_files=[ "res://text/tr/general.tr.translation" ] +dest_files=["res://text/tr/general.tr.translation"] [params] diff --git a/text/tr/helpers.csv.import b/text/tr/helpers.csv.import index e7fa38bb..d2cf16df 100644 --- a/text/tr/helpers.csv.import +++ b/text/tr/helpers.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cyoohbhg5rg0r" [deps] -files=[ "res://text/tr/helpers.tr.translation" ] +files=["res://text/tr/helpers.tr.translation"] source_file="res://text/tr/helpers.csv" -dest_files=[ "res://text/tr/helpers.tr.translation" ] +dest_files=["res://text/tr/helpers.tr.translation"] [params] diff --git a/text/tr/install_probe.csv.import b/text/tr/install_probe.csv.import index c9991b93..2d254174 100644 --- a/text/tr/install_probe.csv.import +++ b/text/tr/install_probe.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dfylo50fhlv0a" [deps] -files=[ "res://text/tr/install_probe.tr.translation" ] +files=["res://text/tr/install_probe.tr.translation"] source_file="res://text/tr/install_probe.csv" -dest_files=[ "res://text/tr/install_probe.tr.translation" ] +dest_files=["res://text/tr/install_probe.tr.translation"] [params] diff --git a/text/tr/mod_manager.csv.import b/text/tr/mod_manager.csv.import index 7d2e6591..b5564f87 100644 --- a/text/tr/mod_manager.csv.import +++ b/text/tr/mod_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bwv71jvdh88va" [deps] -files=[ "res://text/tr/mod_manager.tr.translation" ] +files=["res://text/tr/mod_manager.tr.translation"] source_file="res://text/tr/mod_manager.csv" -dest_files=[ "res://text/tr/mod_manager.tr.translation" ] +dest_files=["res://text/tr/mod_manager.tr.translation"] [params] diff --git a/text/tr/mod_reinstall_dialog.csv.import b/text/tr/mod_reinstall_dialog.csv.import index 5a509d31..d1077b5e 100644 --- a/text/tr/mod_reinstall_dialog.csv.import +++ b/text/tr/mod_reinstall_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://gju2nxwan8bv" [deps] -files=[ "res://text/tr/mod_reinstall_dialog.tr.translation" ] +files=["res://text/tr/mod_reinstall_dialog.tr.translation"] source_file="res://text/tr/mod_reinstall_dialog.csv" -dest_files=[ "res://text/tr/mod_reinstall_dialog.tr.translation" ] +dest_files=["res://text/tr/mod_reinstall_dialog.tr.translation"] [params] diff --git a/text/tr/mods_tab.csv.import b/text/tr/mods_tab.csv.import index 817cd1ae..2df08f26 100644 --- a/text/tr/mods_tab.csv.import +++ b/text/tr/mods_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://faqy4uktihr1" [deps] -files=[ "res://text/tr/mods_tab.tr.translation" ] +files=["res://text/tr/mods_tab.tr.translation"] source_file="res://text/tr/mods_tab.csv" -dest_files=[ "res://text/tr/mods_tab.tr.translation" ] +dest_files=["res://text/tr/mods_tab.tr.translation"] [params] diff --git a/text/tr/release_installer.csv.import b/text/tr/release_installer.csv.import index 2364c5e4..e2607230 100644 --- a/text/tr/release_installer.csv.import +++ b/text/tr/release_installer.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cdv0bnqo2n1qi" [deps] -files=[ "res://text/tr/release_installer.tr.translation" ] +files=["res://text/tr/release_installer.tr.translation"] source_file="res://text/tr/release_installer.csv" -dest_files=[ "res://text/tr/release_installer.tr.translation" ] +dest_files=["res://text/tr/release_installer.tr.translation"] [params] diff --git a/text/tr/release_manager.csv.import b/text/tr/release_manager.csv.import index c346bb2a..51209d1b 100644 --- a/text/tr/release_manager.csv.import +++ b/text/tr/release_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://u2gsxwaeft4h" [deps] -files=[ "res://text/tr/release_manager.tr.translation" ] +files=["res://text/tr/release_manager.tr.translation"] source_file="res://text/tr/release_manager.csv" -dest_files=[ "res://text/tr/release_manager.tr.translation" ] +dest_files=["res://text/tr/release_manager.tr.translation"] [params] diff --git a/text/tr/settings_manager.csv.import b/text/tr/settings_manager.csv.import index b8688a9a..5117adaa 100644 --- a/text/tr/settings_manager.csv.import +++ b/text/tr/settings_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cjvkbdugw7ajb" [deps] -files=[ "res://text/tr/settings_manager.tr.translation" ] +files=["res://text/tr/settings_manager.tr.translation"] source_file="res://text/tr/settings_manager.csv" -dest_files=[ "res://text/tr/settings_manager.tr.translation" ] +dest_files=["res://text/tr/settings_manager.tr.translation"] [params] diff --git a/text/tr/settings_tab.csv.import b/text/tr/settings_tab.csv.import index eb19a20b..9ff246b0 100644 --- a/text/tr/settings_tab.csv.import +++ b/text/tr/settings_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bc0gfa7vqv4ek" [deps] -files=[ "res://text/tr/settings_tab.tr.translation" ] +files=["res://text/tr/settings_tab.tr.translation"] source_file="res://text/tr/settings_tab.csv" -dest_files=[ "res://text/tr/settings_tab.tr.translation" ] +dest_files=["res://text/tr/settings_tab.tr.translation"] [params] diff --git a/text/tr/soundpack_manager.csv.import b/text/tr/soundpack_manager.csv.import index fd2db806..b58f0209 100644 --- a/text/tr/soundpack_manager.csv.import +++ b/text/tr/soundpack_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://44s2bqs5du6u" [deps] -files=[ "res://text/tr/soundpack_manager.tr.translation" ] +files=["res://text/tr/soundpack_manager.tr.translation"] source_file="res://text/tr/soundpack_manager.csv" -dest_files=[ "res://text/tr/soundpack_manager.tr.translation" ] +dest_files=["res://text/tr/soundpack_manager.tr.translation"] [params] diff --git a/text/tr/soundpacks_tab.csv.import b/text/tr/soundpacks_tab.csv.import index 996d16c5..8cdf256d 100644 --- a/text/tr/soundpacks_tab.csv.import +++ b/text/tr/soundpacks_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d4k41f7o2osey" [deps] -files=[ "res://text/tr/soundpacks_tab.tr.translation" ] +files=["res://text/tr/soundpacks_tab.tr.translation"] source_file="res://text/tr/soundpacks_tab.csv" -dest_files=[ "res://text/tr/soundpacks_tab.tr.translation" ] +dest_files=["res://text/tr/soundpacks_tab.tr.translation"] [params] diff --git a/text/tr/tips.csv.import b/text/tr/tips.csv.import index e07640e7..878914b1 100644 --- a/text/tr/tips.csv.import +++ b/text/tr/tips.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d04l2hlt2fgl7" [deps] -files=[ "res://text/tr/tips.tr.translation" ] +files=["res://text/tr/tips.tr.translation"] source_file="res://text/tr/tips.csv" -dest_files=[ "res://text/tr/tips.tr.translation" ] +dest_files=["res://text/tr/tips.tr.translation"] [params] diff --git a/text/zh/backup_manager.csv.import b/text/zh/backup_manager.csv.import index 9fd0302a..69293a03 100644 --- a/text/zh/backup_manager.csv.import +++ b/text/zh/backup_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dbhphq8m6hiv6" [deps] -files=[ "res://text/zh/backup_manager.zh.translation" ] +files=["res://text/zh/backup_manager.zh.translation"] source_file="res://text/zh/backup_manager.csv" -dest_files=[ "res://text/zh/backup_manager.zh.translation" ] +dest_files=["res://text/zh/backup_manager.zh.translation"] [params] diff --git a/text/zh/backups_tab.csv.import b/text/zh/backups_tab.csv.import index 27cfcc96..8ea9585d 100644 --- a/text/zh/backups_tab.csv.import +++ b/text/zh/backups_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cfdxlrp388lq5" [deps] -files=[ "res://text/zh/backups_tab.zh.translation" ] +files=["res://text/zh/backups_tab.zh.translation"] source_file="res://text/zh/backups_tab.csv" -dest_files=[ "res://text/zh/backups_tab.zh.translation" ] +dest_files=["res://text/zh/backups_tab.zh.translation"] [params] diff --git a/text/zh/changelog_dialog.csv.import b/text/zh/changelog_dialog.csv.import index f31a90a9..eddf1ac3 100644 --- a/text/zh/changelog_dialog.csv.import +++ b/text/zh/changelog_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ndjhuqcfo6e3" [deps] -files=[ "res://text/zh/changelog_dialog.zh.translation" ] +files=["res://text/zh/changelog_dialog.zh.translation"] source_file="res://text/zh/changelog_dialog.csv" -dest_files=[ "res://text/zh/changelog_dialog.zh.translation" ] +dest_files=["res://text/zh/changelog_dialog.zh.translation"] [params] diff --git a/text/zh/dialog_buttons.csv.import b/text/zh/dialog_buttons.csv.import index df8dfb57..af9472f6 100644 --- a/text/zh/dialog_buttons.csv.import +++ b/text/zh/dialog_buttons.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://crv5b3pbjmr05" [deps] -files=[ "res://text/zh/dialog_buttons.zh.translation" ] +files=["res://text/zh/dialog_buttons.zh.translation"] source_file="res://text/zh/dialog_buttons.csv" -dest_files=[ "res://text/zh/dialog_buttons.zh.translation" ] +dest_files=["res://text/zh/dialog_buttons.zh.translation"] [params] diff --git a/text/zh/download_manager.csv.import b/text/zh/download_manager.csv.import index 3b7876b6..2a7557bc 100644 --- a/text/zh/download_manager.csv.import +++ b/text/zh/download_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d2ykotw0l15ih" [deps] -files=[ "res://text/zh/download_manager.zh.translation" ] +files=["res://text/zh/download_manager.zh.translation"] source_file="res://text/zh/download_manager.csv" -dest_files=[ "res://text/zh/download_manager.zh.translation" ] +dest_files=["res://text/zh/download_manager.zh.translation"] [params] diff --git a/text/zh/easter_egg.csv.import b/text/zh/easter_egg.csv.import index 133ac2b3..f438f66d 100644 --- a/text/zh/easter_egg.csv.import +++ b/text/zh/easter_egg.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bmt1x7kqkk2d8" [deps] -files=[ "res://text/zh/easter_egg.zh.translation" ] +files=["res://text/zh/easter_egg.zh.translation"] source_file="res://text/zh/easter_egg.csv" -dest_files=[ "res://text/zh/easter_egg.zh.translation" ] +dest_files=["res://text/zh/easter_egg.zh.translation"] [params] diff --git a/text/zh/filesystem_helper.csv.import b/text/zh/filesystem_helper.csv.import index 6ba35d5d..cd12d777 100644 --- a/text/zh/filesystem_helper.csv.import +++ b/text/zh/filesystem_helper.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cfoqvv8vdfg5p" [deps] -files=[ "res://text/zh/filesystem_helper.zh.translation" ] +files=["res://text/zh/filesystem_helper.zh.translation"] source_file="res://text/zh/filesystem_helper.csv" -dest_files=[ "res://text/zh/filesystem_helper.zh.translation" ] +dest_files=["res://text/zh/filesystem_helper.zh.translation"] [params] diff --git a/text/zh/font_help_dialog.csv.import b/text/zh/font_help_dialog.csv.import index 76a52891..b275cc05 100644 --- a/text/zh/font_help_dialog.csv.import +++ b/text/zh/font_help_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://pmfdpkx53msf" [deps] -files=[ "res://text/zh/font_help_dialog.zh.translation" ] +files=["res://text/zh/font_help_dialog.zh.translation"] source_file="res://text/zh/font_help_dialog.csv" -dest_files=[ "res://text/zh/font_help_dialog.zh.translation" ] +dest_files=["res://text/zh/font_help_dialog.zh.translation"] [params] diff --git a/text/zh/font_info.csv.import b/text/zh/font_info.csv.import index 01015dea..a899b6d5 100644 --- a/text/zh/font_info.csv.import +++ b/text/zh/font_info.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cf4qjnntjnpel" [deps] -files=[ "res://text/zh/font_info.zh.translation" ] +files=["res://text/zh/font_info.zh.translation"] source_file="res://text/zh/font_info.csv" -dest_files=[ "res://text/zh/font_info.zh.translation" ] +dest_files=["res://text/zh/font_info.zh.translation"] [params] diff --git a/text/zh/font_manager.csv.import b/text/zh/font_manager.csv.import index d873a3f2..b2ee4953 100644 --- a/text/zh/font_manager.csv.import +++ b/text/zh/font_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://6op1guwfhdga" [deps] -files=[ "res://text/zh/font_manager.zh.translation" ] +files=["res://text/zh/font_manager.zh.translation"] source_file="res://text/zh/font_manager.csv" -dest_files=[ "res://text/zh/font_manager.zh.translation" ] +dest_files=["res://text/zh/font_manager.zh.translation"] [params] diff --git a/text/zh/fonts_tab.csv.import b/text/zh/fonts_tab.csv.import index cc4e2910..f5d502d9 100644 --- a/text/zh/fonts_tab.csv.import +++ b/text/zh/fonts_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bsin35ei2ar1h" [deps] -files=[ "res://text/zh/fonts_tab.zh.translation" ] +files=["res://text/zh/fonts_tab.zh.translation"] source_file="res://text/zh/fonts_tab.csv" -dest_files=[ "res://text/zh/fonts_tab.zh.translation" ] +dest_files=["res://text/zh/fonts_tab.zh.translation"] [params] diff --git a/text/zh/game_tab.csv.import b/text/zh/game_tab.csv.import index 6f1a3c38..8363a985 100644 --- a/text/zh/game_tab.csv.import +++ b/text/zh/game_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://wvco5pd0uroh" [deps] -files=[ "res://text/zh/game_tab.zh.translation" ] +files=["res://text/zh/game_tab.zh.translation"] source_file="res://text/zh/game_tab.csv" -dest_files=[ "res://text/zh/game_tab.zh.translation" ] +dest_files=["res://text/zh/game_tab.zh.translation"] [params] diff --git a/text/zh/general.csv.import b/text/zh/general.csv.import index 9add6bd5..97ed29ba 100644 --- a/text/zh/general.csv.import +++ b/text/zh/general.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cwficp5wvhdi0" [deps] -files=[ "res://text/zh/general.zh.translation" ] +files=["res://text/zh/general.zh.translation"] source_file="res://text/zh/general.csv" -dest_files=[ "res://text/zh/general.zh.translation" ] +dest_files=["res://text/zh/general.zh.translation"] [params] diff --git a/text/zh/helpers.csv.import b/text/zh/helpers.csv.import index cbeb49b3..34d65274 100644 --- a/text/zh/helpers.csv.import +++ b/text/zh/helpers.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://d1a7rj4c1wkcf" [deps] -files=[ "res://text/zh/helpers.zh.translation" ] +files=["res://text/zh/helpers.zh.translation"] source_file="res://text/zh/helpers.csv" -dest_files=[ "res://text/zh/helpers.zh.translation" ] +dest_files=["res://text/zh/helpers.zh.translation"] [params] diff --git a/text/zh/install_probe.csv.import b/text/zh/install_probe.csv.import index e3ed39f6..7157e9ca 100644 --- a/text/zh/install_probe.csv.import +++ b/text/zh/install_probe.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://bl6em2twxsur0" [deps] -files=[ "res://text/zh/install_probe.zh.translation" ] +files=["res://text/zh/install_probe.zh.translation"] source_file="res://text/zh/install_probe.csv" -dest_files=[ "res://text/zh/install_probe.zh.translation" ] +dest_files=["res://text/zh/install_probe.zh.translation"] [params] diff --git a/text/zh/mod_manager.csv.import b/text/zh/mod_manager.csv.import index dbdc532f..1b9fa2b0 100644 --- a/text/zh/mod_manager.csv.import +++ b/text/zh/mod_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://dmcx4v8kvp7wl" [deps] -files=[ "res://text/zh/mod_manager.zh.translation" ] +files=["res://text/zh/mod_manager.zh.translation"] source_file="res://text/zh/mod_manager.csv" -dest_files=[ "res://text/zh/mod_manager.zh.translation" ] +dest_files=["res://text/zh/mod_manager.zh.translation"] [params] diff --git a/text/zh/mod_reinstall_dialog.csv.import b/text/zh/mod_reinstall_dialog.csv.import index 0c497b3e..d49e87b3 100644 --- a/text/zh/mod_reinstall_dialog.csv.import +++ b/text/zh/mod_reinstall_dialog.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://cvdrrs3dd57ym" [deps] -files=[ "res://text/zh/mod_reinstall_dialog.zh.translation" ] +files=["res://text/zh/mod_reinstall_dialog.zh.translation"] source_file="res://text/zh/mod_reinstall_dialog.csv" -dest_files=[ "res://text/zh/mod_reinstall_dialog.zh.translation" ] +dest_files=["res://text/zh/mod_reinstall_dialog.zh.translation"] [params] diff --git a/text/zh/mods_tab.csv.import b/text/zh/mods_tab.csv.import index 53597627..6545252f 100644 --- a/text/zh/mods_tab.csv.import +++ b/text/zh/mods_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://5hd5mk8ixncu" [deps] -files=[ "res://text/zh/mods_tab.zh.translation" ] +files=["res://text/zh/mods_tab.zh.translation"] source_file="res://text/zh/mods_tab.csv" -dest_files=[ "res://text/zh/mods_tab.zh.translation" ] +dest_files=["res://text/zh/mods_tab.zh.translation"] [params] diff --git a/text/zh/release_installer.csv.import b/text/zh/release_installer.csv.import index 2882b9ab..03bac4ff 100644 --- a/text/zh/release_installer.csv.import +++ b/text/zh/release_installer.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c4wbamt3336t3" [deps] -files=[ "res://text/zh/release_installer.zh.translation" ] +files=["res://text/zh/release_installer.zh.translation"] source_file="res://text/zh/release_installer.csv" -dest_files=[ "res://text/zh/release_installer.zh.translation" ] +dest_files=["res://text/zh/release_installer.zh.translation"] [params] diff --git a/text/zh/release_manager.csv.import b/text/zh/release_manager.csv.import index de52be9f..c58b0065 100644 --- a/text/zh/release_manager.csv.import +++ b/text/zh/release_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://c8x162r1j84e0" [deps] -files=[ "res://text/zh/release_manager.zh.translation" ] +files=["res://text/zh/release_manager.zh.translation"] source_file="res://text/zh/release_manager.csv" -dest_files=[ "res://text/zh/release_manager.zh.translation" ] +dest_files=["res://text/zh/release_manager.zh.translation"] [params] diff --git a/text/zh/settings_manager.csv.import b/text/zh/settings_manager.csv.import index 16368406..5c721e2a 100644 --- a/text/zh/settings_manager.csv.import +++ b/text/zh/settings_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://b2ogxqne2ggmt" [deps] -files=[ "res://text/zh/settings_manager.zh.translation" ] +files=["res://text/zh/settings_manager.zh.translation"] source_file="res://text/zh/settings_manager.csv" -dest_files=[ "res://text/zh/settings_manager.zh.translation" ] +dest_files=["res://text/zh/settings_manager.zh.translation"] [params] diff --git a/text/zh/settings_tab.csv.import b/text/zh/settings_tab.csv.import index f4215cec..26e633d9 100644 --- a/text/zh/settings_tab.csv.import +++ b/text/zh/settings_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://v6raja2eho27" [deps] -files=[ "res://text/zh/settings_tab.zh.translation" ] +files=["res://text/zh/settings_tab.zh.translation"] source_file="res://text/zh/settings_tab.csv" -dest_files=[ "res://text/zh/settings_tab.zh.translation" ] +dest_files=["res://text/zh/settings_tab.zh.translation"] [params] diff --git a/text/zh/soundpack_manager.csv.import b/text/zh/soundpack_manager.csv.import index 854140cb..2ddf60e5 100644 --- a/text/zh/soundpack_manager.csv.import +++ b/text/zh/soundpack_manager.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://q6lvyd3wnxse" [deps] -files=[ "res://text/zh/soundpack_manager.zh.translation" ] +files=["res://text/zh/soundpack_manager.zh.translation"] source_file="res://text/zh/soundpack_manager.csv" -dest_files=[ "res://text/zh/soundpack_manager.zh.translation" ] +dest_files=["res://text/zh/soundpack_manager.zh.translation"] [params] diff --git a/text/zh/soundpacks_tab.csv.import b/text/zh/soundpacks_tab.csv.import index 78335e1f..ba742d2f 100644 --- a/text/zh/soundpacks_tab.csv.import +++ b/text/zh/soundpacks_tab.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://ccaye5yu08v3m" [deps] -files=[ "res://text/zh/soundpacks_tab.zh.translation" ] +files=["res://text/zh/soundpacks_tab.zh.translation"] source_file="res://text/zh/soundpacks_tab.csv" -dest_files=[ "res://text/zh/soundpacks_tab.zh.translation" ] +dest_files=["res://text/zh/soundpacks_tab.zh.translation"] [params] diff --git a/text/zh/tips.csv.import b/text/zh/tips.csv.import index f093f187..b30a6c5f 100644 --- a/text/zh/tips.csv.import +++ b/text/zh/tips.csv.import @@ -2,13 +2,14 @@ importer="csv_translation" type="Translation" +uid="uid://2lolhpdgibv0" [deps] -files=[ "res://text/zh/tips.zh.translation" ] +files=["res://text/zh/tips.zh.translation"] source_file="res://text/zh/tips.csv" -dest_files=[ "res://text/zh/tips.zh.translation" ] +dest_files=["res://text/zh/tips.zh.translation"] [params] From 07d14b9454a518d88d04107c3c78f01a0086db70 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Fri, 19 Jul 2024 22:46:17 +0100 Subject: [PATCH 02/18] Fix some runtime errors --- .gitignore | 1 + scripts/path_helper.gd | 3 +++ scripts/scalable_texture.gd | 2 +- scripts/scalable_theme.gd | 12 ++++++------ scripts/settings_manager.gd | 12 +++++------- scripts/status.gd | 2 +- scripts/window_geometry.gd | 6 +++--- 7 files changed, 20 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index 8614d456..fcbd1e77 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ Catapult.x86_64 Catapult.exe *.translation *~lock* +*.tmp # Godot Git plugin /bin diff --git a/scripts/path_helper.gd b/scripts/path_helper.gd index 58cd567c..072c046f 100644 --- a/scripts/path_helper.gd +++ b/scripts/path_helper.gd @@ -43,6 +43,9 @@ func _get_installs_summary() -> Dictionary: for game in ["dda", "bn", "eod", "tish"]: var installs = {} var base_dir = Paths.own_dir.path_join(game) + if not DirAccess.dir_exists_absolute(base_dir): + continue + for subdir in FS.list_dir(base_dir): var info_file = base_dir.path_join(subdir).path_join(Helpers.INFO_FILENAME) if FileAccess.file_exists(info_file): diff --git a/scripts/scalable_texture.gd b/scripts/scalable_texture.gd index 7a46d2d6..4c40125d 100644 --- a/scripts/scalable_texture.gd +++ b/scripts/scalable_texture.gd @@ -13,4 +13,4 @@ func _init() -> void: func _on_ui_scale_changed(new_scale: float) -> void: - self.size = _base_size * new_scale + self.set_size_override(_base_size * new_scale) diff --git a/scripts/scalable_theme.gd b/scripts/scalable_theme.gd index 8c3011c2..a1f2ab97 100644 --- a/scripts/scalable_theme.gd +++ b/scripts/scalable_theme.gd @@ -238,16 +238,16 @@ func _save_texture_sizes() -> Dictionary: for item_type in get_icon_type_list(): for icon_name in get_icon_list(item_type): var icon := get_icon(icon_name, item_type) - if (icon is ImageTexture) and (not icon in tex_sizes) and (icon.size != Vector2.ZERO): - tex_sizes[icon] = icon.size + if (icon is ImageTexture) and (not icon in tex_sizes) and (icon.get_size() != Vector2.ZERO): + tex_sizes[icon] = icon.get_size() for item_type in get_stylebox_type_list(): for sbox_name in get_stylebox_list(item_type): var sbox = get_stylebox(sbox_name, item_type) if sbox is StyleBoxTexture: var texture = sbox.texture - if (texture is ImageTexture) and (not texture in tex_sizes) and (texture.size != Vector2.ZERO): - tex_sizes[texture] = texture.size + if (texture is ImageTexture) and (not texture in tex_sizes) and (texture.get_size() != Vector2.ZERO): + tex_sizes[texture] = texture.get_size() return tex_sizes @@ -301,7 +301,7 @@ func _save_stylebox_properties() -> Dictionary: discard = true TYPE_RECT2: # Special case for region_rect - if value.has_no_area(): + if not value.has_area(): discard = true _: if value <= 0: @@ -326,7 +326,7 @@ func _scale_constants(factor: float) -> void: func _scale_textures(factor: float) -> void: for texture in _saved_tex_sizes: - texture.size = _saved_tex_sizes[texture] * factor + texture.set_size_override(_saved_tex_sizes[texture] * factor) func _scale_fonts(factor: float) -> void: diff --git a/scripts/settings_manager.gd b/scripts/settings_manager.gd index 7e0511e5..b5c5d708 100644 --- a/scripts/settings_manager.gd +++ b/scripts/settings_manager.gd @@ -68,16 +68,14 @@ func _read_from_file(path: String) -> Dictionary: Status.post(tr("msg_loading_settings") % _SETTINGS_FILENAME) var f := FileAccess.open(path, FileAccess.READ) - var s = f.get_as_text() - var test_json_conv = JSON.new() - test_json_conv.parse(s) - var result: JSON = test_json_conv.get_data() + var json := JSON.new() + var error := json.parse(f.get_as_text()) - if result.error: - Status.post(tr("msg_settings_parse_error") % [result.error_line, result.error_string], Enums.MSG_ERROR) + if error: + Status.post(tr("msg_settings_parse_error") % [json.get_error_line(), json.get_error_message()], Enums.MSG_ERROR) return {} else: - return result.result + return json.data func _write_to_file(data: Dictionary, path: String) -> void: diff --git a/scripts/status.gd b/scripts/status.gd index 40773135..85d62622 100644 --- a/scripts/status.gd +++ b/scripts/status.gd @@ -29,7 +29,7 @@ func post(msg: String, type: int = Enums.MSG_INFO) -> void: var msg_data := _form_message(msg, type) if _status_view: - _status_view.append_bbcode(msg_data["bb_text"]) + _status_view.append_text(msg_data["bb_text"]) else: print("saving message to buffer") _buffer.push_back(msg_data) diff --git a/scripts/window_geometry.gd b/scripts/window_geometry.gd index 434d9ae1..a96a1272 100644 --- a/scripts/window_geometry.gd +++ b/scripts/window_geometry.gd @@ -69,17 +69,17 @@ func recover_window_state() -> void: # and storing the resulting offset for compensation on the next launch. while get_window().size == get_window().get_size_with_decorations(): - await get_tree().idle_frame + await get_tree().process_frame decor_offset = pos - get_window().position func _on_SceneTree_idle(): - await get_tree().idle_frame + await get_tree().process_frame ProjectSettings.call_deferred("set_setting", "display/window/per_pixel_transparency/allowed", false) OS.set_deferred("window_per_pixel_transparency_enabled", false) OS.set_deferred("window_borderless", false) - OS.call_deferred("set_icon", load("res://icons/appicon.svg").get_data()) + OS.call_deferred("set_icon", load("res://icons/appicon.svg").get_image()) recover_window_state() _apply_scale() From 738fbb57d18368daf5cd062031a718cdb11f9c8d Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Wed, 24 Jul 2024 23:15:11 +0100 Subject: [PATCH 03/18] Start fixing some UI elements --- fonts/default_ui_font.tres | 40 ++++++++++---- icons/buttons/tex_download.tex | Bin 2039 -> 2029 bytes icons/lang/tex_lang_cs.res | Bin 25262 -> 25258 bytes icons/lang/tex_lang_en.res | Bin 64408 -> 64057 bytes project.godot | 1 - scenes/Catapult.tscn | 93 +++++++++++++++++++++++++++++++-- scenes/InlineIconButton.tscn | 18 +++---- themes/Godot_3.res | Bin 23789 -> 23361 bytes 8 files changed, 126 insertions(+), 26 deletions(-) diff --git a/fonts/default_ui_font.tres b/fonts/default_ui_font.tres index 7e379cdd..171c52c2 100644 --- a/fonts/default_ui_font.tres +++ b/fonts/default_ui_font.tres @@ -1,14 +1,32 @@ -[gd_resource type="FontFile" load_steps=4 format=2] +[gd_resource type="FontFile" load_steps=4 format=3 uid="uid://c7au221byxqth"] -[ext_resource path="res://fonts/SourceHanSansCN-Regular.otf" type="FontFile" id=1] -[ext_resource path="res://fonts/OpenSans-Regular.ttf" type="FontFile" id=2] -[ext_resource path="res://fonts/NotoSansKR-Regular.ttf" type="FontFile" id=3] +[ext_resource type="FontFile" uid="uid://b2hnn2yyfwfrx" path="res://fonts/SourceHanSansCN-Regular.otf" id="1"] +[ext_resource type="FontFile" uid="uid://dyjsahw2i1jqw" path="res://fonts/OpenSans-Regular.ttf" id="2"] +[ext_resource type="FontFile" uid="uid://brp5nphtpm6dp" path="res://fonts/NotoSansKR-Regular.ttf" id="3"] [resource] -size = 13 -use_mipmaps = true -extra_spacing_top = -3 -extra_spacing_bottom = -3 -font_data = ExtResource( 2 ) -fallback/0 = ExtResource( 1 ) -fallback/1 = ExtResource( 3 ) +fallbacks = Array[Font]([ExtResource("2"), ExtResource("1"), ExtResource("3")]) +cache/0/16/0/ascent = 0.0 +cache/0/16/0/descent = 0.0 +cache/0/16/0/underline_position = 0.0 +cache/0/16/0/underline_thickness = 0.0 +cache/0/16/0/scale = 1.0 +cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/20/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/20/0/ascent = 0.0 +cache/0/20/0/descent = 0.0 +cache/0/20/0/underline_position = 0.0 +cache/0/20/0/underline_thickness = 0.0 +cache/0/20/0/scale = 1.0 +cache/0/20/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/20/0/kerning_overrides/20/0 = Vector2(0, 0) +cache/0/20/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/50/0/ascent = 0.0 +cache/0/50/0/descent = 0.0 +cache/0/50/0/underline_position = 0.0 +cache/0/50/0/underline_thickness = 0.0 +cache/0/50/0/scale = 1.0 +cache/0/50/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/20/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/50/0 = Vector2(0, 0) diff --git a/icons/buttons/tex_download.tex b/icons/buttons/tex_download.tex index f3467fa168a10ef1f1b3ee020e0d676f9d6baccc..28e37b55d0d1fddf8093eead2f35c773e44d3d89 100644 GIT binary patch delta 1292 zcmey)|CXOODA?JVi2(=%7#NHu^2*om1hRJl@g^W%3&g^V3=DNZIthrqKztx}2V#w_ z`hOD`__uN}O!C#$Ygn1dGl#|Z0?XNjJWCe*RQr8l()_n>lgysJVr1MQbD<$kq?22w zV_{QV4fDV4BE0Tes;@lj8C_bAxEx&;;+Vehxn|2pcAnhNYV|yPu8+ONFRAn_wfX<$Dk9*k&{97)SqOgMXi99&^k0tp6qdx9Zam7r>IsmvmVlWYBKo`qZBEkG8iUs zB``wWQ#-kX$*EpVA)rZ^^I;bAjAxwZq-!z{-eCRphx3D?a67YTugr&g56-N4t!T#j zXQs(|j%^nO_8hd@Gq0^^&XnD*uIdtZHa?fyuxdiIz`yXS!k~Mz3wnK;s?B~xO%PYj zSnA+^vWP!{HC$uH(uN0XSr2(x_G(2y?QUgdxWpnLc|dit6SFJFmUk@cb7C(rP3~uw zaBUD}iq9=#V_oO#m1%Hb%KAlzR;yloEygijO=7YaYejtm zlTZ(@thtba*bEWI!vY2@JP#$Elyf{Ag`|`Vm_EwYFtC(wmh+qwaNxDng_XS1|L))Y zoZ0W|Dz*!kY_@(W{LDD}IZNDUM*sDNYo!hx4EFi)e7bI5l+=ZEU&a*KLvK#cS#Ws5 z%73@?Ip$oAUdr&kS%00r_xFm@yM?Ap{SEQi`l8@Fu z*?;nBrPID{K4=^)ot(~Q;8w$6=fc36$=t%l>cGJBrs@D!Dv-^t<| hu>i3IP)$&9kTV;DLh3Tc5Vivh@wbkzW6}W?fdE`5{yqQz delta 1357 zcmb7^X;4#F6vyvN@{$+`i6m?xN(79oiYuFDo-B$mYQzMUscl$divnVb6ww+2O3^3+ z4->RRRux7G6vToung~T%N23Ochyi7&jan2P&_>cnM?Upa&)nafbI;tl_uO-4{;z3M zG-~Ab;9wlUj1B-&Ky{KfVDU|iSzn96fB=wUJ{BWaS)HNl$J{oj8?rMrb!=`9=L}zzpRUTUvtZ$ z>M6D8J5JVT;GFDd$ zimj^Q7uGgu2At_p|vWy1fG%GW;#V z%ZfVrD@uhY_63!mJg^1lE^QTW54jFMY zxdW?xW-S`vJ} z*?>&MmBCf1Ioaxu)sd=&UDXZ4M;eH{a#z(wo1=V@4YP>I&K(sBUNty3w;L8&Fs;Jg zZV{X+c{6q(DL6@vH+Arm@7sy@`AX%$*Q*Z~crp9rg* z*MDHX_}aRaRkF)YwSoj!Yz$BE(G*oy1SN4F7;VW)t|Q8a)1@gm>r=gKUu%wSF%xQ| z`w%Qg9D-cdZsHv8AeSJmq%_c;)_63mgg<0tX=>&vP1hU8@r#cN@rel+qCegK2s*zX zt#i=G`=hTAQzw{=nU7)%efA?62Lo_rw-G1tE0g$n5Z%*lhRs zoZNwePO=C>pA)^HaFkABJ9u<)*>CPVQ};izR$a9jLS#Mk`GG4OATKnOJBp!LXl47s7ubyic6f(0>5e`5*!S diff --git a/icons/lang/tex_lang_cs.res b/icons/lang/tex_lang_cs.res index c89f2d0bb04f47f33b353db67001d7db85994232..d5b754fcc9562f74e221648ffb677b85a1bc2099 100644 GIT binary patch literal 25258 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�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 YYhuPG56^81=bodBFI}AW6l%f@d2=P?* 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 NB3a|P^qv--{~wj_+OPls From 2d1da77c13dedf841e9441ef4ea2cb0dfa20a5eb Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Wed, 24 Jul 2024 23:23:38 +0100 Subject: [PATCH 04/18] Re-add localization files --- project.godot | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/project.godot b/project.godot index 86031e24..c38f1a88 100644 --- a/project.godot +++ b/project.godot @@ -94,6 +94,10 @@ ui_down={ ] } +[internationalization] + +locale/translations=PackedStringArray("res://text/en/backups_tab.en.translation", "res://text/en/backup_manager.en.translation", "res://text/en/changelog_dialog.en.translation", "res://text/en/dialog_buttons.en.translation", "res://text/en/download_manager.en.translation", "res://text/en/easter_egg.en.translation", "res://text/en/filesystem_helper.en.translation", "res://text/en/fonts_tab.en.translation", "res://text/en/font_help_dialog.en.translation", "res://text/en/font_info.en.translation", "res://text/en/font_manager.en.translation", "res://text/en/game_tab.en.translation", "res://text/en/general.en.translation", "res://text/en/helpers.en.translation", "res://text/en/install_probe.en.translation", "res://text/en/mods_tab.en.translation", "res://text/en/mod_manager.en.translation", "res://text/en/mod_reinstall_dialog.en.translation", "res://text/en/path_helper.en.translation", "res://text/en/release_installer.en.translation", "res://text/en/release_manager.en.translation", "res://text/en/settings_manager.en.translation", "res://text/en/settings_tab.en.translation", "res://text/en/soundpacks_tab.en.translation", "res://text/en/soundpack_manager.en.translation", "res://text/en/tips.en.translation", "res://text/ru/backups_tab.ru.translation", "res://text/ru/backup_manager.ru.translation", "res://text/ru/changelog_dialog.ru.translation", "res://text/ru/dialog_buttons.ru.translation", "res://text/ru/download_manager.ru.translation", "res://text/ru/easter_egg.ru.translation", "res://text/ru/filesystem_helper.ru.translation", "res://text/ru/fonts_tab.ru.translation", "res://text/ru/font_help_dialog.ru.translation", "res://text/ru/font_info.ru.translation", "res://text/ru/font_manager.ru.translation", "res://text/ru/game_tab.ru.translation", "res://text/ru/general.ru.translation", "res://text/ru/helpers.ru.translation", "res://text/ru/install_probe.ru.translation", "res://text/ru/mods_tab.ru.translation", "res://text/ru/mod_manager.ru.translation", "res://text/ru/mod_reinstall_dialog.ru.translation", "res://text/ru/path_helper.en.translation", "res://text/ru/release_installer.ru.translation", "res://text/ru/release_manager.ru.translation", "res://text/ru/settings_manager.ru.translation", "res://text/ru/settings_tab.ru.translation", "res://text/ru/soundpacks_tab.ru.translation", "res://text/ru/soundpack_manager.ru.translation", "res://text/ru/tips.ru.translation", "res://text/zh/backups_tab.zh.translation", "res://text/zh/backup_manager.zh.translation", "res://text/zh/changelog_dialog.zh.translation", "res://text/zh/dialog_buttons.zh.translation", "res://text/zh/download_manager.zh.translation", "res://text/zh/easter_egg.zh.translation", "res://text/zh/filesystem_helper.zh.translation", "res://text/zh/fonts_tab.zh.translation", "res://text/zh/font_help_dialog.zh.translation", "res://text/zh/font_info.zh.translation", "res://text/zh/font_manager.zh.translation", "res://text/zh/game_tab.zh.translation", "res://text/zh/general.zh.translation", "res://text/zh/helpers.zh.translation", "res://text/zh/install_probe.zh.translation", "res://text/zh/mods_tab.zh.translation", "res://text/zh/mod_manager.zh.translation", "res://text/zh/mod_reinstall_dialog.zh.translation", "res://text/zh/path_helper.en.translation", "res://text/zh/release_installer.zh.translation", "res://text/zh/release_manager.zh.translation", "res://text/zh/settings_manager.zh.translation", "res://text/zh/settings_tab.zh.translation", "res://text/zh/soundpacks_tab.zh.translation", "res://text/zh/soundpack_manager.zh.translation", "res://text/zh/tips.zh.translation", "res://text/fr/backups_tab.fr.translation", "res://text/fr/backup_manager.fr.translation", "res://text/fr/changelog_dialog.fr.translation", "res://text/fr/dialog_buttons.fr.translation", "res://text/fr/download_manager.fr.translation", "res://text/fr/easter_egg.fr.translation", "res://text/fr/filesystem_helper.fr.translation", "res://text/fr/fonts_tab.fr.translation", "res://text/fr/font_help_dialog.fr.translation", "res://text/fr/font_info.fr.translation", "res://text/fr/font_manager.fr.translation", "res://text/fr/game_tab.fr.translation", "res://text/fr/general.fr.translation", "res://text/fr/helpers.fr.translation", "res://text/fr/install_probe.fr.translation", "res://text/fr/mods_tab.fr.translation", "res://text/fr/mod_manager.fr.translation", "res://text/fr/mod_reinstall_dialog.fr.translation", "res://text/fr/path_helper.en.translation", "res://text/fr/release_installer.fr.translation", "res://text/fr/release_manager.fr.translation", "res://text/fr/settings_manager.fr.translation", "res://text/fr/settings_tab.fr.translation", "res://text/fr/soundpacks_tab.fr.translation", "res://text/fr/soundpack_manager.fr.translation", "res://text/fr/tips.fr.translation", "res://text/cs/backups_tab.cs.translation", "res://text/cs/backup_manager.cs.translation", "res://text/cs/changelog_dialog.cs.translation", "res://text/cs/dialog_buttons.cs.translation", "res://text/cs/download_manager.cs.translation", "res://text/cs/easter_egg.cs.translation", "res://text/cs/filesystem_helper.cs.translation", "res://text/cs/fonts_tab.cs.translation", "res://text/cs/font_help_dialog.cs.translation", "res://text/cs/font_info.cs.translation", "res://text/cs/font_manager.cs.translation", "res://text/cs/game_tab.cs.translation", "res://text/cs/general.cs.translation", "res://text/cs/helpers.cs.translation", "res://text/cs/install_probe.cs.translation", "res://text/cs/mods_tab.cs.translation", "res://text/cs/mods_tab.en.translation", "res://text/cs/mod_manager.cs.translation", "res://text/cs/mod_reinstall_dialog.cs.translation", "res://text/cs/path_helper.en.translation", "res://text/cs/release_installer.cs.translation", "res://text/cs/release_manager.cs.translation", "res://text/cs/settings_manager.cs.translation", "res://text/cs/settings_tab.cs.translation", "res://text/cs/soundpacks_tab.cs.translation", "res://text/cs/soundpack_manager.cs.translation", "res://text/cs/tips.cs.translation", "res://text/es/backups_tab.es.translation", "res://text/es/backup_manager.es.translation", "res://text/es/changelog_dialog.es.translation", "res://text/es/dialog_buttons.es.translation", "res://text/es/download_manager.es.translation", "res://text/es/easter_egg.es.translation", "res://text/es/filesystem_helper.es.translation", "res://text/es/fonts_tab.es.translation", "res://text/es/font_help_dialog.es.translation", "res://text/es/font_info.es.translation", "res://text/es/font_manager.es.translation", "res://text/es/game_tab.es.translation", "res://text/es/general.es.translation", "res://text/es/helpers.es.translation", "res://text/es/install_probe.es.translation", "res://text/es/mods_tab.es.translation", "res://text/es/mod_manager.es.translation", "res://text/es/mod_reinstall_dialog.es.translation", "res://text/es/path_helper.en.translation", "res://text/es/release_installer.es.translation", "res://text/es/release_manager.es.translation", "res://text/es/settings_manager.es.translation", "res://text/es/settings_tab.es.translation", "res://text/es/soundpacks_tab.es.translation", "res://text/es/soundpack_manager.es.translation", "res://text/es/tips.es.translation", "res://text/pl/backups_tab.pl.translation", "res://text/pl/backup_manager.pl.translation", "res://text/pl/changelog_dialog.pl.translation", "res://text/pl/dialog_buttons.pl.translation", "res://text/pl/download_manager.pl.translation", "res://text/pl/easter_egg.pl.translation", "res://text/pl/filesystem_helper.pl.translation", "res://text/pl/fonts_tab.pl.translation", "res://text/pl/font_help_dialog.pl.translation", "res://text/pl/font_info.pl.translation", "res://text/pl/font_manager.pl.translation", "res://text/pl/game_tab.pl.translation", "res://text/pl/general.pl.translation", "res://text/pl/helpers.pl.translation", "res://text/pl/install_probe.pl.translation", "res://text/pl/mods_tab.pl.translation", "res://text/pl/mod_manager.pl.translation", "res://text/pl/mod_reinstall_dialog.pl.translation", "res://text/pl/path_helper.en.translation", "res://text/pl/release_installer.pl.translation", "res://text/pl/release_manager.pl.translation", "res://text/pl/settings_manager.pl.translation", "res://text/pl/settings_tab.pl.translation", "res://text/pl/soundpacks_tab.pl.translation", "res://text/pl/soundpack_manager.pl.translation", "res://text/pl/tips.pl.translation", "res://text/tr/backups_tab.tr.translation", "res://text/tr/backup_manager.tr.translation", "res://text/tr/changelog_dialog.tr.translation", "res://text/tr/dialog_buttons.tr.translation", "res://text/tr/download_manager.tr.translation", "res://text/tr/easter_egg.tr.translation", "res://text/tr/filesystem_helper.tr.translation", "res://text/tr/fonts_tab.tr.translation", "res://text/tr/font_help_dialog.tr.translation", "res://text/tr/font_info.tr.translation", "res://text/tr/font_manager.tr.translation", "res://text/tr/game_tab.tr.translation", "res://text/tr/general.tr.translation", "res://text/tr/helpers.tr.translation", "res://text/tr/install_probe.tr.translation", "res://text/tr/mods_tab.tr.translation", "res://text/tr/mod_manager.tr.translation", "res://text/tr/mod_reinstall_dialog.tr.translation", "res://text/tr/path_helper.en.translation", "res://text/tr/release_installer.tr.translation", "res://text/tr/release_manager.tr.translation", "res://text/tr/settings_manager.tr.translation", "res://text/tr/settings_tab.tr.translation", "res://text/tr/soundpacks_tab.tr.translation", "res://text/tr/soundpack_manager.tr.translation", "res://text/tr/tips.tr.translation", "res://text/pt/backups_tab.pt.translation", "res://text/pt/backup_manager.pt.translation", "res://text/pt/changelog_dialog.pt.translation", "res://text/pt/dialog_buttons.pt.translation", "res://text/pt/download_manager.pt.translation", "res://text/pt/easter_egg.pt.translation", "res://text/pt/filesystem_helper.pt.translation", "res://text/pt/fonts_tab.pt.translation", "res://text/pt/font_help_dialog.pt.translation", "res://text/pt/font_info.pt.translation", "res://text/pt/font_manager.pt.translation", "res://text/pt/game_tab.pt.translation", "res://text/pt/general.pt.translation", "res://text/pt/helpers.pt.translation", "res://text/pt/install_probe.pt.translation", "res://text/pt/mods_tab.pt.translation", "res://text/pt/mod_manager.pt.translation", "res://text/pt/mod_reinstall_dialog.pt.translation", "res://text/pt/release_installer.pt.translation", "res://text/pt/release_manager.pt.translation", "res://text/pt/settings_manager.pt.translation", "res://text/pt/settings_tab.pt.translation", "res://text/pt/soundpacks_tab.pt.translation", "res://text/pt/soundpack_manager.pt.translation", "res://text/pt/tips.pt.translation", "res://text/ko/backups_tab.ko.translation", "res://text/ko/backup_manager.ko.translation", "res://text/ko/changelog_dialog.ko.translation", "res://text/ko/dialog_buttons.ko.translation", "res://text/ko/download_manager.ko.translation", "res://text/ko/easter_egg.ko.translation", "res://text/ko/filesystem_helper.ko.translation", "res://text/ko/fonts_tab.ko.translation", "res://text/ko/font_help_dialog.ko.translation", "res://text/ko/font_info.ko.translation", "res://text/ko/font_manager.ko.translation", "res://text/ko/game_tab.ko.translation", "res://text/ko/general.ko.translation", "res://text/ko/helpers.ko.translation", "res://text/ko/install_probe.ko.translation", "res://text/ko/mods_tab.ko.translation", "res://text/ko/mod_manager.ko.translation", "res://text/ko/mod_reinstall_dialog.ko.translation", "res://text/ko/release_installer.ko.translation", "res://text/ko/release_manager.ko.translation", "res://text/ko/settings_manager.ko.translation", "res://text/ko/settings_tab.ko.translation", "res://text/ko/soundpacks_tab.ko.translation", "res://text/ko/soundpack_manager.ko.translation", "res://text/ko/tips.ko.translation") + [locale] translations=PackedStringArray("res://text/en/backups_tab.en.translation", "res://text/en/backup_manager.en.translation", "res://text/en/changelog_dialog.en.translation", "res://text/en/dialog_buttons.en.translation", "res://text/en/download_manager.en.translation", "res://text/en/easter_egg.en.translation", "res://text/en/filesystem_helper.en.translation", "res://text/en/fonts_tab.en.translation", "res://text/en/font_help_dialog.en.translation", "res://text/en/font_info.en.translation", "res://text/en/font_manager.en.translation", "res://text/en/game_tab.en.translation", "res://text/en/general.en.translation", "res://text/en/install_probe.en.translation", "res://text/en/mods_tab.en.translation", "res://text/en/mod_manager.en.translation", "res://text/en/mod_reinstall_dialog.en.translation", "res://text/en/release_installer.en.translation", "res://text/en/release_manager.en.translation", "res://text/en/settings_manager.en.translation", "res://text/en/settings_tab.en.translation", "res://text/en/soundpacks_tab.en.translation", "res://text/en/soundpack_manager.en.translation", "res://text/en/tips.en.translation", "res://text/ru/backups_tab.ru.translation", "res://text/ru/backup_manager.ru.translation", "res://text/ru/changelog_dialog.ru.translation", "res://text/ru/dialog_buttons.ru.translation", "res://text/ru/download_manager.ru.translation", "res://text/ru/easter_egg.ru.translation", "res://text/ru/filesystem_helper.ru.translation", "res://text/ru/fonts_tab.ru.translation", "res://text/ru/font_help_dialog.ru.translation", "res://text/ru/font_info.ru.translation", "res://text/ru/font_manager.ru.translation", "res://text/ru/game_tab.ru.translation", "res://text/ru/general.ru.translation", "res://text/ru/install_probe.ru.translation", "res://text/ru/mods_tab.ru.translation", "res://text/ru/mod_manager.ru.translation", "res://text/ru/mod_reinstall_dialog.ru.translation", "res://text/ru/release_installer.ru.translation", "res://text/ru/release_manager.ru.translation", "res://text/ru/settings_manager.ru.translation", "res://text/ru/settings_tab.ru.translation", "res://text/ru/soundpacks_tab.ru.translation", "res://text/ru/soundpack_manager.ru.translation", "res://text/ru/tips.ru.translation", "res://text/zh/backups_tab.zh.translation", "res://text/zh/backup_manager.zh.translation", "res://text/zh/changelog_dialog.zh.translation", "res://text/zh/dialog_buttons.zh.translation", "res://text/zh/download_manager.zh.translation", "res://text/zh/easter_egg.zh.translation", "res://text/zh/filesystem_helper.zh.translation", "res://text/zh/fonts_tab.zh.translation", "res://text/zh/font_help_dialog.zh.translation", "res://text/zh/font_info.zh.translation", "res://text/zh/font_manager.zh.translation", "res://text/zh/game_tab.zh.translation", "res://text/zh/general.zh.translation", "res://text/zh/install_probe.zh.translation", "res://text/zh/mods_tab.zh.translation", "res://text/zh/mod_manager.zh.translation", "res://text/zh/mod_reinstall_dialog.zh.translation", "res://text/zh/release_installer.zh.translation", "res://text/zh/release_manager.zh.translation", "res://text/zh/settings_manager.zh.translation", "res://text/zh/settings_tab.zh.translation", "res://text/zh/soundpacks_tab.zh.translation", "res://text/zh/soundpack_manager.zh.translation", "res://text/zh/tips.zh.translation", "res://text/fr/backups_tab.fr.translation", "res://text/fr/backup_manager.fr.translation", "res://text/fr/changelog_dialog.fr.translation", "res://text/fr/dialog_buttons.fr.translation", "res://text/fr/download_manager.fr.translation", "res://text/fr/easter_egg.fr.translation", "res://text/fr/filesystem_helper.fr.translation", "res://text/fr/fonts_tab.fr.translation", "res://text/fr/font_help_dialog.fr.translation", "res://text/fr/font_info.fr.translation", "res://text/fr/font_manager.fr.translation", "res://text/fr/game_tab.fr.translation", "res://text/fr/general.fr.translation", "res://text/fr/install_probe.fr.translation", "res://text/fr/mods_tab.fr.translation", "res://text/fr/mod_manager.fr.translation", "res://text/fr/mod_reinstall_dialog.fr.translation", "res://text/fr/release_installer.fr.translation", "res://text/fr/release_manager.fr.translation", "res://text/fr/settings_manager.fr.translation", "res://text/fr/settings_tab.fr.translation", "res://text/fr/soundpacks_tab.fr.translation", "res://text/fr/soundpack_manager.fr.translation", "res://text/fr/tips.fr.translation", "res://text/en/helpers.en.translation", "res://text/fr/helpers.fr.translation", "res://text/ru/helpers.ru.translation", "res://text/zh/helpers.zh.translation", "res://text/cs/backups_tab.cs.translation", "res://text/cs/backup_manager.cs.translation", "res://text/cs/changelog_dialog.cs.translation", "res://text/cs/dialog_buttons.cs.translation", "res://text/cs/download_manager.cs.translation", "res://text/cs/easter_egg.cs.translation", "res://text/cs/filesystem_helper.cs.translation", "res://text/cs/fonts_tab.cs.translation", "res://text/cs/font_help_dialog.cs.translation", "res://text/cs/font_info.cs.translation", "res://text/cs/font_manager.cs.translation", "res://text/cs/game_tab.cs.translation", "res://text/cs/general.cs.translation", "res://text/cs/helpers.cs.translation", "res://text/cs/install_probe.cs.translation", "res://text/cs/mods_tab.cs.translation", "res://text/cs/mod_manager.cs.translation", "res://text/cs/mod_reinstall_dialog.cs.translation", "res://text/cs/release_installer.cs.translation", "res://text/cs/release_manager.cs.translation", "res://text/cs/settings_manager.cs.translation", "res://text/cs/settings_tab.cs.translation", "res://text/cs/soundpacks_tab.cs.translation", "res://text/cs/soundpack_manager.cs.translation", "res://text/cs/tips.cs.translation", "res://text/es/backups_tab.es.translation", "res://text/es/backup_manager.es.translation", "res://text/es/changelog_dialog.es.translation", "res://text/es/dialog_buttons.es.translation", "res://text/es/download_manager.es.translation", "res://text/es/easter_egg.es.translation", "res://text/es/filesystem_helper.es.translation", "res://text/es/helpers.es.translation", "res://text/es/general.es.translation", "res://text/es/game_tab.es.translation", "res://text/es/font_manager.es.translation", "res://text/es/font_info.es.translation", "res://text/es/font_help_dialog.es.translation", "res://text/es/fonts_tab.es.translation", "res://text/es/install_probe.es.translation", "res://text/es/mods_tab.es.translation", "res://text/es/mod_manager.es.translation", "res://text/es/mod_reinstall_dialog.es.translation", "res://text/es/release_installer.es.translation", "res://text/es/release_manager.es.translation", "res://text/es/settings_manager.es.translation", "res://text/es/settings_tab.es.translation", "res://text/es/soundpacks_tab.es.translation", "res://text/es/soundpack_manager.es.translation", "res://text/es/tips.es.translation", "res://text/pl/backups_tab.pl.translation", "res://text/pl/backup_manager.pl.translation", "res://text/pl/changelog_dialog.pl.translation", "res://text/pl/dialog_buttons.pl.translation", "res://text/pl/download_manager.pl.translation", "res://text/pl/easter_egg.pl.translation", "res://text/pl/filesystem_helper.pl.translation", "res://text/pl/fonts_tab.pl.translation", "res://text/pl/font_help_dialog.pl.translation", "res://text/pl/font_info.pl.translation", "res://text/pl/font_manager.pl.translation", "res://text/pl/game_tab.pl.translation", "res://text/pl/general.pl.translation", "res://text/pl/helpers.pl.translation", "res://text/pl/install_probe.pl.translation", "res://text/pl/mods_tab.pl.translation", "res://text/pl/mod_manager.pl.translation", "res://text/pl/mod_reinstall_dialog.pl.translation", "res://text/pl/release_installer.pl.translation", "res://text/pl/release_manager.pl.translation", "res://text/pl/settings_manager.pl.translation", "res://text/pl/settings_tab.pl.translation", "res://text/pl/soundpacks_tab.pl.translation", "res://text/pl/soundpack_manager.pl.translation", "res://text/pl/tips.pl.translation", "res://text/tr/backups_tab.tr.translation", "res://text/tr/backup_manager.tr.translation", "res://text/tr/changelog_dialog.tr.translation", "res://text/tr/dialog_buttons.tr.translation", "res://text/tr/download_manager.tr.translation", "res://text/tr/easter_egg.tr.translation", "res://text/tr/filesystem_helper.tr.translation", "res://text/tr/fonts_tab.tr.translation", "res://text/tr/font_help_dialog.tr.translation", "res://text/tr/font_info.tr.translation", "res://text/tr/font_manager.tr.translation", "res://text/tr/game_tab.tr.translation", "res://text/tr/general.tr.translation", "res://text/tr/helpers.tr.translation", "res://text/tr/install_probe.tr.translation", "res://text/tr/mods_tab.tr.translation", "res://text/tr/mod_manager.tr.translation", "res://text/tr/mod_reinstall_dialog.tr.translation", "res://text/tr/release_installer.tr.translation", "res://text/tr/release_manager.tr.translation", "res://text/tr/settings_manager.tr.translation", "res://text/tr/settings_tab.tr.translation", "res://text/tr/soundpacks_tab.tr.translation", "res://text/tr/soundpack_manager.tr.translation", "res://text/tr/tips.tr.translation", "res://text/pt/backups_tab.pt.translation", "res://text/pt/backup_manager.pt.translation", "res://text/pt/changelog_dialog.pt.translation", "res://text/pt/dialog_buttons.pt.translation", "res://text/pt/download_manager.pt.translation", "res://text/pt/easter_egg.pt.translation", "res://text/pt/filesystem_helper.pt.translation", "res://text/pt/fonts_tab.pt.translation", "res://text/pt/font_help_dialog.pt.translation", "res://text/pt/font_info.pt.translation", "res://text/pt/font_manager.pt.translation", "res://text/pt/game_tab.pt.translation", "res://text/pt/general.pt.translation", "res://text/pt/helpers.pt.translation", "res://text/pt/install_probe.pt.translation", "res://text/pt/mods_tab.pt.translation", "res://text/pt/mod_manager.pt.translation", "res://text/pt/mod_reinstall_dialog.pt.translation", "res://text/pt/release_installer.pt.translation", "res://text/pt/release_manager.pt.translation", "res://text/pt/settings_manager.pt.translation", "res://text/pt/settings_tab.pt.translation", "res://text/pt/soundpacks_tab.pt.translation", "res://text/pt/soundpack_manager.pt.translation", "res://text/pt/tips.pt.translation", "res://text/ko/backups_tab.ko.translation", "res://text/ko/backup_manager.ko.translation", "res://text/ko/changelog_dialog.ko.translation", "res://text/ko/dialog_buttons.ko.translation", "res://text/ko/download_manager.ko.translation", "res://text/ko/easter_egg.ko.translation", "res://text/ko/filesystem_helper.ko.translation", "res://text/ko/fonts_tab.ko.translation", "res://text/ko/font_help_dialog.ko.translation", "res://text/ko/font_info.ko.translation", "res://text/ko/font_manager.ko.translation", "res://text/ko/game_tab.ko.translation", "res://text/ko/general.ko.translation", "res://text/ko/helpers.ko.translation", "res://text/ko/install_probe.ko.translation", "res://text/ko/mods_tab.ko.translation", "res://text/ko/mod_manager.ko.translation", "res://text/ko/mod_reinstall_dialog.ko.translation", "res://text/ko/release_installer.ko.translation", "res://text/ko/release_manager.ko.translation", "res://text/ko/settings_manager.ko.translation", "res://text/ko/settings_tab.ko.translation", "res://text/ko/soundpacks_tab.ko.translation", "res://text/ko/soundpack_manager.ko.translation", "res://text/ko/tips.ko.translation") From ce354b58579d8b803796b80223c39ec6bf3b95ea Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Thu, 25 Jul 2024 00:12:24 +0100 Subject: [PATCH 05/18] Few more assorted fixes --- scenes/Catapult.tscn | 7 ++-- scenes/ChangelogDialog.tscn | 70 +++++++++------------------------- scenes/FontSizeHelpDialog.tscn | 51 +++++++++---------------- scenes/ModReinstallDialog.tscn | 67 ++++++++------------------------ scripts/ChangelogDialod.gd | 6 +-- scripts/ModManager.gd | 9 ++--- scripts/download_manager.gd | 4 +- scripts/scalable_theme.gd | 3 ++ scripts/status.gd | 2 +- 9 files changed, 66 insertions(+), 153 deletions(-) diff --git a/scenes/Catapult.tscn b/scenes/Catapult.tscn index 578cc4f0..42b28e38 100644 --- a/scenes/Catapult.tscn +++ b/scenes/Catapult.tscn @@ -15,7 +15,7 @@ [ext_resource type="Script" path="res://scripts/Tabs.gd" id="16"] [ext_resource type="Script" path="res://scripts/ItemList.gd" id="17"] [ext_resource type="Script" path="res://scripts/ModsUI.gd" id="18"] -[ext_resource type="PackedScene" path="res://scenes/ModReinstallDialog.tscn" id="20"] +[ext_resource type="PackedScene" uid="uid://chyqjehe0nmxq" path="res://scenes/ModReinstallDialog.tscn" id="20"] [ext_resource type="Texture2D" uid="uid://blp7rq8cvi0u5" path="res://icons/lang/tex_lang_en.res" id="20_ey4vo"] [ext_resource type="Texture2D" path="res://icons/lang/tex_lang_fr.res" id="21_08o67"] [ext_resource type="Texture2D" path="res://icons/lang/tex_lang_ru.res" id="22_mts0p"] @@ -29,11 +29,11 @@ [ext_resource type="Texture2D" path="res://icons/lang/tex_lang_tr.res" id="27_pnnps"] [ext_resource type="Script" path="res://scripts/FontManager.gd" id="28"] [ext_resource type="Texture2D" path="res://icons/lang/tex_lang_pt.res" id="28_0614g"] -[ext_resource type="PackedScene" path="res://scenes/FontSizeHelpDialog.tscn" id="29"] +[ext_resource type="PackedScene" uid="uid://ciqb5ygi2n5yp" path="res://scenes/FontSizeHelpDialog.tscn" id="29"] [ext_resource type="Texture2D" path="res://icons/lang/tex_lang_ko.res" id="29_ryetc"] [ext_resource type="Texture2D" path="res://icons/theme/tex_godot3.res" id="30_mx4ch"] [ext_resource type="Texture2D" path="res://icons/theme/tex_light.res" id="31_nhi6l"] -[ext_resource type="PackedScene" path="res://scenes/ChangelogDialog.tscn" id="32"] +[ext_resource type="PackedScene" uid="uid://b476fjhyidej5" path="res://scenes/ChangelogDialog.tscn" id="32"] [ext_resource type="Texture2D" path="res://icons/theme/tex_grey.res" id="32_kej4f"] [ext_resource type="Script" path="res://scripts/BackupsUI.gd" id="33"] [ext_resource type="Texture2D" path="res://icons/theme/tex_solarized_dark.res" id="33_vl3fl"] @@ -395,7 +395,6 @@ dialog_text = "(this text is assigned at runtime)" dialog_autowrap = true [node name="ModReinstallDialog" parent="Main/TabBar/Mods" instance=ExtResource("20")] -visible = false [node name="Soundpacks" type="VBoxContainer" parent="Main/TabBar"] visible = false diff --git a/scenes/ChangelogDialog.tscn b/scenes/ChangelogDialog.tscn index af8500b9..1fbd47b7 100644 --- a/scenes/ChangelogDialog.tscn +++ b/scenes/ChangelogDialog.tscn @@ -1,81 +1,47 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=6 format=3 uid="uid://b476fjhyidej5"] -[ext_resource path="res://scripts/ChangelogDialod.gd" type="Script" id=1] -[ext_resource path="res://fonts/OpenSans-SemiboldItalic.tres" type="FontFile" id=2] -[ext_resource path="res://fonts/OpenSans-Regular.tres" type="FontFile" id=3] -[ext_resource path="res://fonts/OpenSans-Italic.tres" type="FontFile" id=4] -[ext_resource path="res://fonts/OpenSans-Semibold.tres" type="FontFile" id=5] +[ext_resource type="Script" path="res://scripts/ChangelogDialod.gd" id="1"] +[ext_resource type="FontFile" path="res://fonts/OpenSans-SemiboldItalic.tres" id="2"] +[ext_resource type="FontFile" path="res://fonts/OpenSans-Regular.tres" id="3"] +[ext_resource type="FontFile" path="res://fonts/OpenSans-Italic.tres" id="4"] +[ext_resource type="FontFile" path="res://fonts/OpenSans-Semibold.tres" id="5"] [node name="ChangelogDialog" type="Window"] -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -240.0 -offset_top = -160.0 -offset_right = 240.0 -offset_bottom = 160.0 -window_title = "dlg_changelog_title" -script = ExtResource( 1 ) -__meta__ = { -"_edit_use_anchors_": false -} +visible = false +script = ExtResource("1") [node name="Panel" type="PanelContainer" parent="."] +anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -__meta__ = { -"_edit_use_anchors_": false -} [node name="Margin" type="MarginContainer" parent="Panel"] -offset_left = 9.0 -offset_top = 6.0 -offset_right = 471.0 -offset_bottom = 314.0 +layout_mode = 2 theme_override_constants/margin_top = 8 theme_override_constants/margin_bottom = 8 -__meta__ = { -"_edit_use_anchors_": false -} [node name="VBox" type="VBoxContainer" parent="Panel/Margin"] -offset_top = 8.0 -offset_right = 462.0 -offset_bottom = 300.0 +layout_mode = 2 theme_override_constants/separation = 8 -__meta__ = { -"_edit_use_anchors_": false -} [node name="ChangelogText" type="RichTextLabel" parent="Panel/Margin/VBox"] -offset_right = 462.0 -offset_bottom = 255.0 +layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -theme_override_fonts/bold_italics_font = ExtResource( 2 ) -theme_override_fonts/italics_font = ExtResource( 4 ) -theme_override_fonts/bold_font = ExtResource( 5 ) -theme_override_fonts/normal_font = ExtResource( 3 ) +theme_override_fonts/normal_font = ExtResource("3") +theme_override_fonts/bold_font = ExtResource("5") +theme_override_fonts/italics_font = ExtResource("4") +theme_override_fonts/bold_italics_font = ExtResource("2") bbcode_enabled = true text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." -__meta__ = { -"_edit_use_anchors_": false -} [node name="BtnCloseChangelog" type="Button" parent="Panel/Margin/VBox"] -offset_left = 201.0 -offset_top = 263.0 -offset_right = 260.0 -offset_bottom = 292.0 +layout_mode = 2 size_flags_horizontal = 4 text = "btn_close" -__meta__ = { -"_edit_use_anchors_": false -} [node name="PullRequests" type="HTTPRequest" parent="."] -timeout = 20 +timeout = 20.0 [connection signal="meta_clicked" from="Panel/Margin/VBox/ChangelogText" to="." method="_on_ChangelogText_meta_clicked"] [connection signal="pressed" from="Panel/Margin/VBox/BtnCloseChangelog" to="." method="_on_BtnCloseChangelog_pressed"] diff --git a/scenes/FontSizeHelpDialog.tscn b/scenes/FontSizeHelpDialog.tscn index 9ff1b7ed..f511088d 100644 --- a/scenes/FontSizeHelpDialog.tscn +++ b/scenes/FontSizeHelpDialog.tscn @@ -1,57 +1,40 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=6 format=3 uid="uid://ciqb5ygi2n5yp"] -[ext_resource path="res://fonts/OpenSans-Regular.tres" type="FontFile" id=1] -[ext_resource path="res://fonts/OpenSans-SemiboldItalic.tres" type="FontFile" id=2] -[ext_resource path="res://fonts/OpenSans-Italic.tres" type="FontFile" id=3] -[ext_resource path="res://fonts/OpenSans-Semibold.tres" type="FontFile" id=4] -[ext_resource path="res://scripts/FontSizeHelpDialog.gd" type="Script" id=5] +[ext_resource type="FontFile" path="res://fonts/OpenSans-Regular.tres" id="1"] +[ext_resource type="FontFile" path="res://fonts/OpenSans-SemiboldItalic.tres" id="2"] +[ext_resource type="FontFile" path="res://fonts/OpenSans-Italic.tres" id="3"] +[ext_resource type="FontFile" path="res://fonts/OpenSans-Semibold.tres" id="4"] +[ext_resource type="Script" path="res://scripts/FontSizeHelpDialog.gd" id="5"] [node name="FontSizeHelpDialog" type="Window"] -anchor_right = 1.0 -anchor_bottom = 1.0 -window_title = "dlg_font_size_help_title" -script = ExtResource( 5 ) -__meta__ = { -"_edit_use_anchors_": false -} +visible = false +script = ExtResource("5") [node name="Panel" type="PanelContainer" parent="."] +anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -__meta__ = { -"_edit_use_anchors_": false -} [node name="Margin" type="MarginContainer" parent="Panel"] -offset_left = 14.0 -offset_top = 14.0 -offset_right = 586.0 -offset_bottom = 686.0 +layout_mode = 2 theme_override_constants/margin_top = 8 theme_override_constants/margin_bottom = 8 [node name="VBox" type="VBoxContainer" parent="Panel/Margin"] -offset_top = 8.0 -offset_right = 572.0 -offset_bottom = 664.0 +layout_mode = 2 [node name="Help" type="RichTextLabel" parent="Panel/Margin/VBox"] -offset_right = 572.0 -offset_bottom = 619.0 +layout_mode = 2 size_flags_vertical = 3 -theme_override_fonts/bold_italics_font = ExtResource( 2 ) -theme_override_fonts/italics_font = ExtResource( 3 ) -theme_override_fonts/bold_font = ExtResource( 4 ) -theme_override_fonts/normal_font = ExtResource( 1 ) +theme_override_fonts/normal_font = ExtResource("1") +theme_override_fonts/bold_font = ExtResource("4") +theme_override_fonts/italics_font = ExtResource("3") +theme_override_fonts/bold_italics_font = ExtResource("2") bbcode_enabled = true text = "dlg_font_config_help" -text = "dlg_font_config_help" [node name="BtnOK" type="Button" parent="Panel/Margin/VBox"] -offset_left = 245.0 -offset_top = 627.0 -offset_right = 327.0 -offset_bottom = 664.0 +layout_mode = 2 size_flags_horizontal = 4 text = "Close" diff --git a/scenes/ModReinstallDialog.tscn b/scenes/ModReinstallDialog.tscn index 253f6acf..b451a999 100644 --- a/scenes/ModReinstallDialog.tscn +++ b/scenes/ModReinstallDialog.tscn @@ -1,88 +1,51 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=2 format=3 uid="uid://chyqjehe0nmxq"] -[ext_resource path="res://scripts/ModReinstallDialog.gd" type="Script" id=1] +[ext_resource type="Script" path="res://scripts/ModReinstallDialog.gd" id="1"] [node name="ModReinstallDialog" type="Window"] -visible = true -anchor_right = 1.0 -anchor_bottom = 0.268 -offset_right = -150.0 -offset_bottom = -14.4 -size_flags_horizontal = 3 -size_flags_vertical = 3 -window_title = "dlg_mod_reinstall_title" -script = ExtResource( 1 ) -__meta__ = { -"_edit_use_anchors_": true -} +visible = false +script = ExtResource("1") [node name="Panel" type="PanelContainer" parent="."] +anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -__meta__ = { -"_edit_use_anchors_": false -} [node name="Margin" type="MarginContainer" parent="Panel"] -offset_left = 14.0 -offset_top = 14.0 -offset_right = 486.0 -offset_bottom = 186.0 -theme_override_constants/margin_right = 16 -theme_override_constants/margin_top = 16 +layout_mode = 2 theme_override_constants/margin_left = 16 +theme_override_constants/margin_top = 16 +theme_override_constants/margin_right = 16 theme_override_constants/margin_bottom = 16 -__meta__ = { -"_edit_use_anchors_": false -} [node name="VBox" type="VBoxContainer" parent="Panel/Margin"] -offset_left = 16.0 -offset_top = 31.0 -offset_right = 456.0 -offset_bottom = 140.0 +layout_mode = 2 size_flags_vertical = 4 -__meta__ = { -"_edit_use_anchors_": false -} [node name="Label" type="Label" parent="Panel/Margin/VBox"] -offset_right = 440.0 -offset_bottom = 56.0 +layout_mode = 2 text = "(this text is assigned at runtime) (this text is assigned at runtime)" -align = 1 -autowrap = true [node name="Spacer" type="Control" parent="Panel/Margin/VBox"] -offset_top = 64.0 -offset_right = 440.0 -offset_bottom = 64.0 +layout_mode = 2 [node name="HBox" type="HBoxContainer" parent="Panel/Margin/VBox"] -offset_left = 8.0 -offset_top = 72.0 -offset_right = 432.0 -offset_bottom = 109.0 +layout_mode = 2 size_flags_horizontal = 4 [node name="BtnYes" type="Button" parent="Panel/Margin/VBox/HBox"] -offset_right = 157.0 -offset_bottom = 37.0 +layout_mode = 2 size_flags_horizontal = 4 text = "btn_reinstall" [node name="BtnNo" type="Button" parent="Panel/Margin/VBox/HBox"] -offset_left = 165.0 -offset_right = 278.0 -offset_bottom = 37.0 +layout_mode = 2 size_flags_horizontal = 4 text = "btn_skip" [node name="BtnCancel" type="Button" parent="Panel/Margin/VBox/HBox"] -offset_left = 286.0 -offset_right = 424.0 -offset_bottom = 37.0 +layout_mode = 2 size_flags_horizontal = 4 text = "btn_cancel" diff --git a/scripts/ChangelogDialod.gd b/scripts/ChangelogDialod.gd index 339591ae..28b7f4b7 100644 --- a/scripts/ChangelogDialod.gd +++ b/scripts/ChangelogDialod.gd @@ -41,9 +41,9 @@ func download_pull_requests(): _update_proxy(_pullRequests) _pullRequests.request(url, headers) _changelogTextBox.clear() - _changelogTextBox.append_bbcode(_pr_data) + _changelogTextBox.append_text(_pr_data) _changelogTextBox.clear() - _changelogTextBox.append_bbcode(_pr_data) + _changelogTextBox.append_text(_pr_data) func _on_PullRequests_request_completed(result, response_code, headers, body): @@ -59,7 +59,7 @@ func _on_PullRequests_request_completed(result, response_code, headers, body): else: _pr_data = process_pr_data(json) _changelogTextBox.clear() - _changelogTextBox.append_bbcode(_pr_data) + _changelogTextBox.append_text(_pr_data) func process_pr_data(data): diff --git a/scripts/ModManager.gd b/scripts/ModManager.gd index 0b8d9b77..10fb41e9 100644 --- a/scripts/ModManager.gd +++ b/scripts/ModManager.gd @@ -68,14 +68,13 @@ func parse_mods_dir(mods_dir: String) -> Dictionary: if FileAccess.file_exists(modinfo): var f := FileAccess.open(modinfo, FileAccess.READ) - var test_json_conv = JSON.new() - test_json_conv.parse(f.get_as_text()) - var json = test_json_conv.get_data() - if json.error != OK: + var json := JSON.new() + var error := json.parse(f.get_as_text()) + if error != OK: Status.post(tr("msg_mod_json_parsing_failed") % modinfo, Enums.MSG_ERROR) continue - var json_result = json.result + var json_result = json.data if typeof(json_result) == TYPE_DICTIONARY: json_result = [json_result] diff --git a/scripts/download_manager.gd b/scripts/download_manager.gd index 3dd21b64..138f440e 100644 --- a/scripts/download_manager.gd +++ b/scripts/download_manager.gd @@ -61,7 +61,7 @@ func download_file(url: String, target_dir: String, target_filename: String) -> var total = _http.get_body_size() if downloaded < 1: - await get_tree().idle_frame + await get_tree().process_frame continue var delta_time = Time.get_ticks_msec() - last_progress_time @@ -72,7 +72,7 @@ func download_file(url: String, target_dir: String, target_filename: String) -> last_progress_time = Time.get_ticks_msec() last_progress_bytes = downloaded - await get_tree().idle_frame + await get_tree().process_frame func _get_progress_string(downloaded: int, total: int, diff --git a/scripts/scalable_theme.gd b/scripts/scalable_theme.gd index a1f2ab97..acec3424 100644 --- a/scripts/scalable_theme.gd +++ b/scripts/scalable_theme.gd @@ -269,6 +269,9 @@ func _save_font_properties() -> Dictionary: continue for prop in _SCALABLE_FONT_PROPS: var value = font.get(prop) + if value == null: + push_error("Font %s does not have the property %s." % [font, prop]) + continue if value > 0: font_props[font][prop] = value diff --git a/scripts/status.gd b/scripts/status.gd index 85d62622..dbcc23b5 100644 --- a/scripts/status.gd +++ b/scripts/status.gd @@ -87,4 +87,4 @@ func _flush_buffer() -> void: if _status_view: while _buffer.size() > 0: var msg = _buffer.pop_front() - _status_view.append_bbcode(msg["bb_text"]) + _status_view.append_text(msg["bb_text"]) From d0af4ff2fa809cc0610621e5dbc46c5e8307a9c3 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Thu, 25 Jul 2024 21:39:13 +0100 Subject: [PATCH 06/18] Comment out UI scaling code for now --- scripts/scalable_texture.gd | 5 +++-- scripts/scalable_theme.gd | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/scripts/scalable_texture.gd b/scripts/scalable_texture.gd index 4c40125d..4446b165 100644 --- a/scripts/scalable_texture.gd +++ b/scripts/scalable_texture.gd @@ -7,8 +7,9 @@ var _base_size: Vector2 func _init() -> void: - _base_size = self.get_size() - Geom.connect("scale_changed", Callable(self, "_on_ui_scale_changed")) + pass # FIXME + #_base_size = self.get_size() + #Geom.connect("scale_changed", Callable(self, "_on_ui_scale_changed")) func _on_ui_scale_changed(new_scale: float) -> void: diff --git a/scripts/scalable_theme.gd b/scripts/scalable_theme.gd index acec3424..fb1393ad 100644 --- a/scripts/scalable_theme.gd +++ b/scripts/scalable_theme.gd @@ -200,19 +200,20 @@ var _saved_sbox_props: Dictionary func _init() -> void: - - _saved_constants = _save_constants() - _saved_tex_sizes = _save_texture_sizes() - _saved_font_props = _save_font_properties() - _saved_sbox_props = _save_stylebox_properties() + pass # FIXME + #_saved_constants = _save_constants() + #_saved_tex_sizes = _save_texture_sizes() + #_saved_font_props = _save_font_properties() + #_saved_sbox_props = _save_stylebox_properties() func apply_scale(factor: float) -> void: - _scale_constants(factor) - _scale_textures(factor) - _scale_fonts(factor) - _scale_styleboxes(factor) + pass # FIXME + #_scale_constants(factor) + #_scale_textures(factor) + #_scale_fonts(factor) + #_scale_styleboxes(factor) func _save_constants() -> Dictionary: From 2ed65d64867df8595f74c9dfe161eba2207b4bdf Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Thu, 25 Jul 2024 22:47:44 +0100 Subject: [PATCH 07/18] Fix infinite recursion in Mod Manager --- scripts/ModManager.gd | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/scripts/ModManager.gd b/scripts/ModManager.gd index 10fb41e9..f3c48808 100644 --- a/scripts/ModManager.gd +++ b/scripts/ModManager.gd @@ -141,7 +141,7 @@ func mod_status(id: String) -> int: func refresh_installed(): - installed = {} + var _installed = {} var non_stock := {} if DirAccess.dir_exists_absolute(Paths.mods_user): @@ -158,12 +158,14 @@ func refresh_installed(): stock[id]["is_obsolete"] = false for id in non_stock: - installed[id] = non_stock[id] - installed[id]["is_stock"] = false - installed[id]["is_obsolete"] = false + _installed[id] = non_stock[id] + _installed[id]["is_stock"] = false + _installed[id]["is_obsolete"] = false for id in stock: - installed[id] = stock[id] + _installed[id] = stock[id] + + installed = _installed func refresh_available(): From cf9b9623708133870c7ae86250b204926da7518a Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sat, 27 Jul 2024 01:57:01 +0100 Subject: [PATCH 08/18] Rewrite and simplify the OS.execure wrapper --- icons/buttons/tex_download.tex | Bin 2029 -> 2032 bytes icons/lang/tex_lang_en.res | Bin 64057 -> 64057 bytes project.godot | 1 + scripts/Catapult.gd | 2 +- scripts/Debug.gd | 7 +++---- scripts/OSExecWrapper.gd | 23 --------------------- scripts/ThreadedExec.gd | 35 ++++++++++++++++++++++++++++++++ scripts/ThreadedFuncExecutor.gd | 2 +- scripts/filesystem_helper.gd | 28 +++++++++++-------------- 9 files changed, 53 insertions(+), 45 deletions(-) delete mode 100644 scripts/OSExecWrapper.gd create mode 100644 scripts/ThreadedExec.gd diff --git a/icons/buttons/tex_download.tex b/icons/buttons/tex_download.tex index 28e37b55d0d1fddf8093eead2f35c773e44d3d89..c32fe865ce6ac8b7398a1268a0980eb9b0349116 100644 GIT binary patch delta 213 zcmV;`04o3O5AY8WQd2`i0ssI201yBGG6DerBasnGf6WL0k_|2}fJ@RCoRJubk(goz zg!eXyOb*%PnVSU3y}MV(Lt=?qxUnS^)j|%GOv8<6Vl7Dl4Ns{>3C6!bVuGULVq2V~ z#y$?z=kf>q?1L7D2g7lt8+lDakwrdM>F!dMH6!U@!(L!!RpynjR)J>F}I{gX?RT|VB PiP}mr)M?SP4FTW=+jL%V delta 210 zcmV;@04@LU5A6>TQd2`i0ssI201yBGG6DerAdwMDf3*kzl1(ixfT?K=oCHnK1kIrg zq@ejG`_Ph~?M9L|<>~u*g2EKG{z$TW8>z5Y>O;17IBcg z^7|bxGxaJLe}Z$fQ7I>cby61_+!m#SQBzl0FlzNHXvAccPVy%_7L0`@yT ME%Zr=vk(E`23>Ghu>b%7 diff --git a/icons/lang/tex_lang_en.res b/icons/lang/tex_lang_en.res index af00ca3cf6ad4e44ffaf7eb7255f335fda99c825..5c782e94c5c19159313c774b802357b3135754e0 100644 GIT binary patch delta 251 zcmVG_s;AZ1 z2(gR*;2-!kzrY78Y>(onKI*7*pa;=smOtlOlCz>e!LY*7VlYE^Y_qNC)9SlmrCo2U znulhiT2ZdG3Hdi$btFF;IGq5d>CR8K@13@~n8C}@Osk|P!!c=AD?aByA2B0EBGPg) zf|8!hMuOOEB_P-~007Jji-0YLQrjmXhR7> BdLsY; delta 251 zcmVht?9FK5D1!!c&1xR0Vn_{04@L;Dx<6Y3wwFM3tFUK0V2bK1*HW>)Y?orFKI*7*A_vlMmcQqElA1;TfnkNEoe(>CY_YZI%j&zJm0fSG z*$0QCnxb4&XXNi}swEl1;Q7>`rmKapeJ{1uMGRh!VwojDn~o(SCKjJ_q7PAHWkT|j zQlgTe%?9$&*-k{}7Jx=3#s$C@N2@J_u<~a{^*2mUaGvD+2_`5iE=CnjEwfJv>hNJ4 Ba|{3g diff --git a/project.godot b/project.godot index c38f1a88..7ed0d733 100644 --- a/project.godot +++ b/project.godot @@ -36,6 +36,7 @@ Helpers="*res://scripts/helpers.gd" FS="*res://scripts/filesystem_helper.gd" Downloader="*res://scripts/download_manager.gd" TOTD="*res://scripts/totd.gd" +ThreadedExec="*res://scripts/ThreadedExec.gd" [display] diff --git a/scripts/Catapult.gd b/scripts/Catapult.gd index ccca702f..6eef806d 100644 --- a/scripts/Catapult.gd +++ b/scripts/Catapult.gd @@ -6,7 +6,7 @@ extends Node @onready var _game_info = $Main/GameInfo @onready var _game_desc = $Main/GameInfo/Description @onready var _mod_info = $Main/TabBar/Mods/ModInfo -@onready var _tabs = $Main/TabBar +@onready var _tabs = $Main/TabBar @onready var _mods = $Mods @onready var _releases = $Releases @onready var _installer = $ReleaseInstaller diff --git a/scripts/Debug.gd b/scripts/Debug.gd index 14c1cd91..c8c9ff96 100644 --- a/scripts/Debug.gd +++ b/scripts/Debug.gd @@ -62,11 +62,10 @@ func _on_Button3_pressed(): Status.post("Command data: " + str(command)) await get_tree().create_timer(2).timeout - var oew = OSExecWrapper.new() - oew.execute(command["name"], command["args"]) - await oew.process_exited + ThreadedExec.execute(command["name"], command["args"]) + await ThreadedExec.execution_finished - Status.post("Command exited with code %s. Output:\n%s" % [oew.exit_code, oew.output[0]]) + Status.post("Command exited with code %s. Output:\n%s" % [ThreadedExec.last_exit_code, ThreadedExec.output[0]]) func _on_Button4_pressed() -> void: diff --git a/scripts/OSExecWrapper.gd b/scripts/OSExecWrapper.gd deleted file mode 100644 index d6b72147..00000000 --- a/scripts/OSExecWrapper.gd +++ /dev/null @@ -1,23 +0,0 @@ -class_name OSExecWrapper -extends Object - - -signal process_exited - -var _worker: Thread -var output = [] -var exit_code = null - - -func _wrapper(path_and_args: Array) -> void: - pass # FIXME - #exit_code = OS.execute(path_and_args[0], path_and_args[1], true, output, true) - #emit_signal("process_exited") - #_worker.call_deferred("wait_to_finish") - -func execute(path: String, args: PackedStringArray) -> void: - - pass # FIXME - #_worker = Thread.new() - #_worker.start(Callable(self, "_wrapper").bind([path, args])) - diff --git a/scripts/ThreadedExec.gd b/scripts/ThreadedExec.gd new file mode 100644 index 00000000..a45b159b --- /dev/null +++ b/scripts/ThreadedExec.gd @@ -0,0 +1,35 @@ +extends Node +# A simple wrapper for the OS.execute method that does the execution in another +# thread and collects the results. + +signal execution_finished + +#var _worker: Thread +var output := [] +var last_exit_code := 0 + + +#func _wrapper(path_and_args: Array) -> void: + #pass # FIXME + #exit_code = OS.execute(path_and_args[0], path_and_args[1], true, output, true) + #emit_signal("process_exited") + #_worker.call_deferred("wait_to_finish") + +#func execute(path: String, args: PackedStringArray) -> void: + # + #pass # FIXME + #_worker = Thread.new() + #_worker.start(Callable(self, "_wrapper").bind([path, args])) + + +func execute(path: String, args: PackedStringArray) -> void: + var thread := Thread.new() + var exec_func := OS.execute.bind(path, args, output, true, true) + thread.start(exec_func) + while thread.is_alive(): + await get_tree().process_frame + last_exit_code = thread.wait_to_finish() + execution_finished.emit() + + + diff --git a/scripts/ThreadedFuncExecutor.gd b/scripts/ThreadedFuncExecutor.gd index 408d37ff..06bd2712 100644 --- a/scripts/ThreadedFuncExecutor.gd +++ b/scripts/ThreadedFuncExecutor.gd @@ -28,6 +28,6 @@ func execute(instance: Object, method: String, userdata = null, func collect(): - if _worker.is_active(): + if _worker.is_alive(): _worker.wait_to_finish() return _result diff --git a/scripts/filesystem_helper.gd b/scripts/filesystem_helper.gd index 9f4edcfc..c6fd1fc6 100644 --- a/scripts/filesystem_helper.gd +++ b/scripts/filesystem_helper.gd @@ -192,15 +192,13 @@ func extract(path: String, dest_dir: String) -> void: DirAccess.make_dir_recursive_absolute(dest_dir) Status.post(tr("msg_extracting_file") % path.get_file()) - - var oew = OSExecWrapper.new() - oew.execute(command["name"], command["args"]) - await oew.process_exited - last_extract_result = oew.exit_code - if oew.exit_code: - Status.post(tr("msg_extract_error") % oew.exit_code, Enums.MSG_ERROR) + + ThreadedExec.execute(command["name"], command["args"]) + await ThreadedExec.execution_finished + if ThreadedExec.last_exit_code != 0: + Status.post(tr("msg_extract_error") % ThreadedExec.last_exit_code, Enums.MSG_ERROR) Status.post(tr("msg_extract_failed_cmd") % str(command), Enums.MSG_DEBUG) - Status.post(tr("msg_extract_fail_output") % oew.output[0], Enums.MSG_DEBUG) + Status.post(tr("msg_extract_fail_output") % ThreadedExec.output[0], Enums.MSG_DEBUG) emit_signal("extract_done") @@ -239,14 +237,12 @@ func zip(parent: String, dir_to_zip: String, dest_zip: String) -> void: DirAccess.make_dir_recursive_absolute(Paths.tmp_dir) Status.post(tr("msg_zipping_file") % dest_zip.get_file()) - - var oew = OSExecWrapper.new() - oew.execute(command["name"], command["args"]) - await oew.process_exited - last_zip_result = oew.exit_code - if oew.exit_code: - Status.post(tr("msg_zip_error") % oew.exit_code, Enums.MSG_ERROR) + + ThreadedExec.execute(command["name"], command["args"]) + await ThreadedExec.execution_finished + if ThreadedExec.last_exit_code != 0: + Status.post(tr("msg_zip_error") % ThreadedExec.last_exit_code, Enums.MSG_ERROR) Status.post(tr("msg_extract_failed_cmd") % str(command), Enums.MSG_DEBUG) - Status.post(tr("msg_extract_fail_output") % oew.output[0], Enums.MSG_DEBUG) + Status.post(tr("msg_extract_fail_output") % ThreadedExec.last_exit_code, Enums.MSG_DEBUG) emit_signal("zip_done") From 93a27a57a002ec59b4b3d1eb784d24051760549d Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sat, 27 Jul 2024 21:21:20 +0100 Subject: [PATCH 09/18] Simplify code for threaded function calls --- icons/buttons/tex_download.tex | Bin 2032 -> 2030 bytes icons/lang/tex_lang_en.res | Bin 64057 -> 64056 bytes scripts/ThreadedExec.gd | 17 ----------- scripts/ThreadedFuncExecutor.gd | 33 --------------------- scripts/filesystem_helper.gd | 51 ++++++++++++++++---------------- 5 files changed, 25 insertions(+), 76 deletions(-) delete mode 100644 scripts/ThreadedFuncExecutor.gd diff --git a/icons/buttons/tex_download.tex b/icons/buttons/tex_download.tex index c32fe865ce6ac8b7398a1268a0980eb9b0349116..b87c729e84bc8b287889c647a22fc35fcee8b25e 100644 GIT binary patch delta 220 zcmV<203-kK5AF{UQd2`i0ssI201yBGG6DerA(0VEf4v9*l8r4dfJ@RCoRJubk(goz zg!kr&Ob*$EXl@cD_pV$W4~Zpe4KS#v7IL6u8g4`rYe@ql*9FANT=&fe*780oMjgk6SSS delta 222 zcmV<403rYG5AY8WQd2`i0ssI201yBGG6DerBasnGf6WL0k_|2}fJ@RCoRJubk(goz zg!eXyOb*%PnVSU3y}MV(Lt=?qxUnS^)j|%GOv8<6Vl7Dl4Ns{>3C6!bVuGULVq2V~ z#y$?z=kf>q?1L7D2g7lt8+lDakwrdM>F!dMH6!U@!(L!!RpynjR)J>F}I{gX?RT|VB YiP}mr)M?S;KllfJfM4JPvlju^22eC&+W-In diff --git a/icons/lang/tex_lang_en.res b/icons/lang/tex_lang_en.res index 5c782e94c5c19159313c774b802357b3135754e0..ba9b0ef191a3fbb9bd6dfb82723e6c0ade81da59 100644 GIT binary patch delta 289 zcmV++0p9+(^aHr`0})bFLqh@p0000G006G{AOMuH5k?4qRSW<&P&_w4bJ7_1eas)P z6~jN{OLdBh0s8(tO6KfNun_``cci3kTbVg`Fv<9vzY0#s9NTM8%uC;%@2 zTxz4s{R)efA{Hg-Pk6wnP%&9?LHP+@E>%~nu~*D4{(?W?=llR4BXpatP=)l-_e2e( z-#mZM6*W13Nq>Q3ji$|_X7Fk&DcmZ=qTDdJGFt~{qn@t0r%uS<`BY6)wcz>8q^8S- zw1sfB^<7%T9@REEK^u-EAXKFf_@3wkS4N9Oq~&CUH9?!s!=clafMi{b49p7)O?Qo2 nUFaa?PYmm4n4)5an%O@fF+pK5sxjjNIv{|8ks&IxRte+qWKn_` delta 289 zcmV++0p9+&^aHu{0})bFLqh@p0000G006G{AOMxI5k?4qT?_y=kUTm-G_s;AZ12(gR*;2-!kzrY78Y>(onKI*7* zpa;=smOtlzT9UJ(Kf$oV(PA(|c(bkO)9SlmrCo2UnulhiT2ZdG3Hdi$btFF;IGq5d z>CR8K@13@~n8C}@Osk|P!!c=AD?aByA2B0EBGPg)f|8!hMuOOEB_P-~007Jji-0YL nQrjmX void: - #pass # FIXME - #exit_code = OS.execute(path_and_args[0], path_and_args[1], true, output, true) - #emit_signal("process_exited") - #_worker.call_deferred("wait_to_finish") - -#func execute(path: String, args: PackedStringArray) -> void: - # - #pass # FIXME - #_worker = Thread.new() - #_worker.start(Callable(self, "_wrapper").bind([path, args])) - - func execute(path: String, args: PackedStringArray) -> void: var thread := Thread.new() var exec_func := OS.execute.bind(path, args, output, true, true) @@ -30,6 +16,3 @@ func execute(path: String, args: PackedStringArray) -> void: await get_tree().process_frame last_exit_code = thread.wait_to_finish() execution_finished.emit() - - - diff --git a/scripts/ThreadedFuncExecutor.gd b/scripts/ThreadedFuncExecutor.gd deleted file mode 100644 index 06bd2712..00000000 --- a/scripts/ThreadedFuncExecutor.gd +++ /dev/null @@ -1,33 +0,0 @@ -class_name ThreadedFuncExecutor -extends Object - -signal func_returned - -var _worker: Thread -var _result = null - - -func _wrapper(data: Array) -> void: - - if data[2]: # So you can execute functions that take no arguments. - _result = data[0].call(data[1], data[2]) - else: - _result = data[0].call(data[1]) - - call_deferred("emit_signal", "func_returned") - - -func execute(instance: Object, method: String, userdata = null, - priority = Thread.PRIORITY_NORMAL) -> void: - - _worker = Thread.new() - _result = null - var data = [instance, method, userdata] - _worker.start(Callable(self, "_wrapper").bind(data), priority) - - -func collect(): - - if _worker.is_alive(): - _worker.wait_to_finish() - return _result diff --git a/scripts/filesystem_helper.gd b/scripts/filesystem_helper.gd index c6fd1fc6..044351a3 100644 --- a/scripts/filesystem_helper.gd +++ b/scripts/filesystem_helper.gd @@ -56,11 +56,8 @@ func list_dir(path: String, recursive := false) -> Array: return result -func _copy_dir_internal(data: Array) -> void: - - var abs_path: String = data[0] - var dest_dir: String = data[1] - +func _copy_dir_internal(abs_path: String, dest_dir: String) -> void: + var dir = abs_path.get_file() var error = DirAccess.make_dir_recursive_absolute(dest_dir.path_join(dir)) @@ -76,22 +73,24 @@ func _copy_dir_internal(data: Array) -> void: Status.post(tr("msg_copy_file_failed") % [item, error], Enums.MSG_ERROR) Status.post(tr("msg_copy_file_failed_details") % [path, dest_dir.path_join(dir).path_join(item)]) elif DirAccess.dir_exists_absolute(path): - _copy_dir_internal([path, dest_dir.path_join(dir)]) + #_copy_dir_internal([path, dest_dir.path_join(dir)]) + _copy_dir_internal(path, dest_dir.path_join(dir)) + func copy_dir(abs_path: String, dest_dir: String) -> void: # Recursively copies a directory *into* a new location. - var tfe = ThreadedFuncExecutor.new() - tfe.execute(self, "_copy_dir_internal", [abs_path, dest_dir]) - await tfe.func_returned - tfe.collect() + var thread := Thread.new() + thread.start(_copy_dir_internal.bind(abs_path, dest_dir)) + while thread.is_alive(): + await get_tree().process_frame + thread.wait_to_finish() emit_signal("copy_dir_done") -func _rm_dir_internal(data: Array) -> void: +func _rm_dir_internal(abs_path: String) -> void: - var abs_path = data[0] var error for item in list_dir(abs_path): var path = abs_path.path_join(item) @@ -101,7 +100,7 @@ func _rm_dir_internal(data: Array) -> void: Status.post(tr("msg_remove_file_failed") % [item, error], Enums.MSG_ERROR) Status.post(tr("msg_remove_file_failed_details") % path, Enums.MSG_DEBUG) elif DirAccess.dir_exists_absolute(path): - _rm_dir_internal([path]) + _rm_dir_internal(path) error = DirAccess.remove_absolute(abs_path) if error: @@ -111,17 +110,15 @@ func _rm_dir_internal(data: Array) -> void: func rm_dir(abs_path: String) -> void: # Recursively removes a directory. - var tfe = ThreadedFuncExecutor.new() - tfe.execute(self, "_rm_dir_internal", [abs_path]) - await tfe.func_returned - tfe.collect() + var thread := Thread.new() + thread.start(_rm_dir_internal.bind(abs_path)) + while thread.is_alive(): + await get_tree().process_frame + thread.wait_to_finish() emit_signal("rm_dir_done") -func _move_dir_internal(data: Array) -> void: - - var abs_path: String = data[0] - var abs_dest: String = data[1] +func _move_dir_internal(abs_path: String, abs_dest: String) -> void: var error = DirAccess.make_dir_recursive_absolute(abs_dest) if error: @@ -137,7 +134,7 @@ func _move_dir_internal(data: Array) -> void: Status.post(tr("msg_move_file_failed") % [item, error], Enums.MSG_ERROR) Status.post(tr("msg_move_file_failed_details") % [path, dest]) elif DirAccess.dir_exists_absolute(path): - _move_dir_internal([path, abs_dest.path_join(item)]) + _move_dir_internal(path, abs_dest.path_join(item)) error = DirAccess.remove_absolute(abs_path) if error: @@ -148,10 +145,11 @@ func move_dir(abs_path: String, abs_dest: String) -> void: # Moves the specified directory (this is move with rename, so the last # part of dest is the new name for the directory). - var tfe = ThreadedFuncExecutor.new() - tfe.execute(self, "_move_dir_internal", [abs_path, abs_dest]) - await tfe.func_returned - tfe.collect() + var thread := Thread.new() + thread.start(_move_dir_internal.bind(abs_path, abs_dest)) + while thread.is_alive(): + await get_tree().process_frame + thread.wait_to_finish() emit_signal("move_dir_done") @@ -170,6 +168,7 @@ func extract(path: String, dest_dir: String) -> void: "args": ["-xzf", "\"\"%s\"\"" % path, "-C", "\"\"%s\"\"" % dest_dir, "--exclude=*doc/CONTRIBUTING.md", "--exclude=*doc/JSON_LOADING_ORDER.md"] # Godot can't operate on symlinks just yet, so we have to avoid them. + # TODO: Check if this has changed in Godot 4. } var command_windows = { "name": "cmd", From 5f32f25c40a9bbdf28ccf868607f668a3c190504 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sat, 27 Jul 2024 21:29:47 +0100 Subject: [PATCH 10/18] Fix game launching --- scripts/Catapult.gd | 48 ++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/scripts/Catapult.gd b/scripts/Catapult.gd index 6eef806d..03b26b56 100644 --- a/scripts/Catapult.gd +++ b/scripts/Catapult.gd @@ -427,30 +427,30 @@ func _on_BtnResume_pressed() -> void: func _start_game(world := "") -> void: - pass # FIXME - - #match OS.get_name(): - #"X11": - #var params := ["--userdir", Paths.userdata + "/"] - #if world != "": - #params.append_array(["--world", world]) - #OS.execute(Paths.game_dir.path_join("cataclysm-launcher"), params, false) - #"Windows": - #var world_str := "" - #if world != "": - #world_str = "--world \"%s\"" % world -# - #var exe_file = "cataclysm-tiles.exe" - #if Settings.read("game") == "bn" and DirAccess.new().file_exists(Paths.game_dir.path_join("cataclysm-bn-tiles.exe")): - #exe_file = "cataclysm-bn-tiles.exe" -# - #var command = "cd /d %s && start %s --userdir \"%s/\" %s" % [Paths.game_dir, exe_file, Paths.userdata, world_str] - #OS.execute("cmd", ["/C", command], false) - #_: - #return - # - #if not Settings.read("keep_open_after_starting_game"): - #get_tree().quit() + #pass # FIXME + + match OS.get_name(): + "X11": + var params := ["--userdir", Paths.userdata + "/"] + if world != "": + params.append_array(["--world", world]) + OS.execute(Paths.game_dir.path_join("cataclysm-launcher"), params, []) + "Windows": + var world_str := "" + if world != "": + world_str = "--world \"%s\"" % world + + var exe_file = "cataclysm-tiles.exe" + if Settings.read("game") == "bn" and FileAccess.file_exists(Paths.game_dir.path_join("cataclysm-bn-tiles.exe")): + exe_file = "cataclysm-bn-tiles.exe" + + var command = "cd /d %s && start %s --userdir \"%s/\" %s" % [Paths.game_dir, exe_file, Paths.userdata, world_str] + OS.execute("cmd", ["/C", command], []) + _: + return + + if not Settings.read("keep_open_after_starting_game"): + get_tree().quit() func _on_InstallsList_item_selected(index: int) -> void: From 358e482565d6844e837b5d5fc3ef945494225ffb Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sat, 27 Jul 2024 22:26:07 +0100 Subject: [PATCH 11/18] Fix directory listing --- scripts/Debug.gd | 7 ++++--- scripts/filesystem_helper.gd | 21 ++++++++++++--------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/scripts/Debug.gd b/scripts/Debug.gd index c8c9ff96..81126783 100644 --- a/scripts/Debug.gd +++ b/scripts/Debug.gd @@ -14,9 +14,10 @@ func _on_Button_pressed() -> void: Status.post("Looking for mods in %s" % mods_dir) - for mod in _mods.parse_mods_dir(mods_dir): - message += "\n" + mod["modinfo"]["name"] - message += "\n(%s)" % mod["location"] + var mods: Dictionary = _mods.parse_mods_dir(mods_dir) + for mod in mods: + message += "\n" + mods[mod]["modinfo"]["name"] + message += "\n(%s)" % mods[mod]["location"] Status.post(message) diff --git a/scripts/filesystem_helper.gd b/scripts/filesystem_helper.gd index 044351a3..a115814b 100644 --- a/scripts/filesystem_helper.gd +++ b/scripts/filesystem_helper.gd @@ -33,20 +33,24 @@ func _get_last_zip_result() -> int: func list_dir(path: String, recursive := false) -> Array: # Lists the files and subdirectories within a directory. - var d := DirAccess.open(path) - - var error = d.list_dir_begin() # TODOConverter3To4 fill missing arguments https://github.com/godotengine/godot/pull/40547 - if error: + var result := [] + var dir := DirAccess.open(path) + dir.include_hidden = true + var error := DirAccess.get_open_error() + if error != OK: Status.post(tr("msg_list_dir_failed") % [path, error], Enums.MSG_ERROR) - return [] + return result - var result = [] + error = dir.list_dir_begin() + if error != OK: + Status.post(tr("msg_list_dir_failed") % [path, error], Enums.MSG_ERROR) + return result while true: - var name = d.get_next() + var name = dir.get_next() if name: result.append(name) - if recursive and d.current_is_dir(): + if recursive and dir.current_is_dir(): var subdir = list_dir(path.path_join(name), true) for child in subdir: result.append(name.path_join(child)) @@ -73,7 +77,6 @@ func _copy_dir_internal(abs_path: String, dest_dir: String) -> void: Status.post(tr("msg_copy_file_failed") % [item, error], Enums.MSG_ERROR) Status.post(tr("msg_copy_file_failed_details") % [path, dest_dir.path_join(dir).path_join(item)]) elif DirAccess.dir_exists_absolute(path): - #_copy_dir_internal([path, dest_dir.path_join(dir)]) _copy_dir_internal(path, dest_dir.path_join(dir)) From 6b7544c6af0104503eea1b3a6296b4bf65bb7e1b Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sat, 27 Jul 2024 23:15:45 +0100 Subject: [PATCH 12/18] Fix fonts customization --- scenes/Catapult.tscn | 5 +++++ scripts/FontManager.gd | 1 + scripts/FontsUI.gd | 9 +++------ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/scenes/Catapult.tscn b/scenes/Catapult.tscn index 42b28e38..25c05975 100644 --- a/scenes/Catapult.tscn +++ b/scenes/Catapult.tscn @@ -680,6 +680,7 @@ text = "Existing font configuration will be shown here. ... ... ..." +fit_content = true [node name="FontSizeHelpDialog" parent="Main/TabBar/Fonts" instance=ExtResource("29")] position = Vector2i(0, 36) @@ -1117,6 +1118,10 @@ script = ExtResource("34") [connection signal="confirmed" from="Main/TabBar/Soundpacks/ConfirmManualDownload" to="Main/TabBar/Soundpacks" method="_on_ConfirmManualDownload_confirmed"] [connection signal="file_selected" from="Main/TabBar/Soundpacks/InstallFromFileDialog" to="Main/TabBar/Soundpacks" method="_on_InstallFromFileDialog_file_selected"] [connection signal="item_selected" from="Main/TabBar/Fonts/FontSelection/RightPane/FontsList" to="Main/TabBar/Fonts" method="_on_FontsList_item_selected"] +[connection signal="pressed" from="Main/TabBar/Fonts/FontSelection/RightPane/Buttons/BtnSetFontUI" to="Main/TabBar/Fonts" method="_on_BtnSetFontX_pressed" binds= [true, false, false]] +[connection signal="pressed" from="Main/TabBar/Fonts/FontSelection/RightPane/Buttons/BtnSetFontMap" to="Main/TabBar/Fonts" method="_on_BtnSetFontX_pressed" binds= [false, true, false]] +[connection signal="pressed" from="Main/TabBar/Fonts/FontSelection/RightPane/Buttons/BtnSetFontOvermap" to="Main/TabBar/Fonts" method="_on_BtnSetFontX_pressed" binds= [false, false, true]] +[connection signal="pressed" from="Main/TabBar/Fonts/FontSelection/RightPane/Buttons/BtnSetFontAll" to="Main/TabBar/Fonts" method="_on_BtnSetFontX_pressed" binds= [true, true, true]] [connection signal="pressed" from="Main/TabBar/Fonts/FontSelection/RightPane/Buttons/BtnResetFont" to="Main/TabBar/Fonts" method="_on_BtnResetFont_pressed"] [connection signal="toggled" from="Main/TabBar/Fonts/FontSelection/LeftPane/PreviewCyrillic" to="Main/TabBar/Fonts" method="_on_PreviewCyrillic_toggled"] [connection signal="pressed" from="Main/TabBar/Fonts/FontSelection/LeftPane/OtherSettings/HelpIcon" to="Main/TabBar/Fonts" method="_on_HelpIcon_pressed"] diff --git a/scripts/FontManager.gd b/scripts/FontManager.gd index a554ea0e..1637cfd6 100644 --- a/scripts/FontManager.gd +++ b/scripts/FontManager.gd @@ -78,6 +78,7 @@ func load_font_config() -> void: Status.post(tr("msg_could_not_parse_font_config") % config_file, Enums.MSG_ERROR) Status.post(tr("msg_font_config_error_details") % [error, json.get_error_line(), json.get_error_message()], Enums.MSG_DEBUG) + result = json.data else: Status.post(tr("msg_failed_to_open_font_config") % [config_file, FileAccess.get_open_error()], Enums.MSG_ERROR) else: diff --git a/scripts/FontsUI.gd b/scripts/FontsUI.gd index 19d70b32..11c2f033 100644 --- a/scripts/FontsUI.gd +++ b/scripts/FontsUI.gd @@ -155,13 +155,10 @@ func _on_FontsList_item_selected(index: int) -> void: var font_info = _fonts.available_fonts[index] var font_path := "res://fonts/ingame".path_join(font_info["file"]) - var font_res = FontFile.new() - - font_res.font_data = load(font_path) - font_res.size = 15.0 * Geom.scale - font_res.use_filter = true + var font_res: FontFile = load(font_path) _preview.add_theme_font_override("normal_font", font_res) + _preview.add_theme_font_size_override("normal_font_size", 15.0 * Geom.scale) _preview.text = _make_preview_string(Settings.read("font_preview_cyrillic")) for btn in [_btn_set_ui, _btn_set_map, _btn_set_om, _btn_set_all]: @@ -206,7 +203,7 @@ func _on_BtnSaveFontOptions_pressed() -> void: _fonts.set_font_sizes(size_ui, size_map, size_om) - _fonts.set_game_option("FONT_BLENDING", str(_cbtn_blending.pressed)) + _fonts.set_game_option("FONT_BLENDING", str(_cbtn_blending.button_pressed)) _fonts.write_game_options() From 8f8f3cc668ae2887f0347e1105a9d62a1da3ed71 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sun, 28 Jul 2024 15:27:16 +0100 Subject: [PATCH 13/18] Fix infinite recursion in Backup Manager --- scripts/BackupManager.gd | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/scripts/BackupManager.gd b/scripts/BackupManager.gd index ba5ceec3..a51ca7d9 100644 --- a/scripts/BackupManager.gd +++ b/scripts/BackupManager.gd @@ -8,8 +8,13 @@ signal backup_restoration_finished signal backup_deletion_started signal backup_deletion_finished -var available = null: get = _get_available +var available: Array: + get: + if not _available_backups: + refresh_available() + return _available_backups as Array +var _available_backups = null func backup_current(backup_name: String) -> void: # Create a backup of the save dir for the current game. @@ -50,24 +55,16 @@ func get_save_summary(path: String) -> Dictionary: return summary -func _get_available() -> Array: - - if not available: - refresh_available() - - return available - - func refresh_available(): - available = [] + _available_backups = [] if not DirAccess.dir_exists_absolute(Paths.save_backups): return for backup in FS.list_dir(Paths.save_backups): var path = Paths.save_backups.path_join(backup) - available.append(get_save_summary(path)) + _available_backups.append(get_save_summary(path)) func restore(backup_index: int) -> void: From 0f31a22c25dae19d09e38d644977de3b8337bbff Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sun, 28 Jul 2024 15:58:00 +0100 Subject: [PATCH 14/18] Fix stable/experimental radio group --- scenes/Catapult.tscn | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scenes/Catapult.tscn b/scenes/Catapult.tscn index 25c05975..31b8a4ef 100644 --- a/scenes/Catapult.tscn +++ b/scenes/Catapult.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=43 format=3 uid="uid://j8v4j8uy58rl"] +[gd_scene load_steps=44 format=3 uid="uid://j8v4j8uy58rl"] [ext_resource type="Texture2D" path="res://icons/buttons/tex_resume.tex" id="2"] [ext_resource type="Texture2D" uid="uid://uxhn3wij7008" path="res://icons/buttons/tex_download.tex" id="3"] @@ -48,6 +48,8 @@ content_margin_top = 4.0 content_margin_right = 4.0 content_margin_bottom = 4.0 +[sub_resource type="ButtonGroup" id="ButtonGroup_nlnc6"] + [node name="Catapult" type="Panel"] anchors_preset = 15 anchor_right = 1.0 @@ -144,11 +146,13 @@ layout_mode = 2 [node name="RBtnStable" type="CheckBox" parent="Main/TabBar/Game/Channel/Group" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] layout_mode = 2 tooltip_text = "tooltip_stable" +button_group = SubResource("ButtonGroup_nlnc6") text = "rbtn_stable" [node name="RBtnExperimental" type="CheckBox" parent="Main/TabBar/Game/Channel/Group" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] layout_mode = 2 tooltip_text = "tooltip_experimental" +button_group = SubResource("ButtonGroup_nlnc6") text = "rbtn_experimental" [node name="Builds" type="HBoxContainer" parent="Main/TabBar/Game"] From 080a9b8d6a954adb1d9aa26a0aa6dd1e1e1598a7 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sun, 28 Jul 2024 16:18:13 +0100 Subject: [PATCH 15/18] Restore missing signal connections --- scenes/Catapult.tscn | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/scenes/Catapult.tscn b/scenes/Catapult.tscn index 31b8a4ef..9540fc7f 100644 --- a/scenes/Catapult.tscn +++ b/scenes/Catapult.tscn @@ -1174,3 +1174,21 @@ script = ExtResource("34") [connection signal="request_completed" from="Releases/HTTPRequest_BN" to="Releases" method="_on_request_completed_bn"] [connection signal="request_completed" from="Releases/HTTPRequest_EOD" to="Releases" method="_on_request_completed_eod"] [connection signal="request_completed" from="Releases/HTTPRequest_TISH" to="Releases" method="_on_request_completed_tish"] +[connection signal="operation_finished" from="ReleaseInstaller" to="." method="_on_ReleaseInstaller_operation_finished"] +[connection signal="operation_started" from="ReleaseInstaller" to="." method="_on_ReleaseInstaller_operation_started"] +[connection signal="mod_deletion_finished" from="Mods" to="." method="_on_mod_operation_finished"] +[connection signal="mod_deletion_started" from="Mods" to="." method="_on_mod_operation_started"] +[connection signal="mod_installation_finished" from="Mods" to="." method="_on_mod_operation_finished"] +[connection signal="mod_installation_started" from="Mods" to="." method="_on_mod_operation_started"] +[connection signal="modpack_retrieval_finished" from="Mods" to="." method="_on_mod_operation_finished"] +[connection signal="modpack_retrieval_started" from="Mods" to="." method="_on_mod_operation_started"] +[connection signal="soundpack_deletion_finished" from="Sound" to="." method="_on_soundpack_operation_finished"] +[connection signal="soundpack_deletion_started" from="Sound" to="." method="_on_soundpack_operation_started"] +[connection signal="soundpack_installation_finished" from="Sound" to="." method="_on_soundpack_operation_finished"] +[connection signal="soundpack_installation_started" from="Sound" to="." method="_on_soundpack_operation_started"] +[connection signal="backup_creation_finished" from="Backups" to="." method="_on_backup_operation_finished"] +[connection signal="backup_creation_started" from="Backups" to="." method="_on_backup_operation_started"] +[connection signal="backup_deletion_finished" from="Backups" to="." method="_on_backup_operation_finished"] +[connection signal="backup_deletion_started" from="Backups" to="." method="_on_backup_operation_started"] +[connection signal="backup_restoration_finished" from="Backups" to="." method="_on_backup_operation_finished"] +[connection signal="backup_restoration_started" from="Backups" to="." method="_on_backup_operation_started"] From af4d82f30bdce3216f07020372bca6092ee274b4 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sun, 28 Jul 2024 16:26:58 +0100 Subject: [PATCH 16/18] Fix game description --- scenes/Catapult.tscn | 5 ++++- scripts/Catapult.gd | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/scenes/Catapult.tscn b/scenes/Catapult.tscn index 9540fc7f..263d79d7 100644 --- a/scenes/Catapult.tscn +++ b/scenes/Catapult.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=44 format=3 uid="uid://j8v4j8uy58rl"] +[gd_scene load_steps=45 format=3 uid="uid://j8v4j8uy58rl"] [ext_resource type="Texture2D" path="res://icons/buttons/tex_resume.tex" id="2"] [ext_resource type="Texture2D" uid="uid://uxhn3wij7008" path="res://icons/buttons/tex_download.tex" id="3"] +[ext_resource type="Texture2D" uid="uid://dbd0vhgo2wdv2" path="res://icons/info.svg" id="3_rr64d"] [ext_resource type="Script" path="res://scripts/Catapult.gd" id="4"] [ext_resource type="Script" path="res://scripts/ReleaseManager.gd" id="5"] [ext_resource type="Script" path="res://scripts/InstallsList.gd" id="6"] @@ -100,6 +101,7 @@ custom_minimum_size = Vector2(32, 32) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +texture = ExtResource("3_rr64d") expand_mode = 1 stretch_mode = 6 @@ -109,6 +111,7 @@ size_flags_horizontal = 3 size_flags_vertical = 4 bbcode_enabled = true text = "Game Title is a game in which... This is a placeholder text to gauge how much space will be taken for the game description that will be loaded into this label at runtime. The descriptions are around 4 lines each at this width, so the placeholder text mush have a similar length to perform its function. This length is about right." +fit_content = true [node name="Spacer" type="Control" parent="Main"] layout_mode = 2 diff --git a/scripts/Catapult.gd b/scripts/Catapult.gd index 03b26b56..84281f85 100644 --- a/scripts/Catapult.gd +++ b/scripts/Catapult.gd @@ -549,7 +549,7 @@ func _activate_easter_egg() -> void: for node in Helpers.get_all_nodes_within(self): if node is Control: node.pivot_offset = node.size / 2.0 - node.rotation = randf() * 2.0 - 1.0 + node.rotation = (randf() * 2.0 - 1.0) * PI / 180.0 Status.rainbow_text = true From db03dd120a3da676772b3193f640279193e9af4e Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sun, 28 Jul 2024 17:16:05 +0100 Subject: [PATCH 17/18] Fix tab disabling --- icons/buttons/tex_download.tex | Bin 2030 -> 2028 bytes icons/lang/tex_lang_en.res | Bin 64056 -> 64054 bytes scripts/Catapult.gd | 2 +- scripts/Tabs.gd | 19 +++++++++---------- themes/Godot_3.res | Bin 23361 -> 23366 bytes 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/icons/buttons/tex_download.tex b/icons/buttons/tex_download.tex index b87c729e84bc8b287889c647a22fc35fcee8b25e..720fc060775c54aa97faffd117b941b18c6c57b4 100644 GIT binary patch delta 218 zcmV<0044wK59|*SQd2`i0ssI201yBGG6DerACVDCf2{}rk_{~`kSS>lyZ`_H|Dpa| z3K}FbF=UgC*(6r(-MyhrYD##Gidf8o-m2zhuaEvCL{be;h(+kdzW^daVxnSMj3mZ7 z%~PlH2kfkS6b8ql@uUlJOu~mE-I{cFrHPu4Y>!zkhN1)GQY!L4Hg*kU*Hlxfh=b&p z-|u*#I~TS26U>%5jqE{KA8m8VU63^im$pcfQ=?x&;eql*9FANT=&fe*740oMjd4_he! diff --git a/icons/lang/tex_lang_en.res b/icons/lang/tex_lang_en.res index ba9b0ef191a3fbb9bd6dfb82723e6c0ade81da59..8e62939e2fdb2037b13c41ead5084b0758c6944e 100644 GIT binary patch delta 289 zcmV++0p9+&^aHl^0})bFLqh@p0000G006G{AOMoF5k?4qMGOEo&^tF!Z_*g(f+iQ> zn4E@D#iX2B0%^6@R{h&fuMtAIcjTq_)&~sxjpjjh>U5BS?nV(-6ZpqAk^(3IC;%=1 z+-alB{R)e1L@Y|tpYUKYfkKkPV)7Hb+^MD(W3QN1`~`o&ulWH!BXp0hPlfc+_dpGz zx1K-eYMPvXq`$zi#?fX`GkCR?6mAt_QEnJq85@Ttqmr(Fv<9vzY0#s9NTM8%uC;%@2 zTxz4s{R)efA{Hg-Pk6wnP%&9?LHP+@E>%~nu~*D4{(?W?=llR4BXpatP=)l-_e2e( z-#mZM6*W13Nq>Q3ji$|_X7Fk&DcmZ=qTDdJGFt~{qn@t0r%uS<`BY6)wcz>8q^8S- zw1sfB^<7%T9@REEK^u-EAXKFf_@3wkS4N9Oq~&CUH9?!s!=clafMi{b49p7)O?Qo2 nUFaa?PYmm4n4)5an%O@fF+pK5sxjjNIv{|8ks&IxQwihnVB&%j diff --git a/scripts/Catapult.gd b/scripts/Catapult.gd index 84281f85..c38eb6aa 100644 --- a/scripts/Catapult.gd +++ b/scripts/Catapult.gd @@ -531,7 +531,7 @@ func _refresh_currently_installed() -> void: _panel_installs.visible = false for i in [1, 2, 3, 4]: - _tabs.set_tab_disabled(i, not game in _installs) + _tabs.set_individual_tab_disabled(i, not game in _installs) func _on_InfoIcon_gui_input(event: InputEvent) -> void: diff --git a/scripts/Tabs.gd b/scripts/Tabs.gd index fc24e7ff..d13f07c1 100644 --- a/scripts/Tabs.gd +++ b/scripts/Tabs.gd @@ -19,13 +19,12 @@ func _set_disabled(value: bool) -> void: disabled = value -# FIXME!! -#func set_tab_disabled(index: int, value: bool) -> void: - # - #if (value == true) and (not index in _manually_disabled): - #_manually_disabled.append(index) - #elif index in _manually_disabled: - #_manually_disabled.erase(index) - # - #if not disabled: - #super.set_tab_disabled(index, value) +func set_individual_tab_disabled(index: int, value: bool) -> void: + + if (value == true) and (not index in _manually_disabled): + _manually_disabled.append(index) + elif index in _manually_disabled: + _manually_disabled.erase(index) + + if not disabled: + super.set_tab_disabled(index, value) diff --git a/themes/Godot_3.res b/themes/Godot_3.res index 0286d72bb26b309d8ebc808aeac24fd4903bf9a8..a7408d8a1c07e12d53246a1013eca2488a38105c 100644 GIT binary patch delta 3884 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 delta 3908 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 SZ7;yxnH-Om)CDS1Q$s^;HFO35 From 7eb16f60cdcdc24febd596b5e7224bd45cc733f9 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sun, 28 Jul 2024 21:26:02 +0100 Subject: [PATCH 18/18] Fix appearance of custom icon buttons --- scenes/Catapult.tscn | 8 +++++++- scripts/InlineIconButton.gd | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/scenes/Catapult.tscn b/scenes/Catapult.tscn index 263d79d7..a5902b39 100644 --- a/scenes/Catapult.tscn +++ b/scenes/Catapult.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=45 format=3 uid="uid://j8v4j8uy58rl"] +[gd_scene load_steps=48 format=3 uid="uid://j8v4j8uy58rl"] [ext_resource type="Texture2D" path="res://icons/buttons/tex_resume.tex" id="2"] [ext_resource type="Texture2D" uid="uid://uxhn3wij7008" path="res://icons/buttons/tex_download.tex" id="3"] @@ -6,7 +6,9 @@ [ext_resource type="Script" path="res://scripts/Catapult.gd" id="4"] [ext_resource type="Script" path="res://scripts/ReleaseManager.gd" id="5"] [ext_resource type="Script" path="res://scripts/InstallsList.gd" id="6"] +[ext_resource type="Texture2D" uid="uid://c8pe3ckwjamrl" path="res://icons/folder_game.svg" id="7_ffy77"] [ext_resource type="Script" path="res://scripts/SettingsUI.gd" id="8"] +[ext_resource type="Texture2D" uid="uid://boe62hlvfx4sk" path="res://icons/folder_user.svg" id="8_wd72u"] [ext_resource type="Script" path="res://scripts/ReleaseInstaller.gd" id="9"] [ext_resource type="Theme" uid="uid://bqch7xqdrxh3i" path="res://themes/Godot_3.res" id="11"] [ext_resource type="Script" path="res://scripts/ModManager.gd" id="12"] @@ -18,6 +20,7 @@ [ext_resource type="Script" path="res://scripts/ModsUI.gd" id="18"] [ext_resource type="PackedScene" uid="uid://chyqjehe0nmxq" path="res://scenes/ModReinstallDialog.tscn" id="20"] [ext_resource type="Texture2D" uid="uid://blp7rq8cvi0u5" path="res://icons/lang/tex_lang_en.res" id="20_ey4vo"] +[ext_resource type="Texture2D" uid="uid://bmifbdmqep5f2" path="res://icons/help.svg" id="20_pq48u"] [ext_resource type="Texture2D" path="res://icons/lang/tex_lang_fr.res" id="21_08o67"] [ext_resource type="Texture2D" path="res://icons/lang/tex_lang_ru.res" id="22_mts0p"] [ext_resource type="Texture2D" path="res://icons/lang/tex_lang_zh.res" id="23_2f1g3"] @@ -213,10 +216,12 @@ text = "lbl_build_none" [node name="GameDir" parent="Main/TabBar/Game/ActiveInstall/Build" instance=ExtResource("26")] layout_mode = 2 tooltip_text = "tooltip_game_dir" +texture_normal = ExtResource("7_ffy77") [node name="UserDir" parent="Main/TabBar/Game/ActiveInstall/Build" instance=ExtResource("26")] layout_mode = 2 tooltip_text = "tooltip_user_dir" +texture_normal = ExtResource("8_wd72u") [node name="Launch" type="HBoxContainer" parent="Main/TabBar/Game/ActiveInstall"] layout_mode = 2 @@ -614,6 +619,7 @@ text = "lbl_other_settings" custom_minimum_size = Vector2(20, 20) layout_mode = 2 tooltip_text = "View detailed description of these settings." +texture_normal = ExtResource("20_pq48u") [node name="FontSizeUI" type="HBoxContainer" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] layout_mode = 2 diff --git a/scripts/InlineIconButton.gd b/scripts/InlineIconButton.gd index ec0eb414..7808039b 100644 --- a/scripts/InlineIconButton.gd +++ b/scripts/InlineIconButton.gd @@ -1,7 +1,7 @@ extends TextureButton -@export var _scale_when_hovered = 1.1 # (float, 1.0, 1.5) +@export var _scale_when_hovered := 1.1 var _normal_position := Vector2()