Translation updates and submodule sync
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
# NVGT Coding Patterns
|
||||
|
||||
Use these patterns for clean, separated, reusable NVGT code.
|
||||
|
||||
## 1. Module Boundaries
|
||||
|
||||
- Keep game-specific orchestration separate from reusable helpers.
|
||||
- Put reusable helpers into dedicated library modules (e.g., `libstorm-nvgt/`).
|
||||
- Keep adapters thin:
|
||||
Project modules should configure and call reusable modules, not duplicate internals.
|
||||
|
||||
## 2. Naming and Simplicity
|
||||
|
||||
- Prefer snake_case for functions/methods.
|
||||
- Prefer camelCase for variables.
|
||||
- Keep APIs narrow: small setup functions + one runtime function.
|
||||
- Avoid hidden globals unless they model subsystem state intentionally.
|
||||
|
||||
## 3. Loop Safety
|
||||
|
||||
- In long-running menu/game loops, keep `wait(5);`.
|
||||
- Use per-loop tick callbacks for background tasks (volume keys, timers, notifications).
|
||||
- Keep menu navigation behavior explicit (wrap on/off, exit keys, select keys).
|
||||
|
||||
## 4. Accessibility-First UI
|
||||
|
||||
- Prefer screen reader output and NVGT UI primitives (`form`, `virtual_dialogs`, `menu`) over external speech daemons.
|
||||
- Ensure keyboard navigation has no traps.
|
||||
- Keep labels complete and unambiguous.
|
||||
|
||||
## 5. Audio Conventions
|
||||
|
||||
- Use deterministic sound path conventions:
|
||||
`sounds/menu/...`, `sounds/notify...`.
|
||||
- Prefer extension fallback helpers (`.ogg`, then `.wav`) when building reusable modules.
|
||||
- Guard optional sounds with existence checks.
|
||||
|
||||
## 6. Verify, Then Generalize
|
||||
|
||||
- Before extracting a helper, verify behavior from:
|
||||
docs -> include wrapper -> C++ binding.
|
||||
- Extract only stable behavior shared by multiple projects.
|
||||
- Leave highly game-loop-specific logic in the project.
|
||||
Reference in New Issue
Block a user