add reusable options menu plugin with localized UI

- Settings autoloads (Game/Input/Graphics/Audio) backed by FileManager,
  persisted to user:// JSON files
- OptionsMenu scene with tabs wired to each autoload: Game (locale),
  Input (invert vertical axis), Graphics (window mode, borderless,
  screen), Audio (master/music/fx volume)
- GraphicsSettings reads DisplayServer state when running in editor
  to avoid clobbering the editor's window mode; exported builds load
  from disk and apply via set_screen_and_apply with a _loading guard
  to suppress redundant writes
- Built-in translations for en/es/fr/de/ja/zh_CN registered at runtime
  from translations/gd_options.csv
- Control-prompt icon assets for keyboard, PlayStation, Xbox, Nintendo
- Flesh out README with scope and audio bus layout requirement

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Daniel Samson
2026-04-28 18:06:45 +01:00
co-authored by Claude Opus 4.7
parent 810e5a6da0
commit f0f8bdfafb
74 changed files with 1995 additions and 1 deletions
+19
View File
@@ -0,0 +1,19 @@
[remap]
importer="csv_translation"
type="Translation"
uid="uid://ve0c3i7bkxwt"
[deps]
files=["res://addons/gd-options/translations/gd_options.en.translation", "res://addons/gd-options/translations/gd_options.es.translation", "res://addons/gd-options/translations/gd_options.fr.translation", "res://addons/gd-options/translations/gd_options.de.translation", "res://addons/gd-options/translations/gd_options.ja.translation", "res://addons/gd-options/translations/gd_options.zh_CN.translation"]
source_file="res://addons/gd-options/translations/gd_options.csv"
dest_files=["res://addons/gd-options/translations/gd_options.en.translation", "res://addons/gd-options/translations/gd_options.es.translation", "res://addons/gd-options/translations/gd_options.fr.translation", "res://addons/gd-options/translations/gd_options.de.translation", "res://addons/gd-options/translations/gd_options.ja.translation", "res://addons/gd-options/translations/gd_options.zh_CN.translation"]
[params]
compress=1
delimiter=0
unescape_keys=false
unescape_translations=true