Three architectural review comments implemented per Tyre's proposals: #3 — scene_path consumption (full, Option A) - ImplantRegistry.instantiate_all(parent) loads and instantiates all registered apps with a declared scene_path. Manifests with empty scene_path are treated as metadata-only (silently skipped). - ImplantRegistry.get_app_instance(app_path) returns the live instance. - hud.tscn no longer direct-instances AtlasApp or EconomicsApp — an AppsContainer Control holds the registry-managed children. - hud.gd._ready() calls ImplantRegistry.instantiate_all($AppsContainer). - main.gd drops @onready vars for atlas_app/economics_app; looks up both from the registry at the top of _ready(). #6c — schema_version on manifest - ImplantAppManifest: @export var schema_version: int = 1 (first field). - ImplantRegistry: const CURRENT_SCHEMA_VERSION := 1; tiered check in _scan() — older-than-current emits print_verbose, newer-than-current emits push_warning, both proceed best-effort. - apps/atlas/app.tres + apps/economics/app.tres: schema_version = 1. #10 — absorb _on_screen_changed boilerplate into ImplantApp - Base class gains _screens: Dictionary, _current_screen_id: String, register_screen(id, screen), current_screen_id(), and a real default _on_screen_changed implementation that handles leave+hide+enter+show with has_method guards and same-screen-replace detection. - atlas_app: deletes _current_screen_id, _get_screen(), _on_screen_changed() override; on_install() collapses to construct → setup → wire → register_screen(id, screen) per screen. Preserves direct screen refs for atlas-specific signal wiring and method calls. - economics_app: deletes same scaffolding; on_install() reduces to three lines (construct overview_screen, register_screen, nav.set_default). Also: replaced Resource.get(name, default) dict-style calls with direct property access on typed ImplantAppManifest reads (2-arg get() is Dictionary-only; causes "Too many arguments" parse errors on Resources). _is_valid_manifest gained a Resource type guard and a property-exists check. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
13 lines
379 B
Plaintext
13 lines
379 B
Plaintext
[gd_resource type="Resource" script_class="ImplantAppManifest" load_steps=2 format=3]
|
|
|
|
[ext_resource type="Script" path="res://ui/implant/implant_app_manifest.gd" id="1"]
|
|
|
|
[resource]
|
|
script = ExtResource("1")
|
|
schema_version = 1
|
|
app_path = "implant/map"
|
|
scene_path = "res://ui/implant/apps/atlas/atlas_app.tscn"
|
|
default_mode = "fullscreen"
|
|
default_key = 77
|
|
preserves_state = true
|