get_locale() now falls back to TranslationServer.get_locale() if the
locale key is missing from _state, avoiding a crash when the options
autoload hasn't run _ready yet (e.g. another autoload triggers it
during its own _ready).
When the options menu becomes visible, focus moves to the TabContainer
so keyboard/gamepad navigation between tabs works without a click.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Drop assets/control_icons/* and src/input_controls/* — control
prompt rendering is now handled by the gd-controls plugin via
PromptFont, making these PNG sprite sheets redundant.
- Fix typos: _initilize -> _initialize in audio.gd, decebels ->
decibels (8x in audio_settings.gd parameters and a comment).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 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>