From 08d51b680874391d769f981b374236cb378ffd58 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sun, 2 Nov 2025 21:16:55 +0000 Subject: [PATCH 01/14] Add license view dialog --- LICENSE | 2 +- fonts/licenses/AdobeSource.txt | 96 ---------------------------------- scenes/Catapult.tscn | 17 +++++- scenes/LicensesDialog.tscn | 40 ++++++++++++++ scripts/Catapult.gd | 6 ++- scripts/licenses_dialog.gd | 26 +++++++++ scripts/licenses_dialog.gd.uid | 1 + text/en/game_tab.csv | 2 +- text/en/settings_tab.csv | 1 + 9 files changed, 91 insertions(+), 100 deletions(-) delete mode 100644 fonts/licenses/AdobeSource.txt create mode 100644 scenes/LicensesDialog.tscn create mode 100644 scripts/licenses_dialog.gd create mode 100644 scripts/licenses_dialog.gd.uid diff --git a/LICENSE b/LICENSE index c56e732a..75881565 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021 qrrk +Copyright (c) 2021-present qrrk Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/fonts/licenses/AdobeSource.txt b/fonts/licenses/AdobeSource.txt deleted file mode 100644 index ddf7b7e9..00000000 --- a/fonts/licenses/AdobeSource.txt +++ /dev/null @@ -1,96 +0,0 @@ -Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font -Name 'Source'. Source is a trademark of Adobe in the United States -and/or other countries. - -This Font Software is licensed under the SIL Open Font License, -Version 1.1. - -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font -creation efforts of academic and linguistic communities, and to -provide a free and open framework in which fonts may be shared and -improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply to -any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software -components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, -deleting, or substituting -- in part or in whole -- any of the -components of the Original Version, by changing formats or by porting -the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, -modify, redistribute, and sell modified and unmodified copies of the -Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in -Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the -corresponding Copyright Holder. This restriction only applies to the -primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created using -the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/scenes/Catapult.tscn b/scenes/Catapult.tscn index 3c9a9ba7..f6091852 100644 --- a/scenes/Catapult.tscn +++ b/scenes/Catapult.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=48 format=3 uid="uid://j8v4j8uy58rl"] +[gd_scene load_steps=49 format=3 uid="uid://j8v4j8uy58rl"] [ext_resource type="Texture2D" uid="uid://ma1wiy6trs4k" path="res://icons/tex_info.tres" id="2_rcpd3"] [ext_resource type="Script" uid="uid://drnrbqdw1iua4" path="res://scripts/Catapult.gd" id="4"] @@ -24,6 +24,7 @@ [ext_resource type="Texture2D" uid="uid://cihncwpvk3c5e" path="res://icons/tex_help.tres" id="19_rcpd3"] [ext_resource type="PackedScene" uid="uid://chyqjehe0nmxq" path="res://scenes/ModReinstallDialog.tscn" id="20"] [ext_resource type="Texture2D" uid="uid://gbpu5l6l5g8w" path="res://icons/lang/tex_lang_en.tres" id="23_rcpd3"] +[ext_resource type="PackedScene" uid="uid://cgups4yvvknaj" path="res://scenes/LicensesDialog.tscn" id="24_cyylm"] [ext_resource type="Texture2D" uid="uid://bp51vrvh3v23d" path="res://icons/lang/tex_lang_fr.tres" id="24_rcpd3"] [ext_resource type="Texture2D" uid="uid://olv67q6pu442" path="res://icons/lang/tex_lang_ru.tres" id="25_rcpd3"] [ext_resource type="PackedScene" uid="uid://snuvrmmyvlwd" path="res://scenes/InlineIconButton.tscn" id="26"] @@ -113,6 +114,7 @@ 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 +size_flags_vertical = 3 current_tab = 0 script = ExtResource("16") @@ -782,6 +784,18 @@ theme_override_constants/separation = 2 script = ExtResource("8") metadata/_tab_index = 5 +[node name="LicensesDialog" parent="Main/TabBar/Settings" instance=ExtResource("24_cyylm")] + +[node name="lblLicenses" type="RichTextLabel" parent="Main/TabBar/Settings"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/normal = SubResource("2") +bbcode_enabled = true +text = "lbl_licenses" +fit_content = true +scroll_active = false +horizontal_alignment = 1 + [node name="LauncherLanguage" type="HBoxContainer" parent="Main/TabBar/Settings"] layout_mode = 2 @@ -1150,6 +1164,7 @@ script = ExtResource("34") [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="meta_clicked" from="Main/TabBar/Settings/lblLicenses" to="Main/TabBar/Settings/LicensesDialog" method="_on_lbl_licenses_meta_clicked"] [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"] diff --git a/scenes/LicensesDialog.tscn b/scenes/LicensesDialog.tscn new file mode 100644 index 00000000..58b30a1e --- /dev/null +++ b/scenes/LicensesDialog.tscn @@ -0,0 +1,40 @@ +[gd_scene load_steps=2 format=3 uid="uid://cgups4yvvknaj"] + +[ext_resource type="Script" uid="uid://d1necdrjltchh" path="res://scripts/licenses_dialog.gd" id="2_kjbkf"] + +[node name="LicensesDialog" type="Window"] +oversampling_override = 1.0 +visible = false +script = ExtResource("2_kjbkf") + +[node name="Panel" type="PanelContainer" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Margin" type="MarginContainer" parent="Panel"] +layout_mode = 2 +theme_override_constants/margin_bottom = 8 + +[node name="VBox" type="VBoxContainer" parent="Panel/Margin"] +layout_mode = 2 + +[node name="rtlLicenses" type="RichTextLabel" parent="Panel/Margin/VBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +focus_mode = 2 +bbcode_enabled = true +selection_enabled = true +deselect_on_focus_loss_enabled = false + +[node name="BtnOK" type="Button" parent="Panel/Margin/VBox"] +layout_mode = 2 +size_flags_horizontal = 4 +text = "btn_close" + +[connection signal="about_to_popup" from="." to="." method="_on_about_to_popup"] +[connection signal="close_requested" from="." to="." method="hide"] +[connection signal="pressed" from="Panel/Margin/VBox/BtnOK" to="." method="hide"] diff --git a/scripts/Catapult.gd b/scripts/Catapult.gd index 2150ffe3..6bfbd0c8 100644 --- a/scripts/Catapult.gd +++ b/scripts/Catapult.gd @@ -159,8 +159,12 @@ func _on_ui_scale_changed(new_scale: float) -> void: _scale_control_min_sizes(new_scale) -func _on_Tabs_tab_changed(_tab: int) -> void: +func _on_Tabs_tab_changed(tab: int) -> void: + if tab == 5: + $Main/Log.hide() + else: + $Main/Log.show() _refresh_currently_installed() diff --git a/scripts/licenses_dialog.gd b/scripts/licenses_dialog.gd new file mode 100644 index 00000000..7692a09c --- /dev/null +++ b/scripts/licenses_dialog.gd @@ -0,0 +1,26 @@ +extends Window + + +func _on_about_to_popup() -> void: + + %rtlLicenses.clear() + %rtlLicenses.scroll_to_line(0) + + _add_section("Catapult", FileAccess.get_file_as_string("res://LICENSE")) + _add_section("Godot Engine", Engine.get_license_text()) + _add_section("Font: Fantasque Sans Mono", FileAccess.get_file_as_string("res://fonts/licenses/FantasqueSansMono.txt")) + _add_section("Font: Hack", FileAccess.get_file_as_string("res://fonts/licenses/Hack.txt")) + _add_section("Font: Inconsolata LGC", FileAccess.get_file_as_string("res://fonts/licenses/Inconsolata-LGC.txt")) + _add_section("Font: PT Mono", FileAccess.get_file_as_string("res://fonts/licenses/PT_Mono.txt")) + _add_section("Font: Ubuntu Mono", FileAccess.get_file_as_string("res://fonts/licenses/UbuntuMono.txt")) + + +func _on_lbl_licenses_meta_clicked(_meta: Variant) -> void: + + popup_centered_ratio(0.9) + + +func _add_section(heading: String, contents: String) -> void: + + %rtlLicenses.append_text("[br][p align=c][b]" + heading + "[/b][/p][br][br]") + %rtlLicenses.append_text("[p align=l]" + contents + "[/p][br][hr][br]") diff --git a/scripts/licenses_dialog.gd.uid b/scripts/licenses_dialog.gd.uid new file mode 100644 index 00000000..34d0da05 --- /dev/null +++ b/scripts/licenses_dialog.gd.uid @@ -0,0 +1 @@ +uid://d1necdrjltchh diff --git a/text/en/game_tab.csv b/text/en/game_tab.csv index aa025572..9eba65f8 100644 --- a/text/en/game_tab.csv +++ b/text/en/game_tab.csv @@ -3,7 +3,7 @@ "lbl_channel","Channel:" "rbtn_stable","Stable" "rbtn_experimental","Experimental" -"lbl_changelog","[right][color=#3b93f7][url]View Experimental Changelog[/url][/color][/right]" +"lbl_changelog","[right][color=#3b93f7][url]View experimental changelog[/url][/color][/right]" "lbl_builds","Available builds:" "btn_refresh","Refresh" "btn_install","Install Selected" diff --git a/text/en/settings_tab.csv b/text/en/settings_tab.csv index 6bdd3103..4b3a2acd 100644 --- a/text/en/settings_tab.csv +++ b/text/en/settings_tab.csv @@ -1,5 +1,6 @@ "keys","en" , +"lbl_licenses","[color=#3b93f7][url]View opensource licenses[/url][/color]" "cbtn_debug_mode","Debug mode" "cbtn_enable_scale","Enable " "cbtn_install_archived_mods","Include archived mods when installing Kenan Modpack" From 8ecbda02aced6e4da733227584660e6a2b0b4997 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Thu, 6 Nov 2025 20:46:20 +0000 Subject: [PATCH 02/14] Overhaul node naming --- doc/dev/node-naming.md | 48 ++++ scenes/Catapult.tscn | 608 ++++++++++++++++++++--------------------- 2 files changed, 352 insertions(+), 304 deletions(-) create mode 100644 doc/dev/node-naming.md diff --git a/doc/dev/node-naming.md b/doc/dev/node-naming.md new file mode 100644 index 00000000..67e2d5ee --- /dev/null +++ b/doc/dev/node-naming.md @@ -0,0 +1,48 @@ +# Node Naming + +This convention is motivated by the preferred way of accessing UI nodes from scripts, which is by **scene-unique names** using the `%` shorthand, for example: `%InstallBtn`, `%BuildsList`, `%UpdateSwitch`. + +UI node names consist of the main part describing their function and a suffix loosely indicating what kind of element they are (but usually not the exact class). + +## Suffix Reference + +### Interactive Controls +- `Button` or `Btn` - Button, IconButton, etc. +- `Switch` - CheckBox, CheckBox in ButtonGroup (radio), CheckButton +- `List` - OptionButton, ItemList +- `Field` - LineEdit, SpinBox, TextEdit + +### Display Elements +- `Label` - Label, short RichTextLabel (1-2 lines) +- `Text` or `Info` - Multi-line RichTextLabel (info blocks, logs) +- `Icon` - TextureRect, TextureButton used as icons + +### Containers +- `Layout`, `Area`, `Group`, `Box` - Containers that group and arrange UI nodes (Panel, TabContainer, HBox/VBox, etc.). Use whichever reads best in context but prefer this order when going from higher to lower hierarchy levels: `Layout` → `Area` → `Group` → `Box`. +- `Panel` - Alternative for Panel/PanelContainer when semantically appropriate. + +### Dialogs +- `Dialog` or `Dlg` - FileDialog, ConfirmationDialog, AcceptDialog, custom dialogs + +## Guidelines + +1. **Purpose over type** - Describe what it does, not what it is + - ✓ `%RefreshBuildsBtn`, `%GamesList` + - ✗ `%Button1`, `%OptionButton` + +2. **Be specific in large scenes** - Names must be completely unique across the entire scene + - ✓ `%DeleteModsBtn`, `%DeleteInstallBtn`, `%DeleteSoundBtn`, `%DeleteBackupBtn` + - ✗ `%DeleteBtn` (ambiguous when all in same scene) + +3. **Consistent suffixes** - Always use the same suffix for the same type + - Buttons: `%PlayBtn`, `%RefreshBtn`, `%InstallBtn` + - Switches: `%UpdateSwitch`, `%ShowStockSwitch` + - Lists: `%BuildsList`, `%GamesList` + +4. **Readable purpose** - Avoid abbreviations except well-known ones + - ✓ `%ExperimentalSwitch`, `%NumReleasesField` + - ✗ `%ExperSwitch`, `%NumRelsFld` + +## Exceptions + +- Nodes that serve a purely cosmetic purpose and aren't likely to ever be accessed from scripts (separators, spacers) do not have to follow this convention. \ No newline at end of file diff --git a/scenes/Catapult.tscn b/scenes/Catapult.tscn index f6091852..63565a9a 100644 --- a/scenes/Catapult.tscn +++ b/scenes/Catapult.tscn @@ -61,17 +61,17 @@ anchor_right = 1.0 anchor_bottom = 1.0 script = ExtResource("4") -[node name="Main" type="VBoxContainer" parent="."] +[node name="MainLayout" type="VBoxContainer" parent="."] layout_mode = 2 -[node name="GameChoice" type="HBoxContainer" parent="Main"] +[node name="GameChoiceGroup" type="HBoxContainer" parent="MainLayout"] layout_mode = 2 -[node name="Label" type="Label" parent="Main/GameChoice"] +[node name="GameLabel" type="Label" parent="MainLayout/GameChoiceGroup"] 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"]] +[node name="GamesList" type="OptionButton" parent="MainLayout/GameChoiceGroup" groups=["disable_during_mod_operations", "disable_during_soundpack_operations", "disable_while_fetching_releases", "disable_while_installing_game"]] layout_mode = 2 size_flags_horizontal = 3 tooltip_text = "tooltip_game" @@ -88,20 +88,20 @@ popup/item_3/id = 3 popup/item_4/text = "Cataclysm: The Last Generation" popup/item_4/id = 4 -[node name="GameInfo" type="HBoxContainer" parent="Main"] +[node name="GameInfoGroup" type="HBoxContainer" parent="MainLayout"] layout_mode = 2 theme_override_constants/separation = 8 -[node name="Spacer" type="Control" parent="Main/GameInfo"] +[node name="Spacer" type="Control" parent="MainLayout/GameInfoGroup"] layout_mode = 2 -[node name="Icon" type="TextureRect" parent="Main/GameInfo"] +[node name="GameDescIcon" type="TextureRect" parent="MainLayout/GameInfoGroup"] layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 texture = ExtResource("2_rcpd3") -[node name="Description" type="RichTextLabel" parent="Main/GameInfo"] +[node name="GameDescText" type="RichTextLabel" parent="MainLayout/GameInfoGroup"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 @@ -109,30 +109,31 @@ 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"] +[node name="Spacer" type="Control" parent="MainLayout"] 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"]] +[node name="TabbedLayout" type="TabContainer" parent="MainLayout" groups=["disable_during_backup_operations", "disable_during_mod_operations", "disable_during_release_operations", "disable_during_soundpack_operations", "disable_while_fetching_releases"]] layout_mode = 2 size_flags_vertical = 3 -current_tab = 0 +current_tab = 5 script = ExtResource("16") -[node name="Game" type="VBoxContainer" parent="Main/TabBar"] +[node name="GameArea" type="VBoxContainer" parent="MainLayout/TabbedLayout"] +visible = false layout_mode = 2 metadata/_tab_index = 0 -[node name="Channel" type="VBoxContainer" parent="Main/TabBar/Game"] +[node name="ChannelSelectGroup" type="VBoxContainer" parent="MainLayout/TabbedLayout/GameArea"] layout_mode = 2 -[node name="HBox" type="HBoxContainer" parent="Main/TabBar/Game/Channel"] +[node name="ChannelTitleBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/GameArea/ChannelSelectGroup"] layout_mode = 2 -[node name="Label" type="Label" parent="Main/TabBar/Game/Channel/HBox"] +[node name="ChannelLabel" type="Label" parent="MainLayout/TabbedLayout/GameArea/ChannelSelectGroup/ChannelTitleBox"] layout_mode = 2 text = "lbl_channel" -[node name="ChangelogLink" type="RichTextLabel" parent="Main/TabBar/Game/Channel/HBox"] +[node name="ChangelogLinkLabel" type="RichTextLabel" parent="MainLayout/TabbedLayout/GameArea/ChannelSelectGroup/ChannelTitleBox"] custom_minimum_size = Vector2(300, 0) layout_mode = 2 size_flags_horizontal = 3 @@ -142,116 +143,116 @@ bbcode_enabled = true text = "lbl_changelog" scroll_active = false -[node name="Group" type="HBoxContainer" parent="Main/TabBar/Game/Channel"] +[node name="ChannelSwitchesGroup" type="HBoxContainer" parent="MainLayout/TabbedLayout/GameArea/ChannelSelectGroup"] layout_mode = 2 -[node name="RBtnStable" type="CheckBox" parent="Main/TabBar/Game/Channel/Group" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +[node name="StableSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/GameArea/ChannelSelectGroup/ChannelSwitchesGroup" 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"]] +[node name="ExperimentalSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/GameArea/ChannelSelectGroup/ChannelSwitchesGroup" 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"] +[node name="ReleaseSelectGroup" type="HBoxContainer" parent="MainLayout/TabbedLayout/GameArea"] layout_mode = 2 -[node name="Label" type="Label" parent="Main/TabBar/Game/Builds"] +[node name="ReleasesLabel" type="Label" parent="MainLayout/TabbedLayout/GameArea/ReleaseSelectGroup"] layout_mode = 2 text = "lbl_builds" -[node name="BuildsList" type="OptionButton" parent="Main/TabBar/Game/Builds" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +[node name="ReleasesList" type="OptionButton" parent="MainLayout/TabbedLayout/GameArea/ReleaseSelectGroup" 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/TabBar/Game/Builds" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +[node name="RefreshReleasesBtn" type="Button" parent="MainLayout/TabbedLayout/GameArea/ReleaseSelectGroup" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] layout_mode = 2 tooltip_text = "tooltip_refresh" text = "btn_refresh" icon = ExtResource("4_no8b7") -[node name="BtnInstall" type="Button" parent="Main/TabBar/Game" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +[node name="InstallReleaseBtn" type="Button" parent="MainLayout/TabbedLayout/GameArea" 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("4_rcpd3") -[node name="UpdateCurrent" type="CheckBox" parent="Main/TabBar/Game" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +[node name="UpdateCurrentSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/GameArea" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_update" text = "cb_update_active" -[node name="HSeparator" type="HSeparator" parent="Main/TabBar/Game"] +[node name="HSeparator" type="HSeparator" parent="MainLayout/TabbedLayout/GameArea"] layout_mode = 2 -[node name="ActiveInstall" type="VBoxContainer" parent="Main/TabBar/Game"] +[node name="ActiveInstallGroup" type="VBoxContainer" parent="MainLayout/TabbedLayout/GameArea"] layout_mode = 2 -[node name="Label" type="Label" parent="Main/TabBar/Game/ActiveInstall"] +[node name="ActiveInstallLabel" type="Label" parent="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup"] layout_mode = 2 text = "lbl_active_install" -[node name="Build" type="HBoxContainer" parent="Main/TabBar/Game/ActiveInstall"] +[node name="ActiveInstallNameBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup"] layout_mode = 2 size_flags_horizontal = 4 theme_override_constants/separation = 4 -[node name="Name" type="Label" parent="Main/TabBar/Game/ActiveInstall/Build"] +[node name="ActiveInstallNameLabel" type="Label" parent="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup/ActiveInstallNameBox"] layout_mode = 2 text = "lbl_build_none" -[node name="GameDir" parent="Main/TabBar/Game/ActiveInstall/Build" instance=ExtResource("26")] +[node name="GameDirBtn" parent="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup/ActiveInstallNameBox" instance=ExtResource("26")] custom_minimum_size = Vector2(20, 20) layout_mode = 2 tooltip_text = "tooltip_game_dir" texture_normal = ExtResource("6_rcpd3") -[node name="UserDir" parent="Main/TabBar/Game/ActiveInstall/Build" instance=ExtResource("26")] +[node name="UserDirBtn" parent="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup/ActiveInstallNameBox" instance=ExtResource("26")] custom_minimum_size = Vector2(20, 20) layout_mode = 2 tooltip_text = "tooltip_user_dir" texture_normal = ExtResource("7_rcpd3") -[node name="Launch" type="HBoxContainer" parent="Main/TabBar/Game/ActiveInstall"] +[node name="LaunchGameBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup"] layout_mode = 2 size_flags_horizontal = 4 -[node name="BtnPlay" type="Button" parent="Main/TabBar/Game/ActiveInstall/Launch" groups=["disable_during_release_operations"]] +[node name="LaunchGameBtn" type="Button" parent="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup/LaunchGameBox" groups=["disable_during_release_operations"]] layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_play" text = "btn_play" icon = ExtResource("8_no8b7") -[node name="BtnResume" type="Button" parent="Main/TabBar/Game/ActiveInstall/Launch" groups=["disable_during_release_operations"]] +[node name="QuickLoadBtn" type="Button" parent="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup/LaunchGameBox" groups=["disable_during_release_operations"]] layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_resume" text = "btn_resume" icon = ExtResource("9_rcpd3") -[node name="GameInstalls" type="VBoxContainer" parent="Main/TabBar/Game"] +[node name="GameInstallsGroup" type="VBoxContainer" parent="MainLayout/TabbedLayout/GameArea"] layout_mode = 2 -[node name="HSeparator2" type="HSeparator" parent="Main/TabBar/Game/GameInstalls"] +[node name="HSeparator2" type="HSeparator" parent="MainLayout/TabbedLayout/GameArea/GameInstallsGroup"] layout_mode = 2 -[node name="Label2" type="Label" parent="Main/TabBar/Game/GameInstalls"] +[node name="GameInstallsLabel" type="Label" parent="MainLayout/TabbedLayout/GameArea/GameInstallsGroup"] layout_mode = 2 text = "lbl_installs" -[node name="HBox" type="HBoxContainer" parent="Main/TabBar/Game/GameInstalls"] +[node name="GameInstallsMgmtGroup" type="HBoxContainer" parent="MainLayout/TabbedLayout/GameArea/GameInstallsGroup"] layout_mode = 2 -[node name="InstallsList" type="ItemList" parent="Main/TabBar/Game/GameInstalls/HBox" groups=["disable_during_release_operations"]] +[node name="GameInstallsList" type="ItemList" parent="MainLayout/TabbedLayout/GameArea/GameInstallsGroup/GameInstallsMgmtGroup" groups=["disable_during_release_operations"]] custom_minimum_size = Vector2(0, 90) layout_mode = 2 size_flags_horizontal = 3 @@ -264,44 +265,44 @@ item_4/text = "Item 4" item_5/text = "Item 5" script = ExtResource("6") -[node name="VBox" type="VBoxContainer" parent="Main/TabBar/Game/GameInstalls/HBox"] +[node name="GameInstallActionsBox" type="VBoxContainer" parent="MainLayout/TabbedLayout/GameArea/GameInstallsGroup/GameInstallsMgmtGroup"] layout_mode = 2 -[node name="btnMakeActive" type="Button" parent="Main/TabBar/Game/GameInstalls/HBox/VBox" groups=["disable_during_release_operations"]] +[node name="MakeInstallActiveBtn" type="Button" parent="MainLayout/TabbedLayout/GameArea/GameInstallsGroup/GameInstallsMgmtGroup/GameInstallActionsBox" groups=["disable_during_release_operations"]] layout_mode = 2 tooltip_text = "tooltip_activate" disabled = true text = "btn_activate" icon = ExtResource("11_rcpd3") -[node name="btnDelete" type="Button" parent="Main/TabBar/Game/GameInstalls/HBox/VBox" groups=["disable_during_release_operations"]] +[node name="DeleteGameInstallBtn" type="Button" parent="MainLayout/TabbedLayout/GameArea/GameInstallsGroup/GameInstallsMgmtGroup/GameInstallActionsBox" groups=["disable_during_release_operations"]] layout_mode = 2 tooltip_text = "tooltip_delete" disabled = true text = "btn_delete" icon = ExtResource("12_no8b7") -[node name="ChangelogDialog" parent="Main/TabBar/Game" instance=ExtResource("32")] +[node name="ChangelogDialog" parent="MainLayout/TabbedLayout/GameArea" instance=ExtResource("32")] position = Vector2i(0, 36) -[node name="Mods" type="VBoxContainer" parent="Main/TabBar"] +[node name="ModsArea" type="VBoxContainer" parent="MainLayout/TabbedLayout"] visible = false layout_mode = 2 script = ExtResource("18") metadata/_tab_index = 1 -[node name="HBox" type="HBoxContainer" parent="Main/TabBar/Mods"] +[node name="ModsManagementGroup" type="HBoxContainer" parent="MainLayout/TabbedLayout/ModsArea"] layout_mode = 2 -[node name="Installed" type="VBoxContainer" parent="Main/TabBar/Mods/HBox"] +[node name="InstalledModsGroup" type="VBoxContainer" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup"] layout_mode = 2 size_flags_horizontal = 3 -[node name="Label" type="Label" parent="Main/TabBar/Mods/HBox/Installed"] +[node name="InstalledModsLabel" type="Label" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/InstalledModsGroup"] layout_mode = 2 text = "lbl_installed_mods" -[node name="InstalledList" type="ItemList" parent="Main/TabBar/Mods/HBox/Installed" groups=["disable_during_mod_operations"]] +[node name="InstalledModsList" type="ItemList" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/InstalledModsGroup" groups=["disable_during_mod_operations"]] custom_minimum_size = Vector2(0, 180) layout_mode = 2 size_flags_horizontal = 3 @@ -315,31 +316,31 @@ 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"]] +[node name="ShowStockModsSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/InstalledModsGroup" 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/TabBar/Mods/HBox/Installed" groups=["disable_during_mod_operations"]] +[node name="DeleteModsBtn" type="Button" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/InstalledModsGroup" 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/TabBar/Mods/HBox"] +[node name="VSeparator" type="VSeparator" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup"] layout_mode = 2 -[node name="Available" type="VBoxContainer" parent="Main/TabBar/Mods/HBox"] +[node name="AvailableModsGroup" type="VBoxContainer" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup"] layout_mode = 2 size_flags_horizontal = 3 -[node name="Label" type="Label" parent="Main/TabBar/Mods/HBox/Available"] +[node name="ModRepoLabel" type="Label" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup"] layout_mode = 2 text = "lbl_mod_repo" -[node name="AvailableList" type="ItemList" parent="Main/TabBar/Mods/HBox/Available" groups=["disable_during_mod_operations"]] +[node name="AvailableModsList" type="ItemList" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup" groups=["disable_during_mod_operations"]] custom_minimum_size = Vector2(0, 180) layout_mode = 2 size_flags_horizontal = 3 @@ -353,37 +354,37 @@ 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"]] +[node name="ShowInstalledModsSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup" 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/TabBar/Mods/HBox/Available"] +[node name="AddModsActionsBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup"] layout_mode = 2 alignment = 1 -[node name="BtnAddSelectedMod" type="Button" parent="Main/TabBar/Mods/HBox/Available/VBox" groups=["disable_during_mod_operations"]] +[node name="AddSelectedModsBtn" type="Button" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup/AddModsActionsBox" 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/TabBar/Mods/HBox/Available/VBox" groups=["disable_during_mod_operations"]] +[node name="AddAllModsBtn" type="Button" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup/AddModsActionsBox" 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/TabBar/Mods/HBox/Available" groups=["disable_during_mod_operations"]] +[node name="GetKenanModpackBtn" type="Button" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup" 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/TabBar/Mods"] +[node name="HSeparator" type="HSeparator" parent="MainLayout/TabbedLayout/ModsArea"] layout_mode = 2 -[node name="ModInfo" type="RichTextLabel" parent="Main/TabBar/Mods"] +[node name="ModInfoText" type="RichTextLabel" parent="MainLayout/TabbedLayout/ModsArea"] custom_minimum_size = Vector2(0, 100) layout_mode = 2 focus_mode = 2 @@ -392,31 +393,31 @@ bbcode_enabled = true text = "Mod info will appear here." selection_enabled = true -[node name="DeleteMultipleDialog" type="ConfirmationDialog" parent="Main/TabBar/Mods"] +[node name="DeleteMultipleModsDialog" type="ConfirmationDialog" parent="MainLayout/TabbedLayout/ModsArea"] dialog_text = "(this text is assigned at runtime)" dialog_autowrap = true -[node name="ModReinstallDialog" parent="Main/TabBar/Mods" instance=ExtResource("20")] +[node name="ModReinstallDialog" parent="MainLayout/TabbedLayout/ModsArea" instance=ExtResource("20")] -[node name="Soundpacks" type="VBoxContainer" parent="Main/TabBar"] +[node name="SoundArea" type="VBoxContainer" parent="MainLayout/TabbedLayout"] visible = false layout_mode = 2 size_flags_vertical = 3 script = ExtResource("15") metadata/_tab_index = 2 -[node name="HBox" type="HBoxContainer" parent="Main/TabBar/Soundpacks"] +[node name="SoundManagementGroup" type="HBoxContainer" parent="MainLayout/TabbedLayout/SoundArea"] layout_mode = 2 -[node name="Installed" type="VBoxContainer" parent="Main/TabBar/Soundpacks/HBox"] +[node name="InstalledSoundsGroup" type="VBoxContainer" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup"] layout_mode = 2 size_flags_horizontal = 3 -[node name="Label" type="Label" parent="Main/TabBar/Soundpacks/HBox/Installed"] +[node name="InstalledSoundsLabel" type="Label" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup"] layout_mode = 2 text = "lbl_installed_sound" -[node name="InstalledList" type="ItemList" parent="Main/TabBar/Soundpacks/HBox/Installed" groups=["disable_during_soundpack_operations"]] +[node name="InstalledSoundsList" type="ItemList" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup" groups=["disable_during_soundpack_operations"]] custom_minimum_size = Vector2(0, 200) layout_mode = 2 size_flags_horizontal = 3 @@ -446,31 +447,31 @@ 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"]] +[node name="ShowStockSoundsSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup" 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/TabBar/Soundpacks/HBox/Installed" groups=["disable_during_soundpack_operations"]] +[node name="DeleteSoundsBtn" type="Button" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup" 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/TabBar/Soundpacks/HBox"] +[node name="VSeparator" type="VSeparator" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup"] layout_mode = 2 -[node name="Downloadable" type="VBoxContainer" parent="Main/TabBar/Soundpacks/HBox"] +[node name="AvailableSoundsGroup" type="VBoxContainer" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup"] layout_mode = 2 size_flags_horizontal = 3 -[node name="Label" type="Label" parent="Main/TabBar/Soundpacks/HBox/Downloadable"] +[node name="AvailableSoundsLabel" type="Label" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/AvailableSoundsGroup"] layout_mode = 2 text = "lbl_avail_sound" -[node name="AvailableList" type="ItemList" parent="Main/TabBar/Soundpacks/HBox/Downloadable" groups=["disable_during_soundpack_operations"]] +[node name="AvailableSoundsList" type="ItemList" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/AvailableSoundsGroup" groups=["disable_during_soundpack_operations"]] custom_minimum_size = Vector2(0, 200) layout_mode = 2 size_flags_horizontal = 3 @@ -482,45 +483,45 @@ 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"]] +[node name="InstallSoundBtn" type="Button" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/AvailableSoundsGroup" 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/TabBar/Soundpacks"] +[node name="ConfirmDeleteSoundDialog" type="ConfirmationDialog" parent="MainLayout/TabbedLayout/SoundArea"] dialog_text = "dlg_sound_deletion_text" dialog_autowrap = true -[node name="ConfirmManualDownload" type="ConfirmationDialog" parent="Main/TabBar/Soundpacks"] +[node name="ManualSoundDownloadDlg" type="ConfirmationDialog" parent="MainLayout/TabbedLayout/SoundArea"] dialog_text = "dlg_sound_manual_dl_text" dialog_autowrap = true -[node name="InstallFromFileDialog" type="FileDialog" parent="Main/TabBar/Soundpacks"] +[node name="InstallFromFileDialog" type="FileDialog" parent="MainLayout/TabbedLayout/SoundArea"] access = 2 filters = PackedStringArray("*.zip") -[node name="Fonts" type="VBoxContainer" parent="Main/TabBar"] +[node name="FontsArea" type="VBoxContainer" parent="MainLayout/TabbedLayout"] visible = false layout_mode = 2 script = ExtResource("27") metadata/_tab_index = 3 -[node name="FontSelection" type="HBoxContainer" parent="Main/TabBar/Fonts"] +[node name="FontConfigMainGroup" type="HBoxContainer" parent="MainLayout/TabbedLayout/FontsArea"] layout_mode = 2 -[node name="RightPane" type="VBoxContainer" parent="Main/TabBar/Fonts/FontSelection"] +[node name="FontConfigLeftGroup" type="VBoxContainer" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 2.0 -[node name="Label" type="Label" parent="Main/TabBar/Fonts/FontSelection/RightPane"] +[node name="AvailableFontsLabel" type="Label" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup"] layout_mode = 2 size_flags_horizontal = 4 text = "lbl_avail_fonts" -[node name="FontsList" type="ItemList" parent="Main/TabBar/Fonts/FontSelection/RightPane"] +[node name="FontsList" type="ItemList" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup"] custom_minimum_size = Vector2(0, 180) layout_mode = 2 size_flags_stretch_ratio = 2.0 @@ -531,154 +532,154 @@ 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"] +[node name="FontfaceSettingBox" type="VBoxContainer" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup"] layout_mode = 2 size_flags_horizontal = 5 size_flags_vertical = 6 -[node name="BtnSetFontUI" type="Button" parent="Main/TabBar/Fonts/FontSelection/RightPane/Buttons"] +[node name="SetFontUIBtn" type="Button" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox"] 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/TabBar/Fonts/FontSelection/RightPane/Buttons"] +[node name="SetFontMapBtn" type="Button" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox"] 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/TabBar/Fonts/FontSelection/RightPane/Buttons"] +[node name="SetFontOvermapBtn" type="Button" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox"] 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/TabBar/Fonts/FontSelection/RightPane/Buttons"] +[node name="SetFontAllBtn" type="Button" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox"] 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/TabBar/Fonts/FontSelection/RightPane/Buttons"] +[node name="ResetFontBtn" type="Button" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox"] layout_mode = 2 size_flags_horizontal = 5 tooltip_text = "tooltip_reset_font" text = "btn_reset_font" -[node name="VSeparator" type="VSeparator" parent="Main/TabBar/Fonts/FontSelection"] +[node name="VSeparator" type="VSeparator" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup"] layout_mode = 2 -[node name="LeftPane" type="VBoxContainer" parent="Main/TabBar/Fonts/FontSelection"] +[node name="FontConfigRightGroup" type="VBoxContainer" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 size_flags_stretch_ratio = 3.0 theme_override_constants/separation = 4 -[node name="Label" type="Label" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +[node name="FontPreviewLabel" type="Label" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup"] layout_mode = 2 size_flags_horizontal = 4 text = "lbl_font_preview" -[node name="Preview" type="RichTextLabel" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +[node name="FontPreviewText" type="RichTextLabel" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup"] 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/TabBar/Fonts/FontSelection/LeftPane"] +[node name="PreviewCyrillicSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup"] layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_preview_cyrillics" text = "cbtn_preview_cyrillics" -[node name="HSeparator" type="HSeparator" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +[node name="HSeparator" type="HSeparator" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup"] layout_mode = 2 theme_override_constants/separation = 0 -[node name="OtherSettings" type="HBoxContainer" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +[node name="OtherSettingsBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup"] layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 -[node name="Label" type="Label" parent="Main/TabBar/Fonts/FontSelection/LeftPane/OtherSettings"] +[node name="OtherSettingsLabel" type="Label" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup/OtherSettingsBox"] layout_mode = 2 size_flags_horizontal = 4 text = "lbl_other_settings" -[node name="HelpIcon" parent="Main/TabBar/Fonts/FontSelection/LeftPane/OtherSettings" instance=ExtResource("26")] +[node name="FontSettingsHelpBtn" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup/OtherSettingsBox" instance=ExtResource("26")] custom_minimum_size = Vector2(22, 22) layout_mode = 2 tooltip_text = "View detailed description of these settings." texture_normal = ExtResource("19_rcpd3") -[node name="FontSizeUI" type="HBoxContainer" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +[node name="FontSizeUIBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup"] layout_mode = 2 size_flags_vertical = 6 tooltip_text = "tooltip_font_sz_ui" -[node name="Label" type="Label" parent="Main/TabBar/Fonts/FontSelection/LeftPane/FontSizeUI"] +[node name="FontSizeUILabel" type="Label" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup/FontSizeUIBox"] layout_mode = 2 text = "lbl_font_sz_ui" -[node name="sbFontSizeUI" type="SpinBox" parent="Main/TabBar/Fonts/FontSelection/LeftPane/FontSizeUI"] +[node name="FontSizeUIField" type="SpinBox" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup/FontSizeUIBox"] 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/TabBar/Fonts/FontSelection/LeftPane"] +[node name="FontSizeMapBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup"] layout_mode = 2 size_flags_vertical = 6 tooltip_text = "tooltip_font_sz_map" -[node name="Label" type="Label" parent="Main/TabBar/Fonts/FontSelection/LeftPane/FontSizeMap"] +[node name="FontSizeMapLabel" type="Label" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup/FontSizeMapBox"] layout_mode = 2 tooltip_text = "tooltip_font_sz_map" text = "lbl_font_sz_map" -[node name="sbFontSizeMap" type="SpinBox" parent="Main/TabBar/Fonts/FontSelection/LeftPane/FontSizeMap"] +[node name="FontSizeMapField" type="SpinBox" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup/FontSizeMapBox"] 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/TabBar/Fonts/FontSelection/LeftPane"] +[node name="FontSizeOvermapBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup"] layout_mode = 2 size_flags_vertical = 6 tooltip_text = "tooltip_font_sz_overmap" -[node name="Label" type="Label" parent="Main/TabBar/Fonts/FontSelection/LeftPane/FontSizeOvermap"] +[node name="FontSizeOvermapLabel" type="Label" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup/FontSizeOvermapBox"] layout_mode = 2 tooltip_text = "tooltip_font_sz_overmap" text = "lbl_font_sz_overmap" -[node name="sbFontSizeOM" type="SpinBox" parent="Main/TabBar/Fonts/FontSelection/LeftPane/FontSizeOvermap"] +[node name="FontSizeOvermapField" type="SpinBox" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup/FontSizeOvermapBox"] 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/TabBar/Fonts/FontSelection/LeftPane"] +[node name="FontBlendingSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup"] layout_mode = 2 tooltip_text = "tooltip_font_blending" text = "cbtn_font_blending" -[node name="BtnSaveFontOptions" type="Button" parent="Main/TabBar/Fonts/FontSelection/LeftPane"] +[node name="SaveFontOptionsBtn" type="Button" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup"] layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_save_font" text = "btn_save_font" -[node name="HSeparator" type="HSeparator" parent="Main/TabBar/Fonts"] +[node name="HSeparator" type="HSeparator" parent="MainLayout/TabbedLayout/FontsArea"] layout_mode = 2 theme_override_constants/separation = 0 -[node name="FontConfigInfo" type="RichTextLabel" parent="Main/TabBar/Fonts"] +[node name="CurrentFontConfigInfo" type="RichTextLabel" parent="MainLayout/TabbedLayout/FontsArea"] layout_mode = 2 bbcode_enabled = true text = "Existing font configuration will be shown here. @@ -687,26 +688,26 @@ text = "Existing font configuration will be shown here. ..." fit_content = true -[node name="FontSizeHelpDialog" parent="Main/TabBar/Fonts" instance=ExtResource("29")] +[node name="FontSizeHelpDialog" parent="MainLayout/TabbedLayout/FontsArea" instance=ExtResource("29")] position = Vector2i(0, 36) -[node name="Backups" type="VBoxContainer" parent="Main/TabBar"] +[node name="BackupsArea" type="VBoxContainer" parent="MainLayout/TabbedLayout"] visible = false layout_mode = 2 script = ExtResource("33") metadata/_tab_index = 4 -[node name="Available" type="VBoxContainer" parent="Main/TabBar/Backups"] +[node name="ExistingBackupsGroup" type="VBoxContainer" parent="MainLayout/TabbedLayout/BackupsArea"] layout_mode = 2 -[node name="Label" type="Label" parent="Main/TabBar/Backups/Available"] +[node name="ExistingBackupsLabel" type="Label" parent="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup"] layout_mode = 2 text = "lbl_save_backups" -[node name="HBox" type="HBoxContainer" parent="Main/TabBar/Backups/Available"] +[node name="BackupsDisplayBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup"] layout_mode = 2 -[node name="BackupsList" type="ItemList" parent="Main/TabBar/Backups/Available/HBox" groups=["disable_during_backup_operations"]] +[node name="BackupsList" type="ItemList" parent="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup/BackupsDisplayBox" groups=["disable_during_backup_operations"]] custom_minimum_size = Vector2(0, 200) layout_mode = 2 size_flags_horizontal = 3 @@ -723,7 +724,7 @@ 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"] +[node name="BackupInfo" type="RichTextLabel" parent="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup/BackupsDisplayBox"] layout_mode = 2 size_flags_horizontal = 3 focus_mode = 2 @@ -731,62 +732,61 @@ bbcode_enabled = true text = "Backup details will appear here." selection_enabled = true -[node name="Buttons" type="HBoxContainer" parent="Main/TabBar/Backups/Available"] +[node name="BackupActionsBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup"] layout_mode = 2 alignment = 1 -[node name="BtnRestore" type="Button" parent="Main/TabBar/Backups/Available/Buttons" groups=["disable_during_backup_operations"]] +[node name="RestoreBackupBtn" type="Button" parent="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup/BackupActionsBox" groups=["disable_during_backup_operations"]] layout_mode = 2 text = "btn_restore_backup" -[node name="BtnDelete" type="Button" parent="Main/TabBar/Backups/Available/Buttons" groups=["disable_during_backup_operations"]] +[node name="DeleteBackupBtn" type="Button" parent="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup/BackupActionsBox" groups=["disable_during_backup_operations"]] layout_mode = 2 text = "btn_delete_backup" -[node name="BtnRefresh" type="Button" parent="Main/TabBar/Backups/Available/Buttons" groups=["disable_during_backup_operations"]] +[node name="RefreshBackupsBtn" type="Button" parent="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup/BackupActionsBox" groups=["disable_during_backup_operations"]] layout_mode = 2 text = "btn_refresh_backups" -[node name="HSeparator" type="HSeparator" parent="Main/TabBar/Backups"] +[node name="HSeparator" type="HSeparator" parent="MainLayout/TabbedLayout/BackupsArea"] layout_mode = 2 -[node name="Current" type="VBoxContainer" parent="Main/TabBar/Backups"] +[node name="ManualBackupGroup" type="VBoxContainer" parent="MainLayout/TabbedLayout/BackupsArea"] layout_mode = 2 -[node name="Label" type="Label" parent="Main/TabBar/Backups/Current"] +[node name="ManualBackupLabel" type="Label" parent="MainLayout/TabbedLayout/BackupsArea/ManualBackupGroup"] layout_mode = 2 text = "lbl_manual_backup" -[node name="HBox" type="HBoxContainer" parent="Main/TabBar/Backups/Current"] +[node name="CreateBackupGroup" type="HBoxContainer" parent="MainLayout/TabbedLayout/BackupsArea/ManualBackupGroup"] layout_mode = 2 -[node name="Label" type="Label" parent="Main/TabBar/Backups/Current/HBox"] +[node name="BackupNameLabel" type="Label" parent="MainLayout/TabbedLayout/BackupsArea/ManualBackupGroup/CreateBackupGroup"] layout_mode = 2 text = "lbl_backup_name" -[node name="EditName" type="LineEdit" parent="Main/TabBar/Backups/Current/HBox"] +[node name="BackupNameField" type="LineEdit" parent="MainLayout/TabbedLayout/BackupsArea/ManualBackupGroup/CreateBackupGroup"] layout_mode = 2 size_flags_horizontal = 3 placeholder_text = "Enter name for new backup" -[node name="BtnCreate" type="Button" parent="Main/TabBar/Backups/Current/HBox" groups=["disable_during_backup_operations"]] +[node name="CreateBackupBtn" type="Button" parent="MainLayout/TabbedLayout/BackupsArea/ManualBackupGroup/CreateBackupGroup" groups=["disable_during_backup_operations"]] layout_mode = 2 size_flags_horizontal = 4 text = "btn_create_backup" -[node name="Spacer" type="Control" parent="Main/TabBar/Backups/Current"] +[node name="Spacer" type="Control" parent="MainLayout/TabbedLayout/BackupsArea/ManualBackupGroup"] layout_mode = 2 -[node name="Settings" type="VBoxContainer" parent="Main/TabBar"] -visible = false +[node name="SettingsArea" type="VBoxContainer" parent="MainLayout/TabbedLayout"] layout_mode = 2 theme_override_constants/separation = 2 script = ExtResource("8") metadata/_tab_index = 5 -[node name="LicensesDialog" parent="Main/TabBar/Settings" instance=ExtResource("24_cyylm")] +[node name="ViewLicensesDialog" parent="MainLayout/TabbedLayout/SettingsArea" instance=ExtResource("24_cyylm")] -[node name="lblLicenses" type="RichTextLabel" parent="Main/TabBar/Settings"] +[node name="ViewLicensesLabel" type="RichTextLabel" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 size_flags_horizontal = 3 theme_override_styles/normal = SubResource("2") @@ -796,14 +796,14 @@ fit_content = true scroll_active = false horizontal_alignment = 1 -[node name="LauncherLanguage" type="HBoxContainer" parent="Main/TabBar/Settings"] +[node name="LauncherLanguageBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 -[node name="Label" type="Label" parent="Main/TabBar/Settings/LauncherLanguage"] +[node name="LauncherLanguageLabel" type="Label" parent="MainLayout/TabbedLayout/SettingsArea/LauncherLanguageBox"] layout_mode = 2 text = "lbl_launcher_language" -[node name="obtnLanguage" type="OptionButton" parent="Main/TabBar/Settings/LauncherLanguage"] +[node name="LauncherLanguageList" type="OptionButton" parent="MainLayout/TabbedLayout/SettingsArea/LauncherLanguageBox"] custom_minimum_size = Vector2(180, 0) layout_mode = 2 size_flags_horizontal = 10 @@ -841,14 +841,14 @@ popup/item_9/text = "한국어" popup/item_9/icon = ExtResource("32_rcpd3") popup/item_9/id = 9 -[node name="LauncherTheme" type="HBoxContainer" parent="Main/TabBar/Settings"] +[node name="LauncherThemeBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 -[node name="Label" type="Label" parent="Main/TabBar/Settings/LauncherTheme"] +[node name="LauncherThemeLabel" type="Label" parent="MainLayout/TabbedLayout/SettingsArea/LauncherThemeBox"] layout_mode = 2 text = "lbl_launcher_theme" -[node name="obtnTheme" type="OptionButton" parent="Main/TabBar/Settings/LauncherTheme"] +[node name="LauncherThemeList" type="OptionButton" parent="MainLayout/TabbedLayout/SettingsArea/LauncherThemeBox"] custom_minimum_size = Vector2(180, 0) layout_mode = 2 size_flags_horizontal = 10 @@ -871,85 +871,85 @@ popup/item_4/text = "Solarized Light" popup/item_4/icon = ExtResource("38_65f1m") popup/item_4/id = 4 -[node name="ShowGameDesc" type="CheckButton" parent="Main/TabBar/Settings"] +[node name="ShowGameDescSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_show_game_desc" text = "cbtn_show_game_desc" -[node name="KeepLauncherOpen" type="CheckButton" parent="Main/TabBar/Settings"] +[node name="KeepLauncherOpenSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_keep_launcher_open" text = "cbtn_keep_launcher_open" -[node name="PrintTips" type="CheckButton" parent="Main/TabBar/Settings"] +[node name="PrintTipsSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_print_tips" text = "cbtn_print_tips" -[node name="UpdateToSame" type="CheckButton" parent="Main/TabBar/Settings"] +[node name="UpdateToSameVerSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_updating_to_same_build" text = "cbtn_updating_to_same_build" -[node name="ShortenNames" type="CheckButton" parent="Main/TabBar/Settings"] +[node name="ShortenNamesSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_shorten_release_names" text = "cbtn_shorten_release_names" -[node name="AlwaysShowInstalls" type="CheckButton" parent="Main/TabBar/Settings"] +[node name="AlwaysShowInstallsSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_always_show_installs" text = "cbtn_always_show_installs" -[node name="ShowObsoleteMods" type="CheckButton" parent="Main/TabBar/Settings"] +[node name="ShowObsoleteModsSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_show_obsolete_mods" text = "cbtn_show_obsolete_mods" -[node name="InstallArchivedMods" type="CheckButton" parent="Main/TabBar/Settings"] +[node name="InstallArchivedModsSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_install_archived_mods" text = "cbtn_install_archived_mods" -[node name="KeepCache" type="CheckButton" parent="Main/TabBar/Settings"] +[node name="KeepDownloadCacheSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_keep_cache" text = "cbtn_keep_cache" -[node name="IgnoreCache" type="CheckButton" parent="Main/TabBar/Settings"] +[node name="IgnoreDownloadCacheSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_ignore_cache" text = "cbtn_ignore_cache" -[node name="ShowDebug" type="CheckButton" parent="Main/TabBar/Settings"] +[node name="DebugModeSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_debug_mode" text = "cbtn_debug_mode" -[node name="NumReleases" type="HBoxContainer" parent="Main/TabBar/Settings"] +[node name="NumReleasesBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_num_releases_to_request" -[node name="Label" type="Label" parent="Main/TabBar/Settings/NumReleases"] +[node name="NumReleasesLabel" type="Label" parent="MainLayout/TabbedLayout/SettingsArea/NumReleasesBox"] layout_mode = 2 text = "lbl_num_releases_to_request" -[node name="sbNumReleases" type="SpinBox" parent="Main/TabBar/Settings/NumReleases"] +[node name="NumReleasesField" type="SpinBox" parent="MainLayout/TabbedLayout/SettingsArea/NumReleasesBox"] layout_mode = 2 size_flags_horizontal = 10 min_value = 1.0 value = 30.0 rounded = true -[node name="NumPrs" type="HBoxContainer" parent="Main/TabBar/Settings"] +[node name="NumPrsBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_num_prs_to_request" -[node name="Label" type="Label" parent="Main/TabBar/Settings/NumPrs"] +[node name="NumPrsLabel" type="Label" parent="MainLayout/TabbedLayout/SettingsArea/NumPrsBox"] layout_mode = 2 text = "lbl_num_prs_to_request" -[node name="sbNumPRs" type="SpinBox" parent="Main/TabBar/Settings/NumPrs"] +[node name="NumPrsField" type="SpinBox" parent="MainLayout/TabbedLayout/SettingsArea/NumPrsBox"] layout_mode = 2 size_flags_horizontal = 10 min_value = 10.0 @@ -957,46 +957,46 @@ step = 10.0 value = 100.0 rounded = true -[node name="ProxySettings" type="HBoxContainer" parent="Main/TabBar/Settings"] +[node name="ProxySettingsBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_proxy_settings" -[node name="Label" type="Label" parent="Main/TabBar/Settings/ProxySettings"] +[node name="ProxySettingsLabel" type="Label" parent="MainLayout/TabbedLayout/SettingsArea/ProxySettingsBox"] layout_mode = 2 text = "lbl_proxy_settings" -[node name="obtnProxyOption" type="OptionButton" parent="Main/TabBar/Settings/ProxySettings"] +[node name="ProxyOptionList" type="OptionButton" parent="MainLayout/TabbedLayout/SettingsArea/ProxySettingsBox"] layout_mode = 2 size_flags_horizontal = 10 size_flags_stretch_ratio = 20.0 tooltip_text = "tooltip_proxy_options" -[node name="leProxyHost" type="LineEdit" parent="Main/TabBar/Settings/ProxySettings"] +[node name="ProxyHostField" type="LineEdit" parent="MainLayout/TabbedLayout/SettingsArea/ProxySettingsBox"] custom_minimum_size = Vector2(170, 0) layout_mode = 2 size_flags_horizontal = 10 placeholder_text = "localhost" -[node name="sbProxyPort" type="SpinBox" parent="Main/TabBar/Settings/ProxySettings"] +[node name="ProxyPortField" type="SpinBox" parent="MainLayout/TabbedLayout/SettingsArea/ProxySettingsBox"] layout_mode = 2 size_flags_horizontal = 10 max_value = 65535.0 -[node name="ScaleOverride" type="HBoxContainer" parent="Main/TabBar/Settings"] +[node name="CustomScaleBox" type="HBoxContainer" parent="MainLayout/TabbedLayout/SettingsArea"] layout_mode = 2 tooltip_text = "tooltip_ui_scale_override" -[node name="Label" type="Label" parent="Main/TabBar/Settings/ScaleOverride"] +[node name="CustomScaleLabel" type="Label" parent="MainLayout/TabbedLayout/SettingsArea/CustomScaleBox"] layout_mode = 2 text = "lbl_ui_scale_override" -[node name="cbScaleOverrideEnable" type="CheckBox" parent="Main/TabBar/Settings/ScaleOverride"] +[node name="CustomScaleEnableSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/SettingsArea/CustomScaleBox"] layout_mode = 2 size_flags_horizontal = 10 size_flags_stretch_ratio = 20.0 text = "cbtn_enable_scale" -[node name="sbScaleOverride" type="SpinBox" parent="Main/TabBar/Settings/ScaleOverride"] +[node name="CustomScaleValueField" type="SpinBox" parent="MainLayout/TabbedLayout/SettingsArea/CustomScaleBox"] layout_mode = 2 size_flags_horizontal = 10 min_value = 75.0 @@ -1006,71 +1006,71 @@ value = 100.0 editable = false suffix = "%" -[node name="Debug" type="VBoxContainer" parent="Main/TabBar"] +[node name="DebugArea" type="VBoxContainer" parent="MainLayout/TabbedLayout"] visible = false layout_mode = 2 script = ExtResource("14") metadata/_tab_index = 6 -[node name="Label" type="Label" parent="Main/TabBar/Debug"] +[node name="Label" type="Label" parent="MainLayout/TabbedLayout/DebugArea"] layout_mode = 2 text = "This tab contains functions helpful in debugging parts of the launcher during development. Useless for anything else." autowrap_mode = 2 -[node name="Button" type="Button" parent="Main/TabBar/Debug"] +[node name="Button" type="Button" parent="MainLayout/TabbedLayout/DebugArea"] layout_mode = 2 size_flags_horizontal = 6 text = "Test mod directory parsing" -[node name="Button2" type="Button" parent="Main/TabBar/Debug"] +[node name="Button2" type="Button" parent="MainLayout/TabbedLayout/DebugArea"] layout_mode = 2 size_flags_horizontal = 6 text = "Test sound directory parsing" -[node name="Button3" type="Button" parent="Main/TabBar/Debug"] +[node name="Button3" type="Button" parent="MainLayout/TabbedLayout/DebugArea"] layout_mode = 2 size_flags_horizontal = 6 text = "Test passing of arguments to shell commands" -[node name="Button4" type="Button" parent="Main/TabBar/Debug"] +[node name="Button4" type="Button" parent="MainLayout/TabbedLayout/DebugArea"] layout_mode = 2 size_flags_horizontal = 6 text = "Test different types of status messages" -[node name="Button5" type="Button" parent="Main/TabBar/Debug"] +[node name="Button5" type="Button" parent="MainLayout/TabbedLayout/DebugArea"] layout_mode = 2 size_flags_horizontal = 4 text = "Test recursive directory listing" -[node name="Button6" type="Button" parent="Main/TabBar/Debug"] +[node name="Button6" type="Button" parent="MainLayout/TabbedLayout/DebugArea"] layout_mode = 2 size_flags_horizontal = 4 text = "Print a random Tip of the Day" -[node name="Button7" type="Button" parent="Main/TabBar/Debug"] +[node name="Button7" type="Button" parent="MainLayout/TabbedLayout/DebugArea"] layout_mode = 2 size_flags_horizontal = 4 text = "Test path resolution in PathHelper" -[node name="Button8" type="Button" parent="Main/TabBar/Debug"] +[node name="Button8" type="Button" parent="MainLayout/TabbedLayout/DebugArea"] layout_mode = 2 size_flags_horizontal = 4 text = "Test position retrieval" -[node name="Button9" type="Button" parent="Main/TabBar/Debug"] +[node name="Button9" type="Button" parent="MainLayout/TabbedLayout/DebugArea"] layout_mode = 2 size_flags_horizontal = 4 text = "Print screen info" -[node name="Button10" type="Button" parent="Main/TabBar/Debug"] +[node name="Button10" type="Button" parent="MainLayout/TabbedLayout/DebugArea"] layout_mode = 2 size_flags_horizontal = 4 text = "Browse internal filesystem" -[node name="BrowseResourcesDialog" type="FileDialog" parent="Main/TabBar/Debug"] +[node name="BrowseResourcesDialog" type="FileDialog" parent="MainLayout/TabbedLayout/DebugArea"] unique_name_in_owner = true -[node name="Log" type="RichTextLabel" parent="Main"] +[node name="LogText" type="RichTextLabel" parent="MainLayout"] layout_mode = 2 size_flags_vertical = 3 focus_mode = 2 @@ -1078,146 +1078,146 @@ bbcode_enabled = true scroll_following = true selection_enabled = true -[node name="Releases" type="Node" parent="."] +[node name="ReleaseManager" type="Node" parent="."] script = ExtResource("5") -[node name="HTTPRequest_DDA" type="HTTPRequest" parent="Releases"] +[node name="HTTPRequest_DDA" type="HTTPRequest" parent="ReleaseManager"] -[node name="HTTPRequest_BN" type="HTTPRequest" parent="Releases"] +[node name="HTTPRequest_BN" type="HTTPRequest" parent="ReleaseManager"] -[node name="HTTPRequest_EOD" type="HTTPRequest" parent="Releases"] +[node name="HTTPRequest_EOD" type="HTTPRequest" parent="ReleaseManager"] -[node name="HTTPRequest_TISH" type="HTTPRequest" parent="Releases"] +[node name="HTTPRequest_TISH" type="HTTPRequest" parent="ReleaseManager"] -[node name="HTTPRequest_TLG" type="HTTPRequest" parent="Releases"] +[node name="HTTPRequest_TLG" type="HTTPRequest" parent="ReleaseManager"] [node name="ReleaseInstaller" type="Node" parent="."] script = ExtResource("9") -[node name="Mods" type="Node" parent="."] +[node name="ModManager" type="Node" parent="."] script = ExtResource("12") -[node name="Sound" type="Node" parent="."] +[node name="SoundpackManager" type="Node" parent="."] script = ExtResource("13") -[node name="Fonts" type="Node" parent="."] +[node name="FontManager" type="Node" parent="."] script = ExtResource("28") -[node name="Backups" type="Node" parent="."] +[node name="BackupManager" type="Node" parent="."] 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/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/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"] -[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="meta_clicked" from="Main/TabBar/Settings/lblLicenses" to="Main/TabBar/Settings/LicensesDialog" method="_on_lbl_licenses_meta_clicked"] -[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="pressed" from="Main/TabBar/Debug/Button10" to="Main/TabBar/Debug" method="_on_button_10_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"] -[connection signal="request_completed" from="Releases/HTTPRequest_DDA" to="Releases" method="_on_request_completed_dda"] -[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="request_completed" from="Releases/HTTPRequest_TLG" to="Releases" method="_on_request_completed_tlg"] +[connection signal="gui_input" from="MainLayout/GameInfoGroup/GameDescIcon" to="." method="_on_InfoIcon_gui_input"] +[connection signal="meta_clicked" from="MainLayout/GameInfoGroup/GameDescText" to="." method="_on_Description_meta_clicked"] +[connection signal="tab_changed" from="MainLayout/TabbedLayout" to="." method="_on_Tabs_tab_changed"] +[connection signal="tab_changed" from="MainLayout/TabbedLayout" to="MainLayout/TabbedLayout/ModsArea" method="_on_Tabs_tab_changed"] +[connection signal="tab_changed" from="MainLayout/TabbedLayout" to="MainLayout/TabbedLayout/SoundArea" method="_on_Tabs_tab_changed"] +[connection signal="tab_changed" from="MainLayout/TabbedLayout" to="MainLayout/TabbedLayout/FontsArea" method="_on_Tabs_tab_changed"] +[connection signal="tab_changed" from="MainLayout/TabbedLayout" to="MainLayout/TabbedLayout/BackupsArea" method="_on_Tabs_tab_changed"] +[connection signal="meta_clicked" from="MainLayout/TabbedLayout/GameArea/ChannelSelectGroup/ChannelTitleBox/ChangelogLinkLabel" to="." method="_on_ChangelogLink_meta_clicked"] +[connection signal="item_selected" from="MainLayout/TabbedLayout/GameArea/ReleaseSelectGroup/ReleasesList" to="." method="_on_BuildsList_item_selected"] +[connection signal="pressed" from="MainLayout/TabbedLayout/GameArea/ReleaseSelectGroup/RefreshReleasesBtn" to="." method="_on_BtnRefresh_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/GameArea/InstallReleaseBtn" to="." method="_on_BtnInstall_pressed"] +[connection signal="toggled" from="MainLayout/TabbedLayout/GameArea/UpdateCurrentSwitch" to="." method="_on_cbUpdateCurrent_toggled"] +[connection signal="pressed" from="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup/ActiveInstallNameBox/GameDirBtn" to="." method="_on_GameDir_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup/ActiveInstallNameBox/UserDirBtn" to="." method="_on_UserDir_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup/LaunchGameBox/LaunchGameBtn" to="." method="_on_BtnPlay_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup/LaunchGameBox/QuickLoadBtn" to="." method="_on_BtnResume_pressed"] +[connection signal="item_activated" from="MainLayout/TabbedLayout/GameArea/GameInstallsGroup/GameInstallsMgmtGroup/GameInstallsList" to="." method="_on_InstallsList_item_activated"] +[connection signal="item_selected" from="MainLayout/TabbedLayout/GameArea/GameInstallsGroup/GameInstallsMgmtGroup/GameInstallsList" to="." method="_on_InstallsList_item_selected"] +[connection signal="pressed" from="MainLayout/TabbedLayout/GameArea/GameInstallsGroup/GameInstallsMgmtGroup/GameInstallActionsBox/MakeInstallActiveBtn" to="." method="_on_btnMakeActive_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/GameArea/GameInstallsGroup/GameInstallsMgmtGroup/GameInstallActionsBox/DeleteGameInstallBtn" to="." method="_on_btnDelete_pressed"] +[connection signal="item_selected" from="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/InstalledModsGroup/InstalledModsList" to="MainLayout/TabbedLayout/ModsArea" method="_on_InstalledList_item_selected"] +[connection signal="multi_selected" from="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/InstalledModsGroup/InstalledModsList" to="MainLayout/TabbedLayout/ModsArea" method="_on_InstalledList_multi_selected"] +[connection signal="toggled" from="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/InstalledModsGroup/ShowStockModsSwitch" to="MainLayout/TabbedLayout/ModsArea" method="_on_ShowStock_toggled"] +[connection signal="pressed" from="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/InstalledModsGroup/DeleteModsBtn" to="MainLayout/TabbedLayout/ModsArea" method="_on_BtnDelete_pressed"] +[connection signal="item_selected" from="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup/AvailableModsList" to="MainLayout/TabbedLayout/ModsArea" method="_on_AvailableList_item_selected"] +[connection signal="multi_selected" from="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup/AvailableModsList" to="MainLayout/TabbedLayout/ModsArea" method="_on_AvailableList_multi_selected"] +[connection signal="toggled" from="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup/ShowInstalledModsSwitch" to="MainLayout/TabbedLayout/ModsArea" method="_on_ShowInstalled_toggled"] +[connection signal="pressed" from="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup/AddModsActionsBox/AddSelectedModsBtn" to="MainLayout/TabbedLayout/ModsArea" method="_on_BtnAddSelectedMod_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup/AddModsActionsBox/AddAllModsBtn" to="MainLayout/TabbedLayout/ModsArea" method="_on_BtnAddAllMods_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup/GetKenanModpackBtn" to="MainLayout/TabbedLayout/ModsArea" method="_on_BtnDownloadKenan_pressed"] +[connection signal="confirmed" from="MainLayout/TabbedLayout/ModsArea/DeleteMultipleModsDialog" to="MainLayout/TabbedLayout/ModsArea" method="_on_DeleteMultipleDialog_confirmed"] +[connection signal="response_no" from="MainLayout/TabbedLayout/ModsArea/ModReinstallDialog" to="MainLayout/TabbedLayout/ModsArea" method="_on_ModReinstallDialog_response_no"] +[connection signal="response_yes" from="MainLayout/TabbedLayout/ModsArea/ModReinstallDialog" to="MainLayout/TabbedLayout/ModsArea" method="_on_ModReinstallDialog_response_yes"] +[connection signal="item_selected" from="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup/InstalledSoundsList" to="MainLayout/TabbedLayout/SoundArea" method="_on_InstalledList_item_selected"] +[connection signal="toggled" from="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup/ShowStockSoundsSwitch" to="MainLayout/TabbedLayout/SoundArea" method="_on_ShowStock_toggled"] +[connection signal="pressed" from="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup/DeleteSoundsBtn" to="MainLayout/TabbedLayout/SoundArea" method="_on_BtnDelete_pressed"] +[connection signal="item_selected" from="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/AvailableSoundsGroup/AvailableSoundsList" to="MainLayout/TabbedLayout/SoundArea" method="_on_AvailableList_item_selected"] +[connection signal="pressed" from="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/AvailableSoundsGroup/InstallSoundBtn" to="MainLayout/TabbedLayout/SoundArea" method="_on_BtnInstall_pressed"] +[connection signal="confirmed" from="MainLayout/TabbedLayout/SoundArea/ConfirmDeleteSoundDialog" to="MainLayout/TabbedLayout/SoundArea" method="_on_ConfirmDelete_confirmed"] +[connection signal="confirmed" from="MainLayout/TabbedLayout/SoundArea/ManualSoundDownloadDlg" to="MainLayout/TabbedLayout/SoundArea" method="_on_ConfirmManualDownload_confirmed"] +[connection signal="file_selected" from="MainLayout/TabbedLayout/SoundArea/InstallFromFileDialog" to="MainLayout/TabbedLayout/SoundArea" method="_on_InstallFromFileDialog_file_selected"] +[connection signal="item_selected" from="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontsList" to="MainLayout/TabbedLayout/FontsArea" method="_on_FontsList_item_selected"] +[connection signal="pressed" from="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox/SetFontUIBtn" to="MainLayout/TabbedLayout/FontsArea" method="_on_BtnSetFontX_pressed" binds= [true, false, false]] +[connection signal="pressed" from="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox/SetFontMapBtn" to="MainLayout/TabbedLayout/FontsArea" method="_on_BtnSetFontX_pressed" binds= [false, true, false]] +[connection signal="pressed" from="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox/SetFontOvermapBtn" to="MainLayout/TabbedLayout/FontsArea" method="_on_BtnSetFontX_pressed" binds= [false, false, true]] +[connection signal="pressed" from="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox/SetFontAllBtn" to="MainLayout/TabbedLayout/FontsArea" method="_on_BtnSetFontX_pressed" binds= [true, true, true]] +[connection signal="pressed" from="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox/ResetFontBtn" to="MainLayout/TabbedLayout/FontsArea" method="_on_BtnResetFont_pressed"] +[connection signal="toggled" from="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup/PreviewCyrillicSwitch" to="MainLayout/TabbedLayout/FontsArea" method="_on_PreviewCyrillic_toggled"] +[connection signal="pressed" from="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup/OtherSettingsBox/FontSettingsHelpBtn" to="MainLayout/TabbedLayout/FontsArea" method="_on_HelpIcon_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup/SaveFontOptionsBtn" to="MainLayout/TabbedLayout/FontsArea" method="_on_BtnSaveFontOptions_pressed"] +[connection signal="item_selected" from="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup/BackupsDisplayBox/BackupsList" to="MainLayout/TabbedLayout/BackupsArea" method="_on_BackupsList_item_selected"] +[connection signal="meta_clicked" from="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup/BackupsDisplayBox/BackupInfo" to="MainLayout/TabbedLayout/BackupsArea" method="_on_BackupInfo_meta_clicked"] +[connection signal="pressed" from="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup/BackupActionsBox/RestoreBackupBtn" to="MainLayout/TabbedLayout/BackupsArea" method="_on_BtnRestore_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup/BackupActionsBox/DeleteBackupBtn" to="MainLayout/TabbedLayout/BackupsArea" method="_on_BtnDelete_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup/BackupActionsBox/RefreshBackupsBtn" to="MainLayout/TabbedLayout/BackupsArea" method="_on_BtnRefresh_pressed"] +[connection signal="text_changed" from="MainLayout/TabbedLayout/BackupsArea/ManualBackupGroup/CreateBackupGroup/BackupNameField" to="MainLayout/TabbedLayout/BackupsArea" method="_on_EditName_text_changed"] +[connection signal="text_submitted" from="MainLayout/TabbedLayout/BackupsArea/ManualBackupGroup/CreateBackupGroup/BackupNameField" to="MainLayout/TabbedLayout/BackupsArea" method="_on_EditName_text_entered"] +[connection signal="pressed" from="MainLayout/TabbedLayout/BackupsArea/ManualBackupGroup/CreateBackupGroup/CreateBackupBtn" to="MainLayout/TabbedLayout/BackupsArea" method="_on_BtnCreate_pressed"] +[connection signal="meta_clicked" from="MainLayout/TabbedLayout/SettingsArea/ViewLicensesLabel" to="MainLayout/TabbedLayout/SettingsArea/ViewLicensesDialog" method="_on_lbl_licenses_meta_clicked"] +[connection signal="item_selected" from="MainLayout/TabbedLayout/SettingsArea/LauncherLanguageBox/LauncherLanguageList" to="MainLayout/TabbedLayout/SettingsArea" method="_on_obtnLanguage_item_selected"] +[connection signal="item_selected" from="MainLayout/TabbedLayout/SettingsArea/LauncherThemeBox/LauncherThemeList" to="MainLayout/TabbedLayout/SettingsArea" method="_on_obtnTheme_item_selected"] +[connection signal="toggled" from="MainLayout/TabbedLayout/SettingsArea/ShowGameDescSwitch" to="MainLayout/TabbedLayout/SettingsArea" method="_on_ShowGameDesc_toggled"] +[connection signal="toggled" from="MainLayout/TabbedLayout/SettingsArea/KeepLauncherOpenSwitch" to="MainLayout/TabbedLayout/SettingsArea" method="_on_KeepLauncherOpen_toggled"] +[connection signal="toggled" from="MainLayout/TabbedLayout/SettingsArea/PrintTipsSwitch" to="MainLayout/TabbedLayout/SettingsArea" method="_on_PrintTips_toggled"] +[connection signal="toggled" from="MainLayout/TabbedLayout/SettingsArea/UpdateToSameVerSwitch" to="MainLayout/TabbedLayout/SettingsArea" method="_on_UpdateToSame_toggled"] +[connection signal="toggled" from="MainLayout/TabbedLayout/SettingsArea/ShortenNamesSwitch" to="MainLayout/TabbedLayout/SettingsArea" method="_on_ShortenNames_toggled"] +[connection signal="toggled" from="MainLayout/TabbedLayout/SettingsArea/AlwaysShowInstallsSwitch" to="MainLayout/TabbedLayout/SettingsArea" method="_on_AlwaysShowInstalls_toggled"] +[connection signal="toggled" from="MainLayout/TabbedLayout/SettingsArea/ShowObsoleteModsSwitch" to="MainLayout/TabbedLayout/SettingsArea" method="_on_ShowObsoleteMods_toggled"] +[connection signal="toggled" from="MainLayout/TabbedLayout/SettingsArea/InstallArchivedModsSwitch" to="MainLayout/TabbedLayout/SettingsArea" method="_on_InstallArchivedMods_toggled"] +[connection signal="toggled" from="MainLayout/TabbedLayout/SettingsArea/KeepDownloadCacheSwitch" to="MainLayout/TabbedLayout/SettingsArea" method="_on_KeepCache_toggled"] +[connection signal="toggled" from="MainLayout/TabbedLayout/SettingsArea/IgnoreDownloadCacheSwitch" to="MainLayout/TabbedLayout/SettingsArea" method="_on_IgnoreCache_toggled"] +[connection signal="toggled" from="MainLayout/TabbedLayout/SettingsArea/DebugModeSwitch" to="MainLayout/TabbedLayout/SettingsArea" method="_on_ShowDebug_toggled"] +[connection signal="value_changed" from="MainLayout/TabbedLayout/SettingsArea/NumReleasesBox/NumReleasesField" to="MainLayout/TabbedLayout/SettingsArea" method="_on_sbNumReleases_value_changed"] +[connection signal="value_changed" from="MainLayout/TabbedLayout/SettingsArea/NumPrsBox/NumPrsField" to="MainLayout/TabbedLayout/SettingsArea" method="_on_sbNumPRs_value_changed"] +[connection signal="item_selected" from="MainLayout/TabbedLayout/SettingsArea/ProxySettingsBox/ProxyOptionList" to="MainLayout/TabbedLayout/SettingsArea" method="_on_obtnProxyOption_item_selected"] +[connection signal="text_changed" from="MainLayout/TabbedLayout/SettingsArea/ProxySettingsBox/ProxyHostField" to="MainLayout/TabbedLayout/SettingsArea" method="_on_leProxyHost_text_changed"] +[connection signal="value_changed" from="MainLayout/TabbedLayout/SettingsArea/ProxySettingsBox/ProxyPortField" to="MainLayout/TabbedLayout/SettingsArea" method="_on_sbProxyPort_value_changed"] +[connection signal="toggled" from="MainLayout/TabbedLayout/SettingsArea/CustomScaleBox/CustomScaleEnableSwitch" to="MainLayout/TabbedLayout/SettingsArea" method="_on_cbScaleOverrideEnable_toggled"] +[connection signal="value_changed" from="MainLayout/TabbedLayout/SettingsArea/CustomScaleBox/CustomScaleValueField" to="MainLayout/TabbedLayout/SettingsArea" method="_on_sbScaleOverride_value_changed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/DebugArea/Button" to="MainLayout/TabbedLayout/DebugArea" method="_on_Button_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/DebugArea/Button2" to="MainLayout/TabbedLayout/DebugArea" method="_on_Button2_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/DebugArea/Button3" to="MainLayout/TabbedLayout/DebugArea" method="_on_Button3_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/DebugArea/Button4" to="MainLayout/TabbedLayout/DebugArea" method="_on_Button4_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/DebugArea/Button5" to="MainLayout/TabbedLayout/DebugArea" method="_on_Button5_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/DebugArea/Button6" to="MainLayout/TabbedLayout/DebugArea" method="_on_Button6_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/DebugArea/Button7" to="MainLayout/TabbedLayout/DebugArea" method="_on_Button7_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/DebugArea/Button8" to="MainLayout/TabbedLayout/DebugArea" method="_on_Button8_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/DebugArea/Button9" to="MainLayout/TabbedLayout/DebugArea" method="_on_Button9_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/DebugArea/Button10" to="MainLayout/TabbedLayout/DebugArea" method="_on_button_10_pressed"] +[connection signal="meta_clicked" from="MainLayout/LogText" to="." method="_on_Log_meta_clicked"] +[connection signal="done_fetching_releases" from="ReleaseManager" to="." method="_on_Releases_done_fetching_releases"] +[connection signal="started_fetching_releases" from="ReleaseManager" to="." method="_on_Releases_started_fetching_releases"] +[connection signal="request_completed" from="ReleaseManager/HTTPRequest_DDA" to="ReleaseManager" method="_on_request_completed_dda"] +[connection signal="request_completed" from="ReleaseManager/HTTPRequest_BN" to="ReleaseManager" method="_on_request_completed_bn"] +[connection signal="request_completed" from="ReleaseManager/HTTPRequest_EOD" to="ReleaseManager" method="_on_request_completed_eod"] +[connection signal="request_completed" from="ReleaseManager/HTTPRequest_TISH" to="ReleaseManager" method="_on_request_completed_tish"] +[connection signal="request_completed" from="ReleaseManager/HTTPRequest_TLG" to="ReleaseManager" method="_on_request_completed_tlg"] [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"] +[connection signal="mod_deletion_finished" from="ModManager" to="." method="_on_mod_operation_finished"] +[connection signal="mod_deletion_started" from="ModManager" to="." method="_on_mod_operation_started"] +[connection signal="mod_installation_finished" from="ModManager" to="." method="_on_mod_operation_finished"] +[connection signal="mod_installation_started" from="ModManager" to="." method="_on_mod_operation_started"] +[connection signal="modpack_retrieval_finished" from="ModManager" to="." method="_on_mod_operation_finished"] +[connection signal="modpack_retrieval_started" from="ModManager" to="." method="_on_mod_operation_started"] +[connection signal="soundpack_deletion_finished" from="SoundpackManager" to="." method="_on_soundpack_operation_finished"] +[connection signal="soundpack_deletion_started" from="SoundpackManager" to="." method="_on_soundpack_operation_started"] +[connection signal="soundpack_installation_finished" from="SoundpackManager" to="." method="_on_soundpack_operation_finished"] +[connection signal="soundpack_installation_started" from="SoundpackManager" to="." method="_on_soundpack_operation_started"] +[connection signal="backup_creation_finished" from="BackupManager" to="." method="_on_backup_operation_finished"] +[connection signal="backup_creation_started" from="BackupManager" to="." method="_on_backup_operation_started"] +[connection signal="backup_deletion_finished" from="BackupManager" to="." method="_on_backup_operation_finished"] +[connection signal="backup_deletion_started" from="BackupManager" to="." method="_on_backup_operation_started"] +[connection signal="backup_restoration_finished" from="BackupManager" to="." method="_on_backup_operation_finished"] +[connection signal="backup_restoration_started" from="BackupManager" to="." method="_on_backup_operation_started"] From 9b6e8f7253cb1eaa1d34ba184bb0fac44aa8a65c Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Fri, 7 Nov 2025 20:22:36 +0000 Subject: [PATCH 03/14] Access nodes by scene-unique names --- scenes/Catapult.tscn | 123 ++++++++++++++++--- scenes/LicensesDialog.tscn | 6 +- scripts/BackupsUI.gd | 59 ++++----- scripts/Catapult.gd | 244 ++++++++++++++++++------------------- scripts/Debug.gd | 8 +- scripts/FontsUI.gd | 89 ++++++-------- scripts/ModsUI.gd | 136 ++++++++++----------- scripts/SettingsUI.gd | 60 +++++---- scripts/SoundpacksUI.gd | 106 ++++++++-------- scripts/licenses_dialog.gd | 8 +- scripts/status.gd | 14 +-- scripts/theme_scaler.gd | 10 +- 12 files changed, 454 insertions(+), 409 deletions(-) diff --git a/scenes/Catapult.tscn b/scenes/Catapult.tscn index 63565a9a..b9ef5399 100644 --- a/scenes/Catapult.tscn +++ b/scenes/Catapult.tscn @@ -64,14 +64,15 @@ script = ExtResource("4") [node name="MainLayout" type="VBoxContainer" parent="."] layout_mode = 2 -[node name="GameChoiceGroup" type="HBoxContainer" parent="MainLayout"] +[node name="GameChoiceBox" type="HBoxContainer" parent="MainLayout"] layout_mode = 2 -[node name="GameLabel" type="Label" parent="MainLayout/GameChoiceGroup"] +[node name="GameLabel" type="Label" parent="MainLayout/GameChoiceBox"] layout_mode = 2 text = "lbl_game" -[node name="GamesList" type="OptionButton" parent="MainLayout/GameChoiceGroup" groups=["disable_during_mod_operations", "disable_during_soundpack_operations", "disable_while_fetching_releases", "disable_while_installing_game"]] +[node name="GamesList" type="OptionButton" parent="MainLayout/GameChoiceBox" groups=["disable_during_mod_operations", "disable_during_soundpack_operations", "disable_while_fetching_releases", "disable_while_installing_game"]] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 tooltip_text = "tooltip_game" @@ -88,20 +89,22 @@ popup/item_3/id = 3 popup/item_4/text = "Cataclysm: The Last Generation" popup/item_4/id = 4 -[node name="GameInfoGroup" type="HBoxContainer" parent="MainLayout"] +[node name="GameInfoBox" type="HBoxContainer" parent="MainLayout"] +unique_name_in_owner = true layout_mode = 2 theme_override_constants/separation = 8 -[node name="Spacer" type="Control" parent="MainLayout/GameInfoGroup"] +[node name="Spacer" type="Control" parent="MainLayout/GameInfoBox"] layout_mode = 2 -[node name="GameDescIcon" type="TextureRect" parent="MainLayout/GameInfoGroup"] +[node name="GameDescIcon" type="TextureRect" parent="MainLayout/GameInfoBox"] layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 texture = ExtResource("2_rcpd3") -[node name="GameDescText" type="RichTextLabel" parent="MainLayout/GameInfoGroup"] +[node name="GameDescText" type="RichTextLabel" parent="MainLayout/GameInfoBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 @@ -113,13 +116,13 @@ fit_content = true layout_mode = 2 [node name="TabbedLayout" type="TabContainer" parent="MainLayout" groups=["disable_during_backup_operations", "disable_during_mod_operations", "disable_during_release_operations", "disable_during_soundpack_operations", "disable_while_fetching_releases"]] +unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 3 -current_tab = 5 +current_tab = 0 script = ExtResource("16") [node name="GameArea" type="VBoxContainer" parent="MainLayout/TabbedLayout"] -visible = false layout_mode = 2 metadata/_tab_index = 0 @@ -134,6 +137,7 @@ layout_mode = 2 text = "lbl_channel" [node name="ChangelogLinkLabel" type="RichTextLabel" parent="MainLayout/TabbedLayout/GameArea/ChannelSelectGroup/ChannelTitleBox"] +unique_name_in_owner = true custom_minimum_size = Vector2(300, 0) layout_mode = 2 size_flags_horizontal = 3 @@ -147,12 +151,14 @@ scroll_active = false layout_mode = 2 [node name="StableSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/GameArea/ChannelSelectGroup/ChannelSwitchesGroup" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_stable" button_group = SubResource("ButtonGroup_nlnc6") text = "rbtn_stable" [node name="ExperimentalSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/GameArea/ChannelSelectGroup/ChannelSwitchesGroup" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_experimental" button_group = SubResource("ButtonGroup_nlnc6") @@ -166,18 +172,21 @@ layout_mode = 2 text = "lbl_builds" [node name="ReleasesList" type="OptionButton" parent="MainLayout/TabbedLayout/GameArea/ReleaseSelectGroup" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 tooltip_text = "tooltip_builds" clip_text = true [node name="RefreshReleasesBtn" type="Button" parent="MainLayout/TabbedLayout/GameArea/ReleaseSelectGroup" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_refresh" text = "btn_refresh" icon = ExtResource("4_no8b7") [node name="InstallReleaseBtn" type="Button" parent="MainLayout/TabbedLayout/GameArea" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_install" @@ -185,6 +194,7 @@ text = "btn_install" icon = ExtResource("4_rcpd3") [node name="UpdateCurrentSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/GameArea" groups=["disable_during_release_operations", "disable_while_fetching_releases"]] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_update" @@ -206,16 +216,19 @@ size_flags_horizontal = 4 theme_override_constants/separation = 4 [node name="ActiveInstallNameLabel" type="Label" parent="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup/ActiveInstallNameBox"] +unique_name_in_owner = true layout_mode = 2 text = "lbl_build_none" [node name="GameDirBtn" parent="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup/ActiveInstallNameBox" instance=ExtResource("26")] +unique_name_in_owner = true custom_minimum_size = Vector2(20, 20) layout_mode = 2 tooltip_text = "tooltip_game_dir" texture_normal = ExtResource("6_rcpd3") [node name="UserDirBtn" parent="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup/ActiveInstallNameBox" instance=ExtResource("26")] +unique_name_in_owner = true custom_minimum_size = Vector2(20, 20) layout_mode = 2 tooltip_text = "tooltip_user_dir" @@ -226,6 +239,7 @@ layout_mode = 2 size_flags_horizontal = 4 [node name="LaunchGameBtn" type="Button" parent="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup/LaunchGameBox" groups=["disable_during_release_operations"]] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_play" @@ -233,6 +247,7 @@ text = "btn_play" icon = ExtResource("8_no8b7") [node name="QuickLoadBtn" type="Button" parent="MainLayout/TabbedLayout/GameArea/ActiveInstallGroup/LaunchGameBox" groups=["disable_during_release_operations"]] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_resume" @@ -240,6 +255,7 @@ text = "btn_resume" icon = ExtResource("9_rcpd3") [node name="GameInstallsGroup" type="VBoxContainer" parent="MainLayout/TabbedLayout/GameArea"] +unique_name_in_owner = true layout_mode = 2 [node name="HSeparator2" type="HSeparator" parent="MainLayout/TabbedLayout/GameArea/GameInstallsGroup"] @@ -253,6 +269,7 @@ text = "lbl_installs" layout_mode = 2 [node name="GameInstallsList" type="ItemList" parent="MainLayout/TabbedLayout/GameArea/GameInstallsGroup/GameInstallsMgmtGroup" groups=["disable_during_release_operations"]] +unique_name_in_owner = true custom_minimum_size = Vector2(0, 90) layout_mode = 2 size_flags_horizontal = 3 @@ -269,6 +286,7 @@ script = ExtResource("6") layout_mode = 2 [node name="MakeInstallActiveBtn" type="Button" parent="MainLayout/TabbedLayout/GameArea/GameInstallsGroup/GameInstallsMgmtGroup/GameInstallActionsBox" groups=["disable_during_release_operations"]] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_activate" disabled = true @@ -276,6 +294,7 @@ text = "btn_activate" icon = ExtResource("11_rcpd3") [node name="DeleteGameInstallBtn" type="Button" parent="MainLayout/TabbedLayout/GameArea/GameInstallsGroup/GameInstallsMgmtGroup/GameInstallActionsBox" groups=["disable_during_release_operations"]] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_delete" disabled = true @@ -283,6 +302,7 @@ text = "btn_delete" icon = ExtResource("12_no8b7") [node name="ChangelogDialog" parent="MainLayout/TabbedLayout/GameArea" instance=ExtResource("32")] +unique_name_in_owner = true position = Vector2i(0, 36) [node name="ModsArea" type="VBoxContainer" parent="MainLayout/TabbedLayout"] @@ -299,10 +319,12 @@ layout_mode = 2 size_flags_horizontal = 3 [node name="InstalledModsLabel" type="Label" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/InstalledModsGroup"] +unique_name_in_owner = true layout_mode = 2 text = "lbl_installed_mods" [node name="InstalledModsList" type="ItemList" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/InstalledModsGroup" groups=["disable_during_mod_operations"]] +unique_name_in_owner = true custom_minimum_size = Vector2(0, 180) layout_mode = 2 size_flags_horizontal = 3 @@ -317,12 +339,14 @@ item_3/text = "Item 3" script = ExtResource("17") [node name="ShowStockModsSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/InstalledModsGroup" groups=["disable_during_mod_operations"]] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_stock_mods" text = "cbtn_stock_mods" [node name="DeleteModsBtn" type="Button" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/InstalledModsGroup" groups=["disable_during_mod_operations"]] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_delete_mods" @@ -337,10 +361,12 @@ layout_mode = 2 size_flags_horizontal = 3 [node name="ModRepoLabel" type="Label" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup"] +unique_name_in_owner = true layout_mode = 2 text = "lbl_mod_repo" [node name="AvailableModsList" type="ItemList" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup" groups=["disable_during_mod_operations"]] +unique_name_in_owner = true custom_minimum_size = Vector2(0, 180) layout_mode = 2 size_flags_horizontal = 3 @@ -355,6 +381,7 @@ item_3/text = "Item 3" script = ExtResource("17") [node name="ShowInstalledModsSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup" groups=["disable_during_mod_operations"]] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_installed_mods" @@ -365,12 +392,14 @@ layout_mode = 2 alignment = 1 [node name="AddSelectedModsBtn" type="Button" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup/AddModsActionsBox" groups=["disable_during_mod_operations"]] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_add_sel_mods" text = "btn_add_sel_mods" [node name="AddAllModsBtn" type="Button" parent="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup/AddModsActionsBox" groups=["disable_during_mod_operations"]] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_add_all_mods" text = "btn_add_all_mods" @@ -385,6 +414,7 @@ text = "btn_get_kenan_pack" layout_mode = 2 [node name="ModInfoText" type="RichTextLabel" parent="MainLayout/TabbedLayout/ModsArea"] +unique_name_in_owner = true custom_minimum_size = Vector2(0, 100) layout_mode = 2 focus_mode = 2 @@ -393,11 +423,13 @@ bbcode_enabled = true text = "Mod info will appear here." selection_enabled = true -[node name="DeleteMultipleModsDialog" type="ConfirmationDialog" parent="MainLayout/TabbedLayout/ModsArea"] +[node name="DeleteMultipleModsDlg" type="ConfirmationDialog" parent="MainLayout/TabbedLayout/ModsArea"] +unique_name_in_owner = true dialog_text = "(this text is assigned at runtime)" dialog_autowrap = true [node name="ModReinstallDialog" parent="MainLayout/TabbedLayout/ModsArea" instance=ExtResource("20")] +unique_name_in_owner = true [node name="SoundArea" type="VBoxContainer" parent="MainLayout/TabbedLayout"] visible = false @@ -418,6 +450,7 @@ layout_mode = 2 text = "lbl_installed_sound" [node name="InstalledSoundsList" type="ItemList" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup" groups=["disable_during_soundpack_operations"]] +unique_name_in_owner = true custom_minimum_size = Vector2(0, 200) layout_mode = 2 size_flags_horizontal = 3 @@ -448,12 +481,14 @@ item_21/text = "Item 21" script = ExtResource("17") [node name="ShowStockSoundsSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup" groups=["disable_during_soundpack_operations"]] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_stock_sound" text = "cbtn_stock_sound" -[node name="DeleteSoundsBtn" type="Button" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup" groups=["disable_during_soundpack_operations"]] +[node name="DeleteSoundBtn" type="Button" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup" groups=["disable_during_soundpack_operations"]] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_delete_sound" @@ -472,6 +507,7 @@ layout_mode = 2 text = "lbl_avail_sound" [node name="AvailableSoundsList" type="ItemList" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/AvailableSoundsGroup" groups=["disable_during_soundpack_operations"]] +unique_name_in_owner = true custom_minimum_size = Vector2(0, 200) layout_mode = 2 size_flags_horizontal = 3 @@ -484,21 +520,25 @@ item_3/text = "Item 3" script = ExtResource("17") [node name="InstallSoundBtn" type="Button" parent="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/AvailableSoundsGroup" groups=["disable_during_soundpack_operations"]] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_install_sound" disabled = true text = "btn_install_sound" -[node name="ConfirmDeleteSoundDialog" type="ConfirmationDialog" parent="MainLayout/TabbedLayout/SoundArea"] +[node name="ConfirmDeleteSoundDlg" type="ConfirmationDialog" parent="MainLayout/TabbedLayout/SoundArea"] +unique_name_in_owner = true dialog_text = "dlg_sound_deletion_text" dialog_autowrap = true [node name="ManualSoundDownloadDlg" type="ConfirmationDialog" parent="MainLayout/TabbedLayout/SoundArea"] +unique_name_in_owner = true dialog_text = "dlg_sound_manual_dl_text" dialog_autowrap = true [node name="InstallFromFileDialog" type="FileDialog" parent="MainLayout/TabbedLayout/SoundArea"] +unique_name_in_owner = true access = 2 filters = PackedStringArray("*.zip") @@ -522,6 +562,7 @@ size_flags_horizontal = 4 text = "lbl_avail_fonts" [node name="FontsList" type="ItemList" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup"] +unique_name_in_owner = true custom_minimum_size = Vector2(0, 180) layout_mode = 2 size_flags_stretch_ratio = 2.0 @@ -538,30 +579,35 @@ size_flags_horizontal = 5 size_flags_vertical = 6 [node name="SetFontUIBtn" type="Button" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 5 tooltip_text = "tooltip_set_font_ui" text = "btn_set_font_ui" [node name="SetFontMapBtn" type="Button" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 5 tooltip_text = "tooltip_set_font_map" text = "btn_set_font_map" [node name="SetFontOvermapBtn" type="Button" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 5 tooltip_text = "tooltip_set_font_omap" text = "btn_set_font_omap" [node name="SetFontAllBtn" type="Button" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 5 tooltip_text = "tooltip_set_font_all" text = "btn_set_font_all" [node name="ResetFontBtn" type="Button" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontfaceSettingBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 5 tooltip_text = "tooltip_reset_font" @@ -583,12 +629,14 @@ size_flags_horizontal = 4 text = "lbl_font_preview" [node name="FontPreviewText" type="RichTextLabel" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup"] +unique_name_in_owner = true custom_minimum_size = Vector2(0, 100) layout_mode = 2 theme_override_constants/line_separation = -2 bbcode_enabled = true [node name="PreviewCyrillicSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 tooltip_text = "tooltip_preview_cyrillics" @@ -624,6 +672,7 @@ layout_mode = 2 text = "lbl_font_sz_ui" [node name="FontSizeUIField" type="SpinBox" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup/FontSizeUIBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 10 min_value = 8.0 @@ -641,6 +690,7 @@ tooltip_text = "tooltip_font_sz_map" text = "lbl_font_sz_map" [node name="FontSizeMapField" type="SpinBox" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup/FontSizeMapBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 10 min_value = 8.0 @@ -658,6 +708,7 @@ tooltip_text = "tooltip_font_sz_overmap" text = "lbl_font_sz_overmap" [node name="FontSizeOvermapField" type="SpinBox" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup/FontSizeOvermapBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 10 min_value = 8.0 @@ -665,6 +716,7 @@ max_value = 64.0 value = 8.0 [node name="FontBlendingSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigRightGroup"] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_font_blending" text = "cbtn_font_blending" @@ -680,6 +732,7 @@ layout_mode = 2 theme_override_constants/separation = 0 [node name="CurrentFontConfigInfo" type="RichTextLabel" parent="MainLayout/TabbedLayout/FontsArea"] +unique_name_in_owner = true layout_mode = 2 bbcode_enabled = true text = "Existing font configuration will be shown here. @@ -689,6 +742,7 @@ text = "Existing font configuration will be shown here. fit_content = true [node name="FontSizeHelpDialog" parent="MainLayout/TabbedLayout/FontsArea" instance=ExtResource("29")] +unique_name_in_owner = true position = Vector2i(0, 36) [node name="BackupsArea" type="VBoxContainer" parent="MainLayout/TabbedLayout"] @@ -708,6 +762,7 @@ text = "lbl_save_backups" layout_mode = 2 [node name="BackupsList" type="ItemList" parent="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup/BackupsDisplayBox" groups=["disable_during_backup_operations"]] +unique_name_in_owner = true custom_minimum_size = Vector2(0, 200) layout_mode = 2 size_flags_horizontal = 3 @@ -725,6 +780,7 @@ item_8/text = "Item 8" item_9/text = "Item 9" [node name="BackupInfo" type="RichTextLabel" parent="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup/BackupsDisplayBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 focus_mode = 2 @@ -737,10 +793,12 @@ layout_mode = 2 alignment = 1 [node name="RestoreBackupBtn" type="Button" parent="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup/BackupActionsBox" groups=["disable_during_backup_operations"]] +unique_name_in_owner = true layout_mode = 2 text = "btn_restore_backup" [node name="DeleteBackupBtn" type="Button" parent="MainLayout/TabbedLayout/BackupsArea/ExistingBackupsGroup/BackupActionsBox" groups=["disable_during_backup_operations"]] +unique_name_in_owner = true layout_mode = 2 text = "btn_delete_backup" @@ -766,11 +824,13 @@ layout_mode = 2 text = "lbl_backup_name" [node name="BackupNameField" type="LineEdit" parent="MainLayout/TabbedLayout/BackupsArea/ManualBackupGroup/CreateBackupGroup"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 placeholder_text = "Enter name for new backup" [node name="CreateBackupBtn" type="Button" parent="MainLayout/TabbedLayout/BackupsArea/ManualBackupGroup/CreateBackupGroup" groups=["disable_during_backup_operations"]] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 text = "btn_create_backup" @@ -779,6 +839,7 @@ text = "btn_create_backup" layout_mode = 2 [node name="SettingsArea" type="VBoxContainer" parent="MainLayout/TabbedLayout"] +visible = false layout_mode = 2 theme_override_constants/separation = 2 script = ExtResource("8") @@ -804,6 +865,7 @@ layout_mode = 2 text = "lbl_launcher_language" [node name="LauncherLanguageList" type="OptionButton" parent="MainLayout/TabbedLayout/SettingsArea/LauncherLanguageBox"] +unique_name_in_owner = true custom_minimum_size = Vector2(180, 0) layout_mode = 2 size_flags_horizontal = 10 @@ -849,6 +911,7 @@ layout_mode = 2 text = "lbl_launcher_theme" [node name="LauncherThemeList" type="OptionButton" parent="MainLayout/TabbedLayout/SettingsArea/LauncherThemeBox"] +unique_name_in_owner = true custom_minimum_size = Vector2(180, 0) layout_mode = 2 size_flags_horizontal = 10 @@ -872,56 +935,67 @@ popup/item_4/icon = ExtResource("38_65f1m") popup/item_4/id = 4 [node name="ShowGameDescSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_show_game_desc" text = "cbtn_show_game_desc" [node name="KeepLauncherOpenSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_keep_launcher_open" text = "cbtn_keep_launcher_open" [node name="PrintTipsSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_print_tips" text = "cbtn_print_tips" [node name="UpdateToSameVerSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_updating_to_same_build" text = "cbtn_updating_to_same_build" [node name="ShortenNamesSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_shorten_release_names" text = "cbtn_shorten_release_names" [node name="AlwaysShowInstallsSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_always_show_installs" text = "cbtn_always_show_installs" [node name="ShowObsoleteModsSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_show_obsolete_mods" text = "cbtn_show_obsolete_mods" [node name="InstallArchivedModsSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_install_archived_mods" text = "cbtn_install_archived_mods" [node name="KeepDownloadCacheSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_keep_cache" text = "cbtn_keep_cache" [node name="IgnoreDownloadCacheSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_ignore_cache" text = "cbtn_ignore_cache" [node name="DebugModeSwitch" type="CheckButton" parent="MainLayout/TabbedLayout/SettingsArea"] +unique_name_in_owner = true layout_mode = 2 tooltip_text = "tooltip_debug_mode" text = "cbtn_debug_mode" @@ -935,6 +1009,7 @@ layout_mode = 2 text = "lbl_num_releases_to_request" [node name="NumReleasesField" type="SpinBox" parent="MainLayout/TabbedLayout/SettingsArea/NumReleasesBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 10 min_value = 1.0 @@ -950,6 +1025,7 @@ layout_mode = 2 text = "lbl_num_prs_to_request" [node name="NumPrsField" type="SpinBox" parent="MainLayout/TabbedLayout/SettingsArea/NumPrsBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 10 min_value = 10.0 @@ -966,18 +1042,21 @@ layout_mode = 2 text = "lbl_proxy_settings" [node name="ProxyOptionList" type="OptionButton" parent="MainLayout/TabbedLayout/SettingsArea/ProxySettingsBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 10 size_flags_stretch_ratio = 20.0 tooltip_text = "tooltip_proxy_options" [node name="ProxyHostField" type="LineEdit" parent="MainLayout/TabbedLayout/SettingsArea/ProxySettingsBox"] +unique_name_in_owner = true custom_minimum_size = Vector2(170, 0) layout_mode = 2 size_flags_horizontal = 10 placeholder_text = "localhost" [node name="ProxyPortField" type="SpinBox" parent="MainLayout/TabbedLayout/SettingsArea/ProxySettingsBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 10 max_value = 65535.0 @@ -991,12 +1070,14 @@ layout_mode = 2 text = "lbl_ui_scale_override" [node name="CustomScaleEnableSwitch" type="CheckBox" parent="MainLayout/TabbedLayout/SettingsArea/CustomScaleBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 10 size_flags_stretch_ratio = 20.0 text = "cbtn_enable_scale" [node name="CustomScaleValueField" type="SpinBox" parent="MainLayout/TabbedLayout/SettingsArea/CustomScaleBox"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 10 min_value = 75.0 @@ -1007,6 +1088,7 @@ editable = false suffix = "%" [node name="DebugArea" type="VBoxContainer" parent="MainLayout/TabbedLayout"] +unique_name_in_owner = true visible = false layout_mode = 2 script = ExtResource("14") @@ -1071,6 +1153,7 @@ text = "Browse internal filesystem" unique_name_in_owner = true [node name="LogText" type="RichTextLabel" parent="MainLayout"] +unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 3 focus_mode = 2 @@ -1079,6 +1162,7 @@ scroll_following = true selection_enabled = true [node name="ReleaseManager" type="Node" parent="."] +unique_name_in_owner = true script = ExtResource("5") [node name="HTTPRequest_DDA" type="HTTPRequest" parent="ReleaseManager"] @@ -1092,22 +1176,27 @@ script = ExtResource("5") [node name="HTTPRequest_TLG" type="HTTPRequest" parent="ReleaseManager"] [node name="ReleaseInstaller" type="Node" parent="."] +unique_name_in_owner = true script = ExtResource("9") [node name="ModManager" type="Node" parent="."] +unique_name_in_owner = true script = ExtResource("12") [node name="SoundpackManager" type="Node" parent="."] +unique_name_in_owner = true script = ExtResource("13") [node name="FontManager" type="Node" parent="."] +unique_name_in_owner = true script = ExtResource("28") [node name="BackupManager" type="Node" parent="."] +unique_name_in_owner = true script = ExtResource("34") -[connection signal="gui_input" from="MainLayout/GameInfoGroup/GameDescIcon" to="." method="_on_InfoIcon_gui_input"] -[connection signal="meta_clicked" from="MainLayout/GameInfoGroup/GameDescText" to="." method="_on_Description_meta_clicked"] +[connection signal="gui_input" from="MainLayout/GameInfoBox/GameDescIcon" to="." method="_on_InfoIcon_gui_input"] +[connection signal="meta_clicked" from="MainLayout/GameInfoBox/GameDescText" to="." method="_on_Description_meta_clicked"] [connection signal="tab_changed" from="MainLayout/TabbedLayout" to="." method="_on_Tabs_tab_changed"] [connection signal="tab_changed" from="MainLayout/TabbedLayout" to="MainLayout/TabbedLayout/ModsArea" method="_on_Tabs_tab_changed"] [connection signal="tab_changed" from="MainLayout/TabbedLayout" to="MainLayout/TabbedLayout/SoundArea" method="_on_Tabs_tab_changed"] @@ -1136,15 +1225,15 @@ script = ExtResource("34") [connection signal="pressed" from="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup/AddModsActionsBox/AddSelectedModsBtn" to="MainLayout/TabbedLayout/ModsArea" method="_on_BtnAddSelectedMod_pressed"] [connection signal="pressed" from="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup/AddModsActionsBox/AddAllModsBtn" to="MainLayout/TabbedLayout/ModsArea" method="_on_BtnAddAllMods_pressed"] [connection signal="pressed" from="MainLayout/TabbedLayout/ModsArea/ModsManagementGroup/AvailableModsGroup/GetKenanModpackBtn" to="MainLayout/TabbedLayout/ModsArea" method="_on_BtnDownloadKenan_pressed"] -[connection signal="confirmed" from="MainLayout/TabbedLayout/ModsArea/DeleteMultipleModsDialog" to="MainLayout/TabbedLayout/ModsArea" method="_on_DeleteMultipleDialog_confirmed"] +[connection signal="confirmed" from="MainLayout/TabbedLayout/ModsArea/DeleteMultipleModsDlg" to="MainLayout/TabbedLayout/ModsArea" method="_on_DeleteMultipleDialog_confirmed"] [connection signal="response_no" from="MainLayout/TabbedLayout/ModsArea/ModReinstallDialog" to="MainLayout/TabbedLayout/ModsArea" method="_on_ModReinstallDialog_response_no"] [connection signal="response_yes" from="MainLayout/TabbedLayout/ModsArea/ModReinstallDialog" to="MainLayout/TabbedLayout/ModsArea" method="_on_ModReinstallDialog_response_yes"] [connection signal="item_selected" from="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup/InstalledSoundsList" to="MainLayout/TabbedLayout/SoundArea" method="_on_InstalledList_item_selected"] [connection signal="toggled" from="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup/ShowStockSoundsSwitch" to="MainLayout/TabbedLayout/SoundArea" method="_on_ShowStock_toggled"] -[connection signal="pressed" from="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup/DeleteSoundsBtn" to="MainLayout/TabbedLayout/SoundArea" method="_on_BtnDelete_pressed"] +[connection signal="pressed" from="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/InstalledSoundsGroup/DeleteSoundBtn" to="MainLayout/TabbedLayout/SoundArea" method="_on_BtnDelete_pressed"] [connection signal="item_selected" from="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/AvailableSoundsGroup/AvailableSoundsList" to="MainLayout/TabbedLayout/SoundArea" method="_on_AvailableList_item_selected"] [connection signal="pressed" from="MainLayout/TabbedLayout/SoundArea/SoundManagementGroup/AvailableSoundsGroup/InstallSoundBtn" to="MainLayout/TabbedLayout/SoundArea" method="_on_BtnInstall_pressed"] -[connection signal="confirmed" from="MainLayout/TabbedLayout/SoundArea/ConfirmDeleteSoundDialog" to="MainLayout/TabbedLayout/SoundArea" method="_on_ConfirmDelete_confirmed"] +[connection signal="confirmed" from="MainLayout/TabbedLayout/SoundArea/ConfirmDeleteSoundDlg" to="MainLayout/TabbedLayout/SoundArea" method="_on_ConfirmDelete_confirmed"] [connection signal="confirmed" from="MainLayout/TabbedLayout/SoundArea/ManualSoundDownloadDlg" to="MainLayout/TabbedLayout/SoundArea" method="_on_ConfirmManualDownload_confirmed"] [connection signal="file_selected" from="MainLayout/TabbedLayout/SoundArea/InstallFromFileDialog" to="MainLayout/TabbedLayout/SoundArea" method="_on_InstallFromFileDialog_file_selected"] [connection signal="item_selected" from="MainLayout/TabbedLayout/FontsArea/FontConfigMainGroup/FontConfigLeftGroup/FontsList" to="MainLayout/TabbedLayout/FontsArea" method="_on_FontsList_item_selected"] diff --git a/scenes/LicensesDialog.tscn b/scenes/LicensesDialog.tscn index 58b30a1e..c235f9be 100644 --- a/scenes/LicensesDialog.tscn +++ b/scenes/LicensesDialog.tscn @@ -21,7 +21,7 @@ theme_override_constants/margin_bottom = 8 [node name="VBox" type="VBoxContainer" parent="Panel/Margin"] layout_mode = 2 -[node name="rtlLicenses" type="RichTextLabel" parent="Panel/Margin/VBox"] +[node name="LicensesText" type="RichTextLabel" parent="Panel/Margin/VBox"] unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 3 @@ -30,11 +30,11 @@ bbcode_enabled = true selection_enabled = true deselect_on_focus_loss_enabled = false -[node name="BtnOK" type="Button" parent="Panel/Margin/VBox"] +[node name="CloseButton" type="Button" parent="Panel/Margin/VBox"] layout_mode = 2 size_flags_horizontal = 4 text = "btn_close" [connection signal="about_to_popup" from="." to="." method="_on_about_to_popup"] [connection signal="close_requested" from="." to="." method="hide"] -[connection signal="pressed" from="Panel/Margin/VBox/BtnOK" to="." method="hide"] +[connection signal="pressed" from="Panel/Margin/VBox/CloseButton" to="." method="hide"] diff --git a/scripts/BackupsUI.gd b/scripts/BackupsUI.gd index 89ddcf95..24fa1536 100644 --- a/scripts/BackupsUI.gd +++ b/scripts/BackupsUI.gd @@ -1,31 +1,22 @@ 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_restore = $Available/Buttons/BtnRestore -@onready var _btn_delete = $Available/Buttons/BtnDelete -@onready var _lbl_info = $Available/HBox/BackupInfo - - func _refresh_available() -> void: - _list_backups.clear() - _btn_restore.disabled = true - _btn_delete.disabled = true - _lbl_info.text = tr("lbl_backup_info_placeholder") - _backups.refresh_available() + %BackupsList.clear() + %RestoreBackupBtn.disabled = true + %DeleteBackupBtn.disabled = true + %BackupInfo.text = tr("lbl_backup_info_placeholder") + %BackupManager.refresh_available() - for item in _backups.available: - _list_backups.add_item(item["name"]) + for item in %BackupManager.available: + %BackupsList.add_item(item["name"]) func _populate_default_new_name() -> void: var datetime = Time.get_datetime_dict_from_system() - _edit_name.text = "Manual_%02d-%02d-%02d_%02d-%02d" % [ + %BackupNameField.text = "Manual_%02d-%02d-%02d_%02d-%02d" % [ datetime["year"] % 100, datetime["month"], datetime["day"], @@ -52,10 +43,10 @@ func _notification(what: int) -> void: func _on_BtnCreate_pressed(): - var target_file = _edit_name.text + var target_file = %BackupNameField.text if target_file.is_valid_filename(): - _backups.backup_current(target_file) - await _backups.backup_creation_finished + %BackupManager.backup_current(target_file) + await %BackupManager.backup_creation_finished _refresh_available() @@ -71,23 +62,23 @@ func _on_BtnRefresh_pressed(): func _on_BtnRestore_pressed(): - if not _list_backups.is_anything_selected(): + if not %BackupsList.is_anything_selected(): return - var idx = _list_backups.get_selected_items()[0] - _backups.restore(idx) + var idx = %BackupsList.get_selected_items()[0] + %BackupManager.restore(idx) func _on_BtnDelete_pressed(): - if not _list_backups.is_anything_selected(): + if not %BackupsList.is_anything_selected(): return - var selection = _list_backups.get_item_text(_list_backups.get_selected_items()[0]) + var selection = %BackupsList.get_item_text(%BackupsList.get_selected_items()[0]) if selection != "": - _backups.delete(selection) - await _backups.backup_deletion_finished + %BackupManager.delete(selection) + await %BackupManager.backup_deletion_finished _refresh_available() @@ -95,26 +86,26 @@ func _on_EditName_text_changed(new_text: String): # This disallows Windows' invalid characters as well as text that is empty or has leading or # trailing whitespace. These rules are used regardless of the active OS. - _btn_create.disabled = not new_text.is_valid_filename() + %CreateBackupBtn.disabled = not new_text.is_valid_filename() # Keep normal color if text is empty to avoid red placeholder text. if (new_text == "") or (new_text.is_valid_filename()): - _edit_name.add_theme_color_override("font_color", get_theme_color("font_color", "LineEdit")) + %BackupNameField.add_theme_color_override("font_color", get_theme_color("font_color", "LineEdit")) else: - _edit_name.add_theme_color_override("font_color", Color.RED) + %BackupNameField.add_theme_color_override("font_color", Color.RED) func _on_BackupsList_item_selected(index): - _btn_restore.disabled = false - _btn_delete.disabled = false - _lbl_info.text = _make_backup_info_string(index) + %RestoreBackupBtn.disabled = false + %DeleteBackupBtn.disabled = false + %BackupInfo.text = _make_backup_info_string(index) func _make_backup_info_string(index: int) -> String: var text := "" - var info: Dictionary = _backups.available[index] + var info: Dictionary = %BackupManager.available[index] var worlds_str := "" for world in info["worlds"]: diff --git a/scripts/Catapult.gd b/scripts/Catapult.gd index 6bfbd0c8..91f38f9b 100644 --- a/scripts/Catapult.gd +++ b/scripts/Catapult.gd @@ -1,31 +1,31 @@ extends Node -@onready var _debug_ui = $Main/TabBar/Debug -@onready var _game_info = $Main/GameInfo -@onready var _game_desc = $Main/GameInfo/Description -@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 +# @onready var _debug_ui = $Main/TabBar/Debug +# @onready var _game_info = $Main/GameInfo +# @onready var %GameDescText = $Main/GameInfo/Description +# @onready var %TabbedLayout = $Main/TabBar +# @onready var %ModManager = $Mods +# @onready var %ReleaseManager = $Releases +# @onready var %ReleaseInstaller = $ReleaseInstaller +# @onready var %InstallReleaseBtn = $Main/TabBar/Game/BtnInstall +# @onready var %RefreshReleasesBtn = $Main/TabBar/Game/Builds/BtnRefresh +# @onready var %ChangelogDialog = $Main/TabBar/Game/ChangelogDialog +# @onready var %ChangelogLinkLabel = $Main/TabBar/Game/Channel/HBox/ChangelogLink +# @onready var %GameDirBtn = $Main/TabBar/Game/ActiveInstall/Build/GameDir +# @onready var %UserDirBtn = $Main/TabBar/Game/ActiveInstall/Build/UserDir +# @onready var %LaunchGameBtn = $Main/TabBar/Game/ActiveInstall/Launch/BtnPlay +# @onready var %QuickLoadBtn = $Main/TabBar/Game/ActiveInstall/Launch/BtnResume +# @onready var %ReleasesList = $Main/TabBar/Game/Builds/BuildsList +# @onready var %GamesList = $Main/GameChoice/GamesList +# @onready var %StableSwitch = $Main/TabBar/Game/Channel/Group/RBtnStable +# @onready var %ExperimentalSwitch = $Main/TabBar/Game/Channel/Group/RBtnExperimental +# @onready var %ActiveInstallNameLabel = $Main/TabBar/Game/ActiveInstall/Build/Name +# @onready var %UpdateCurrentSwitch = $Main/TabBar/Game/UpdateCurrent +# @onready var %GameInstallsList = $Main/TabBar/Game/GameInstalls/HBox/InstallsList +# @onready var %MakeInstallActiveBtn = $Main/TabBar/Game/GameInstalls/HBox/VBox/btnMakeActive +# @onready var %DeleteGameInstallBtn = $Main/TabBar/Game/GameInstalls/HBox/VBox/btnDelete +# @onready var %GameInstallsGroup = $Main/TabBar/Game/GameInstalls var _disable_savestate := {} var _installs := {} @@ -48,7 +48,7 @@ func _ready() -> void: assign_localized_text() - _btn_resume.grab_focus() + %QuickLoadBtn.grab_focus() var welcome_msg = tr("str_welcome") if Settings.read("print_tips_of_the_day"): @@ -76,26 +76,26 @@ func assign_localized_text() -> void: get_window().set_title(tr("window_title")) - _tabs.set_tab_title(0, tr("tab_game")) - _tabs.set_tab_title(1, tr("tab_mods")) - _tabs.set_tab_title(2, tr("tab_soundpacks")) - _tabs.set_tab_title(3, tr("tab_fonts")) - _tabs.set_tab_title(4, tr("tab_backups")) - _tabs.set_tab_title(5, tr("tab_settings")) + %TabbedLayout.set_tab_title(0, tr("tab_game")) + %TabbedLayout.set_tab_title(1, tr("tab_mods")) + %TabbedLayout.set_tab_title(2, tr("tab_soundpacks")) + %TabbedLayout.set_tab_title(3, tr("tab_fonts")) + %TabbedLayout.set_tab_title(4, tr("tab_backups")) + %TabbedLayout.set_tab_title(5, tr("tab_settings")) - _lbl_changelog.text = tr("lbl_changelog") + %ChangelogLinkLabel.text = tr("lbl_changelog") var game = Settings.read("game") if game == "dda": - _game_desc.text = tr("desc_dda") + %GameDescText.text = tr("desc_dda") elif game == "bn": - _game_desc.text = tr("desc_bn") + %GameDescText.text = tr("desc_bn") elif game == "eod": - _game_desc.text = tr("desc_eod") + %GameDescText.text = tr("desc_eod") elif game == "tish": - _game_desc.text = tr("desc_tish") + %GameDescText.text = tr("desc_tish") elif game == "tlg": - _game_desc.text = tr("desc_tlg") + %GameDescText.text = tr("desc_tlg") func load_ui_theme(theme_file: String) -> void: @@ -162,9 +162,9 @@ func _on_ui_scale_changed(new_scale: float) -> void: func _on_Tabs_tab_changed(tab: int) -> void: if tab == 5: - $Main/Log.hide() + %LogText.hide() else: - $Main/Log.show() + %LogText.show() _refresh_currently_installed() @@ -173,26 +173,26 @@ func _on_GamesList_item_selected(index: int) -> void: match index: 0: Settings.store("game", "dda") - _game_desc.text = tr("desc_dda") + %GameDescText.text = tr("desc_dda") 1: Settings.store("game", "bn") - _game_desc.text = tr("desc_bn") + %GameDescText.text = tr("desc_bn") 2: Settings.store("game", "eod") - _game_desc.text = tr("desc_eod") + %GameDescText.text = tr("desc_eod") 3: Settings.store("game", "tish") - _game_desc.text = tr("desc_tish") + %GameDescText.text = tr("desc_tish") 4: Settings.store("game", "tlg") - _game_desc.text = tr("desc_tlg") + %GameDescText.text = tr("desc_tlg") - _tabs.current_tab = 0 + %TabbedLayout.current_tab = 0 apply_game_choice() _refresh_currently_installed() - _mods.refresh_installed() - _mods.refresh_available() + %ModManager.refresh_installed() + %ModManager.refresh_available() func _on_RBtnStable_toggled(button_pressed: bool) -> void: @@ -268,7 +268,7 @@ func _on_Description_meta_clicked(meta) -> void: func _on_ChangelogLink_meta_clicked(_meta) -> void: - _changelog.open() + %ChangelogDialog.open() func _on_Log_meta_clicked(meta) -> void: @@ -278,7 +278,7 @@ func _on_Log_meta_clicked(meta) -> void: func _on_BtnRefresh_pressed() -> void: - _releases.fetch(_get_release_key()) + %ReleaseManager.fetch(_get_release_key()) func _on_BuildsList_item_selected(index: int) -> void: @@ -288,25 +288,25 @@ func _on_BuildsList_item_selected(index: int) -> void: if (not Settings.read("update_to_same_build_allowed")) \ and (game in info) \ - and (_releases.releases[_get_release_key()][index]["name"] in info[game]): - _btn_install.disabled = true - _cb_update.disabled = true + and (%ReleaseManager.releases[_get_release_key()][index]["name"] in info[game]): + %InstallReleaseBtn.disabled = true + %UpdateCurrentSwitch.disabled = true else: - _btn_install.disabled = false - _cb_update.disabled = false + %InstallReleaseBtn.disabled = false + %UpdateCurrentSwitch.disabled = false func _on_BtnInstall_pressed() -> void: - var index = _lst_builds.selected - var release = _releases.releases[_get_release_key()][index] + var index = %ReleasesList.selected + var release = %ReleaseManager.releases[_get_release_key()][index] var update_path := "" if Settings.read("update_current_when_installing"): var game = Settings.read("game") var active_name = Settings.read("active_install_" + game) if (game in _installs) and (active_name in _installs[game]): update_path = _installs[game][active_name] - _installer.install_release(release, update_path) + %ReleaseInstaller.install_release(release, update_path) func _on_cbUpdateCurrent_toggled(button_pressed: bool) -> void: @@ -340,16 +340,16 @@ func _on_UserDir_pressed() -> void: func _setup_ui() -> void: - _game_info.visible = Settings.read("show_game_desc") + %GameInfoBox.visible = Settings.read("show_game_desc") if not Settings.read("debug_mode"): - _tabs.remove_child(_debug_ui) + %TabbedLayout.remove_child(%DebugArea) - _cb_update.button_pressed = Settings.read("update_current_when_installing") + %UpdateCurrentSwitch.button_pressed = Settings.read("update_current_when_installing") apply_game_choice() - _lst_games.item_selected.connect(_on_GamesList_item_selected) - _rbtn_stable.toggled.connect(_on_RBtnStable_toggled) + %GamesList.item_selected.connect(_on_GamesList_item_selected) + %StableSwitch.toggled.connect(_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. @@ -358,9 +358,9 @@ func _setup_ui() -> void: func reload_builds_list() -> void: - _lst_builds.clear() - for rec in _releases.releases[_get_release_key()]: - _lst_builds.add_item(rec["name"]) + %ReleasesList.clear() + for rec in %ReleaseManager.releases[_get_release_key()]: + %ReleasesList.add_item(rec["name"]) _refresh_currently_installed() @@ -372,43 +372,43 @@ func apply_game_choice() -> void: var channel = Settings.read("channel") if (game == "dda") or (game == "bn"): - _rbtn_exper.disabled = false - _rbtn_stable.disabled = false + %ExperimentalSwitch.disabled = false + %StableSwitch.disabled = false if channel == "stable": - _rbtn_stable.button_pressed = true - _btn_refresh.disabled = true + %StableSwitch.button_pressed = true + %RefreshReleasesBtn.disabled = true else: - _rbtn_exper.button_pressed = true - _btn_refresh.disabled = false + %ExperimentalSwitch.button_pressed = true + %RefreshReleasesBtn.disabled = false elif (game == "eod") or (game == "tish") or (game == "tlg"): - _rbtn_exper.button_pressed = true - _rbtn_exper.disabled = true - _rbtn_stable.disabled = true - _btn_refresh.disabled = false + %ExperimentalSwitch.button_pressed = true + %ExperimentalSwitch.disabled = true + %StableSwitch.disabled = true + %RefreshReleasesBtn.disabled = false match game: "dda": - _lst_games.select(0) - _game_desc.text = tr("desc_dda") + %GamesList.select(0) + %GameDescText.text = tr("desc_dda") "bn": - _lst_games.select(1) - _game_desc.text = tr("desc_bn") + %GamesList.select(1) + %GameDescText.text = tr("desc_bn") "eod": - _lst_games.select(2) - _game_desc.text = tr("desc_eod") + %GamesList.select(2) + %GameDescText.text = tr("desc_eod") "tish": - _lst_games.select(3) - _game_desc.text = tr("desc_tish") + %GamesList.select(3) + %GameDescText.text = tr("desc_tish") "tlg": - _lst_games.select(4) - _game_desc.text = tr("desc_tlg") + %GamesList.select(4) + %GameDescText.text = tr("desc_tlg") - if len(_releases.releases[_get_release_key()]) == 0: - _releases.fetch(_get_release_key()) + if len(%ReleaseManager.releases[_get_release_key()]) == 0: + %ReleaseManager.fetch(_get_release_key()) else: reload_builds_list() @@ -454,14 +454,14 @@ func _start_game(world := "") -> void: func _on_InstallsList_item_selected(index: int) -> void: - var release_name = _lst_installs.get_item_text(index) - _btn_delete.disabled = false - _btn_make_active.disabled = (release_name == Settings.read("active_install_" + Settings.read("game"))) + var release_name = %GameInstallsList.get_item_text(index) + %DeleteGameInstallBtn.disabled = false + %MakeInstallActiveBtn.disabled = (release_name == Settings.read("active_install_" + Settings.read("game"))) func _on_InstallsList_item_activated(index: int) -> void: - var release_name = _lst_installs.get_item_text(index) + var release_name = %GameInstallsList.get_item_text(index) var path = _installs[Settings.read("game")][release_name] if DirAccess.dir_exists_absolute(path): OS.shell_open(path) @@ -469,7 +469,7 @@ func _on_InstallsList_item_activated(index: int) -> void: func _on_btnMakeActive_pressed() -> void: - var release_name = _lst_installs.get_item_text(_lst_installs.get_selected_items()[0]) + var release_name = %GameInstallsList.get_item_text(%GameInstallsList.get_selected_items()[0]) Status.post(tr("msg_set_active") % release_name) Settings.store("active_install_" + Settings.read("game"), release_name) _refresh_currently_installed() @@ -477,58 +477,58 @@ func _on_btnMakeActive_pressed() -> void: func _on_btnDelete_pressed() -> void: - var release_name = _lst_installs.get_item_text(_lst_installs.get_selected_items()[0]) - _installer.remove_release_by_name(release_name) + var release_name = %GameInstallsList.get_item_text(%GameInstallsList.get_selected_items()[0]) + %ReleaseInstaller.remove_release_by_name(release_name) func _refresh_currently_installed() -> void: - var releases = _releases.releases[_get_release_key()] + var releases = %ReleaseManager.releases[_get_release_key()] - _lst_installs.clear() + %GameInstallsList.clear() var game = Settings.read("game") _installs = Paths.installs_summary var active_name = Settings.read("active_install_" + game) if game in _installs: for inst_name in _installs[game]: - _lst_installs.add_item(inst_name) - var curr_idx = _lst_installs.get_item_count() - 1 - _lst_installs.set_item_tooltip(curr_idx, tr("tooltip_installs_item") % _installs[game][inst_name]) + %GameInstallsList.add_item(inst_name) + var curr_idx = %GameInstallsList.get_item_count() - 1 + %GameInstallsList.set_item_tooltip(curr_idx, tr("tooltip_installs_item") % _installs[game][inst_name]) - _lst_builds.select(-1) - _btn_make_active.disabled = true - _btn_delete.disabled = true + %ReleasesList.select(-1) + %MakeInstallActiveBtn.disabled = true + %DeleteGameInstallBtn.disabled = true if game in _installs: - _lbl_build.text = active_name - _btn_play.disabled = false - _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)): + %ActiveInstallNameLabel.text = active_name + %LaunchGameBtn.disabled = false + %QuickLoadBtn.disabled = not (FileAccess.file_exists(Paths.config.path_join("lastworld.json"))) + %GameDirBtn.visible = true + %UserDirBtn.visible = true + if (%ReleasesList.selected != -1) and (%ReleasesList.selected < len(releases)): if not Settings.read("update_to_same_build_allowed"): - _btn_install.disabled = (releases[_lst_builds.selected]["name"] in _installs[game]) - _cb_update.disabled = _btn_install.disabled + %InstallReleaseBtn.disabled = (releases[%ReleasesList.selected]["name"] in _installs[game]) + %UpdateCurrentSwitch.disabled = %InstallReleaseBtn.disabled else: - _btn_install.disabled = true + %InstallReleaseBtn.disabled = true else: - _lbl_build.text = tr("lbl_none") - _btn_install.disabled = false - _cb_update.disabled = true - _btn_play.disabled = true - _btn_resume.disabled = true - _btn_game_dir.visible = false - _btn_user_dir.visible = false + %ActiveInstallNameLabel.text = tr("lbl_none") + %InstallReleaseBtn.disabled = false + %UpdateCurrentSwitch.disabled = true + %LaunchGameBtn.disabled = true + %QuickLoadBtn.disabled = true + %GameDirBtn.visible = false + %UserDirBtn.visible = false if (game in _installs and _installs[game].size() > 1) or \ (Settings.read("always_show_installs") == true): - _panel_installs.visible = true + %GameInstallsGroup.visible = true else: - _panel_installs.visible = false + %GameInstallsGroup.visible = false for i in [1, 2, 3, 4]: - _tabs.set_individual_tab_disabled(i, not game in _installs) + %TabbedLayout.set_individual_tab_disabled(i, not game in _installs) func _on_InfoIcon_gui_input(event: InputEvent) -> void: diff --git a/scripts/Debug.gd b/scripts/Debug.gd index f363ce93..5f914f7b 100644 --- a/scripts/Debug.gd +++ b/scripts/Debug.gd @@ -1,10 +1,6 @@ extends VBoxContainer -@onready var _mods = $"../../../Mods" -@onready var _sound = $"../../../Sound" - - func _on_Button_pressed() -> void: # Test modinfo parsing. @@ -14,7 +10,7 @@ func _on_Button_pressed() -> void: Status.post("Looking for mods in %s" % mods_dir) - var mods: Dictionary = _mods.parse_mods_dir(mods_dir) + var mods: Dictionary = %ModManager.parse_mods_dir(mods_dir) for mod in mods: message += "\n" + mods[mod]["modinfo"]["name"] message += "\n(%s)" % mods[mod]["location"] @@ -31,7 +27,7 @@ func _on_Button2_pressed() -> void: Status.post("Looking for soundpacks in %s" % sound_dir) - for pack in _sound.parse_sound_dir(sound_dir): + for pack in %SoundpackManager.parse_sound_dir(sound_dir): message += "\nName: %s" % pack["name"] message += "\nDescription: %s" % pack["description"] message += "\nLocation: %s" % pack["location"] diff --git a/scripts/FontsUI.gd b/scripts/FontsUI.gd index 47b8dc32..f853b687 100644 --- a/scripts/FontsUI.gd +++ b/scripts/FontsUI.gd @@ -51,21 +51,6 @@ 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 func _make_preview_string() -> String: @@ -85,7 +70,7 @@ func _make_preview_string() -> String: func _show_current_config_info() -> void: - var config: Dictionary = _fonts.font_config + var config: Dictionary = %FontManager.font_config var fields := { "typeface": tr("str_curr_font_config_ui"), "map_typeface": tr("str_curr_font_config_map"), @@ -105,17 +90,17 @@ func _show_current_config_info() -> void: text += "\n[/table]" - _info.text = text + %CurrentFontConfigInfo.text = text func _load_font_options() -> void: - _fonts.load_game_options() + %FontManager.load_game_options() - _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.button_pressed = (_fonts.get_game_option("FONT_BLENDING").to_lower() == "true") + %FontSizeUIField.value = %FontManager.get_game_option("FONT_SIZE") as int + %FontSizeMapField.value = %FontManager.get_game_option("MAP_FONT_SIZE") as int + %FontSizeOvermapField.value = %FontManager.get_game_option("OVERMAP_FONT_SIZE") as int + %FontBlendingSwitch.button_pressed = (%FontManager.get_game_option("FONT_BLENDING").to_lower() == "true") func _on_Tabs_tab_changed(tab: int) -> void: @@ -123,53 +108,53 @@ func _on_Tabs_tab_changed(tab: int) -> void: if tab != 3: return - if not _fonts.font_config_file_exists(): + if not %FontManager.font_config_file_exists(): Status.post(tr("msg_no_font_config_file"), Enums.MSG_WARN) - _tabs.current_tab = 0 + %TabbedLayout.current_tab = 0 return - if not _fonts.options_file_exists(): + if not %FontManager.options_file_exists(): Status.post(tr("msg_no_game_options_file"), Enums.MSG_WARN) - _tabs.current_tab = 0 + %TabbedLayout.current_tab = 0 return - _fonts.load_available_fonts() - _fonts.load_font_config() + %FontManager.load_available_fonts() + %FontManager.load_font_config() - for btn in [_btn_set_ui, _btn_set_map, _btn_set_om, _btn_set_all]: + for btn in [%SetFontUIBtn, %SetFontMapBtn, %SetFontOvermapBtn, %SetFontAllBtn]: btn.disabled = true - _list.clear() - for font in _fonts.available_fonts: - _list.add_item(font["name"]) - _list.set_item_tooltip(_list.get_item_count() - 1, tr(font["desc_key"])) + %FontsList.clear() + for font in %FontManager.available_fonts: + %FontsList.add_item(font["name"]) + %FontsList.set_item_tooltip(%FontsList.get_item_count() - 1, tr(font["desc_key"])) - _cbox_cyrillic.button_pressed = Settings.read("font_preview_cyrillic") + %PreviewCyrillicSwitch.button_pressed = Settings.read("font_preview_cyrillic") _load_font_options() - _preview.text = "" + %FontPreviewText.text = "" _show_current_config_info() func _on_FontsList_item_selected(index: int) -> void: - var font_info = _fonts.available_fonts[index] + var font_info = %FontManager.available_fonts[index] var font_path := "res://fonts/ingame".path_join(font_info["file"]) var font_res := FontFile.new() font_res.load_dynamic_font(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() + %FontPreviewText.add_theme_font_override("normal_font", font_res) + %FontPreviewText.add_theme_font_size_override("normal_font_size", 15.0 * Geom.scale) + %FontPreviewText.text = _make_preview_string() - for btn in [_btn_set_ui, _btn_set_map, _btn_set_om, _btn_set_all]: + for btn in [%SetFontUIBtn, %SetFontMapBtn, %SetFontOvermapBtn, %SetFontAllBtn]: btn.disabled = false func _on_BtnSetFontX_pressed(ui: bool, map: bool, overmap: bool) -> void: - var index = _list.get_selected_items()[0] - var font_name = _fonts.available_fonts[index]["name"] + var index = %FontsList.get_selected_items()[0] + var font_name = %FontManager.available_fonts[index]["name"] if ui: Status.post(tr("msg_setting_ui_font") % font_name) @@ -178,14 +163,14 @@ func _on_BtnSetFontX_pressed(ui: bool, map: bool, overmap: bool) -> void: if overmap: Status.post(tr("msg_setting_omap_font") % font_name) - _fonts.set_font(index, ui, map, overmap) + %FontManager.set_font(index, ui, map, overmap) _on_BtnSaveFontOptions_pressed() _show_current_config_info() func _on_BtnResetFont_pressed() -> void: - _fonts.reset_font() + %FontManager.reset_font() _on_BtnSaveFontOptions_pressed() _show_current_config_info() @@ -193,21 +178,21 @@ func _on_BtnResetFont_pressed() -> void: func _on_PreviewCyrillic_toggled(button_pressed: bool) -> void: Settings.store("font_preview_cyrillic", button_pressed) - _preview.text = _make_preview_string() + %FontPreviewText.text = _make_preview_string() func _on_BtnSaveFontOptions_pressed() -> void: - var size_ui := int(_sb_font_ui.value) - var size_map := int(_sb_font_map.value) - var size_om := int(_sb_font_om.value) + var size_ui := int(%FontSizeUIField.value) + var size_map := int(%FontSizeMapField.value) + var size_om := int(%FontSizeOvermapField.value) - _fonts.set_font_sizes(size_ui, size_map, size_om) + %FontManager.set_font_sizes(size_ui, size_map, size_om) - _fonts.set_game_option("FONT_BLENDING", str(_cbtn_blending.button_pressed)) - _fonts.write_game_options() + %FontManager.set_game_option("FONT_BLENDING", str(%FontBlendingSwitch.button_pressed)) + %FontManager.write_game_options() func _on_HelpIcon_pressed() -> void: - _help_dlg.open() + %FontSizeHelpDialog.open() diff --git a/scripts/ModsUI.gd b/scripts/ModsUI.gd index ee4fdd35..537cd161 100644 --- a/scripts/ModsUI.gd +++ b/scripts/ModsUI.gd @@ -1,20 +1,6 @@ extends VBoxContainer -@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 _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 := [] @@ -43,12 +29,12 @@ func reload_installed() -> void: _installed_mods_view.clear() - for id in _mods.installed: + for id in %ModManager.installed: - var mod = _mods.installed[id] + var mod = %ModManager.installed[id] var show_mod: bool - var status = _mods.mod_status(id) + var status = %ModManager.mod_status(id) if status in [0, 1]: show_mod = true elif status in [3, 4]: @@ -73,19 +59,19 @@ func reload_installed() -> void: _installed_mods_view.sort_custom(_sorting_comparison) - _btn_delete.disabled = true + %DeleteModsBtn.disabled = true - _populate_list_with_mods(_installed_mods_view, _installed_list) + _populate_list_with_mods(_installed_mods_view, %InstalledModsList) var hidden_str = "" if hidden_mods > 0: hidden_str = tr("str_installed_mods_hidden") % hidden_mods - _lbl_installed.text = tr("lbl_installed_mods") % hidden_str + %InstalledModsLabel.text = tr("lbl_installed_mods") % hidden_str for i in len(_installed_mods_view): var id = _installed_mods_view[i]["id"] - if _mods.installed[id]["is_stock"]: - _installed_list.set_item_custom_fg_color(i, Color(0.5, 0.5, 0.5)) + if %ModManager.installed[id]["is_stock"]: + %InstalledModsList.set_item_custom_fg_color(i, Color(0.5, 0.5, 0.5)) # TODO: Get color from the theme instead. @@ -96,11 +82,11 @@ func reload_available() -> void: _available_mods_view.clear() - for id in _mods.available: - var mod = _mods.available[id] + for id in %ModManager.available: + var mod = %ModManager.available[id] var show_mod: bool - if _mods.mod_status(id) in [0, 3]: + if %ModManager.mod_status(id) in [0, 3]: show_mod = true else: show_mod = include_installed @@ -119,21 +105,21 @@ func reload_available() -> void: var hidden_str = "" if hidden_mods > 0: hidden_str = tr("str_mod_repo_hidden") % hidden_mods - _lbl_repo.text = tr("lbl_mod_repo") % hidden_str - _btn_add.disabled = true + %ModRepoLabel.text = tr("lbl_mod_repo") % hidden_str + %AddSelectedModsBtn.disabled = true - _populate_list_with_mods(_available_mods_view, _available_list) + _populate_list_with_mods(_available_mods_view, %AvailableModsList) for i in len(_available_mods_view): var id = _available_mods_view[i]["id"] - if _mods.mod_status(id) in [1, 2, 4]: - _available_list.set_item_custom_fg_color(i, Color(0.5, 0.5, 0.5)) + if %ModManager.mod_status(id) in [1, 2, 4]: + %AvailableModsList.set_item_custom_fg_color(i, Color(0.5, 0.5, 0.5)) - if _available_list.get_item_count() == 0: - _btn_add_all.disabled = true - _btn_add.disabled = true + if %AvailableModsList.get_item_count() == 0: + %AddAllModsBtn.disabled = true + %AddSelectedModsBtn.disabled = true else: - _btn_add_all.disabled = false + %AddAllModsBtn.disabled = false func _sorting_comparison(a: Dictionary, b: Dictionary) -> bool: @@ -202,11 +188,11 @@ func _on_Tabs_tab_changed(tab: int) -> void: if tab != 1: return - _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 + %ShowStockModsSwitch.button_pressed = Settings.read("show_stock_mods") + %ShowInstalledModsSwitch.button_pressed = Settings.read("show_installed_mods_in_available") + %ModInfoText.text = tr("lbl_mod_info") + %DeleteModsBtn.disabled = true + %AddSelectedModsBtn.disabled = true reload_installed() reload_available() @@ -214,7 +200,7 @@ func _on_Tabs_tab_changed(tab: int) -> void: func _on_InstalledList_multi_selected(index: int, selected: bool) -> void: - var selection = Array(_installed_list.get_selected_items()) + var selection = Array(%InstalledModsList.get_selected_items()) var active_idx: int if selected: active_idx = index @@ -222,25 +208,25 @@ 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.text = _make_mod_info_string(_mods.installed[active_id]) - _lbl_mod_info.scroll_to_line(0) + %ModInfoText.text = _make_mod_info_string(%ModManager.installed[active_id]) + %ModInfoText.scroll_to_line(0) var only_stock_selected = true for idx in selection: var mod_id = _installed_mods_view[idx]["id"] - if not _mods.installed[mod_id]["is_stock"]: + if not %ModManager.installed[mod_id]["is_stock"]: only_stock_selected = false break if (len(selection) == 0) or (only_stock_selected): - _btn_delete.disabled = true + %DeleteModsBtn.disabled = true else: - _btn_delete.disabled = false + %DeleteModsBtn.disabled = false func _on_AvailableList_multi_selected(index: int, selected: bool) -> void: - var selection = Array(_available_list.get_selected_items()) + var selection = Array(%AvailableModsList.get_selected_items()) var active_idx: int if selected: active_idx = index @@ -248,38 +234,38 @@ 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.text = _make_mod_info_string(_mods.available[active_id]) - _lbl_mod_info.scroll_to_line(0) + %ModInfoText.text = _make_mod_info_string(%ModManager.available[active_id]) + %ModInfoText.scroll_to_line(0) var only_non_installable_selected = true for idx in selection: var mod_id = _available_mods_view[idx]["id"] - if (not mod_id in _mods.installed) or (_mods.installed[mod_id]["is_obsolete"]): + if (not mod_id in %ModManager.installed) or (%ModManager.installed[mod_id]["is_obsolete"]): only_non_installable_selected = false break if (len(selection) == 0) or (only_non_installable_selected): - _btn_add.disabled = true + %AddSelectedModsBtn.disabled = true else: - _btn_add.disabled = false + %AddSelectedModsBtn.disabled = false func _on_BtnDownloadKenan_pressed() -> void: - _mods.retrieve_kenan_pack() - await _mods.modpack_retrieval_finished + %ModManager.retrieve_kenan_pack() + await %ModManager.modpack_retrieval_finished reload_available() func _on_BtnDelete_pressed() -> void: - var selection = _installed_list.get_selected_items() + var selection = %InstalledModsList.get_selected_items() _mods_to_delete = [] var skipped_mods = 0 for index in selection: var id = _installed_mods_view[index]["id"] - if not _mods.installed[id]["is_stock"]: + if not %ModManager.installed[id]["is_stock"]: _mods_to_delete.append(id) else: skipped_mods += 1 @@ -291,35 +277,35 @@ 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_button().text = tr("btn_cancel") - _dlg_del_multiple.size = Vector2(250, 100) - _dlg_del_multiple.popup_centered() + %DeleteMultipleModsDlg.dialog_text = tr("dlg_deleting_n_mods_text") % num + %DeleteMultipleModsDlg.get_cancel_button().text = tr("btn_cancel") + %DeleteMultipleModsDlg.size = Vector2(250, 100) + %DeleteMultipleModsDlg.popup_centered() return - _mods.delete_mods(_mods_to_delete) - await _mods.mod_deletion_finished + %ModManager.delete_mods(_mods_to_delete) + await %ModManager.mod_deletion_finished reload_installed() reload_available() func _on_DeleteMultipleDialog_confirmed() -> void: - _mods.delete_mods(_mods_to_delete) - await _mods.mod_deletion_finished + %ModManager.delete_mods(_mods_to_delete) + await %ModManager.mod_deletion_finished reload_installed() reload_available() func _on_BtnAddSelectedMod_pressed() -> void: - var selection = _available_list.get_selected_items() + var selection = %AvailableModsList.get_selected_items() _mods_to_install = [] var num_stock = 0 for index in selection: var id = _available_mods_view[index]["id"] - var status = _mods.mod_status(id) + var status = %ModManager.mod_status(id) if status == 2: num_stock += 1 else: @@ -335,7 +321,7 @@ func _on_BtnAddSelectedMod_pressed() -> void: _ids_to_reinstall = [] # What to install again after deleteion. for mod_id in _mods_to_install: - var status = _mods.mod_status(mod_id) + var status = %ModManager.mod_status(mod_id) if status == 4: _ids_to_delete.append(mod_id + "__") _ids_to_reinstall.append(mod_id) @@ -346,15 +332,15 @@ func _on_BtnAddSelectedMod_pressed() -> void: _ids_to_install.append(mod_id) if len(_ids_to_reinstall) > 0: - _dlg_reinstall.open(len(_ids_to_reinstall)) + %ModReinstallDialog.open(len(_ids_to_reinstall)) else: _do_mod_installation() func _on_BtnAddAllMods_pressed() -> void: - for i in _available_list.get_item_count(): - _available_list.select(i, false) + for i in %AvailableModsList.get_item_count(): + %AvailableModsList.select(i, false) _on_BtnAddSelectedMod_pressed() @@ -362,13 +348,13 @@ func _on_BtnAddAllMods_pressed() -> void: func _do_mod_installation() -> void: if len(_ids_to_delete) > 0: - _mods.delete_mods(_ids_to_reinstall) - await _mods.mod_deletion_finished - _mods.install_mods(_ids_to_install + _ids_to_reinstall) - await _mods.mod_installation_finished + %ModManager.delete_mods(_ids_to_reinstall) + await %ModManager.mod_deletion_finished + %ModManager.install_mods(_ids_to_install + _ids_to_reinstall) + await %ModManager.mod_installation_finished else: - _mods.install_mods(_ids_to_install) - await _mods.mod_installation_finished + %ModManager.install_mods(_ids_to_install) + await %ModManager.mod_installation_finished reload_installed() reload_available() diff --git a/scripts/SettingsUI.gd b/scripts/SettingsUI.gd index 646d4101..7786eb13 100644 --- a/scripts/SettingsUI.gd +++ b/scripts/SettingsUI.gd @@ -14,8 +14,6 @@ var _themes := [ var _proxy_options := ["off", "on", "download"] @onready var _root = $"/root/Catapult" -@onready var _tabs = $"/root/Catapult/Main/TabBar" -@onready var _debug_ui = $"/root/Catapult/Main/TabBar/Debug" func _ready() -> void: @@ -29,37 +27,37 @@ func _ready() -> void: TranslationServer.set_locale(locale) var lang_idx := _langs.find(locale) if lang_idx >= 0: - $LauncherLanguage/obtnLanguage.selected = lang_idx + %LauncherLanguageList.selected = lang_idx var theme_idx := _themes.find(Settings.read("launcher_theme")) if theme_idx >= 0: - $LauncherTheme/obtnTheme.selected = theme_idx - - $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 + %LauncherThemeList.selected = theme_idx + + %ShowGameDescSwitch.button_pressed = Settings.read("show_game_desc") + %KeepLauncherOpenSwitch.button_pressed = Settings.read("keep_open_after_starting_game") + %PrintTipsSwitch.button_pressed = Settings.read("print_tips_of_the_day") + %UpdateToSameVerSwitch.button_pressed = Settings.read("update_to_same_build_allowed") + %ShortenNamesSwitch.button_pressed = Settings.read("shorten_release_names") + %AlwaysShowInstallsSwitch.button_pressed = Settings.read("always_show_installs") + %ShowObsoleteModsSwitch.button_pressed = Settings.read("show_obsolete_mods") + %InstallArchivedModsSwitch.button_pressed = Settings.read("install_archived_mods") + %KeepDownloadCacheSwitch.button_pressed = Settings.read("keep_cache") + %IgnoreDownloadCacheSwitch.button_pressed = Settings.read("ignore_cache") + %DebugModeSwitch.button_pressed = Settings.read("debug_mode") + %NumReleasesField.value = Settings.read("num_releases_to_request") as int + %NumPrsField.value = Settings.read("num_prs_to_request") as int var proxy_option_idx := _proxy_options.find(Settings.read("proxy_option")) if proxy_option_idx >= 0: - $ProxySettings/obtnProxyOption.selected = proxy_option_idx + %ProxyOptionList.selected = proxy_option_idx else: - $ProxySettings/obtnProxyOption.selected = 0 - $ProxySettings/leProxyHost.text = Settings.read("proxy_host") - $ProxySettings/sbProxyPort.value = Settings.read("proxy_port") as int + %ProxyOptionList.selected = 0 + %ProxyHostField.text = Settings.read("proxy_host") + %ProxyPortField.value = Settings.read("proxy_port") as int - $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 + %CustomScaleEnableSwitch.button_pressed = Settings.read("ui_scale_override_enabled") + %CustomScaleValueField.editable = Settings.read("ui_scale_override_enabled") + %CustomScaleValueField.value = (Settings.read("ui_scale_override") as float) * 100.0 func _on_obtnLanguage_item_selected(index: int) -> void: @@ -79,7 +77,7 @@ func _on_obtnTheme_item_selected(index: int) -> void: func _on_ShowGameDesc_toggled(button_pressed: bool) -> void: Settings.store("show_game_desc", button_pressed) - $"../../GameInfo".visible = button_pressed + %GameInfoBox.visible = button_pressed func _on_KeepLauncherOpen_toggled(button_pressed: bool) -> void: @@ -128,10 +126,10 @@ func _on_ShowDebug_toggled(button_pressed: bool) -> void: Settings.store("debug_mode", button_pressed) if button_pressed: - if _debug_ui.get_parent() != _tabs: - _tabs.call_deferred("add_child", _debug_ui) - elif _debug_ui.get_parent() == _tabs: - _tabs.call_deferred("remove_child", _debug_ui) + if %DebugArea.get_parent() != %TabbedLayout: + %TabbedLayout.call_deferred("add_child", %DebugArea) + elif %DebugArea.get_parent() == %TabbedLayout: + %TabbedLayout.call_deferred("remove_child", %DebugArea) func _on_sbNumReleases_value_changed(value: float) -> void: @@ -156,7 +154,7 @@ func _on_sbProxyPort_value_changed(value): func _on_cbScaleOverrideEnable_toggled(button_pressed: bool) -> void: Settings.store("ui_scale_override_enabled", button_pressed) - $ScaleOverride/sbScaleOverride.editable = button_pressed + %CustomScaleValueField.editable = button_pressed if button_pressed: Geom.scale = Settings.read("ui_scale_override") diff --git a/scripts/SoundpacksUI.gd b/scripts/SoundpacksUI.gd index 72817660..04e9dd01 100644 --- a/scripts/SoundpacksUI.gd +++ b/scripts/SoundpacksUI.gd @@ -1,32 +1,32 @@ 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 %SoundpackManager = $"/root/Catapult/Sound" +# @onready var %InstalledSoundsList = $HBox/Installed/InstalledList +# @onready var %AvailableSoundsList = $HBox/Downloadable/AvailableList +# @onready var %DeleteSoundBtn = $HBox/Installed/BtnDelete +# @onready var %InstallSoundBtn = $HBox/Downloadable/BtnInstall +# @onready var %ConfirmDeleteSoundDlg = $ConfirmDelete +# @onready var %ManualSoundDownloadDlg = $ConfirmManualDownload +# @onready var %InstallFromFileDialog = $InstallFromFileDialog +# @onready var %ShowStockSoundsSwitch = $HBox/Installed/ShowStock var _installed_packs = [] func refresh_installed() -> void: - _installed_packs = _sound.get_installed(Settings.read("show_stock_sound")) + _installed_packs = %SoundpackManager.get_installed(Settings.read("show_stock_sound")) - _installed_list.clear() + %InstalledSoundsList.clear() for pack in _installed_packs: - _installed_list.add_item(pack["name"]) + %InstalledSoundsList.add_item(pack["name"]) var desc = "" if pack["description"] == "": desc = tr("str_no_sound_desc") else: desc = _break_up_string(pack["description"], 60) - _installed_list.set_item_tooltip(_installed_list.get_item_count() - 1, desc) + %InstalledSoundsList.set_item_tooltip(%InstalledSoundsList.get_item_count() - 1, desc) func _break_up_string(text: String, approx_width_chars: int) -> String: @@ -48,9 +48,9 @@ func _break_up_string(text: String, approx_width_chars: int) -> String: func _populate_available() -> void: - _available_list.clear() - for pack in _sound.SOUNDPACKS: - _available_list.add_item(pack["name"]) + %AvailableSoundsList.clear() + for pack in %SoundpackManager.SOUNDPACKS: + %AvailableSoundsList.add_item(pack["name"]) func _is_pack_installed(pack_name: String) -> bool: @@ -67,11 +67,11 @@ func _on_Tabs_tab_changed(tab: int) -> void: if tab != 2: return - _cbox_stock.button_pressed = Settings.read("show_stock_sound") + %ShowStockSoundsSwitch.button_pressed = Settings.read("show_stock_sound") - _btn_delete.disabled = true - _btn_install.disabled = true - _btn_install.text = tr("btn_install_sound") + %DeleteSoundBtn.disabled = true + %InstallSoundBtn.disabled = true + %InstallSoundBtn.text = tr("btn_install_sound") _populate_available() refresh_installed() @@ -85,84 +85,84 @@ func _on_ShowStock_toggled(button_pressed: bool) -> void: func _on_InstalledList_item_selected(index: int) -> void: - if _installed_list.disabled: + if %InstalledSoundsList.disabled: return # https://github.com/godotengine/godot/issues/37277 if len(_installed_packs) > 0: - _btn_delete.disabled = _installed_packs[index]["is_stock"] + %DeleteSoundBtn.disabled = _installed_packs[index]["is_stock"] else: - _btn_delete.disabled = true + %DeleteSoundBtn.disabled = true func _on_BtnDelete_pressed() -> void: - var pack_name = _installed_packs[_installed_list.get_selected_items()[0]]["name"] - _dlg_confirm_del.dialog_text = tr("dlg_sound_deletion_text") % pack_name - _dlg_confirm_del.get_cancel_button().text = tr("btn_cancel") - _dlg_confirm_del.size = Vector2(200, 100) - _dlg_confirm_del.popup_centered() + var pack_name = _installed_packs[%InstalledSoundsList.get_selected_items()[0]]["name"] + %ConfirmDeleteSoundDlg.dialog_text = tr("dlg_sound_deletion_text") % pack_name + %ConfirmDeleteSoundDlg.get_cancel_button().text = tr("btn_cancel") + %ConfirmDeleteSoundDlg.size = Vector2(200, 100) + %ConfirmDeleteSoundDlg.popup_centered() func _on_ConfirmDelete_confirmed() -> void: - _sound.delete_pack(_installed_packs[_installed_list.get_selected_items()[0]]["name"]) - await _sound.soundpack_deletion_finished + %SoundpackManager.delete_pack(_installed_packs[%InstalledSoundsList.get_selected_items()[0]]["name"]) + await %SoundpackManager.soundpack_deletion_finished refresh_installed() - if len(_installed_list.get_selected_items()) == 0: - _btn_delete.disabled = true + if len(%InstalledSoundsList.get_selected_items()) == 0: + %DeleteSoundBtn.disabled = true func _on_AvailableList_item_selected(index: int) -> void: - if _installed_list.disabled: + if %InstalledSoundsList.disabled: return # https://github.com/godotengine/godot/issues/37277 - _btn_install.disabled = false - var pack_name = _sound.SOUNDPACKS[index]["name"] + %InstallSoundBtn.disabled = false + var pack_name = %SoundpackManager.SOUNDPACKS[index]["name"] if _is_pack_installed(pack_name): - _btn_install.text = tr("btn_reinstall_sound") + %InstallSoundBtn.text = tr("btn_reinstall_sound") else: - _btn_install.text = tr("btn_install_sound") + %InstallSoundBtn.text = tr("btn_install_sound") func _on_BtnInstall_pressed() -> void: - var pack_index = _available_list.get_selected_items()[0] - var pack = _sound.SOUNDPACKS[pack_index] + var pack_index = %AvailableSoundsList.get_selected_items()[0] + var pack = %SoundpackManager.SOUNDPACKS[pack_index] if ("manual_download" in pack) and (pack["manual_download"] == true): - _dlg_manual_dl.size = Vector2(300, 150) - _dlg_manual_dl.get_cancel_button().text = tr("btn_cancel") - _dlg_manual_dl.popup_centered() + %ManualSoundDownloadDlg.size = Vector2(300, 150) + %ManualSoundDownloadDlg.get_cancel_button().text = tr("btn_cancel") + %ManualSoundDownloadDlg.popup_centered() else: if _is_pack_installed(pack["name"]): - _sound.install_pack(pack_index, null, true) + %SoundpackManager.install_pack(pack_index, null, true) else: - _sound.install_pack(pack_index) - await _sound.soundpack_installation_finished + %SoundpackManager.install_pack(pack_index) + await %SoundpackManager.soundpack_installation_finished refresh_installed() func _on_ConfirmManualDownload_confirmed() -> void: - var pack = _sound.SOUNDPACKS[_available_list.get_selected_items()[0]] + var pack = %SoundpackManager.SOUNDPACKS[%AvailableSoundsList.get_selected_items()[0]] OS.shell_open(pack["url"]) - _dlg_file.current_dir = Paths.own_dir - _dlg_file.popup_centered_ratio(0.9) + %InstallFromFileDialog.current_dir = Paths.own_dir + %InstallFromFileDialog.popup_centered_ratio(0.9) func _on_InstallFromFileDialog_file_selected(path: String) -> void: - var index = _available_list.get_selected_items()[0] - var pack_name = _sound.SOUNDPACKS[index]["name"] + var index = %AvailableSoundsList.get_selected_items()[0] + var pack_name = %SoundpackManager.SOUNDPACKS[index]["name"] if _is_pack_installed(pack_name): - _sound.install_pack(index, path, true, true) + %SoundpackManager.install_pack(index, path, true, true) else: - _sound.install_pack(index, path, false, true) + %SoundpackManager.install_pack(index, path, false, true) - await _sound.soundpack_installation_finished + await %SoundpackManager.soundpack_installation_finished refresh_installed() diff --git a/scripts/licenses_dialog.gd b/scripts/licenses_dialog.gd index 7692a09c..b4dd3bab 100644 --- a/scripts/licenses_dialog.gd +++ b/scripts/licenses_dialog.gd @@ -3,8 +3,8 @@ extends Window func _on_about_to_popup() -> void: - %rtlLicenses.clear() - %rtlLicenses.scroll_to_line(0) + %LicensesText.clear() + %LicensesText.scroll_to_line(0) _add_section("Catapult", FileAccess.get_file_as_string("res://LICENSE")) _add_section("Godot Engine", Engine.get_license_text()) @@ -22,5 +22,5 @@ func _on_lbl_licenses_meta_clicked(_meta: Variant) -> void: func _add_section(heading: String, contents: String) -> void: - %rtlLicenses.append_text("[br][p align=c][b]" + heading + "[/b][/p][br][br]") - %rtlLicenses.append_text("[p align=l]" + contents + "[/p][br][hr][br]") + %LicensesText.append_text("[br][p align=c][b]" + heading + "[/b][/p][br][br]") + %LicensesText.append_text("[p align=l]" + contents + "[/p][br][hr][br]") diff --git a/scripts/status.gd b/scripts/status.gd index dbcc23b5..4e2eac5c 100644 --- a/scripts/status.gd +++ b/scripts/status.gd @@ -5,16 +5,16 @@ const _STATUS_LBL_PATH := "/root/Catapult/Main/Log" var rainbow_text := false -var _status_view: RichTextLabel = null +var _log_text: RichTextLabel = null var _buffer := [] # Just in case there are any messages before the status label enters the scene. func _ready() -> void: while true: - _status_view = get_node(_STATUS_LBL_PATH) + _log_text = get_node("/root/Catapult").get_node("%LogText") - if _status_view: + if _log_text: _flush_buffer() break else: @@ -28,8 +28,8 @@ func post(msg: String, type: int = Enums.MSG_INFO) -> void: var msg_data := _form_message(msg, type) - if _status_view: - _status_view.append_text(msg_data["bb_text"]) + if _log_text: + _log_text.append_text(msg_data["bb_text"]) else: print("saving message to buffer") _buffer.push_back(msg_data) @@ -84,7 +84,7 @@ func _form_message(msg: String, msg_type: int) -> Dictionary: func _flush_buffer() -> void: - if _status_view: + if _log_text: while _buffer.size() > 0: var msg = _buffer.pop_front() - _status_view.append_text(msg["bb_text"]) + _log_text.append_text(msg["bb_text"]) diff --git a/scripts/theme_scaler.gd b/scripts/theme_scaler.gd index 0156a48d..c833c46b 100644 --- a/scripts/theme_scaler.gd +++ b/scripts/theme_scaler.gd @@ -212,7 +212,7 @@ func make_scaled_theme(proto: Theme, scale_factor: float) -> Theme: func _apply_scale(theme: Theme, factor: float) -> void: - pass + _scale_constants(theme, factor) _scale_textures(theme, factor) _scale_font_sizes(theme, factor) @@ -239,8 +239,8 @@ func _scale_textures(theme: Theme, factor: float) -> void: var tex := theme.get_icon(tex_name, tex_type) as DPITexture if tex: tex.base_scale = factor -# -# + + func _scale_font_sizes(theme: Theme, factor: float) -> void: theme.default_font_size = max(1, theme.default_font_size * factor) @@ -248,8 +248,8 @@ func _scale_font_sizes(theme: Theme, factor: float) -> void: for sz_name in theme.get_font_size_list(sz_type): var new_value: int = max(1, theme.get_font_size(sz_name, sz_type) * factor) theme.set_font_size(sz_name, sz_type, new_value) -# -# + + func _scale_styleboxes(theme: Theme, factor: float) -> void: var unique_styleboxes := [] From a9dfb76777349abf4db7a0e255080f14b3bba267 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Fri, 7 Nov 2025 20:53:16 +0000 Subject: [PATCH 04/14] Use integers in GitHub API requests --- scripts/ChangelogDialod.gd | 4 ++-- scripts/ReleaseManager.gd | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/ChangelogDialod.gd b/scripts/ChangelogDialod.gd index 74026a1c..876705ce 100644 --- a/scripts/ChangelogDialod.gd +++ b/scripts/ChangelogDialod.gd @@ -33,9 +33,9 @@ func _update_proxy(http: HTTPRequest) -> void: func download_pull_requests(): - var prs = Settings.read("num_prs_to_request") + var prs := Settings.read("num_prs_to_request") as int var url = _PR_URL[Settings.read("game")] - url += "+is%3Apr+is%3Amerged&per_page=" + prs + url += "+is%3Apr+is%3Amerged&per_page=" + str(prs) var headers = ["user-agent: CatapultGodotApp"] _pr_data = tr("str_fetching_changes") _update_proxy(_pullRequests) diff --git a/scripts/ReleaseManager.gd b/scripts/ReleaseManager.gd index 13173fdf..6433341e 100644 --- a/scripts/ReleaseManager.gd +++ b/scripts/ReleaseManager.gd @@ -321,7 +321,7 @@ func _ready() -> void: func _get_query_string() -> String: var num_per_page = Settings.read("num_releases_to_request") - return "?per_page=%s" % num_per_page + return "?per_page=%s" % int(num_per_page) func _update_proxy(http: HTTPRequest) -> void: From 2361be997ef73b32562c1096af0f82567dbb8ff2 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Fri, 7 Nov 2025 23:05:58 +0000 Subject: [PATCH 05/14] Fix Debug area showing/hiding --- scripts/Catapult.gd | 30 +++--------------------------- scripts/SettingsUI.gd | 6 +++--- 2 files changed, 6 insertions(+), 30 deletions(-) diff --git a/scripts/Catapult.gd b/scripts/Catapult.gd index 91f38f9b..6a02e39d 100644 --- a/scripts/Catapult.gd +++ b/scripts/Catapult.gd @@ -1,32 +1,6 @@ extends Node -# @onready var _debug_ui = $Main/TabBar/Debug -# @onready var _game_info = $Main/GameInfo -# @onready var %GameDescText = $Main/GameInfo/Description -# @onready var %TabbedLayout = $Main/TabBar -# @onready var %ModManager = $Mods -# @onready var %ReleaseManager = $Releases -# @onready var %ReleaseInstaller = $ReleaseInstaller -# @onready var %InstallReleaseBtn = $Main/TabBar/Game/BtnInstall -# @onready var %RefreshReleasesBtn = $Main/TabBar/Game/Builds/BtnRefresh -# @onready var %ChangelogDialog = $Main/TabBar/Game/ChangelogDialog -# @onready var %ChangelogLinkLabel = $Main/TabBar/Game/Channel/HBox/ChangelogLink -# @onready var %GameDirBtn = $Main/TabBar/Game/ActiveInstall/Build/GameDir -# @onready var %UserDirBtn = $Main/TabBar/Game/ActiveInstall/Build/UserDir -# @onready var %LaunchGameBtn = $Main/TabBar/Game/ActiveInstall/Launch/BtnPlay -# @onready var %QuickLoadBtn = $Main/TabBar/Game/ActiveInstall/Launch/BtnResume -# @onready var %ReleasesList = $Main/TabBar/Game/Builds/BuildsList -# @onready var %GamesList = $Main/GameChoice/GamesList -# @onready var %StableSwitch = $Main/TabBar/Game/Channel/Group/RBtnStable -# @onready var %ExperimentalSwitch = $Main/TabBar/Game/Channel/Group/RBtnExperimental -# @onready var %ActiveInstallNameLabel = $Main/TabBar/Game/ActiveInstall/Build/Name -# @onready var %UpdateCurrentSwitch = $Main/TabBar/Game/UpdateCurrent -# @onready var %GameInstallsList = $Main/TabBar/Game/GameInstalls/HBox/InstallsList -# @onready var %MakeInstallActiveBtn = $Main/TabBar/Game/GameInstalls/HBox/VBox/btnMakeActive -# @onready var %DeleteGameInstallBtn = $Main/TabBar/Game/GameInstalls/HBox/VBox/btnDelete -# @onready var %GameInstallsGroup = $Main/TabBar/Game/GameInstalls - var _disable_savestate := {} var _installs := {} @@ -342,7 +316,9 @@ func _setup_ui() -> void: %GameInfoBox.visible = Settings.read("show_game_desc") if not Settings.read("debug_mode"): - %TabbedLayout.remove_child(%DebugArea) + # %TabbedLayout.remove_child(%DebugArea) + %DebugArea.hide() + %DebugArea.reparent(self) %UpdateCurrentSwitch.button_pressed = Settings.read("update_current_when_installing") diff --git a/scripts/SettingsUI.gd b/scripts/SettingsUI.gd index 7786eb13..3029f8e5 100644 --- a/scripts/SettingsUI.gd +++ b/scripts/SettingsUI.gd @@ -126,10 +126,10 @@ func _on_ShowDebug_toggled(button_pressed: bool) -> void: Settings.store("debug_mode", button_pressed) if button_pressed: - if %DebugArea.get_parent() != %TabbedLayout: - %TabbedLayout.call_deferred("add_child", %DebugArea) + %DebugArea.reparent(%TabbedLayout) elif %DebugArea.get_parent() == %TabbedLayout: - %TabbedLayout.call_deferred("remove_child", %DebugArea) + %DebugArea.hide() + %DebugArea.reparent(_root) func _on_sbNumReleases_value_changed(value: float) -> void: From 8d51d6fe06900d820e50d5541551b7d06cadfd4f Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sun, 9 Nov 2025 16:59:23 +0000 Subject: [PATCH 06/14] Prevent deletion of game installs containing user data --- icons/tex_stop.tres | 8 +++ scenes/Catapult.tscn | 7 ++- scenes/UserDataDeletionDialog.tscn | 81 +++++++++++++++++++++++++++ scripts/Catapult.gd | 21 ++++++- scripts/ReleaseInstaller.gd | 18 ++++++ scripts/user_data_deletion_dlg.gd | 46 +++++++++++++++ scripts/user_data_deletion_dlg.gd.uid | 1 + text/en/dialog_buttons.csv | 1 + 8 files changed, 181 insertions(+), 2 deletions(-) create mode 100644 icons/tex_stop.tres create mode 100644 scenes/UserDataDeletionDialog.tscn create mode 100644 scripts/user_data_deletion_dlg.gd create mode 100644 scripts/user_data_deletion_dlg.gd.uid diff --git a/icons/tex_stop.tres b/icons/tex_stop.tres new file mode 100644 index 00000000..2863da80 --- /dev/null +++ b/icons/tex_stop.tres @@ -0,0 +1,8 @@ +[gd_resource type="DPITexture" script_class="SVGTexture" load_steps=2 format=3 uid="uid://cuf7472h7y6cy"] + +[ext_resource type="Script" uid="uid://c1wwv5d56m6r" path="res://scripts/svg_texture.gd" id="1_dblyh"] + +[resource] +_source = "" +script = ExtResource("1_dblyh") +metadata/_custom_type_script = "uid://c1wwv5d56m6r" diff --git a/scenes/Catapult.tscn b/scenes/Catapult.tscn index b9ef5399..8974b88a 100644 --- a/scenes/Catapult.tscn +++ b/scenes/Catapult.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=49 format=3 uid="uid://j8v4j8uy58rl"] +[gd_scene load_steps=50 format=3 uid="uid://j8v4j8uy58rl"] [ext_resource type="Texture2D" uid="uid://ma1wiy6trs4k" path="res://icons/tex_info.tres" id="2_rcpd3"] [ext_resource type="Script" uid="uid://drnrbqdw1iua4" path="res://scripts/Catapult.gd" id="4"] @@ -18,6 +18,7 @@ [ext_resource type="Script" uid="uid://cgvtqevpi0vvm" path="res://scripts/SoundpackManager.gd" id="13"] [ext_resource type="Script" uid="uid://6ein2nethlx5" path="res://scripts/Debug.gd" id="14"] [ext_resource type="Script" uid="uid://jyw1c7gc21tb" path="res://scripts/SoundpacksUI.gd" id="15"] +[ext_resource type="PackedScene" uid="uid://c1axg2lq1dhit" path="res://scenes/UserDataDeletionDialog.tscn" id="15_5ug7j"] [ext_resource type="Script" uid="uid://dws64rera28nf" path="res://scripts/Tabs.gd" id="16"] [ext_resource type="Script" uid="uid://bcxy21m818jf1" path="res://scripts/ItemList.gd" id="17"] [ext_resource type="Script" uid="uid://clo0n7jb6x8qy" path="res://scripts/ModsUI.gd" id="18"] @@ -305,6 +306,10 @@ icon = ExtResource("12_no8b7") unique_name_in_owner = true position = Vector2i(0, 36) +[node name="UserDataDeletionDlg" parent="MainLayout/TabbedLayout/GameArea" instance=ExtResource("15_5ug7j")] +unique_name_in_owner = true +visible = false + [node name="ModsArea" type="VBoxContainer" parent="MainLayout/TabbedLayout"] visible = false layout_mode = 2 diff --git a/scenes/UserDataDeletionDialog.tscn b/scenes/UserDataDeletionDialog.tscn new file mode 100644 index 00000000..833d0eda --- /dev/null +++ b/scenes/UserDataDeletionDialog.tscn @@ -0,0 +1,81 @@ +[gd_scene load_steps=3 format=3 uid="uid://c1axg2lq1dhit"] + +[ext_resource type="Script" uid="uid://71olaoenl8s5" path="res://scripts/user_data_deletion_dlg.gd" id="1_nax53"] +[ext_resource type="Texture2D" uid="uid://cuf7472h7y6cy" path="res://icons/tex_stop.tres" id="2_3eji3"] + +[node name="UserDataDeletionDialog" type="Window"] +oversampling_override = 1.0 +exclusive = true +unresizable = true +script = ExtResource("1_nax53") + +[node name="MainPanel" type="PanelContainer" parent="."] +unique_name_in_owner = true +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 154.0 +grow_horizontal = 2 +size_flags_vertical = 0 + +[node name="Margin" type="MarginContainer" parent="MainPanel"] +layout_mode = 2 +size_flags_vertical = 0 + +[node name="MainLayout" type="VBoxContainer" parent="MainPanel/Margin"] +layout_mode = 2 +size_flags_vertical = 0 + +[node name="WarningBox" type="HBoxContainer" parent="MainPanel/Margin/MainLayout"] +layout_mode = 2 + +[node name="TextureRect" type="TextureRect" parent="MainPanel/Margin/MainLayout/WarningBox"] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +texture = ExtResource("2_3eji3") +stretch_mode = 2 + +[node name="WarningText" type="RichTextLabel" parent="MainPanel/Margin/MainLayout/WarningBox"] +unique_name_in_owner = true +custom_minimum_size = Vector2(400, 0) +layout_mode = 2 +size_flags_vertical = 0 +bbcode_enabled = true +text = "(this text is assigned at runtime) +. +. +." +fit_content = true + +[node name="Spacer" type="Control" parent="MainPanel/Margin/MainLayout"] +layout_mode = 2 + +[node name="SafetyField" type="LineEdit" parent="MainPanel/Margin/MainLayout"] +unique_name_in_owner = true +layout_mode = 2 +placeholder_text = "Type \"delete\" here to confirm" + +[node name="Spacer2" type="Control" parent="MainPanel/Margin/MainLayout"] +layout_mode = 2 + +[node name="ButtonsBox" type="HBoxContainer" parent="MainPanel/Margin/MainLayout"] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="ConfirmButton" type="Button" parent="MainPanel/Margin/MainLayout/ButtonsBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +disabled = true +text = "btn_confirm" + +[node name="CancelButton" type="Button" parent="MainPanel/Margin/MainLayout/ButtonsBox"] +layout_mode = 2 +size_flags_horizontal = 4 +text = "btn_cancel" + +[connection signal="close_requested" from="." to="." method="close" binds= [false]] +[connection signal="text_changed" from="MainPanel/Margin/MainLayout/SafetyField" to="." method="_on_DeleteSafetyField_text_changed"] +[connection signal="pressed" from="MainPanel/Margin/MainLayout/ButtonsBox/ConfirmButton" to="." method="close" binds= [true]] +[connection signal="pressed" from="MainPanel/Margin/MainLayout/ButtonsBox/CancelButton" to="." method="close" binds= [false]] diff --git a/scripts/Catapult.gd b/scripts/Catapult.gd index 6a02e39d..9509dc40 100644 --- a/scripts/Catapult.gd +++ b/scripts/Catapult.gd @@ -275,11 +275,16 @@ func _on_BtnInstall_pressed() -> void: var index = %ReleasesList.selected var release = %ReleaseManager.releases[_get_release_key()][index] var update_path := "" + if Settings.read("update_current_when_installing"): var game = Settings.read("game") var active_name = Settings.read("active_install_" + game) if (game in _installs) and (active_name in _installs[game]): update_path = _installs[game][active_name] + var safe_to_delete := await _confirm_game_safe_to_delete(active_name) + if not safe_to_delete: + return + %ReleaseInstaller.install_release(release, update_path) @@ -449,12 +454,26 @@ func _on_btnMakeActive_pressed() -> void: Status.post(tr("msg_set_active") % release_name) Settings.store("active_install_" + Settings.read("game"), release_name) _refresh_currently_installed() + print(%ReleaseInstaller.check_game_dir_for_userdata(release_name)) func _on_btnDelete_pressed() -> void: var release_name = %GameInstallsList.get_item_text(%GameInstallsList.get_selected_items()[0]) - %ReleaseInstaller.remove_release_by_name(release_name) + var safe_to_delete := await _confirm_game_safe_to_delete(release_name) + if safe_to_delete == true: + %ReleaseInstaller.remove_release_by_name(release_name) + + +func _confirm_game_safe_to_delete(release_name: String) -> bool: + + var misplaced_userdata: Array[String] = %ReleaseInstaller.check_game_dir_for_userdata(release_name) + if not misplaced_userdata.is_empty(): + %UserDataDeletionDlg.open(misplaced_userdata) + var delete_confirmed: bool = await %UserDataDeletionDlg.response_given + return delete_confirmed + else: + return true func _refresh_currently_installed() -> void: diff --git a/scripts/ReleaseInstaller.gd b/scripts/ReleaseInstaller.gd index c6735b2b..6fb099ee 100644 --- a/scripts/ReleaseInstaller.gd +++ b/scripts/ReleaseInstaller.gd @@ -77,3 +77,21 @@ func remove_release_by_name(release_name: String) -> void: Status.post(tr("msg_delete_not_found") % release_name, Enums.MSG_ERROR) emit_signal("operation_finished") + + +func check_game_dir_for_userdata(release_name: String) -> Array[String]: + + var installs := Paths.installs_summary + var game := Settings.read("game") as String + var result: Array[String] + + if (not game in installs) or (not release_name in installs[game]): + return result + + var game_path := installs[game][release_name] as String + for sub_path in ["config", "font", "graveyard", "memorial", "mods", "save", "sound", "templates"]: + var full_path := game_path.path_join(sub_path) + if DirAccess.dir_exists_absolute(full_path) and not FS.list_dir(full_path).is_empty(): + result.append(full_path) + + return result diff --git a/scripts/user_data_deletion_dlg.gd b/scripts/user_data_deletion_dlg.gd new file mode 100644 index 00000000..a593b12a --- /dev/null +++ b/scripts/user_data_deletion_dlg.gd @@ -0,0 +1,46 @@ +extends Window + +signal response_given(delete_confirmed: bool) + + +func _ready() -> void: + + %WarningText.meta_clicked.connect(func(meta): + OS.shell_open(meta) + ) + + %MainPanel.resized.connect(func(): + self.size = %MainPanel.size + self.move_to_center() + ) + +func open(folders_list: Array[String]) -> void: + + %SafetyField.clear() + %WarningText.clear() + %WarningText.append_text("Stop!\ + Misplaced user data was detected in the game directory.\ + This could happen if you ran the game directly from its executable\ + instead of using Catapult. This is not supported, and if you proceed,\ + all that data will be deleted irrecoverably.[br][br]\ + User data was found in the following folders:[br]") + + %WarningText.push_list(0, RichTextLabel.LIST_DOTS, false) + for path in folders_list: + %WarningText.append_text("[url]%s[/url]\n" % path) + %WarningText.pop_all() + %WarningText.newline() + + %WarningText.append_text("Review these folders and back up anything important before confirming.") + + popup_centered() + + +func close(delete_confirmed: bool) -> void: + hide() + response_given.emit(delete_confirmed) + + +func _on_DeleteSafetyField_text_changed(new_text: String) -> void: + + %ConfirmButton.disabled = (new_text.to_lower() != "delete") diff --git a/scripts/user_data_deletion_dlg.gd.uid b/scripts/user_data_deletion_dlg.gd.uid new file mode 100644 index 00000000..f7842dfb --- /dev/null +++ b/scripts/user_data_deletion_dlg.gd.uid @@ -0,0 +1 @@ +uid://71olaoenl8s5 diff --git a/text/en/dialog_buttons.csv b/text/en/dialog_buttons.csv index d3356044..74099877 100644 --- a/text/en/dialog_buttons.csv +++ b/text/en/dialog_buttons.csv @@ -7,3 +7,4 @@ "btn_no","No" "btn_reinstall","Reinstall" "btn_skip","Skip" +"btn_confirm","Confirm" \ No newline at end of file From d5ff77675458efecbae4b9190e9b21949d072857 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sun, 9 Nov 2025 17:11:46 +0000 Subject: [PATCH 07/14] De-hardcode user data deletion dialog text --- project.godot | 2 +- scenes/UserDataDeletionDialog.tscn | 1 + scripts/user_data_deletion_dlg.gd | 11 +++-------- text/en/userdata_deletion_dialog.csv | 6 ++++++ text/en/userdata_deletion_dialog.csv.import | 17 +++++++++++++++++ 5 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 text/en/userdata_deletion_dialog.csv create mode 100644 text/en/userdata_deletion_dialog.csv.import diff --git a/project.godot b/project.godot index d463b5df..bda6940f 100644 --- a/project.godot +++ b/project.godot @@ -97,7 +97,7 @@ 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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", "res://text/en/userdata_deletion_dialog.en.translation") [locale] diff --git a/scenes/UserDataDeletionDialog.tscn b/scenes/UserDataDeletionDialog.tscn index 833d0eda..1f4fe2be 100644 --- a/scenes/UserDataDeletionDialog.tscn +++ b/scenes/UserDataDeletionDialog.tscn @@ -5,6 +5,7 @@ [node name="UserDataDeletionDialog" type="Window"] oversampling_override = 1.0 +title = "dlg_userdata_deletion_title" exclusive = true unresizable = true script = ExtResource("1_nax53") diff --git a/scripts/user_data_deletion_dlg.gd b/scripts/user_data_deletion_dlg.gd index a593b12a..9a7710c8 100644 --- a/scripts/user_data_deletion_dlg.gd +++ b/scripts/user_data_deletion_dlg.gd @@ -18,20 +18,15 @@ func open(folders_list: Array[String]) -> void: %SafetyField.clear() %WarningText.clear() - %WarningText.append_text("Stop!\ - Misplaced user data was detected in the game directory.\ - This could happen if you ran the game directly from its executable\ - instead of using Catapult. This is not supported, and if you proceed,\ - all that data will be deleted irrecoverably.[br][br]\ - User data was found in the following folders:[br]") + %WarningText.append_text(tr("dlg_userdata_deletion_text_pt1")) %WarningText.push_list(0, RichTextLabel.LIST_DOTS, false) for path in folders_list: %WarningText.append_text("[url]%s[/url]\n" % path) %WarningText.pop_all() - %WarningText.newline() - %WarningText.append_text("Review these folders and back up anything important before confirming.") + %WarningText.newline() + %WarningText.append_text(tr("dlg_userdata_deletion_text_pt2")) popup_centered() diff --git a/text/en/userdata_deletion_dialog.csv b/text/en/userdata_deletion_dialog.csv new file mode 100644 index 00000000..e1370bbc --- /dev/null +++ b/text/en/userdata_deletion_dialog.csv @@ -0,0 +1,6 @@ +"keys","en" +, +"dlg_userdata_deletion_title","Confirm user data deletion" +"dlg_userdata_deletion_text_pt1","Stop! Misplaced user data was detected in the game directory. This could happen if you ran the game directly from its executable instead of using Catapult. This is not supported, and if you proceed, all that data will be deleted irrecoverably.[br][br] User data was found in the following folders:[br]" +"dlg_userdata_deletion_text_pt2","Review these folders and back up anything important before confirming." +"dlg_userdata_deletion_safety_hint","Type \"delete\" here to confirm" diff --git a/text/en/userdata_deletion_dialog.csv.import b/text/en/userdata_deletion_dialog.csv.import new file mode 100644 index 00000000..75585199 --- /dev/null +++ b/text/en/userdata_deletion_dialog.csv.import @@ -0,0 +1,17 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://jkj4ic87sctc" + +[deps] + +files=["res://text/en/userdata_deletion_dialog.en.translation"] + +source_file="res://text/en/userdata_deletion_dialog.csv" +dest_files=["res://text/en/userdata_deletion_dialog.en.translation"] + +[params] + +compress=true +delimiter=0 From 03507928d891d7e88cfee503acc1eb69dba0af56 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sun, 9 Nov 2025 19:34:25 +0000 Subject: [PATCH 08/14] Complete missing translations across all supported languages (#215) * Initial plan * Add missing translations for all supported languages Co-authored-by: qrrk <19731636+qrrk@users.noreply.github.com> * Add all remaining missing translations from older additions Co-authored-by: qrrk <19731636+qrrk@users.noreply.github.com> * Finalize translation fixes --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: qrrk <19731636+qrrk@users.noreply.github.com> --- project.godot | 2 +- scenes/UserDataDeletionDialog.tscn | 3 +- text/cs/dialog_buttons.csv | 1 + text/cs/download_manager.csv | 1 + text/cs/filesystem_helper.csv | 2 + text/cs/general.csv | 2 + text/cs/release_manager.csv | 2 + text/cs/settings_tab.csv | 17 +++++ text/cs/userdata_deletion_dialog.csv | 6 ++ text/cs/userdata_deletion_dialog.csv.import | 17 +++++ text/en/userdata_deletion_dialog.csv | 2 +- text/es/dialog_buttons.csv | 1 + text/es/download_manager.csv | 1 + text/es/filesystem_helper.csv | 2 + text/es/general.csv | 1 + text/es/release_manager.csv | 2 + text/es/settings_tab.csv | 16 +++++ text/es/userdata_deletion_dialog.csv | 6 ++ text/es/userdata_deletion_dialog.csv.import | 17 +++++ text/fr/dialog_buttons.csv | 1 + text/fr/download_manager.csv | 1 + text/fr/filesystem_helper.csv | 2 + text/fr/general.csv | 1 + text/fr/release_manager.csv | 2 + text/fr/settings_tab.csv | 16 +++++ text/fr/userdata_deletion_dialog.csv | 6 ++ text/fr/userdata_deletion_dialog.csv.import | 17 +++++ text/ko/dialog_buttons.csv | 1 + text/ko/download_manager.csv | 1 + text/ko/filesystem_helper.csv | 2 + text/ko/general.csv | 4 ++ text/ko/release_manager.csv | 2 + text/ko/settings_tab.csv | 16 +++++ text/ko/userdata_deletion_dialog.csv | 6 ++ text/ko/userdata_deletion_dialog.csv.import | 17 +++++ text/pl/dialog_buttons.csv | 1 + text/pl/download_manager.csv | 27 ++++---- text/pl/filesystem_helper.csv | 38 ++++++----- text/pl/general.csv | 54 ++++++++------- text/pl/release_manager.csv | 20 +++--- text/pl/settings_tab.csv | 76 +++++++++++++-------- text/pl/userdata_deletion_dialog.csv | 6 ++ text/pl/userdata_deletion_dialog.csv.import | 17 +++++ text/pt/dialog_buttons.csv | 3 +- text/pt/download_manager.csv | 3 +- text/pt/general.csv | 3 +- text/pt/settings_tab.csv | 14 +++- text/pt/userdata_deletion_dialog.csv | 6 ++ text/pt/userdata_deletion_dialog.csv.import | 17 +++++ text/ru/dialog_buttons.csv | 1 + text/ru/download_manager.csv | 1 + text/ru/filesystem_helper.csv | 2 + text/ru/general.csv | 1 + text/ru/release_installer.csv | 1 + text/ru/release_manager.csv | 2 + text/ru/settings_tab.csv | 16 +++++ text/ru/userdata_deletion_dialog.csv | 6 ++ text/ru/userdata_deletion_dialog.csv.import | 17 +++++ text/tr/dialog_buttons.csv | 1 + text/tr/download_manager.csv | 2 + text/tr/filesystem_helper.csv | 2 + text/tr/general.csv | 1 + text/tr/release_manager.csv | 2 + text/tr/settings_tab.csv | 16 +++++ text/tr/userdata_deletion_dialog.csv | 6 ++ text/tr/userdata_deletion_dialog.csv.import | 17 +++++ text/zh/dialog_buttons.csv | 1 + text/zh/filesystem_helper.csv | 2 + text/zh/general.csv | 1 + text/zh/release_manager.csv | 2 + text/zh/settings_tab.csv | 1 + text/zh/userdata_deletion_dialog.csv | 6 ++ text/zh/userdata_deletion_dialog.csv.import | 17 +++++ 73 files changed, 502 insertions(+), 103 deletions(-) create mode 100644 text/cs/userdata_deletion_dialog.csv create mode 100644 text/cs/userdata_deletion_dialog.csv.import create mode 100644 text/es/userdata_deletion_dialog.csv create mode 100644 text/es/userdata_deletion_dialog.csv.import create mode 100644 text/fr/userdata_deletion_dialog.csv create mode 100644 text/fr/userdata_deletion_dialog.csv.import create mode 100644 text/ko/userdata_deletion_dialog.csv create mode 100644 text/ko/userdata_deletion_dialog.csv.import create mode 100644 text/pl/userdata_deletion_dialog.csv create mode 100644 text/pl/userdata_deletion_dialog.csv.import create mode 100644 text/pt/userdata_deletion_dialog.csv create mode 100644 text/pt/userdata_deletion_dialog.csv.import create mode 100644 text/ru/userdata_deletion_dialog.csv create mode 100644 text/ru/userdata_deletion_dialog.csv.import create mode 100644 text/tr/userdata_deletion_dialog.csv create mode 100644 text/tr/userdata_deletion_dialog.csv.import create mode 100644 text/zh/userdata_deletion_dialog.csv create mode 100644 text/zh/userdata_deletion_dialog.csv.import diff --git a/project.godot b/project.godot index bda6940f..d29da48b 100644 --- a/project.godot +++ b/project.godot @@ -97,7 +97,7 @@ 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/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/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/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/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/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/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/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", "res://text/en/userdata_deletion_dialog.en.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/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/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/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/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/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/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/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/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", "res://text/en/userdata_deletion_dialog.en.translation", "res://text/cs/userdata_deletion_dialog.cs.translation", "res://text/es/userdata_deletion_dialog.es.translation", "res://text/fr/userdata_deletion_dialog.fr.translation", "res://text/ko/userdata_deletion_dialog.ko.translation", "res://text/pl/userdata_deletion_dialog.pl.translation", "res://text/pt/userdata_deletion_dialog.pt.translation", "res://text/ru/userdata_deletion_dialog.ru.translation", "res://text/tr/userdata_deletion_dialog.tr.translation", "res://text/zh/userdata_deletion_dialog.zh.translation") [locale] diff --git a/scenes/UserDataDeletionDialog.tscn b/scenes/UserDataDeletionDialog.tscn index 1f4fe2be..a5a5cfb6 100644 --- a/scenes/UserDataDeletionDialog.tscn +++ b/scenes/UserDataDeletionDialog.tscn @@ -6,6 +6,7 @@ [node name="UserDataDeletionDialog" type="Window"] oversampling_override = 1.0 title = "dlg_userdata_deletion_title" +position = Vector2i(0, 24) exclusive = true unresizable = true script = ExtResource("1_nax53") @@ -54,7 +55,7 @@ layout_mode = 2 [node name="SafetyField" type="LineEdit" parent="MainPanel/Margin/MainLayout"] unique_name_in_owner = true layout_mode = 2 -placeholder_text = "Type \"delete\" here to confirm" +placeholder_text = "dlg_userdata_deletion_safety_hint" [node name="Spacer2" type="Control" parent="MainPanel/Margin/MainLayout"] layout_mode = 2 diff --git a/text/cs/dialog_buttons.csv b/text/cs/dialog_buttons.csv index 949feed3..8f4c3f76 100644 --- a/text/cs/dialog_buttons.csv +++ b/text/cs/dialog_buttons.csv @@ -7,3 +7,4 @@ "btn_no","Ne" "btn_reinstall","Znovu nainstalovat" "btn_skip","Přeskočit" +"btn_confirm","Potvrdit" diff --git a/text/cs/download_manager.csv b/text/cs/download_manager.csv index f36dc23d..a87e86c1 100644 --- a/text/cs/download_manager.csv +++ b/text/cs/download_manager.csv @@ -11,3 +11,4 @@ "msg_download_finished","Dokončeno stahování %s." "msg_download_failed","Nezdařilo se stáhnout %s." "msg_http_request_info","[b]Informace o požadavku HTTP:[/b]\n[u]Výsledek:[/u] %s\n[u]Kód odpovědi:[/u] %s\n[u]Hlavičky:[/u] %s" +"msg_using_proxy","Používám proxy: %s:%s" diff --git a/text/cs/filesystem_helper.csv b/text/cs/filesystem_helper.csv index 917d77db..d227c37c 100644 --- a/text/cs/filesystem_helper.csv +++ b/text/cs/filesystem_helper.csv @@ -16,3 +16,5 @@ "msg_extract_error","Příkaz na extrakci archívu skončil s chybou (chybová hláška: %s)" "msg_extract_failed_cmd","Příkaz selhal: %s" "msg_extract_fail_output","Výstup: %s" +"msg_zipping_file","Zipuji %s..." +"msg_zip_error","Příkaz na zip archívu skončil s chybou (chybový kód: %s)" diff --git a/text/cs/general.csv b/text/cs/general.csv index 1d4cf37c..f1d0e574 100644 --- a/text/cs/general.csv +++ b/text/cs/general.csv @@ -23,3 +23,5 @@ "tab_fonts","Fonty" "tab_backups","Zálohy" "tab_settings","Nastavení" +"desc_tlg","[b]Cataclysm: The Last Generation[/b]. Lidstvo to nepřežije, ale vy jste to nezaznamenali, [i]zatím[/i]. Tento fork DDA, vedený WormGirl, obsahuje významné převážení celé hry, s důrazem na přežití a simulaci života. Přežití je záměrné a všechny vaše volby jsou důležité. Prozkoumejte tento téměř věrohodný blízkou budoucnost svět se všemi zbraněmi, bionikami a uhlíkovými udírny, které můžete postavit, nebo při tom zemřete!" +"msg_theme_load_error","Nepodařilo se načíst téma %s." diff --git a/text/cs/release_manager.csv b/text/cs/release_manager.csv index dc1a773e..166e6e85 100644 --- a/text/cs/release_manager.csv +++ b/text/cs/release_manager.csv @@ -7,3 +7,5 @@ "msg_fetching_releases_dda","Získávám vydání pro DDA Experimental..." "msg_fetching_releases_bn","Získávám vydání pro BN Experimental..." "msg_invalid_fetch_func_param","ReleaseManager.fetch() dostal %s" +"msg_fetching_releases_eod","Získávám vydání pro EOD Experimental..." +"msg_fetching_releases_tish","Získávám vydání pro TISH Experimental..." diff --git a/text/cs/settings_tab.csv b/text/cs/settings_tab.csv index 1ca0d653..2ab971d7 100644 --- a/text/cs/settings_tab.csv +++ b/text/cs/settings_tab.csv @@ -27,3 +27,20 @@ "tooltip_num_releases_to_request","Kolik posledních vydání bude vyžadováno\nz GitHubu po spuštění Catapultu,\nvybráním hry a nebo kliknutím na Obnovit." "tooltip_num_prs_to_request","Kolik nedávných pull requestů (přídavků kódu)\nbude vyžadováno z GitHubu na vytvoření seznamu změn.\nVysoká čísla můžou vést k pomalým odpovědím a selháním." "tooltip_ui_scale_override","Použijte tohle pokud automaticky získaná škála UI je příliš velká too large\nnebo příliš malá na vašem systému. (Automatické škálování se spoléhá na\nDPI displeje hlášené systémem, což nemusí fungovat na všech systémech,\nnebo poskytuje neadekvátní výsledky pokud je rozlišení příliš malé.)" +"cbtn_enable_proxy","Zapnout " +"cbtn_ignore_cache","Ignorovat cache stahování" +"cbtn_keep_cache","Ponechat cache stahování" +"lbl_launcher_theme","Téma spouštěče" +"lbl_licenses","[color=#3b93f7][url]Zobrazit open source licence[/url][/color]" +"lbl_proxy_settings","Proxy server:" +"obtn_proxy_option_download","Pouze pro stahování" +"obtn_proxy_option_off","Vypnuto" +"obtn_proxy_option_on","Zapnuto" +"tooltip_ignore_cache","Vždy stahovat obsah z webu, +i když je již v cache složce." +"tooltip_keep_cache","Ponechat stažený obsah (herní vydání, modpacky, soundpacky) v cache složce +při dokončení instalace, místo jeho smazání." +"tooltip_proxy_options","Vypnuto - Nepoužívat proxy +Zapnuto - Použít proxy při všech příležitostech (např. žádání vydání) +Pouze pro stahování - Použít proxy pouze při stahování" +"tooltip_proxy_settings","Nastavit proxy server pro stahování." diff --git a/text/cs/userdata_deletion_dialog.csv b/text/cs/userdata_deletion_dialog.csv new file mode 100644 index 00000000..5f41086f --- /dev/null +++ b/text/cs/userdata_deletion_dialog.csv @@ -0,0 +1,6 @@ +"keys","cs" +, +"dlg_userdata_deletion_title","Potvrďte smazání uživatelských dat" +"dlg_userdata_deletion_text_pt1","Stůj! V adresáři hry byla zjištěna nesprávně umístěná uživatelská data. K tomu mohlo dojít, pokud jste hru spustili přímo ze spustitelného souboru místo použití Catapultu. Toto není podporováno a pokud budete pokračovat, budou všechna tato data nenávratně smazána.[br][br] Uživatelská data byla nalezena v následujících složkách:[br]" +"dlg_userdata_deletion_text_pt2","Zkontrolujte tyto složky a před potvrzením zálohujte vše důležité." +"dlg_userdata_deletion_safety_hint","Napište sem 'delete' pro potvrzení" diff --git a/text/cs/userdata_deletion_dialog.csv.import b/text/cs/userdata_deletion_dialog.csv.import new file mode 100644 index 00000000..b8157fe2 --- /dev/null +++ b/text/cs/userdata_deletion_dialog.csv.import @@ -0,0 +1,17 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://bjlhp2l4vml22" + +[deps] + +files=["res://text/cs/userdata_deletion_dialog.cs.translation"] + +source_file="res://text/cs/userdata_deletion_dialog.csv" +dest_files=["res://text/cs/userdata_deletion_dialog.cs.translation"] + +[params] + +compress=true +delimiter=0 diff --git a/text/en/userdata_deletion_dialog.csv b/text/en/userdata_deletion_dialog.csv index e1370bbc..72cfe498 100644 --- a/text/en/userdata_deletion_dialog.csv +++ b/text/en/userdata_deletion_dialog.csv @@ -3,4 +3,4 @@ "dlg_userdata_deletion_title","Confirm user data deletion" "dlg_userdata_deletion_text_pt1","Stop! Misplaced user data was detected in the game directory. This could happen if you ran the game directly from its executable instead of using Catapult. This is not supported, and if you proceed, all that data will be deleted irrecoverably.[br][br] User data was found in the following folders:[br]" "dlg_userdata_deletion_text_pt2","Review these folders and back up anything important before confirming." -"dlg_userdata_deletion_safety_hint","Type \"delete\" here to confirm" +"dlg_userdata_deletion_safety_hint","Type 'delete' here to confirm" diff --git a/text/es/dialog_buttons.csv b/text/es/dialog_buttons.csv index b9455837..986ba1ad 100644 --- a/text/es/dialog_buttons.csv +++ b/text/es/dialog_buttons.csv @@ -7,3 +7,4 @@ "btn_no","No" "btn_reinstall","Reinstalar" "btn_skip","Saltear" +"btn_confirm","Confirmar" diff --git a/text/es/download_manager.csv b/text/es/download_manager.csv index 84bee07a..276b331c 100644 --- a/text/es/download_manager.csv +++ b/text/es/download_manager.csv @@ -11,3 +11,4 @@ "msg_download_finished","La descarga de %s se ha completado." "msg_download_failed","La descarga ha fallado %s." "msg_http_request_info","[b]Info HTTPRequest:[/b]\n[u]Resultado:[/u] %s\n[u]Código de respuesta:[/u] %s\n[u]Cabeceras:[/u] %s" +"msg_using_proxy","Usando proxy: %s:%s" diff --git a/text/es/filesystem_helper.csv b/text/es/filesystem_helper.csv index 7160483d..400fcab2 100644 --- a/text/es/filesystem_helper.csv +++ b/text/es/filesystem_helper.csv @@ -16,3 +16,5 @@ "msg_extract_error","Comando de extracción de archivo salio de forma errónea (Código de salida: %s)." "msg_extract_failed_cmd","Comando erróneo: %s." "msg_extract_fail_output","Salida: %s." +"msg_zipping_file","Comprimiendo %s..." +"msg_zip_error","El comando de compresión del archivo finalizó con un error (código de salida: %s)" diff --git a/text/es/general.csv b/text/es/general.csv index 86d064a2..d31ccd7e 100644 --- a/text/es/general.csv +++ b/text/es/general.csv @@ -24,3 +24,4 @@ "tab_fonts","Fuentes" "tab_backups","Backups" "tab_settings","Opciones" +"desc_tlg","[b]Cataclysm: The Last Generation[/b]. La humanidad no sobrevivirá a esto, pero no recibiste el memo, [i]todavía[/i]. Este fork de DDA, guiado por WormGirl, presenta un reequilibrio significativo en todo el juego, con énfasis en la supervivencia y la simulación de vida. La supervivencia es intencional y todas tus elecciones importan. Explora este mundo casi plausible del futuro cercano con todas las armas, biónica y ahumadores de carbón que puedas construir, o muere en el intento!" diff --git a/text/es/release_manager.csv b/text/es/release_manager.csv index 0e5e8304..313a84e5 100644 --- a/text/es/release_manager.csv +++ b/text/es/release_manager.csv @@ -7,3 +7,5 @@ "msg_fetching_releases_dda","Buscando lanzamientos para DDA Experimental..." "msg_fetching_releases_bn","Buscando lanzamientos para BN Experimental..." "msg_invalid_fetch_func_param","ReleaseManager.fetch() pasó %s" +"msg_fetching_releases_eod","Obteniendo lanzamientos para EOD Experimental..." +"msg_fetching_releases_tish","Obteniendo lanzamientos para TISH Experimental..." diff --git a/text/es/settings_tab.csv b/text/es/settings_tab.csv index 84f95e2d..015f4dfb 100644 --- a/text/es/settings_tab.csv +++ b/text/es/settings_tab.csv @@ -28,3 +28,19 @@ "tooltip_num_releases_to_request","Cuantos de los últimos lanzamientos serán solicitados\ndesde GitHub luego de iniciar el launcher,\nal elegir el juego o hacer clic en Refrescar." "tooltip_num_prs_to_request","Cuantas pull requests (código añadido)\nserán solicitados desde GitHub para armar la lista de cambios.\nUn numero alto puede resultar en respuestas lentas o fallos." "tooltip_ui_scale_override","Usa esto si la escala de interfaz automáticamente se ve demasiado grande\no muy pequeña en tu sistema. (La escala automática depende los DPI \nreportados por el sistema, que puede no funcionar en todos los sistemas, \no dar resultados inadecuados cuando la resolución es demasiado baja)." +"cbtn_enable_proxy","Habilitar " +"cbtn_ignore_cache","Ignorar caché de descarga" +"cbtn_keep_cache","Mantener caché de descarga" +"lbl_licenses","[color=#3b93f7][url]Ver licencias de código abierto[/url][/color]" +"lbl_proxy_settings","Servidor proxy:" +"obtn_proxy_option_download","Solo para descargar" +"obtn_proxy_option_off","Deshabilitado" +"obtn_proxy_option_on","Habilitado" +"tooltip_ignore_cache","Siempre descargar contenido de la web, +incluso si ya está en la carpeta de caché." +"tooltip_keep_cache","Mantener el contenido descargado (lanzamientos del juego, modpacks, soundpacks) en la carpeta de caché +cuando se complete la instalación, en lugar de eliminarlo." +"tooltip_proxy_options","Deshabilitado - No usar proxy +Habilitado - Usar proxy en todas las ocasiones (p. ej., solicitar lanzamientos) +Solo para descargar - Usar proxy solo al descargar" +"tooltip_proxy_settings","Configurar un servidor proxy para descargar." diff --git a/text/es/userdata_deletion_dialog.csv b/text/es/userdata_deletion_dialog.csv new file mode 100644 index 00000000..e072a7e6 --- /dev/null +++ b/text/es/userdata_deletion_dialog.csv @@ -0,0 +1,6 @@ +"keys","es" +, +"dlg_userdata_deletion_title","Confirmar eliminación de datos de usuario" +"dlg_userdata_deletion_text_pt1","¡Alto! Se detectaron datos de usuario mal ubicados en el directorio del juego. Esto puede suceder si ejecutaste el juego directamente desde su ejecutable en lugar de usar Catapult. Esto no está soportado, y si continúas, todos esos datos se eliminarán de forma irrecuperable.[br][br] Se encontraron datos de usuario en las siguientes carpetas:[br]" +"dlg_userdata_deletion_text_pt2","Revisa estas carpetas y haz una copia de seguridad de cualquier cosa importante antes de confirmar." +"dlg_userdata_deletion_safety_hint","Escribe 'delete' aquí para confirmar" diff --git a/text/es/userdata_deletion_dialog.csv.import b/text/es/userdata_deletion_dialog.csv.import new file mode 100644 index 00000000..a788e351 --- /dev/null +++ b/text/es/userdata_deletion_dialog.csv.import @@ -0,0 +1,17 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://bjb7ai1sk60yn" + +[deps] + +files=["res://text/es/userdata_deletion_dialog.es.translation"] + +source_file="res://text/es/userdata_deletion_dialog.csv" +dest_files=["res://text/es/userdata_deletion_dialog.es.translation"] + +[params] + +compress=true +delimiter=0 diff --git a/text/fr/dialog_buttons.csv b/text/fr/dialog_buttons.csv index 72273235..82093771 100644 --- a/text/fr/dialog_buttons.csv +++ b/text/fr/dialog_buttons.csv @@ -7,3 +7,4 @@ "btn_no","Non" "btn_reinstall","Réinstaller" "btn_skip","Passer" +"btn_confirm","Confirmer" diff --git a/text/fr/download_manager.csv b/text/fr/download_manager.csv index 1c915294..f5510496 100644 --- a/text/fr/download_manager.csv +++ b/text/fr/download_manager.csv @@ -11,3 +11,4 @@ "msg_download_finished","Téléchargement terminé: %s" "msg_download_failed","Échec de téléchargement: %s" "msg_http_request_info","[b]Info Requête HTTP:[/b]\n[u]Résultat:[/u] %s\n[u]Réponse[/u] %s\n[u]En-tête[/u] %s" +"msg_using_proxy","Utilisation du proxy: %s:%s" diff --git a/text/fr/filesystem_helper.csv b/text/fr/filesystem_helper.csv index 79948d7d..d2e8da10 100644 --- a/text/fr/filesystem_helper.csv +++ b/text/fr/filesystem_helper.csv @@ -16,3 +16,5 @@ "msg_extract_error","Commande d’extraction d’archive terminée avec une erreur (code de sortie %s)." "msg_extract_failed_cmd","Commande échouée: %s" "msg_extract_fail_output","Sortie: %s" +"msg_zipping_file","Compression de %s..." +"msg_zip_error","La commande de compression d'archive s'est terminée avec une erreur (code de sortie: %s)" diff --git a/text/fr/general.csv b/text/fr/general.csv index fb272bdb..e750831c 100644 --- a/text/fr/general.csv +++ b/text/fr/general.csv @@ -24,3 +24,4 @@ "tab_fonts","Polices" "tab_backups","Sauvegardes" "tab_settings","Paramètres" +"desc_tlg","[b]Cataclysm: The Last Generation[/b]. L'humanité ne survivra pas à cela, mais vous n'avez pas reçu le mémo, [i]encore[/i]. Ce fork de DDA, guidé par WormGirl, présente un rééquilibrage significatif de tout le jeu, avec un accent sur la survie et la simulation de vie. La survie est intentionnelle et tous vos choix comptent. Explorez ce monde presque plausible du futur proche avec toutes les armes, bioniques et fumoirs à charbon que vous pouvez construire, ou mourez en essayant!" diff --git a/text/fr/release_manager.csv b/text/fr/release_manager.csv index 0afa3f61..0bf4c69f 100644 --- a/text/fr/release_manager.csv +++ b/text/fr/release_manager.csv @@ -7,3 +7,5 @@ "msg_fetching_releases_dda","Cherche les dernières versions de DDA Expérimental..." "msg_fetching_releases_bn","Cherche les dernières versions de BN Expérimental..." "msg_invalid_fetch_func_param","ReleaseManager.fetch() a passé %s" +"msg_fetching_releases_eod","Récupération des versions pour EOD Experimental..." +"msg_fetching_releases_tish","Récupération des versions pour TISH Experimental..." diff --git a/text/fr/settings_tab.csv b/text/fr/settings_tab.csv index 0c64b36a..44bfe354 100644 --- a/text/fr/settings_tab.csv +++ b/text/fr/settings_tab.csv @@ -28,3 +28,19 @@ "tooltip_num_releases_to_request","Combien de dernières versions vont être demandées depuis GitHub\naprès le démarrage du lanceur, en choisissant un jeu ou en appuyant\nsur le bouton Actualiser." "tooltip_num_prs_to_request","Combien de récents ajouts de code (Pull Requests) vont être demandées\ndepuis GitHub pour créer la liste des modifications. Les nombres\nélevés peuvent provoquer des ralentissements ou des échecs." "tooltip_ui_scale_override","Utilisez ceci si l’échelle de l’interface graphique est trop grande\nou trop petite sur votre système. (L’échelle automatique dépend\ndes DPI d’affichage, ce qui ne marche pas sur tous les systèmes,\nou peut provoquer des résultats inattendus si la résolution est\ntrop basse)." +"cbtn_enable_proxy","Activer " +"cbtn_ignore_cache","Ignorer le cache de téléchargement" +"cbtn_keep_cache","Conserver le cache de téléchargement" +"lbl_licenses","[color=#3b93f7][url]Voir les licences open source[/url][/color]" +"lbl_proxy_settings","Serveur proxy:" +"obtn_proxy_option_download","Pour téléchargement uniquement" +"obtn_proxy_option_off","Désactivé" +"obtn_proxy_option_on","Activé" +"tooltip_ignore_cache","Toujours télécharger le contenu du web, +même s'il est déjà dans le dossier de cache." +"tooltip_keep_cache","Conserver le contenu téléchargé (versions de jeu, modpacks, soundpacks) dans le dossier de cache +lorsque l'installation est terminée, au lieu de le supprimer." +"tooltip_proxy_options","Désactivé - Ne pas utiliser de proxy +Activé - Utiliser le proxy en toutes occasions (par ex. demander des versions) +Pour téléchargement uniquement - Utiliser le proxy uniquement lors du téléchargement" +"tooltip_proxy_settings","Configurer un serveur proxy pour le téléchargement." diff --git a/text/fr/userdata_deletion_dialog.csv b/text/fr/userdata_deletion_dialog.csv new file mode 100644 index 00000000..3f6e438e --- /dev/null +++ b/text/fr/userdata_deletion_dialog.csv @@ -0,0 +1,6 @@ +"keys","fr" +, +"dlg_userdata_deletion_title","Confirmer la suppression des données utilisateur" +"dlg_userdata_deletion_text_pt1","Stop! Des données utilisateur mal placées ont été détectées dans le répertoire du jeu. Cela peut se produire si vous avez lancé le jeu directement depuis son exécutable au lieu d'utiliser Catapult. Ce n'est pas supporté, et si vous continuez, toutes ces données seront supprimées de manière irréversible.[br][br] Des données utilisateur ont été trouvées dans les dossiers suivants:[br]" +"dlg_userdata_deletion_text_pt2","Vérifiez ces dossiers et sauvegardez tout ce qui est important avant de confirmer." +"dlg_userdata_deletion_safety_hint","Tapez 'delete' ici pour confirmer" diff --git a/text/fr/userdata_deletion_dialog.csv.import b/text/fr/userdata_deletion_dialog.csv.import new file mode 100644 index 00000000..ca2cb2b4 --- /dev/null +++ b/text/fr/userdata_deletion_dialog.csv.import @@ -0,0 +1,17 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://nr0u8r6vt82j" + +[deps] + +files=["res://text/fr/userdata_deletion_dialog.fr.translation"] + +source_file="res://text/fr/userdata_deletion_dialog.csv" +dest_files=["res://text/fr/userdata_deletion_dialog.fr.translation"] + +[params] + +compress=true +delimiter=0 diff --git a/text/ko/dialog_buttons.csv b/text/ko/dialog_buttons.csv index 10e33fb8..a78ae16d 100644 --- a/text/ko/dialog_buttons.csv +++ b/text/ko/dialog_buttons.csv @@ -7,3 +7,4 @@ btn_yes,예 btn_no,아니오 btn_reinstall,재설치 btn_skip,건너뛰기 +btn_confirm,확인 diff --git a/text/ko/download_manager.csv b/text/ko/download_manager.csv index 36a3ed5f..f38c4371 100644 --- a/text/ko/download_manager.csv +++ b/text/ko/download_manager.csv @@ -11,3 +11,4 @@ str_dl_speed_at,속도: msg_download_finished,%s 다운로드가 완료되었습니다. msg_download_failed,%s를 다운로드하지 못했습니다. msg_http_request_info,[b]HTTP요청 정보:[/b]\n[u]결과:[/u] %s\n[u]응답 코드:[/u] %s\n[u]헤더:[/u] %s +"msg_using_proxy","프록시 사용 중: %s:%s" diff --git a/text/ko/filesystem_helper.csv b/text/ko/filesystem_helper.csv index 9086fc47..b6005d82 100644 --- a/text/ko/filesystem_helper.csv +++ b/text/ko/filesystem_helper.csv @@ -16,3 +16,5 @@ msg_extracting_file,%s 압축 해제 중... msg_extract_error,오류로 인해 아카이브 추출 명령이 종료되었습니다(종료 코드: %s). msg_extract_failed_cmd,실패한 명령: %s msg_extract_fail_output,출력: %s +"msg_zipping_file","%s 압축 중..." +"msg_zip_error","아카이브 압축 명령이 오류로 종료되었습니다 (종료 코드: %s)" diff --git a/text/ko/general.csv b/text/ko/general.csv index 14d90b23..bf5bc873 100644 --- a/text/ko/general.csv +++ b/text/ko/general.csv @@ -21,3 +21,7 @@ tab_soundpacks,사운드팩 tab_fonts,글꼴 tab_backups,백업 tab_settings,설정 +"desc_eod","[b]Cataclysm: Era of Decay[/b]는 DDA의 포크로, 주로 가능한 한 많은 플레이어 액세스 구성 가능성을 목표로 하며 원래 게임의 기능이나 콘텐츠를 완전히 제거하지 않고 기본 설정으로 게임을 현실적으로 유지합니다. [color=#ff3300]당신이[/color] 원하는 방식으로 즐기세요." +"desc_tish","[b]Cataclysm: There Is Still Hope[/b]는 무엇보다도 흥미로운 게임에 중점을 둔 DDA의 포크로, ''현실주의 또는 재미'' 및 ''진실성 또는 재미''의 이분법을 거부합니다." +"desc_tlg","[b]Cataclysm: The Last Generation[/b]. 인류는 이것을 살아남지 못할 것입니다. 하지만 당신은 아직 메모를 받지 못했습니다. WormGirl이 이끄는 이 DDA 포크는 생존과 생활 시뮬레이션에 중점을 둔 전체 게임의 상당한 재균형을 특징으로 합니다. 생존은 의도적이며 모든 선택이 중요합니다. 모든 총, 생체공학 및 숯 훈제기를 구축할 수 있는 이 거의 그럴듯한 가까운 미래 세계를 탐험하거나 시도하다 죽으십시오!" +"msg_unpacking_zip","zip.exe 압축 풀기 중..." diff --git a/text/ko/release_manager.csv b/text/ko/release_manager.csv index 5f235773..218eac53 100644 --- a/text/ko/release_manager.csv +++ b/text/ko/release_manager.csv @@ -7,3 +7,5 @@ msg_got_n_releases,%s개의 릴리스를 받았습니다. msg_fetching_releases_dda,DDA 실험용 릴리스를 가져오는 중... msg_fetching_releases_bn,BN 실험용 릴리스를 가져오는 중... msg_invalid_fetch_func_param,ReleaseManager.fetch()가 %s에 전달되었습니다. +"msg_fetching_releases_eod","EOD Experimental 릴리스 가져오는 중..." +"msg_fetching_releases_tish","TISH Experimental 릴리스 가져오는 중..." diff --git a/text/ko/settings_tab.csv b/text/ko/settings_tab.csv index 6211e1fe..bb4831f2 100644 --- a/text/ko/settings_tab.csv +++ b/text/ko/settings_tab.csv @@ -28,3 +28,19 @@ tooltip_show_game_desc,게임 목록에서 선택한 게임에 대한 설명을 tooltip_show_obsolete_mods,"게임과 함께 제공되지만 ""구식""으로 표시된 모드를 표시합니다.\n일반적으로 이러한 모드는 설치된 것으로 간주되지 않습니다." tooltip_ui_scale_override,"자동으로 추론된 UI 크기가 시스템에서 너무 크거나 너무 작아 보이는 경우\n이 방법을 사용하세요. (자동 크기 조정은 시스템 보고 디스플레이 DPI에 의존하는데,\n이는 모든 시스템에서 작동하지 않을 수도 있고 해상도가 너무 낮은 경우\n부적절한 결과를 제공할 수도 있습니다.)" tooltip_updating_to_same_build,선택한 릴리스가 현재 설치된 것과 동일한 경우에도\n업데이트 절차 시작을 허용합니다. +"cbtn_enable_proxy","활성화 " +"cbtn_ignore_cache","다운로드 캐시 무시" +"cbtn_keep_cache","다운로드 캐시 유지" +"lbl_licenses","[color=#3b93f7][url]오픈소스 라이센스 보기[/url][/color]" +"lbl_proxy_settings","프록시 서버:" +"obtn_proxy_option_download","다운로드 전용" +"obtn_proxy_option_off","비활성화" +"obtn_proxy_option_on","활성화" +"tooltip_ignore_cache","캐시 폴더에 이미 있더라도 +항상 웹에서 콘텐츠를 다운로드합니다." +"tooltip_keep_cache","설치가 완료되면 삭제하는 대신 +다운로드한 콘텐츠(게임 릴리스, 모드팩, 사운드팩)를 캐시 폴더에 보관합니다." +"tooltip_proxy_options","비활성화 - 프록시를 사용하지 않음 +활성화 - 모든 경우에 프록시 사용(예: 릴리스 요청) +다운로드 전용 - 다운로드할 때만 프록시 사용" +"tooltip_proxy_settings","다운로드용 프록시 서버를 구성합니다." diff --git a/text/ko/userdata_deletion_dialog.csv b/text/ko/userdata_deletion_dialog.csv new file mode 100644 index 00000000..8014dd9c --- /dev/null +++ b/text/ko/userdata_deletion_dialog.csv @@ -0,0 +1,6 @@ +keys,ko +, +dlg_userdata_deletion_title,사용자 데이터 삭제 확인 +dlg_userdata_deletion_text_pt1,중지! 게임 디렉토리에서 잘못 배치된 사용자 데이터가 감지되었습니다. 이는 Catapult를 사용하지 않고 실행 파일에서 직접 게임을 실행한 경우 발생할 수 있습니다. 이는 지원되지 않으며 계속하면 모든 데이터가 복구 불가능하게 삭제됩니다.[br][br] 다음 폴더에서 사용자 데이터가 발견되었습니다:[br] +dlg_userdata_deletion_text_pt2,확인하기 전에 이러한 폴더를 검토하고 중요한 것은 백업하십시오. +dlg_userdata_deletion_safety_hint,확인하려면 여기에 'delete'를 입력하세요 diff --git a/text/ko/userdata_deletion_dialog.csv.import b/text/ko/userdata_deletion_dialog.csv.import new file mode 100644 index 00000000..d609a4e2 --- /dev/null +++ b/text/ko/userdata_deletion_dialog.csv.import @@ -0,0 +1,17 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://o2fuutr1q3i2" + +[deps] + +files=["res://text/ko/userdata_deletion_dialog.ko.translation"] + +source_file="res://text/ko/userdata_deletion_dialog.csv" +dest_files=["res://text/ko/userdata_deletion_dialog.ko.translation"] + +[params] + +compress=true +delimiter=0 diff --git a/text/pl/dialog_buttons.csv b/text/pl/dialog_buttons.csv index 23e937c4..fa538239 100644 --- a/text/pl/dialog_buttons.csv +++ b/text/pl/dialog_buttons.csv @@ -7,3 +7,4 @@ "btn_no","Nie" "btn_reinstall","Reinstalacja" "btn_skip","Pomiń" +"btn_confirm","Potwierdź" diff --git a/text/pl/download_manager.csv b/text/pl/download_manager.csv index 9a65973c..d6376555 100644 --- a/text/pl/download_manager.csv +++ b/text/pl/download_manager.csv @@ -1,13 +1,14 @@ -"keys","pl" -, -"unit_kb","KB" -"unit_mb","MB" -"unit_kbps","KB/s" -"unit_mbps","MB/s" -, -"msg_downloading_file","Pobieranie %s..." -"msg_download_progress","Pobieranie:" -"str_dl_speed_at","z prędkością" -"msg_download_finished","Ukończono pobieranie %s." -"msg_download_failed","Nie udało się pobrać %s." -"msg_http_request_info","[b]HTTPRequest info:[/b]\n[u]Rezultat:[/u] %s\n[u]Kod odpowiedzi:[/u] %s\n[u]Nagłówki:[/u] %s" +"keys","pl" +, +"unit_kb","KB" +"unit_mb","MB" +"unit_kbps","KB/s" +"unit_mbps","MB/s" +, +"msg_downloading_file","Pobieranie %s..." +"msg_download_progress","Pobieranie:" +"str_dl_speed_at","z prędkością" +"msg_download_finished","Ukończono pobieranie %s." +"msg_download_failed","Nie udało się pobrać %s." +"msg_http_request_info","[b]HTTPRequest info:[/b]\n[u]Rezultat:[/u] %s\n[u]Kod odpowiedzi:[/u] %s\n[u]Nagłówki:[/u] %s" +"msg_using_proxy","Używanie proxy: %s:%s" diff --git a/text/pl/filesystem_helper.csv b/text/pl/filesystem_helper.csv index 1efb38d5..bd349f65 100644 --- a/text/pl/filesystem_helper.csv +++ b/text/pl/filesystem_helper.csv @@ -1,18 +1,20 @@ -"keys","pl" -, -"msg_list_dir_failed","Nie udało się wypisać folderu %s. Kod błędu: %s." -"msg_cannot_create_target_dir","Nie udało się stworzyć folderu docelowego %s. Kod błędu: %s." -"msg_copy_file_failed","Nie udało się skopiować pliku \""%s\"". Kod błędu: %s." -"msg_copy_file_failed_details","[u]Ścieżka źródłowa:[/u] %s, [u]ścieżka docelowa:[/u] %s." -"msg_remove_file_failed","Nie udało się usunąć pliku \""%s\"". Kod błędu: %s." -"msg_remove_file_failed_details","[u]Pełna ścieżka:[/u] %s." -"msg_rm_dir_failed","Nie udało się usunąć folderu %s. Kod błędu: %s." -"msg_create_dir_failed","Nie udało się stworzyć folderu docelowego %s. Kod błędu: %s." -"msg_move_file_failed","Nie udało się przenieść pliku \""%s\"". Kod błędu: %s." -"msg_move_file_failed_details","[u]Ścieżka źródłowa:[/u] %s, [u]ścieżka docelowa:[/u] %s." -"msg_move_rmdir_failed","Nie udało się usunąć folderu źródłowego %s. Kod błędu: %s." -"msg_extract_unsupported","Nieobsługiwana platforma lub format archiwa (plik: %s)" -"msg_extracting_file","Rozpakowywanie %s..." -"msg_extract_error","Komenda rozpakowywania archiwum zakończyła się błędem (kod wyjścia: %s)" -"msg_extract_failed_cmd","Nieudana komenda: %s" -"msg_extract_fail_output","Wyjście: %s" +"keys","pl" +, +"msg_list_dir_failed","Nie udało się wypisać folderu %s. Kod błędu: %s." +"msg_cannot_create_target_dir","Nie udało się stworzyć folderu docelowego %s. Kod błędu: %s." +"msg_copy_file_failed","Nie udało się skopiować pliku \""%s\"". Kod błędu: %s." +"msg_copy_file_failed_details","[u]Ścieżka źródłowa:[/u] %s, [u]ścieżka docelowa:[/u] %s." +"msg_remove_file_failed","Nie udało się usunąć pliku \""%s\"". Kod błędu: %s." +"msg_remove_file_failed_details","[u]Pełna ścieżka:[/u] %s." +"msg_rm_dir_failed","Nie udało się usunąć folderu %s. Kod błędu: %s." +"msg_create_dir_failed","Nie udało się stworzyć folderu docelowego %s. Kod błędu: %s." +"msg_move_file_failed","Nie udało się przenieść pliku \""%s\"". Kod błędu: %s." +"msg_move_file_failed_details","[u]Ścieżka źródłowa:[/u] %s, [u]ścieżka docelowa:[/u] %s." +"msg_move_rmdir_failed","Nie udało się usunąć folderu źródłowego %s. Kod błędu: %s." +"msg_extract_unsupported","Nieobsługiwana platforma lub format archiwa (plik: %s)" +"msg_extracting_file","Rozpakowywanie %s..." +"msg_extract_error","Komenda rozpakowywania archiwum zakończyła się błędem (kod wyjścia: %s)" +"msg_extract_failed_cmd","Nieudana komenda: %s" +"msg_extract_fail_output","Wyjście: %s" +"msg_zipping_file","Kompresowanie %s..." +"msg_zip_error","Polecenie kompresji archiwum zakończyło się błędem (kod wyjścia: %s)" diff --git a/text/pl/general.csv b/text/pl/general.csv index ffceb1d1..072eaeff 100644 --- a/text/pl/general.csv +++ b/text/pl/general.csv @@ -1,27 +1,29 @@ -"keys","pl" -, -"window_title","Catapult — program uruchamiający dla Cataclysm: DDA oraz BN" -"str_welcome","Witaj w Catapult!" -"str_tip_of_the_day","\n\n[u]Wskazówka dnia:[/u]\n" -"msg_unpacking_unzip","Rozpakowywanie unzip.exe..." -"msg_unpacking_zip","Rozpakowywanie zip.exe..." -"msg_theme_load_error","Nie udało się wczytać motywu %s." -"debug_test","To jest tekst debugowania, sprawdzający odnalezienie translacji." -, -"tag_warning","ostrzeżenie" -"tag_error","błąd" -"tag_debug","debug" -, -"lbl_game","Gra:" -"desc_dda","[b]Cataclysm: Dark Days Ahead[/b] to turowa gra typu survival, osadzona w postapokaliptycznym świecie. Poszukuj, zwiedzaj, wytwarzaj, buduj, uprawiaj, naprawiaj oraz modyfikuj pojazdy, instaluj bioniczne modyfikacje, dokonuj mutacji, broń się przed [color=#009900]zombie[/color] oraz niezliczoną grupą innych monstrum - wszystko to w nieograniczonym, proceduralnie generowanym świecie!" -"desc_bn","[b]Cataclysm: Bright Nights[/b]. Odrzuć pedanterię, przyjmij [color=#ff3300]!!zabawę!![/color]. Ten fork przenosi grę wstecz, do czasów jej korzeni roguelike sci-fi, oraz odwraca wiele kontrowersyjnych zmian dokonanych przez zespół DDA (kieszenie, biegłości, zamarzanie i [color=#3b93f7][url=https://docs.cataclysmbn.org/game/changelog/]inne[/url][/color]). Specjalna uwaga jest udzielona walce, balansowi gry, oraz jej tempu." -"desc_eod","[b]Cataclysm: Era of Decay[/b] jest rozwidleniem DDA, mającym na celu przede wszystkim jak największą konfigurowalność dostępną dla graczy, bez całkowitego usuwania jakichkolwiek funkcji lub zawartości oryginalnej gry i pozostawiania gry realistycznej z ustawieniami domyślnymi. Baw się tak, jak chcesz [color=#ff3300]ty[/color]. -"desc_tish","[b]Cataclysm: There Is Still Hope[/b] jest rozwidleniem DDA z naciskiem na to, że gra jest interesująca przede wszystkim, odrzucając dychotomię ''realizmu lub zabawy'' i ''prawdziwości lub zabawy''." -, -"tab_game","Gra" -"tab_mods","Mody" -"tab_soundpacks","Paczki dźwiękowe" -"tab_fonts","Czcionki" -"tab_backups","Kopie zapasowe" -"tab_settings","Ustawienia" +"keys","pl" +, +"window_title","Catapult — program uruchamiający dla Cataclysm: DDA oraz BN" +"str_welcome","Witaj w Catapult!" +"str_tip_of_the_day","\n\n[u]Wskazówka dnia:[/u]\n" +"msg_unpacking_unzip","Rozpakowywanie unzip.exe..." +"msg_unpacking_zip","Rozpakowywanie zip.exe..." +"msg_theme_load_error","Nie udało się wczytać motywu %s." +"debug_test","To jest tekst debugowania, sprawdzający odnalezienie translacji." +, +"tag_warning","ostrzeżenie" +"tag_error","błąd" +"tag_debug","debug" +, +"lbl_game","Gra:" +"desc_dda","[b]Cataclysm: Dark Days Ahead[/b] to turowa gra typu survival, osadzona w postapokaliptycznym świecie. Poszukuj, zwiedzaj, wytwarzaj, buduj, uprawiaj, naprawiaj oraz modyfikuj pojazdy, instaluj bioniczne modyfikacje, dokonuj mutacji, broń się przed [color=#009900]zombie[/color] oraz niezliczoną grupą innych monstrum - wszystko to w nieograniczonym, proceduralnie generowanym świecie!" +"desc_bn","[b]Cataclysm: Bright Nights[/b]. Odrzuć pedanterię, przyjmij [color=#ff3300]!!zabawę!![/color]. Ten fork przenosi grę wstecz, do czasów jej korzeni roguelike sci-fi, oraz odwraca wiele kontrowersyjnych zmian dokonanych przez zespół DDA (kieszenie, biegłości, zamarzanie i [color=#3b93f7][url=https://docs.cataclysmbn.org/game/changelog/]inne[/url][/color]). Specjalna uwaga jest udzielona walce, balansowi gry, oraz jej tempu." +"desc_eod","[b]Cataclysm: Era of Decay[/b] jest rozwidleniem DDA, mającym na celu przede wszystkim jak największą konfigurowalność dostępną dla graczy, bez całkowitego usuwania jakichkolwiek funkcji lub zawartości oryginalnej gry i pozostawiania gry realistycznej z ustawieniami domyślnymi. Baw się tak, jak chcesz [color=#ff3300]ty[/color]. +"desc_tish","[b]Cataclysm: There Is Still Hope[/b] jest rozwidleniem DDA z naciskiem na to, że gra jest interesująca przede wszystkim, odrzucając dychotomię ''realizmu lub zabawy'' i ''prawdziwości lub zabawy''." +, +"tab_game","Gra" +"tab_mods","Mody" +"tab_soundpacks","Paczki dźwiękowe" +"tab_fonts","Czcionki" +"tab_backups","Kopie zapasowe" +"tab_settings","Ustawienia" " +"desc_tish","[b]Cataclysm: There Is Still Hope[/b] to fork DDA z naciskiem na to, aby gra była przede wszystkim interesująca, odrzucając dychotomie ''realizmu lub zabawy'' i ''wiarygodności lub zabawy''." +"desc_tlg","[b]Cataclysm: The Last Generation[/b]. Ludzkość tego nie przetrwa, ale nie dostałeś jeszcze notatki. Ten fork DDA, prowadzony przez WormGirl, zawiera znaczące przeważenie całej gry, z naciskiem na przetrwanie i symulację życia. Przetrwanie jest zamierzone i wszystkie twoje wybory mają znaczenie. Odkryj ten prawie prawdopodobny bliski przyszłości świat ze wszystkimi bronią, bionikami i węglowymi wędzarniami, które możesz zbudować, lub zgiń w próbie!" diff --git a/text/pl/release_manager.csv b/text/pl/release_manager.csv index 2b38dee0..dfb8f119 100644 --- a/text/pl/release_manager.csv +++ b/text/pl/release_manager.csv @@ -1,9 +1,11 @@ -"keys","pl" -, -"msg_unsupported_platform","Nieobsługiwana platforma: \""%s\""" -"msg_releases_request_failed","Żądanie nie powiodło się. Czy posiadasz połączenie z internetem?" -"msg_releases_api_failure","Nie udało się odebrać listy kompilacji. GitHub odpowiada: %s" -"msg_got_n_releases","Odebrano %s kompilacji." -"msg_fetching_releases_dda","Sprowadzanie kompilacji dla for DDA Experimental..." -"msg_fetching_releases_bn","Sprowadzanie kompilacji dla BN Experimental..." -"msg_invalid_fetch_func_param","ReleaseManager.fetch() przeszło %s" +"keys","pl" +, +"msg_unsupported_platform","Nieobsługiwana platforma: \""%s\""" +"msg_releases_request_failed","Żądanie nie powiodło się. Czy posiadasz połączenie z internetem?" +"msg_releases_api_failure","Nie udało się odebrać listy kompilacji. GitHub odpowiada: %s" +"msg_got_n_releases","Odebrano %s kompilacji." +"msg_fetching_releases_dda","Sprowadzanie kompilacji dla for DDA Experimental..." +"msg_fetching_releases_bn","Sprowadzanie kompilacji dla BN Experimental..." +"msg_invalid_fetch_func_param","ReleaseManager.fetch() przeszło %s" +"msg_fetching_releases_eod","Pobieranie wydań dla EOD Experimental..." +"msg_fetching_releases_tish","Pobieranie wydań dla TISH Experimental..." diff --git a/text/pl/settings_tab.csv b/text/pl/settings_tab.csv index 13940bb0..b1599962 100644 --- a/text/pl/settings_tab.csv +++ b/text/pl/settings_tab.csv @@ -1,30 +1,46 @@ -"keys","pl" -, -"cbtn_debug_mode","Tryb debugowania" -"cbtn_enable_scale","Aktywuj " -"cbtn_install_archived_mods","Uwzględnij zarchiwowane mody podczas instalacji Kenan Modpack" -"cbtn_keep_launcher_open","Pozostaw launcher otwarty po starcie gry" -"cbtn_print_tips","Wyświetl wskazówki dnia przy uruchomieniu" -"cbtn_shorten_release_names","Skróć nazwy eksperymentalnych kompilacji" -"cbtn_always_show_installs","Zawsze pokazuj listę instalacji" -"cbtn_show_game_desc","Pokaż opis gry" -"cbtn_show_obsolete_mods","Obejmij przestarzałe mody w liście zainstalowanych" -"cbtn_updating_to_same_build","Zezwól na ""aktualizację"" do tego samego wydania, co zainstalowane" -"keys","pl" -"lbl_launcher_language","Język launchera" -"lbl_launcher_theme","Motyw launchera" -"lbl_num_prs_to_request","Numer wyników do pobrania dla listy zmian:" -"lbl_num_releases_to_request","Numer wydań do zażądania:" -"lbl_ui_scale_override","Niestandardowe skalowanie UI:" -"tooltip_debug_mode","Pokazuje kartę Debug, z niektórymi funkcjami testowymi,\noraz aktywuje wiadomości debugowe w pasku statusu\n(użyteczne do rozwiązywania problemów)." -"tooltip_install_archived_mods","Podczas instalacji Kenan Modpack, uwzględnia również *zarchiwowane* mody.\nMody te nie są już dłużej zarządzane przez Kenana i mogą być nieaktualne." -"tooltip_keep_launcher_open","Kiedy wyłączone, launcher zostanie zamknięty po kliknęciu Uruchom lub Wznów.\nWarto zanotować, iż jeśli nie uda się uruchomić gry z jakiegokolwiek powodu, launcher\nzostanie także zamknięty." -"tooltip_num_prs_to_request","Jak wiele ostatnich pull requestów (dodatków kodu)\nbędzie zażądanych z GitHub do uformowania listy zmian.\nWysokie liczby mogą prowadzić do wolnych odpowiedzi i błędów." -"tooltip_num_releases_to_request","Jak wiele najnowszych wydań zostanie zażądanych\nz GitHub po uruchomieniu launchera, wybraniu gry\nlub kliknięciu Odśwież." -"tooltip_print_tips","Wyświetla losową wskazówkę w pasku statusu, po uruchomieniu launchera." -"tooltip_shorten_release_names","Skróca nazwy wydań do jedynie daty i numeru\n(np. ""2021-09-08-1927"" zamiast \n""Cataclysm-DDA experimental build 2021-09-08-1927"")." -"tooltip_always_show_installs","Pokaż listę instalacji, nawet jeśli jest\nzainstalowana tylko jedna kopia gry lub wcale." -"tooltip_show_game_desc","Pokazuje opis dla wybranej gry pod listą gier." -"tooltip_show_obsolete_mods","Pokazuje mody wbudowane w grę, które zostały oznaczone jako ""przestarzałe"".\nNormalnie, mody jak te, nie są uznawane jako zainstalowane." -"tooltip_ui_scale_override","Użyj tej opcji, jeżeli automatycznie sugerowana skala UI wydaje się\nzbyt wielka\zbyt mała dla twojego systemu.\n(Automatyczna skala opiera się na systemowo ustawionym DPI,\nco może nie działać poprawnie na wszystkich systemach \nlub dawać nieadekwatne rezultaty, kiedy rozdzielczość jest zbyt mała.)" -"tooltip_updating_to_same_build","Pozwól na uruchamianie procedury aktualizacji, nawet jeśli wybrane\nwydanie jest takie same jak obecnie zainstalowane." +"keys","pl" +, +"cbtn_debug_mode","Tryb debugowania" +"cbtn_enable_scale","Aktywuj " +"cbtn_install_archived_mods","Uwzględnij zarchiwowane mody podczas instalacji Kenan Modpack" +"cbtn_keep_launcher_open","Pozostaw launcher otwarty po starcie gry" +"cbtn_print_tips","Wyświetl wskazówki dnia przy uruchomieniu" +"cbtn_shorten_release_names","Skróć nazwy eksperymentalnych kompilacji" +"cbtn_always_show_installs","Zawsze pokazuj listę instalacji" +"cbtn_show_game_desc","Pokaż opis gry" +"cbtn_show_obsolete_mods","Obejmij przestarzałe mody w liście zainstalowanych" +"cbtn_updating_to_same_build","Zezwól na ""aktualizację"" do tego samego wydania, co zainstalowane" +"keys","pl" +"lbl_launcher_language","Język launchera" +"lbl_launcher_theme","Motyw launchera" +"lbl_num_prs_to_request","Numer wyników do pobrania dla listy zmian:" +"lbl_num_releases_to_request","Numer wydań do zażądania:" +"lbl_ui_scale_override","Niestandardowe skalowanie UI:" +"tooltip_debug_mode","Pokazuje kartę Debug, z niektórymi funkcjami testowymi,\noraz aktywuje wiadomości debugowe w pasku statusu\n(użyteczne do rozwiązywania problemów)." +"tooltip_install_archived_mods","Podczas instalacji Kenan Modpack, uwzględnia również *zarchiwowane* mody.\nMody te nie są już dłużej zarządzane przez Kenana i mogą być nieaktualne." +"tooltip_keep_launcher_open","Kiedy wyłączone, launcher zostanie zamknięty po kliknęciu Uruchom lub Wznów.\nWarto zanotować, iż jeśli nie uda się uruchomić gry z jakiegokolwiek powodu, launcher\nzostanie także zamknięty." +"tooltip_num_prs_to_request","Jak wiele ostatnich pull requestów (dodatków kodu)\nbędzie zażądanych z GitHub do uformowania listy zmian.\nWysokie liczby mogą prowadzić do wolnych odpowiedzi i błędów." +"tooltip_num_releases_to_request","Jak wiele najnowszych wydań zostanie zażądanych\nz GitHub po uruchomieniu launchera, wybraniu gry\nlub kliknięciu Odśwież." +"tooltip_print_tips","Wyświetla losową wskazówkę w pasku statusu, po uruchomieniu launchera." +"tooltip_shorten_release_names","Skróca nazwy wydań do jedynie daty i numeru\n(np. ""2021-09-08-1927"" zamiast \n""Cataclysm-DDA experimental build 2021-09-08-1927"")." +"tooltip_always_show_installs","Pokaż listę instalacji, nawet jeśli jest\nzainstalowana tylko jedna kopia gry lub wcale." +"tooltip_show_game_desc","Pokazuje opis dla wybranej gry pod listą gier." +"tooltip_show_obsolete_mods","Pokazuje mody wbudowane w grę, które zostały oznaczone jako ""przestarzałe"".\nNormalnie, mody jak te, nie są uznawane jako zainstalowane." +"tooltip_ui_scale_override","Użyj tej opcji, jeżeli automatycznie sugerowana skala UI wydaje się\nzbyt wielka\zbyt mała dla twojego systemu.\n(Automatyczna skala opiera się na systemowo ustawionym DPI,\nco może nie działać poprawnie na wszystkich systemach \nlub dawać nieadekwatne rezultaty, kiedy rozdzielczość jest zbyt mała.)" +"tooltip_updating_to_same_build","Pozwól na uruchamianie procedury aktualizacji, nawet jeśli wybrane\nwydanie jest takie same jak obecnie zainstalowane." +"cbtn_enable_proxy","Włącz " +"cbtn_ignore_cache","Ignoruj pamięć podręczną pobierania" +"cbtn_keep_cache","Zachowaj pamięć podręczną pobierania" +"lbl_licenses","[color=#3b93f7][url]Zobacz licencje open source[/url][/color]" +"lbl_proxy_settings","Serwer proxy:" +"obtn_proxy_option_download","Tylko do pobierania" +"obtn_proxy_option_off","Wyłączone" +"obtn_proxy_option_on","Włączone" +"tooltip_ignore_cache","Zawsze pobieraj zawartość z sieci, +nawet jeśli jest już w folderze pamięci podręcznej." +"tooltip_keep_cache","Zachowaj pobraną zawartość (wydania gier, modpacki, soundpacki) w folderze pamięci podręcznej +po zakończeniu instalacji, zamiast ją usuwać." +"tooltip_proxy_options","Wyłączone - Nie używaj proxy +Włączone - Używaj proxy przy wszystkich okazjach (np. żądanie wydań) +Tylko do pobierania - Używaj proxy tylko podczas pobierania" +"tooltip_proxy_settings","Skonfiguruj serwer proxy do pobierania." diff --git a/text/pl/userdata_deletion_dialog.csv b/text/pl/userdata_deletion_dialog.csv new file mode 100644 index 00000000..f116b887 --- /dev/null +++ b/text/pl/userdata_deletion_dialog.csv @@ -0,0 +1,6 @@ +"keys","pl" +, +"dlg_userdata_deletion_title","Potwierdź usunięcie danych użytkownika" +"dlg_userdata_deletion_text_pt1","Stop! Wykryto nieprawidłowo umieszczone dane użytkownika w katalogu gry. Może się to zdarzyć, jeśli uruchomiłeś grę bezpośrednio z pliku wykonywalnego zamiast używać Catapult. To nie jest obsługiwane, a jeśli będziesz kontynuować, wszystkie te dane zostaną nieodwracalnie usunięte.[br][br] Dane użytkownika znaleziono w następujących folderach:[br]" +"dlg_userdata_deletion_text_pt2","Sprawdź te foldery i wykonaj kopię zapasową wszystkiego, co ważne, przed potwierdzeniem." +"dlg_userdata_deletion_safety_hint","Wpisz tutaj 'delete', aby potwierdzić" diff --git a/text/pl/userdata_deletion_dialog.csv.import b/text/pl/userdata_deletion_dialog.csv.import new file mode 100644 index 00000000..8507a662 --- /dev/null +++ b/text/pl/userdata_deletion_dialog.csv.import @@ -0,0 +1,17 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://b4jd8qy11uj5e" + +[deps] + +files=["res://text/pl/userdata_deletion_dialog.pl.translation"] + +source_file="res://text/pl/userdata_deletion_dialog.csv" +dest_files=["res://text/pl/userdata_deletion_dialog.pl.translation"] + +[params] + +compress=true +delimiter=0 diff --git a/text/pt/dialog_buttons.csv b/text/pt/dialog_buttons.csv index 8371e0d0..1487ae26 100644 --- a/text/pt/dialog_buttons.csv +++ b/text/pt/dialog_buttons.csv @@ -6,4 +6,5 @@ "btn_yes","Sim" "btn_no","Não" "btn_reinstall","Reinstalar" -"btn_skip","Pular" \ No newline at end of file +"btn_skip","Pular" +"btn_confirm","Confirmar" \ No newline at end of file diff --git a/text/pt/download_manager.csv b/text/pt/download_manager.csv index 9a792c7c..8a39f6b7 100644 --- a/text/pt/download_manager.csv +++ b/text/pt/download_manager.csv @@ -10,4 +10,5 @@ "str_dl_speed_at","a" "msg_download_finished","Terminou de baixar %s." "msg_download_failed","Falhou em baixar %s." -"msg_http_request_info","[b]Info do HTTPRequest:[/b]\n[u]Resultado:[/u] %s\n[u]Código de resposta:[/u] %s\n[u]Cabeçalhos:[/u] %s" \ No newline at end of file +"msg_http_request_info","[b]Info do HTTPRequest:[/b]\n[u]Resultado:[/u] %s\n[u]Código de resposta:[/u] %s\n[u]Cabeçalhos:[/u] %s" +"msg_using_proxy","Usando proxy: %s:%s" diff --git a/text/pt/general.csv b/text/pt/general.csv index 9ecd980e..dcd8fd92 100644 --- a/text/pt/general.csv +++ b/text/pt/general.csv @@ -23,4 +23,5 @@ "tab_soundpacks","Sons" "tab_fonts","Fontes" "tab_backups","Backups" -"tab_settings","Opções" \ No newline at end of file +"tab_settings","Opções" +"desc_tlg","[b]Cataclysm: The Last Generation[/b]. A humanidade não sobreviverá a isso, mas você não recebeu o memorando, [i]ainda[/i]. Este fork do DDA, guiado por WormGirl, apresenta um reequilíbrio significativo em todo o jogo, com ênfase na sobrevivência e simulação de vida. A sobrevivência é intencional e todas as suas escolhas importam. Explore este mundo quase plausível do futuro próximo com todas as armas, biónicas e defumadores de carvão que você pode construir, ou morra tentando!" diff --git a/text/pt/settings_tab.csv b/text/pt/settings_tab.csv index 3f790fd8..7c3f00b2 100644 --- a/text/pt/settings_tab.csv +++ b/text/pt/settings_tab.csv @@ -27,4 +27,16 @@ "tooltip_debug_mode","Mostra a aba Debug com algumas funções de teste \ne ativa mensagens de depuração no painel de status \n(útil para solução de problemas)." "tooltip_num_releases_to_request","Quantas versões mais recentes serão solicitadas \ndo GitHub depois de iniciar o launcher, \nao escolher o jogo ou clicar em Atualizar." "tooltip_num_prs_to_request","Quantas solicitações de PR (adições de código)\nserão feitas ao GitHub para formar a lista de mudanças.\nUm número alto pode levar a respostas lentas e falhas." -"tooltip_ui_scale_override","Use essa opção se a escala da interface do usuário definida automaticamente \nparecer muito grande ou pequena em seu sistema. \n(A escala automática depende do DPI da tela informado pelo sistema, que pode não funcionar \nem todos os dispositivos ou fornecer resultados inadequados quando a resolução é muito baixa.)" \ No newline at end of file +"tooltip_ui_scale_override","Use essa opção se a escala da interface do usuário definida automaticamente \nparecer muito grande ou pequena em seu sistema. \n(A escala automática depende do DPI da tela informado pelo sistema, que pode não funcionar \nem todos os dispositivos ou fornecer resultados inadequados quando a resolução é muito baixa.)" +"cbtn_enable_proxy","Ativar " +"cbtn_ignore_cache","Ignorar cache de download" +"cbtn_keep_cache","Manter cache de download" +"lbl_licenses","[color=#3b93f7][url]Ver licenças de código aberto[/url][/color]" +"lbl_proxy_settings","Servidor proxy:" +"obtn_proxy_option_download","Apenas para download" +"obtn_proxy_option_off","Desativado" +"obtn_proxy_option_on","Ativado" +"tooltip_ignore_cache","Sempre baixar conteúdo da web,\nmesmo se já estiver na pasta de cache." +"tooltip_keep_cache","Manter o conteúdo baixado (lançamentos de jogos, modpacks, soundpacks) na pasta de cache\nquando a instalação for concluída, em vez de excluí-lo." +"tooltip_proxy_options","Desativado - Não usar proxy\nAtivado - Usar proxy em todas as ocasiões (por exemplo, solicitação de lançamentos)\nApenas para download - Usar proxy apenas ao baixar" +"tooltip_proxy_settings","Configurar um servidor proxy para download." diff --git a/text/pt/userdata_deletion_dialog.csv b/text/pt/userdata_deletion_dialog.csv new file mode 100644 index 00000000..fad3854e --- /dev/null +++ b/text/pt/userdata_deletion_dialog.csv @@ -0,0 +1,6 @@ +"keys","pt" +, +"dlg_userdata_deletion_title","Confirmar exclusão de dados do usuário" +"dlg_userdata_deletion_text_pt1","Pare! Dados de usuário mal colocados foram detectados no diretório do jogo. Isso pode acontecer se você executou o jogo diretamente de seu executável em vez de usar o Catapult. Isso não é suportado e, se você prosseguir, todos esses dados serão excluídos de forma irrecuperável.[br][br] Dados de usuário foram encontrados nas seguintes pastas:[br]" +"dlg_userdata_deletion_text_pt2","Revise essas pastas e faça backup de qualquer coisa importante antes de confirmar." +"dlg_userdata_deletion_safety_hint","Digite 'delete' aqui para confirmar" diff --git a/text/pt/userdata_deletion_dialog.csv.import b/text/pt/userdata_deletion_dialog.csv.import new file mode 100644 index 00000000..67f1f41c --- /dev/null +++ b/text/pt/userdata_deletion_dialog.csv.import @@ -0,0 +1,17 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://dvh7igphoulg7" + +[deps] + +files=["res://text/pt/userdata_deletion_dialog.pt.translation"] + +source_file="res://text/pt/userdata_deletion_dialog.csv" +dest_files=["res://text/pt/userdata_deletion_dialog.pt.translation"] + +[params] + +compress=true +delimiter=0 diff --git a/text/ru/dialog_buttons.csv b/text/ru/dialog_buttons.csv index 4cf54acd..9c7b8dde 100644 --- a/text/ru/dialog_buttons.csv +++ b/text/ru/dialog_buttons.csv @@ -7,3 +7,4 @@ "btn_no","Нет" "btn_reinstall","Переустановить" "btn_skip","Пропустить" +"btn_confirm","Подтвердить" diff --git a/text/ru/download_manager.csv b/text/ru/download_manager.csv index 9c851456..5cb6bd50 100644 --- a/text/ru/download_manager.csv +++ b/text/ru/download_manager.csv @@ -11,3 +11,4 @@ "msg_download_finished","Завершена загрузка %s." "msg_download_failed","Не удалось загрузить %s." "msg_http_request_info","[b]Информация от HTTPRequest:[/b]\n[u]Результат:[/u] %s\n[u]Код ответа:[/u] %s\n[u]Заголовки:[/u] %s" +"msg_using_proxy","Использование прокси: %s:%s" diff --git a/text/ru/filesystem_helper.csv b/text/ru/filesystem_helper.csv index 70fb4bb0..379d8c56 100644 --- a/text/ru/filesystem_helper.csv +++ b/text/ru/filesystem_helper.csv @@ -16,3 +16,5 @@ "msg_extract_error","Команда распаковки архива завершилась с ошибкой (код возврата: %s)" "msg_extract_failed_cmd","Неудавшаяся команда: %s" "msg_extract_fail_output","Вывод команды: %s" +"msg_zipping_file","Архивирование %s..." +"msg_zip_error","Команда архивации завершилась с ошибкой (код выхода: %s)" diff --git a/text/ru/general.csv b/text/ru/general.csv index 77cc73a8..50ba1363 100644 --- a/text/ru/general.csv +++ b/text/ru/general.csv @@ -24,3 +24,4 @@ "tab_fonts","Шрифты" "tab_backups","Бэкапы" "tab_settings","Настройки" +"desc_tlg","[b]Cataclysm: The Last Generation[/b]. Человечество не переживёт это, но вы не получили записку, [i]пока[/i]. Этот форк DDA, руководимый WormGirl, отличается значительным перебалансом всей игры с акцентом на выживание и симуляцию жизни. Выживание намеренно, и все ваши выборы имеют значение. Исследуйте этот почти правдоподобный мир ближайшего будущего со всем оружием, бионикой и угольными коптильнями, которые вы можете построить, или умрите, пытаясь!" diff --git a/text/ru/release_installer.csv b/text/ru/release_installer.csv index d16827af..0b247075 100644 --- a/text/ru/release_installer.csv +++ b/text/ru/release_installer.csv @@ -7,3 +7,4 @@ "msg_deleting_game","Удаление %s..." «msg_game_deleted», «Удаление завершено». "msg_delete_not_found", "Была попытка удалить релиз \"%s\", но не удалось найти его на диске." +"msg_game_deleted","Удаление завершено." diff --git a/text/ru/release_manager.csv b/text/ru/release_manager.csv index b6b9f3db..d3b34fee 100644 --- a/text/ru/release_manager.csv +++ b/text/ru/release_manager.csv @@ -7,3 +7,5 @@ "msg_fetching_releases_dda","Получение списка экспериментальных релизов DDA..." "msg_fetching_releases_bn","Получение списка экспериментальных релизов BN..." "msg_invalid_fetch_func_param","В ReleaseManager.fetch() был передан аргумент %s" +"msg_fetching_releases_eod","Получение релизов для EOD Experimental..." +"msg_fetching_releases_tish","Получение релизов для TISH Experimental..." diff --git a/text/ru/settings_tab.csv b/text/ru/settings_tab.csv index 5cc4c271..9543387c 100644 --- a/text/ru/settings_tab.csv +++ b/text/ru/settings_tab.csv @@ -28,3 +28,19 @@ "tooltip_num_releases_to_request","Сколько свежих релизов нужно запрашивать с GitHub\nпосле запуска лончера, выбора игры или нажатия Обновить." "tooltip_num_prs_to_request","Сколько последних пул-реквестов (изменений в коде игры)\nнужно запрашивать с GitHub для формирования списка изменений.\nВысокие значения могут привести к медленным ответам и ошибкам." "tooltip_ui_scale_override","Воспользуйтесь этой настройкой, если автоматически\nопределенный масштаб интерфейса выглядит слишком мелко\nили крупно на вашей системе. (Автоматическое определение\nмасштаба полагается на сообщаемый системой DPI экрана,\nчто может не сработать на некоторых системах, или дать\nнеадекватный результат, когда разрешение слишком низкое)." +"cbtn_enable_proxy","Включить " +"cbtn_ignore_cache","Игнорировать кеш загрузки" +"cbtn_keep_cache","Сохранять кеш загрузки" +"lbl_licenses","[color=#3b93f7][url]Просмотр лицензий open source[/url][/color]" +"lbl_proxy_settings","Прокси-сервер:" +"obtn_proxy_option_download","Только для загрузки" +"obtn_proxy_option_off","Отключено" +"obtn_proxy_option_on","Включено" +"tooltip_ignore_cache","Всегда загружать содержимое из интернета, +даже если оно уже есть в папке кеша." +"tooltip_keep_cache","Сохранять загруженное содержимое (релизы игры, модпаки, саундпаки) в папке кеша +после завершения установки, вместо его удаления." +"tooltip_proxy_options","Отключено - Не использовать прокси +Включено - Использовать прокси во всех случаях (например, запрос релизов) +Только для загрузки - Использовать прокси только при загрузке" +"tooltip_proxy_settings","Настроить прокси-сервер для загрузки." diff --git a/text/ru/userdata_deletion_dialog.csv b/text/ru/userdata_deletion_dialog.csv new file mode 100644 index 00000000..0d6b6b97 --- /dev/null +++ b/text/ru/userdata_deletion_dialog.csv @@ -0,0 +1,6 @@ +"keys","ru" +, +"dlg_userdata_deletion_title","Подтвердите удаление пользовательских данных" +"dlg_userdata_deletion_text_pt1","Стоп! В директории игры обнаружены неправильно размещённые пользовательские данные. Это могло произойти, если вы запустили игру напрямую из исполняемого файла вместо использования Catapult. Это не поддерживается, и если вы продолжите, все эти данные будут безвозвратно удалены.[br][br] Пользовательские данные найдены в следующих папках:[br]" +"dlg_userdata_deletion_text_pt2","Проверьте эти папки и сделайте резервную копию всего важного перед подтверждением." +"dlg_userdata_deletion_safety_hint","Введите здесь 'delete' для подтверждения" diff --git a/text/ru/userdata_deletion_dialog.csv.import b/text/ru/userdata_deletion_dialog.csv.import new file mode 100644 index 00000000..4666a504 --- /dev/null +++ b/text/ru/userdata_deletion_dialog.csv.import @@ -0,0 +1,17 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://bd4fp8qqj323g" + +[deps] + +files=["res://text/ru/userdata_deletion_dialog.ru.translation"] + +source_file="res://text/ru/userdata_deletion_dialog.csv" +dest_files=["res://text/ru/userdata_deletion_dialog.ru.translation"] + +[params] + +compress=true +delimiter=0 diff --git a/text/tr/dialog_buttons.csv b/text/tr/dialog_buttons.csv index 8a6cd043..7f6ce3ee 100644 --- a/text/tr/dialog_buttons.csv +++ b/text/tr/dialog_buttons.csv @@ -7,3 +7,4 @@ "btn_no","Hayır" "btn_reinstall","Y. yükle" "btn_skip","Atla" +"btn_confirm","Onayla" diff --git a/text/tr/download_manager.csv b/text/tr/download_manager.csv index fd7288c5..729afcf0 100644 --- a/text/tr/download_manager.csv +++ b/text/tr/download_manager.csv @@ -12,3 +12,5 @@ "msg_download_failed","%s nın indirilmesi başarısız oldu." "msg_http_request_info","[b]HTTPRequest bilgisi:[/b]\n[u]Sonuç:[/u] %s\n[u]Tepki kodu:[/u] %s\n[u]Başlıklar:[/u] %s" " +"msg_download_finished","%s indirme tamamlandı." +"msg_using_proxy","Proxy kullanılıyor: %s:%s" diff --git a/text/tr/filesystem_helper.csv b/text/tr/filesystem_helper.csv index ab799b7e..d5d21d25 100644 --- a/text/tr/filesystem_helper.csv +++ b/text/tr/filesystem_helper.csv @@ -16,3 +16,5 @@ "msg_extract_error","Arşiv çıkartma komutu hata ile son buldu (hata kodu: %s)" "msg_extract_failed_cmd","%s komudu başarısız oldu." "msg_extract_fail_output","Çıkış: %s" +"msg_zipping_file","%s sıkıştırılıyor..." +"msg_zip_error","Arşiv sıkıştırma komutu hatayla sonuçlandı (çıkış kodu: %s)" diff --git a/text/tr/general.csv b/text/tr/general.csv index e4bd5bd5..edb9763e 100644 --- a/text/tr/general.csv +++ b/text/tr/general.csv @@ -24,3 +24,4 @@ "tab_fonts","Fontlar" "tab_backups","Yedekler" "tab_settings","Ayarlar" +"desc_tlg","[b]Cataclysm: The Last Generation[/b]. İnsanlık bunu atlatamayacak, ama sen notayı almadın, [i]henüz[/i]. WormGirl tarafından yönetilen bu DDA forku, hayatta kalma ve yaşam simülasyonuna vurgu yaparak oyunun tamamında önemli bir dengeleme sunuyor. Hayatta kalmak kasıtlıdır ve tüm seçimleriniz önemlidir. İnşa edebileceğiniz tüm silahlar, biyonikler ve kömürlü tütsü makineleriyle bu neredeyse makul yakın gelecek dünyasını keşfedin veya denerken ölün!" diff --git a/text/tr/release_manager.csv b/text/tr/release_manager.csv index 5bd15721..5a228914 100644 --- a/text/tr/release_manager.csv +++ b/text/tr/release_manager.csv @@ -7,3 +7,5 @@ "msg_fetching_releases_dda","Deneysel DDA için sürümler alınıyor..." "msg_fetching_releases_bn","Deneysel BN için sürümler alınıyor..." "msg_invalid_fetch_func_param","ReleaseManager.fetch() fonksiyonu %s çıktısını verdi." +"msg_fetching_releases_eod","EOD Experimental için sürümler alınıyor..." +"msg_fetching_releases_tish","TISH Experimental için sürümler alınıyor..." diff --git a/text/tr/settings_tab.csv b/text/tr/settings_tab.csv index 84e62cbd..68aad1c9 100644 --- a/text/tr/settings_tab.csv +++ b/text/tr/settings_tab.csv @@ -28,3 +28,19 @@ "tooltip_num_prs_to_request","Değişiklik listesini belirlemek için\nkaç pull request (kod eklemeleri) istenecek.\nYüksek sayılar yavaş isteklere ve hatalara sebep olabilir" "tooltip_ui_scale_override","Otomatik olarak çıkarılan arayüz ölçeği sisteminizde\nçok büyük\veya çok küçük görünüyorsa bunu kullanın.\n(Otomatik ölçek,tüm sistemlerde çalışmayabilen veya\nçözünürlük çok düşük olduğunda yetersiz sonuçlar veren\nsistem tarafından bildirilen ekran DPI'sına dayanır.)" "tooltip_data_to_migrate","Oyun sürümünü güncellerken hangi oyun verilerinin taşınacağını seçin." +"cbtn_enable_proxy","Etkinleştir " +"cbtn_ignore_cache","İndirme önbelleğini yoksay" +"cbtn_keep_cache","İndirme önbelleğini koru" +"lbl_licenses","[color=#3b93f7][url]Açık kaynak lisanslarını görüntüle[/url][/color]" +"lbl_proxy_settings","Proxy sunucusu:" +"obtn_proxy_option_download","Yalnızca indirme için" +"obtn_proxy_option_off","Devre dışı" +"obtn_proxy_option_on","Etkin" +"tooltip_ignore_cache","Önbellek klasöründe zaten olsa bile +her zaman web'den içerik indir." +"tooltip_keep_cache","Kurulum tamamlandığında silmek yerine +indirilen içeriği (oyun sürümleri, modpakler, ses paketleri) önbellek klasöründe sakla." +"tooltip_proxy_options","Devre dışı - Proxy kullanma +Etkin - Her durumda proxy kullan (örn. sürüm isteme) +Yalnızca indirme için - Sadece indirme sırasında proxy kullan" +"tooltip_proxy_settings","İndirme için bir proxy sunucusu yapılandır." diff --git a/text/tr/userdata_deletion_dialog.csv b/text/tr/userdata_deletion_dialog.csv new file mode 100644 index 00000000..fd17be41 --- /dev/null +++ b/text/tr/userdata_deletion_dialog.csv @@ -0,0 +1,6 @@ +"keys","tr" +, +"dlg_userdata_deletion_title","Kullanıcı verisi silme işlemini onayla" +"dlg_userdata_deletion_text_pt1","Dur! Oyun dizininde yanlış yerleştirilmiş kullanıcı verisi tespit edildi. Bu, oyunu Catapult kullanmak yerine doğrudan yürütülebilir dosyasından çalıştırdıysanız gerçekleşebilir. Bu desteklenmez ve devam ederseniz, tüm bu veriler geri alınamaz şekilde silinecektir.[br][br] Kullanıcı verisi şu klasörlerde bulundu:[br]" +"dlg_userdata_deletion_text_pt2","Bu klasörleri gözden geçirin ve onaylamadan önce önemli olan her şeyi yedekleyin." +"dlg_userdata_deletion_safety_hint","Onaylamak için buraya 'delete' yazın" diff --git a/text/tr/userdata_deletion_dialog.csv.import b/text/tr/userdata_deletion_dialog.csv.import new file mode 100644 index 00000000..a9d40ad0 --- /dev/null +++ b/text/tr/userdata_deletion_dialog.csv.import @@ -0,0 +1,17 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://cvd2p0hjralx6" + +[deps] + +files=["res://text/tr/userdata_deletion_dialog.tr.translation"] + +source_file="res://text/tr/userdata_deletion_dialog.csv" +dest_files=["res://text/tr/userdata_deletion_dialog.tr.translation"] + +[params] + +compress=true +delimiter=0 diff --git a/text/zh/dialog_buttons.csv b/text/zh/dialog_buttons.csv index b13d88c0..a511d3d4 100644 --- a/text/zh/dialog_buttons.csv +++ b/text/zh/dialog_buttons.csv @@ -7,3 +7,4 @@ "btn_no","否" "btn_reinstall","重新安装" "btn_skip","跳过" +"btn_confirm","确认" diff --git a/text/zh/filesystem_helper.csv b/text/zh/filesystem_helper.csv index c9aa9fb8..8ef5072f 100644 --- a/text/zh/filesystem_helper.csv +++ b/text/zh/filesystem_helper.csv @@ -16,3 +16,5 @@ "msg_extract_error","解压命令报错中断(中断代码:%s)" "msg_extract_failed_cmd","失败命令:%s" "msg_extract_fail_output","输出:%s" +"msg_zipping_file","正在压缩 %s..." +"msg_zip_error","存档压缩命令退出并出现错误(退出代码:%s)" diff --git a/text/zh/general.csv b/text/zh/general.csv index 7d9a84ae..aed81d57 100644 --- a/text/zh/general.csv +++ b/text/zh/general.csv @@ -24,3 +24,4 @@ "tab_fonts","字体" "tab_backups","备份" "tab_settings","设置" +"desc_tlg","[b]Cataclysm: The Last Generation[/b]。人类将无法幸存,但你还没有收到通知。这个由 WormGirl 指导的 DDA 分支在整个游戏中进行了重大的重新平衡,重点放在生存和生活模拟上。生存是有意的,你的所有选择都很重要。探索这个几乎可信的近未来世界,拥有你可以建造的所有枪支、生物电子和木炭烟熏器,或者在尝试中死亡!" diff --git a/text/zh/release_manager.csv b/text/zh/release_manager.csv index ae75dcd1..41867fa6 100644 --- a/text/zh/release_manager.csv +++ b/text/zh/release_manager.csv @@ -7,3 +7,5 @@ "msg_fetching_releases_dda","正在为DDA测试版获取发布... " "msg_fetching_releases_bn","正在为BN测试版获取发布..." "msg_invalid_fetch_func_param","ReleaseManager.fetch()已传至%s" +"msg_fetching_releases_eod","正在获取 EOD Experimental 的版本..." +"msg_fetching_releases_tish","正在获取 TISH Experimental 的版本..." diff --git a/text/zh/settings_tab.csv b/text/zh/settings_tab.csv index abdb2163..cebf9f3d 100644 --- a/text/zh/settings_tab.csv +++ b/text/zh/settings_tab.csv @@ -40,3 +40,4 @@ "tooltip_ignore_cache","即使缓存文件夹中已有所需的包,也仍然从网络上进行下载。" "tooltip_proxy_settings","配置一个用于下载的代理服务器。" "tooltip_proxy_options","关 - 不启用代理\n开 - 在所有场合均使用代理(例如获取发布列表时)\n仅用于下载 - 仅在下载时使用代理" +"lbl_licenses","[color=#3b93f7][url]查看开源许可证[/url][/color]" diff --git a/text/zh/userdata_deletion_dialog.csv b/text/zh/userdata_deletion_dialog.csv new file mode 100644 index 00000000..b3570eae --- /dev/null +++ b/text/zh/userdata_deletion_dialog.csv @@ -0,0 +1,6 @@ +"keys","zh" +, +"dlg_userdata_deletion_title","确认删除用户数据" +"dlg_userdata_deletion_text_pt1","停止!在游戏目录中检测到位置错误的用户数据。如果您直接从可执行文件运行游戏而不是使用 Catapult,可能会发生这种情况。这不受支持,如果您继续,所有这些数据将被不可恢复地删除。[br][br] 在以下文件夹中发现了用户数据:[br]" +"dlg_userdata_deletion_text_pt2","在确认之前,请检查这些文件夹并备份任何重要内容。" +"dlg_userdata_deletion_safety_hint","在此输入 'delete' 以确认" diff --git a/text/zh/userdata_deletion_dialog.csv.import b/text/zh/userdata_deletion_dialog.csv.import new file mode 100644 index 00000000..7c0a5cd2 --- /dev/null +++ b/text/zh/userdata_deletion_dialog.csv.import @@ -0,0 +1,17 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://dw6fb4olbfwwg" + +[deps] + +files=["res://text/zh/userdata_deletion_dialog.zh.translation"] + +source_file="res://text/zh/userdata_deletion_dialog.csv" +dest_files=["res://text/zh/userdata_deletion_dialog.zh.translation"] + +[params] + +compress=true +delimiter=0 From 38f66947bce5f2f1080cc4fb8df3cfc77d8ec7f3 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sun, 9 Nov 2025 19:54:43 +0000 Subject: [PATCH 09/14] Fix dialog layout glitches --- scenes/UserDataDeletionDialog.tscn | 1 + scripts/user_data_deletion_dlg.gd | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/scenes/UserDataDeletionDialog.tscn b/scenes/UserDataDeletionDialog.tscn index a5a5cfb6..7bf93d10 100644 --- a/scenes/UserDataDeletionDialog.tscn +++ b/scenes/UserDataDeletionDialog.tscn @@ -41,6 +41,7 @@ stretch_mode = 2 unique_name_in_owner = true custom_minimum_size = Vector2(400, 0) layout_mode = 2 +size_flags_horizontal = 3 size_flags_vertical = 0 bbcode_enabled = true text = "(this text is assigned at runtime) diff --git a/scripts/user_data_deletion_dlg.gd b/scripts/user_data_deletion_dlg.gd index 9a7710c8..adc2607c 100644 --- a/scripts/user_data_deletion_dlg.gd +++ b/scripts/user_data_deletion_dlg.gd @@ -13,6 +13,11 @@ func _ready() -> void: self.size = %MainPanel.size self.move_to_center() ) + + get_tree().process_frame.connect(func(): + if visible: + self.size = %MainPanel.size + ) func open(folders_list: Array[String]) -> void: From e2129621956f5fb60fd39640e4d66255c0fec7c5 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sun, 9 Nov 2025 19:56:11 +0000 Subject: [PATCH 10/14] Add script for detecting missing translations --- .github/detect-missing-translations.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/detect-missing-translations.sh diff --git a/.github/detect-missing-translations.sh b/.github/detect-missing-translations.sh new file mode 100644 index 00000000..a8882b8c --- /dev/null +++ b/.github/detect-missing-translations.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Extract all keys from English CSV files (first field, skip empty lines and header) +en_keys=$(grep -h "^[^,]" text/en/*.csv 2>/dev/null | grep -v "^\"keys\"" | cut -d',' -f1 | sed 's/"//g' | grep -v "^$" | sort -u) + +# Get list of language directories (excluding en) +lang_dirs=$(find text/* -maxdepth 0 -type d ! -name en 2>/dev/null) + +# Check each key in each language +for key in $en_keys; do + for lang_dir in $lang_dirs; do + lang=$(basename "$lang_dir") + # Search for the key at the start of a line in CSV files (with or without quotes) + if ! grep -h "^\"*$key\"*," "$lang_dir"/*.csv 2>/dev/null | grep -q .; then + echo "Missing in $lang: $key" + fi + done +done From 258d8545222cce9b72bb42cd5a2819ce7f99bcf2 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sun, 9 Nov 2025 22:29:17 +0000 Subject: [PATCH 11/14] Add failsafes for window geometry and automatic scale --- scripts/Catapult.gd | 1 + scripts/SettingsUI.gd | 3 --- scripts/window_geometry.gd | 19 ++++++++++++++++++- text/cs/general.csv | 1 + text/en/general.csv | 2 ++ text/es/general.csv | 1 + text/fr/general.csv | 1 + text/ko/general.csv | 1 + text/pl/general.csv | 1 + text/pt/general.csv | 1 + text/ru/general.csv | 1 + text/tr/general.csv | 1 + text/zh/general.csv | 1 + 13 files changed, 30 insertions(+), 4 deletions(-) diff --git a/scripts/Catapult.gd b/scripts/Catapult.gd index 9509dc40..6e838fb7 100644 --- a/scripts/Catapult.gd +++ b/scripts/Catapult.gd @@ -131,6 +131,7 @@ func _smart_reenable_controls(group_name: String) -> void: func _on_ui_scale_changed(new_scale: float) -> void: _scale_control_min_sizes(new_scale) + load_ui_theme(Settings.read("launcher_theme")) func _on_Tabs_tab_changed(tab: int) -> void: diff --git a/scripts/SettingsUI.gd b/scripts/SettingsUI.gd index 3029f8e5..7fb47d0b 100644 --- a/scripts/SettingsUI.gd +++ b/scripts/SettingsUI.gd @@ -160,8 +160,6 @@ func _on_cbScaleOverrideEnable_toggled(button_pressed: bool) -> void: Geom.scale = Settings.read("ui_scale_override") else: Geom.scale = Geom.calculate_scale_from_dpi() - - _root.load_ui_theme(Settings.read("launcher_theme")) func _on_sbScaleOverride_value_changed(value: float) -> void: @@ -169,4 +167,3 @@ func _on_sbScaleOverride_value_changed(value: float) -> void: if Settings.read("ui_scale_override_enabled"): Settings.store("ui_scale_override", value / 100.0) Geom.scale = value / 100.0 - _root.load_ui_theme(Settings.read("launcher_theme")) diff --git a/scripts/window_geometry.gd b/scripts/window_geometry.gd index e6b911d5..c912da03 100644 --- a/scripts/window_geometry.gd +++ b/scripts/window_geometry.gd @@ -64,7 +64,24 @@ func recover_window_state() -> void: await get_tree().process_frame if get_window().position != pos: get_window().position = pos - + + # Failsafe in case window ends up off-screen after display config changes, etc. + var screen_rect := Rect2i(DisplayServer.screen_get_position(), DisplayServer.screen_get_size()) + var window_rect := Rect2i(get_window().position, get_window().get_size_with_decorations()) + if not screen_rect.encloses(window_rect): + # Reset both size and position, to be safe + get_window().size = get_window().min_size + get_window().move_to_center() + + # If after that the window is still larger than the screen, check if auto-scale is reasonable. + if (Settings.read("ui_scale_override_enabled") == false) and (scale > 1.0): + var screen_size := DisplayServer.screen_get_size() + if (get_window().min_size.y > screen_size.y) or (get_window().min_size.x > screen_size.x): + Status.post(tr("msg_auto_scale_failsafe_triggered") % snapped(scale, 0.01), Enums.MSG_WARN) + Settings.store("ui_scale_override_enabled", true) + Settings.store("ui_scale_override", 1.0) + _set_scale(1.0) + get_window().move_to_center.call_deferred() func _on_SceneTree_idle(): diff --git a/text/cs/general.csv b/text/cs/general.csv index f1d0e574..f53992ae 100644 --- a/text/cs/general.csv +++ b/text/cs/general.csv @@ -24,4 +24,5 @@ "tab_backups","Zálohy" "tab_settings","Nastavení" "desc_tlg","[b]Cataclysm: The Last Generation[/b]. Lidstvo to nepřežije, ale vy jste to nezaznamenali, [i]zatím[/i]. Tento fork DDA, vedený WormGirl, obsahuje významné převážení celé hry, s důrazem na přežití a simulaci života. Přežití je záměrné a všechny vaše volby jsou důležité. Prozkoumejte tento téměř věrohodný blízkou budoucnost svět se všemi zbraněmi, bionikami a uhlíkovými udírny, které můžete postavit, nebo při tom zemřete!" +"msg_auto_scale_failsafe_triggered","Zjištěna potenciálně nepřiměřená hodnota pro automatické škálování UI: %s. Vynuceno měřítko 1.0." "msg_theme_load_error","Nepodařilo se načíst téma %s." diff --git a/text/en/general.csv b/text/en/general.csv index b5ad6561..7d474bb7 100644 --- a/text/en/general.csv +++ b/text/en/general.csv @@ -25,3 +25,5 @@ "tab_fonts","Fonts" "tab_backups","Backups" "tab_settings","Settings" +, +"msg_auto_scale_failsafe_triggered","Detected potentially unreasonable value for automatic UI scale: %s. Forcing scale to 1.0." \ No newline at end of file diff --git a/text/es/general.csv b/text/es/general.csv index d31ccd7e..c6225eee 100644 --- a/text/es/general.csv +++ b/text/es/general.csv @@ -25,3 +25,4 @@ "tab_backups","Backups" "tab_settings","Opciones" "desc_tlg","[b]Cataclysm: The Last Generation[/b]. La humanidad no sobrevivirá a esto, pero no recibiste el memo, [i]todavía[/i]. Este fork de DDA, guiado por WormGirl, presenta un reequilibrio significativo en todo el juego, con énfasis en la supervivencia y la simulación de vida. La supervivencia es intencional y todas tus elecciones importan. Explora este mundo casi plausible del futuro cercano con todas las armas, biónica y ahumadores de carbón que puedas construir, o muere en el intento!" +"msg_auto_scale_failsafe_triggered","Se detectó un valor potencialmente irrazonable para la escala automática de UI: %s. Forzando escala a 1.0." diff --git a/text/fr/general.csv b/text/fr/general.csv index e750831c..98ff7c40 100644 --- a/text/fr/general.csv +++ b/text/fr/general.csv @@ -25,3 +25,4 @@ "tab_backups","Sauvegardes" "tab_settings","Paramètres" "desc_tlg","[b]Cataclysm: The Last Generation[/b]. L'humanité ne survivra pas à cela, mais vous n'avez pas reçu le mémo, [i]encore[/i]. Ce fork de DDA, guidé par WormGirl, présente un rééquilibrage significatif de tout le jeu, avec un accent sur la survie et la simulation de vie. La survie est intentionnelle et tous vos choix comptent. Explorez ce monde presque plausible du futur proche avec toutes les armes, bioniques et fumoirs à charbon que vous pouvez construire, ou mourez en essayant!" +"msg_auto_scale_failsafe_triggered","Valeur potentiellement déraisonnable détectée pour l'échelle automatique de l'UI : %s. Forçage de l'échelle à 1.0." diff --git a/text/ko/general.csv b/text/ko/general.csv index bf5bc873..2647f248 100644 --- a/text/ko/general.csv +++ b/text/ko/general.csv @@ -24,4 +24,5 @@ tab_settings,설정 "desc_eod","[b]Cataclysm: Era of Decay[/b]는 DDA의 포크로, 주로 가능한 한 많은 플레이어 액세스 구성 가능성을 목표로 하며 원래 게임의 기능이나 콘텐츠를 완전히 제거하지 않고 기본 설정으로 게임을 현실적으로 유지합니다. [color=#ff3300]당신이[/color] 원하는 방식으로 즐기세요." "desc_tish","[b]Cataclysm: There Is Still Hope[/b]는 무엇보다도 흥미로운 게임에 중점을 둔 DDA의 포크로, ''현실주의 또는 재미'' 및 ''진실성 또는 재미''의 이분법을 거부합니다." "desc_tlg","[b]Cataclysm: The Last Generation[/b]. 인류는 이것을 살아남지 못할 것입니다. 하지만 당신은 아직 메모를 받지 못했습니다. WormGirl이 이끄는 이 DDA 포크는 생존과 생활 시뮬레이션에 중점을 둔 전체 게임의 상당한 재균형을 특징으로 합니다. 생존은 의도적이며 모든 선택이 중요합니다. 모든 총, 생체공학 및 숯 훈제기를 구축할 수 있는 이 거의 그럴듯한 가까운 미래 세계를 탐험하거나 시도하다 죽으십시오!" +"msg_auto_scale_failsafe_triggered","자동 UI 크기 조정에 대해 잠재적으로 불합리한 값이 감지되었습니다: %s. 크기 조정을 1.0으로 강제합니다." "msg_unpacking_zip","zip.exe 압축 풀기 중..." diff --git a/text/pl/general.csv b/text/pl/general.csv index 072eaeff..501a9d5e 100644 --- a/text/pl/general.csv +++ b/text/pl/general.csv @@ -25,5 +25,6 @@ "tab_backups","Kopie zapasowe" "tab_settings","Ustawienia" " +"msg_auto_scale_failsafe_triggered","Wykryto potencjalnie nieuzasadnioną wartość automatycznego skalowania UI: %s. Wymuszanie skali na 1.0." "desc_tish","[b]Cataclysm: There Is Still Hope[/b] to fork DDA z naciskiem na to, aby gra była przede wszystkim interesująca, odrzucając dychotomie ''realizmu lub zabawy'' i ''wiarygodności lub zabawy''." "desc_tlg","[b]Cataclysm: The Last Generation[/b]. Ludzkość tego nie przetrwa, ale nie dostałeś jeszcze notatki. Ten fork DDA, prowadzony przez WormGirl, zawiera znaczące przeważenie całej gry, z naciskiem na przetrwanie i symulację życia. Przetrwanie jest zamierzone i wszystkie twoje wybory mają znaczenie. Odkryj ten prawie prawdopodobny bliski przyszłości świat ze wszystkimi bronią, bionikami i węglowymi wędzarniami, które możesz zbudować, lub zgiń w próbie!" diff --git a/text/pt/general.csv b/text/pt/general.csv index dcd8fd92..798c19e6 100644 --- a/text/pt/general.csv +++ b/text/pt/general.csv @@ -25,3 +25,4 @@ "tab_backups","Backups" "tab_settings","Opções" "desc_tlg","[b]Cataclysm: The Last Generation[/b]. A humanidade não sobreviverá a isso, mas você não recebeu o memorando, [i]ainda[/i]. Este fork do DDA, guiado por WormGirl, apresenta um reequilíbrio significativo em todo o jogo, com ênfase na sobrevivência e simulação de vida. A sobrevivência é intencional e todas as suas escolhas importam. Explore este mundo quase plausível do futuro próximo com todas as armas, biónicas e defumadores de carvão que você pode construir, ou morra tentando!" +"msg_auto_scale_failsafe_triggered","Detectado valor potencialmente inadequado para escala automática da UI: %s. Forçando escala para 1.0." diff --git a/text/ru/general.csv b/text/ru/general.csv index 50ba1363..2e980f8e 100644 --- a/text/ru/general.csv +++ b/text/ru/general.csv @@ -25,3 +25,4 @@ "tab_backups","Бэкапы" "tab_settings","Настройки" "desc_tlg","[b]Cataclysm: The Last Generation[/b]. Человечество не переживёт это, но вы не получили записку, [i]пока[/i]. Этот форк DDA, руководимый WormGirl, отличается значительным перебалансом всей игры с акцентом на выживание и симуляцию жизни. Выживание намеренно, и все ваши выборы имеют значение. Исследуйте этот почти правдоподобный мир ближайшего будущего со всем оружием, бионикой и угольными коптильнями, которые вы можете построить, или умрите, пытаясь!" +"msg_auto_scale_failsafe_triggered","Обнаружено потенциально неразумное значение для автоматического масштабирования UI: %s. Принудительно установлен масштаб 1.0." diff --git a/text/tr/general.csv b/text/tr/general.csv index edb9763e..feff3bb1 100644 --- a/text/tr/general.csv +++ b/text/tr/general.csv @@ -25,3 +25,4 @@ "tab_backups","Yedekler" "tab_settings","Ayarlar" "desc_tlg","[b]Cataclysm: The Last Generation[/b]. İnsanlık bunu atlatamayacak, ama sen notayı almadın, [i]henüz[/i]. WormGirl tarafından yönetilen bu DDA forku, hayatta kalma ve yaşam simülasyonuna vurgu yaparak oyunun tamamında önemli bir dengeleme sunuyor. Hayatta kalmak kasıtlıdır ve tüm seçimleriniz önemlidir. İnşa edebileceğiniz tüm silahlar, biyonikler ve kömürlü tütsü makineleriyle bu neredeyse makul yakın gelecek dünyasını keşfedin veya denerken ölün!" +"msg_auto_scale_failsafe_triggered","Otomatik UI ölçeği için potansiyel olarak mantıksız değer tespit edildi: %s. Ölçek 1.0'a zorlanıyor." diff --git a/text/zh/general.csv b/text/zh/general.csv index aed81d57..849b96a4 100644 --- a/text/zh/general.csv +++ b/text/zh/general.csv @@ -25,3 +25,4 @@ "tab_backups","备份" "tab_settings","设置" "desc_tlg","[b]Cataclysm: The Last Generation[/b]。人类将无法幸存,但你还没有收到通知。这个由 WormGirl 指导的 DDA 分支在整个游戏中进行了重大的重新平衡,重点放在生存和生活模拟上。生存是有意的,你的所有选择都很重要。探索这个几乎可信的近未来世界,拥有你可以建造的所有枪支、生物电子和木炭烟熏器,或者在尝试中死亡!" +"msg_auto_scale_failsafe_triggered","检测到自动 UI 缩放的潜在不合理值:%s。强制缩放为 1.0。" From 109c103897d39f5364bddf71441e8dc196b6d963 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Sun, 16 Nov 2025 23:29:25 +0000 Subject: [PATCH 12/14] Add C:BN stable 0.9.0 and 0.9.1 --- scripts/ReleaseManager.gd | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/scripts/ReleaseManager.gd b/scripts/ReleaseManager.gd index 6433341e..07b64d3c 100644 --- a/scripts/ReleaseManager.gd +++ b/scripts/ReleaseManager.gd @@ -175,6 +175,16 @@ const _DDA_STABLE_WIN = [ ] const _BN_STABLE_LINUX = [ + { + "name": "0.9.1", + "url": "https://github.com/cataclysmbnteam/Cataclysm-BN/releases/download/v0.9.1/cbn-linux-tiles-x64-v0.9.1.tar.gz", + "filename": "cbn-linux-tiles-x64-v0.9.1.tar.gz" + }, + { + "name": "0.9.0", + "url": "https://github.com/cataclysmbnteam/Cataclysm-BN/releases/download/v0.9.0/cbn-linux-tiles-x64-v0.9.0.tar.gz", + "filename": "cbn-linux-tiles-x64-v0.9.0.tar.gz" + }, { "name": "0.8.0", "url": "https://github.com/cataclysmbnteam/Cataclysm-BN/releases/download/v0.8.0/cbn-linux-tiles-x64-v0.8.0.tar.gz", @@ -233,6 +243,16 @@ const _BN_STABLE_LINUX = [ ] const _BN_STABLE_WIN = [ + { + "name": "0.9.1", + "url": "https://github.com/cataclysmbnteam/Cataclysm-BN/releases/download/v0.9.1/cbn-windows-tiles-x64-msvc-v0.9.1.zip", + "filename": "cbn-windows-tiles-x64-msvc-v0.9.1.zip" + }, + { + "name": "0.9.0", + "url": "https://github.com/cataclysmbnteam/Cataclysm-BN/releases/download/v0.9.0/cbn-windows-tiles-x64-msvc-v0.9.0.zip", + "filename": "cbn-windows-tiles-x64-msvc-v0.9.0.zip" + }, { "name": "0.8.0", "url": "https://github.com/cataclysmbnteam/Cataclysm-BN/releases/download/v0.8.0/cbn-windows-tiles-x64-msvc-v0.8.0.zip", From b1df64eb14a8b2eb4c5726f29998afb39de003af Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Mon, 17 Nov 2025 22:30:01 +0000 Subject: [PATCH 13/14] Update download links in Readme --- README.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 890db678..89ee8082 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,31 @@ **Catapult** is a cross-platform launcher and content manager for [Cataclysm: Dark Days Ahead](https://github.com/CleverRaven/Cataclysm-DDA) and [Cataclysm: Bright Nights](https://github.com/cataclysmbnteam/Cataclysm-BN). It is in part inspired by earlier versions of [Rémy Roy's launcher](https://github.com/remyroy/CDDA-Game-Launcher). -[**Download latest release**](https://github.com/qrrk/Catapult/releases/latest) | [**See all releases**](https://github.com/qrrk/Catapult/releases) + + + + + + + + + + +
Releases
LatestLatest Release
AllAll Releases
+ + + + + + +
Development builds
+ CI Status +
+ ℹ️ Need GitHub account to download
+ ⚠️ May be unstable; not recommended for everyday use +
+
![Catapult UI](./.github/catapult_ui.gif) From e48504661b6d3a20ed8c3f0fa40f16e19d7545b0 Mon Sep 17 00:00:00 2001 From: qrrk <19731636+qrrk@users.noreply.github.com> Date: Tue, 18 Nov 2025 21:54:54 +0000 Subject: [PATCH 14/14] Remove placeholder workflow --- .github/workflows/placeholder.yml | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 .github/workflows/placeholder.yml diff --git a/.github/workflows/placeholder.yml b/.github/workflows/placeholder.yml deleted file mode 100644 index b2e343ce..00000000 --- a/.github/workflows/placeholder.yml +++ /dev/null @@ -1,10 +0,0 @@ -name: Placeholder - -on: - workflow_dispatch: - -jobs: - noop: - runs-on: ubuntu-latest - steps: - - run: echo "Hello from Actions!"