toaimin-indie-engine 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/README.md +55 -0
  2. package/cli/bin.cjs +99 -0
  3. package/dist/audio/AudioBus.d.ts +30 -0
  4. package/dist/audio/AudioBus.d.ts.map +1 -0
  5. package/dist/audio/AudioMock.d.ts +112 -0
  6. package/dist/audio/AudioMock.d.ts.map +1 -0
  7. package/dist/audio/ProceduralAudio.d.ts +48 -0
  8. package/dist/audio/ProceduralAudio.d.ts.map +1 -0
  9. package/dist/audio/SoundManager.d.ts +73 -0
  10. package/dist/audio/SoundManager.d.ts.map +1 -0
  11. package/dist/audio/VoicePool.d.ts +26 -0
  12. package/dist/audio/VoicePool.d.ts.map +1 -0
  13. package/dist/audio/index.d.ts +7 -0
  14. package/dist/audio/index.d.ts.map +1 -0
  15. package/dist/audio/types.d.ts +87 -0
  16. package/dist/audio/types.d.ts.map +1 -0
  17. package/dist/core/EventEmitter.d.ts +64 -0
  18. package/dist/core/EventEmitter.d.ts.map +1 -0
  19. package/dist/core/Game.d.ts +248 -0
  20. package/dist/core/Game.d.ts.map +1 -0
  21. package/dist/core/GameLoop.d.ts +128 -0
  22. package/dist/core/GameLoop.d.ts.map +1 -0
  23. package/dist/core/Time.d.ts +73 -0
  24. package/dist/core/Time.d.ts.map +1 -0
  25. package/dist/core/index.d.ts +5 -0
  26. package/dist/core/index.d.ts.map +1 -0
  27. package/dist/entity/Component.d.ts +31 -0
  28. package/dist/entity/Component.d.ts.map +1 -0
  29. package/dist/entity/Entity.d.ts +61 -0
  30. package/dist/entity/Entity.d.ts.map +1 -0
  31. package/dist/entity/EntityManager.d.ts +46 -0
  32. package/dist/entity/EntityManager.d.ts.map +1 -0
  33. package/dist/entity/components/ColliderComponent.d.ts +47 -0
  34. package/dist/entity/components/ColliderComponent.d.ts.map +1 -0
  35. package/dist/entity/components/RigidBodyComponent.d.ts +38 -0
  36. package/dist/entity/components/RigidBodyComponent.d.ts.map +1 -0
  37. package/dist/entity/components/ScriptComponent.d.ts +32 -0
  38. package/dist/entity/components/ScriptComponent.d.ts.map +1 -0
  39. package/dist/entity/components/ShapeComponent.d.ts +50 -0
  40. package/dist/entity/components/ShapeComponent.d.ts.map +1 -0
  41. package/dist/entity/components/SpriteComponent.d.ts +31 -0
  42. package/dist/entity/components/SpriteComponent.d.ts.map +1 -0
  43. package/dist/entity/components/index.d.ts +6 -0
  44. package/dist/entity/components/index.d.ts.map +1 -0
  45. package/dist/entity/index.d.ts +5 -0
  46. package/dist/entity/index.d.ts.map +1 -0
  47. package/dist/index.cjs +4 -0
  48. package/dist/index.cjs.map +1 -0
  49. package/dist/index.d.ts +15 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +6326 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/input/ActionMap.d.ts +91 -0
  54. package/dist/input/ActionMap.d.ts.map +1 -0
  55. package/dist/input/InputManager.d.ts +102 -0
  56. package/dist/input/InputManager.d.ts.map +1 -0
  57. package/dist/input/Pointer.d.ts +115 -0
  58. package/dist/input/Pointer.d.ts.map +1 -0
  59. package/dist/input/VirtualJoystick.d.ts +79 -0
  60. package/dist/input/VirtualJoystick.d.ts.map +1 -0
  61. package/dist/input/index.d.ts +5 -0
  62. package/dist/input/index.d.ts.map +1 -0
  63. package/dist/math/Circle.d.ts +39 -0
  64. package/dist/math/Circle.d.ts.map +1 -0
  65. package/dist/math/Color.d.ts +58 -0
  66. package/dist/math/Color.d.ts.map +1 -0
  67. package/dist/math/MathUtils.d.ts +82 -0
  68. package/dist/math/MathUtils.d.ts.map +1 -0
  69. package/dist/math/Matrix2D.d.ts +97 -0
  70. package/dist/math/Matrix2D.d.ts.map +1 -0
  71. package/dist/math/Rect.d.ts +54 -0
  72. package/dist/math/Rect.d.ts.map +1 -0
  73. package/dist/math/Transform2D.d.ts +47 -0
  74. package/dist/math/Transform2D.d.ts.map +1 -0
  75. package/dist/math/Vector2.d.ts +89 -0
  76. package/dist/math/Vector2.d.ts.map +1 -0
  77. package/dist/math/index.d.ts +8 -0
  78. package/dist/math/index.d.ts.map +1 -0
  79. package/dist/physics/BoxCollider2D.d.ts +38 -0
  80. package/dist/physics/BoxCollider2D.d.ts.map +1 -0
  81. package/dist/physics/CircleCollider2D.d.ts +27 -0
  82. package/dist/physics/CircleCollider2D.d.ts.map +1 -0
  83. package/dist/physics/Collider2D.d.ts +79 -0
  84. package/dist/physics/Collider2D.d.ts.map +1 -0
  85. package/dist/physics/CollisionFSM.d.ts +84 -0
  86. package/dist/physics/CollisionFSM.d.ts.map +1 -0
  87. package/dist/physics/ContactSolver.d.ts +58 -0
  88. package/dist/physics/ContactSolver.d.ts.map +1 -0
  89. package/dist/physics/Narrowphase.d.ts +25 -0
  90. package/dist/physics/Narrowphase.d.ts.map +1 -0
  91. package/dist/physics/PhysicsWorld2D.d.ts +75 -0
  92. package/dist/physics/PhysicsWorld2D.d.ts.map +1 -0
  93. package/dist/physics/Raycast.d.ts +38 -0
  94. package/dist/physics/Raycast.d.ts.map +1 -0
  95. package/dist/physics/RigidBody2D.d.ts +118 -0
  96. package/dist/physics/RigidBody2D.d.ts.map +1 -0
  97. package/dist/physics/SpatialGrid.d.ts +78 -0
  98. package/dist/physics/SpatialGrid.d.ts.map +1 -0
  99. package/dist/physics/index.d.ts +14 -0
  100. package/dist/physics/index.d.ts.map +1 -0
  101. package/dist/rendering/Animation.d.ts +62 -0
  102. package/dist/rendering/Animation.d.ts.map +1 -0
  103. package/dist/rendering/AssetLoader.d.ts +35 -0
  104. package/dist/rendering/AssetLoader.d.ts.map +1 -0
  105. package/dist/rendering/Camera2D.d.ts +109 -0
  106. package/dist/rendering/Camera2D.d.ts.map +1 -0
  107. package/dist/rendering/CanvasContext.d.ts +80 -0
  108. package/dist/rendering/CanvasContext.d.ts.map +1 -0
  109. package/dist/rendering/CanvasMock.d.ts +163 -0
  110. package/dist/rendering/CanvasMock.d.ts.map +1 -0
  111. package/dist/rendering/ParticleSystem.d.ts +103 -0
  112. package/dist/rendering/ParticleSystem.d.ts.map +1 -0
  113. package/dist/rendering/Renderer.d.ts +98 -0
  114. package/dist/rendering/Renderer.d.ts.map +1 -0
  115. package/dist/rendering/Shapes.d.ts +24 -0
  116. package/dist/rendering/Shapes.d.ts.map +1 -0
  117. package/dist/rendering/Sprite.d.ts +74 -0
  118. package/dist/rendering/Sprite.d.ts.map +1 -0
  119. package/dist/rendering/SpriteSheet.d.ts +22 -0
  120. package/dist/rendering/SpriteSheet.d.ts.map +1 -0
  121. package/dist/rendering/index.d.ts +11 -0
  122. package/dist/rendering/index.d.ts.map +1 -0
  123. package/dist/scene/Blackboard.d.ts +81 -0
  124. package/dist/scene/Blackboard.d.ts.map +1 -0
  125. package/dist/scene/Scene.d.ts +160 -0
  126. package/dist/scene/Scene.d.ts.map +1 -0
  127. package/dist/scene/SceneManager.d.ts +142 -0
  128. package/dist/scene/SceneManager.d.ts.map +1 -0
  129. package/dist/scene/SceneTransition.d.ts +118 -0
  130. package/dist/scene/SceneTransition.d.ts.map +1 -0
  131. package/dist/scene/index.d.ts +5 -0
  132. package/dist/scene/index.d.ts.map +1 -0
  133. package/dist/ui/UIAnchor.d.ts +31 -0
  134. package/dist/ui/UIAnchor.d.ts.map +1 -0
  135. package/dist/ui/UIButton.d.ts +48 -0
  136. package/dist/ui/UIButton.d.ts.map +1 -0
  137. package/dist/ui/UIElement.d.ts +108 -0
  138. package/dist/ui/UIElement.d.ts.map +1 -0
  139. package/dist/ui/UILabel.d.ts +54 -0
  140. package/dist/ui/UILabel.d.ts.map +1 -0
  141. package/dist/ui/UIManager.d.ts +41 -0
  142. package/dist/ui/UIManager.d.ts.map +1 -0
  143. package/dist/ui/UIPanel.d.ts +36 -0
  144. package/dist/ui/UIPanel.d.ts.map +1 -0
  145. package/dist/ui/UIProgressBar.d.ts +47 -0
  146. package/dist/ui/UIProgressBar.d.ts.map +1 -0
  147. package/dist/ui/index.d.ts +8 -0
  148. package/dist/ui/index.d.ts.map +1 -0
  149. package/package.json +47 -0
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Persistent cross-scene observable data store.
3
+ * Supports typed gets/sets, atomic increments, boolean toggles, change observers,
4
+ * and JSON / LocalStorage serialization.
5
+ */
6
+ export declare class Blackboard {
7
+ private _data;
8
+ private _emitter;
9
+ /**
10
+ * Set a key-value pair and notify registered listeners.
11
+ */
12
+ set<T = any>(key: string, value: T): this;
13
+ /**
14
+ * Get a stored value with optional fallback default.
15
+ */
16
+ get<T = any>(key: string, defaultValue?: T): T;
17
+ /**
18
+ * Check if key exists in the store.
19
+ */
20
+ has(key: string): boolean;
21
+ /**
22
+ * Remove a key and notify listeners with value undefined.
23
+ */
24
+ delete(key: string): boolean;
25
+ /**
26
+ * Clear all entries.
27
+ */
28
+ clear(): void;
29
+ /**
30
+ * Atomic numeric increment.
31
+ * If key does not exist, defaults to 0 and adds delta.
32
+ * @returns Updated numeric value.
33
+ */
34
+ increment(key: string, delta?: number): number;
35
+ /**
36
+ * Atomic numeric decrement.
37
+ * @returns Updated numeric value.
38
+ */
39
+ decrement(key: string, delta?: number): number;
40
+ /**
41
+ * Atomic boolean toggle.
42
+ * If key does not exist, treats current as false and sets to true.
43
+ * @returns Updated boolean value.
44
+ */
45
+ toggle(key: string): boolean;
46
+ /**
47
+ * Subscribe to value changes for a specific key.
48
+ * @returns Disposer function that unsubscribes the listener when called.
49
+ */
50
+ onChange<T = any>(key: string, callback: (value: T, oldValue: T | undefined) => void): () => void;
51
+ /**
52
+ * Subscribe to all value changes across the entire store.
53
+ * @returns Disposer function that unsubscribes the listener when called.
54
+ */
55
+ onAnyChange(callback: (key: string, value: any, oldValue: any) => void): () => void;
56
+ /**
57
+ * Export all data as a plain JavaScript record.
58
+ */
59
+ toObject(): Record<string, any>;
60
+ /**
61
+ * Bulk load key-values from a record.
62
+ */
63
+ fromObject(data: Record<string, any>): this;
64
+ /**
65
+ * Serialize state to JSON string.
66
+ */
67
+ serialize(): string;
68
+ /**
69
+ * Deserialize state from JSON string.
70
+ */
71
+ deserialize(json: string): this;
72
+ /**
73
+ * Save store to browser localStorage.
74
+ */
75
+ saveToLocalStorage(storageKey: string): boolean;
76
+ /**
77
+ * Load store from browser localStorage.
78
+ */
79
+ loadFromLocalStorage(storageKey: string): boolean;
80
+ }
81
+ //# sourceMappingURL=Blackboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Blackboard.d.ts","sourceRoot":"","sources":["../../src/scene/Blackboard.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,QAAQ,CAAwD;IAExE;;OAEG;IACI,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAgBhD;;OAEG;IACI,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC;IAOrD;;OAEG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAanC;;OAEG;IACI,KAAK,IAAI,IAAI;IAMpB;;;;OAIG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,MAAM;IAOxD;;;OAGG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,MAAM;IAIxD;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAOnC;;;OAGG;IACI,QAAQ,CAAC,CAAC,GAAG,GAAG,EACrB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,GACpD,MAAM,IAAI;IAOb;;;OAGG;IACI,WAAW,CAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,IAAI,GACzD,MAAM,IAAI;IAOb;;OAEG;IACI,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAQtC;;OAEG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAQlD;;OAEG;IACI,SAAS,IAAI,MAAM;IAI1B;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAUtC;;OAEG;IACI,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAUtD;;OAEG;IACI,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;CAazD"}
@@ -0,0 +1,160 @@
1
+ import type { Camera2D } from '../rendering/Camera2D';
2
+ import type { Blackboard } from './Blackboard';
3
+ import type { SceneManager } from './SceneManager';
4
+ /**
5
+ * Lifecycle states of a scene.
6
+ */
7
+ export declare enum SceneState {
8
+ UNINITIALIZED = "UNINITIALIZED",
9
+ INACTIVE = "INACTIVE",
10
+ ENTERING = "ENTERING",
11
+ ACTIVE = "ACTIVE",
12
+ PAUSED = "PAUSED",
13
+ EXITING = "EXITING",
14
+ DESTROYED = "DESTROYED"
15
+ }
16
+ /**
17
+ * Public interface contract for all framework scenes.
18
+ */
19
+ export interface IScene<TGame = any> {
20
+ /** Unique registered name of the scene */
21
+ name: string;
22
+ /** Reference to the game orchestrator / context */
23
+ game: TGame;
24
+ /** Reference to the SceneManager managing this scene */
25
+ sceneManager: SceneManager<TGame>;
26
+ /** Reference to the shared cross-scene Blackboard */
27
+ blackboard: Blackboard;
28
+ /** Current lifecycle state */
29
+ state: SceneState;
30
+ /** Whether the scene has completed init() */
31
+ initialized: boolean;
32
+ /** Whether the scene is currently the top active scene */
33
+ active: boolean;
34
+ /** Whether the scene is currently paused beneath a modal overlay */
35
+ paused: boolean;
36
+ /**
37
+ * If true, underlying scenes on the modal stack will be rendered
38
+ * beneath this scene (e.g. for pause menus or semi-transparent overlays).
39
+ * Default: false.
40
+ */
41
+ renderUnderlying: boolean;
42
+ /** Optional active Camera2D reference for scene rendering */
43
+ camera: Camera2D | null;
44
+ /**
45
+ * One-time initialization. Called when scene is added or first loaded.
46
+ * Use for preloading assets, initializing pools, and configuring entities.
47
+ */
48
+ init(game: TGame): void | Promise<void>;
49
+ /**
50
+ * Called whenever the scene becomes active on the stack.
51
+ * @param data Optional payload passed via switchTo() or push().
52
+ */
53
+ enter(data?: any): void | Promise<void>;
54
+ /**
55
+ * Variable logic update called every frame.
56
+ * @param dt Scaled delta time in seconds.
57
+ */
58
+ update(dt: number): void;
59
+ /**
60
+ * Deterministic fixed timestep update called at constant rate (e.g. 60Hz).
61
+ * @param dt Fixed timestep in seconds.
62
+ */
63
+ fixedUpdate?(dt: number): void;
64
+ /**
65
+ * Render pass called once per display frame.
66
+ * @param ctx CanvasRenderingContext2D or framework CanvasContext / Renderer.
67
+ */
68
+ render(ctx: CanvasRenderingContext2D | any): void;
69
+ /**
70
+ * Called when another scene is pushed on top of this scene in the modal stack.
71
+ */
72
+ pause?(): void;
73
+ /**
74
+ * Called when a modal scene on top is popped and this scene resumes being active.
75
+ * @param data Optional result data passed from pop().
76
+ */
77
+ resume?(data?: any): void;
78
+ /**
79
+ * Called when switching away from this scene or popping it off the stack.
80
+ */
81
+ exit(): void | Promise<void>;
82
+ /**
83
+ * Final teardown. Releases GPU textures, unbinds global listeners, clears state.
84
+ */
85
+ destroy(): void;
86
+ }
87
+ /**
88
+ * Abstract base class providing default lifecycle implementations,
89
+ * scene-local key-value state, and convenient engine hooks.
90
+ */
91
+ export declare abstract class Scene<TGame = any> implements IScene<TGame> {
92
+ name: string;
93
+ game: TGame;
94
+ sceneManager: SceneManager<TGame>;
95
+ blackboard: Blackboard;
96
+ state: SceneState;
97
+ renderUnderlying: boolean;
98
+ camera: Camera2D | null;
99
+ protected _localState: Map<string, any>;
100
+ get initialized(): boolean;
101
+ get active(): boolean;
102
+ get paused(): boolean;
103
+ /**
104
+ * One-time initialization.
105
+ */
106
+ init(game: TGame): void | Promise<void>;
107
+ /**
108
+ * Called on entering the scene.
109
+ */
110
+ enter(data?: any): void | Promise<void>;
111
+ /**
112
+ * Variable frame logic update.
113
+ */
114
+ update(dt: number): void;
115
+ /**
116
+ * Deterministic fixed timestep physics/simulation update.
117
+ */
118
+ fixedUpdate(dt: number): void;
119
+ /**
120
+ * Render loop pass.
121
+ */
122
+ render(ctx: CanvasRenderingContext2D | any): void;
123
+ /**
124
+ * Modal pause hook.
125
+ */
126
+ pause(): void;
127
+ /**
128
+ * Modal resume hook.
129
+ */
130
+ resume(data?: any): void;
131
+ /**
132
+ * Exit hook called when leaving the scene.
133
+ */
134
+ exit(): void | Promise<void>;
135
+ /**
136
+ * Teardown and resource cleanup.
137
+ */
138
+ destroy(): void;
139
+ /**
140
+ * Set a scene-local state value.
141
+ */
142
+ setLocal<T = any>(key: string, value: T): void;
143
+ /**
144
+ * Get a scene-local state value with optional fallback default.
145
+ */
146
+ getLocal<T = any>(key: string, defaultValue?: T): T;
147
+ /**
148
+ * Check if a scene-local state key exists.
149
+ */
150
+ hasLocal(key: string): boolean;
151
+ /**
152
+ * Remove a scene-local state key.
153
+ */
154
+ deleteLocal(key: string): boolean;
155
+ /**
156
+ * Clear all scene-local state.
157
+ */
158
+ clearLocal(): void;
159
+ }
160
+ //# sourceMappingURL=Scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../src/scene/Scene.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ import { EventEmitter } from '../core/EventEmitter';
2
+ import { Blackboard } from './Blackboard';
3
+ import { IScene } from './Scene';
4
+ import { SceneTransition } from './SceneTransition';
5
+ export type SceneConstructor<TGame = any> = new () => IScene<TGame>;
6
+ export type SceneEntry<TGame = any> = IScene<TGame> | SceneConstructor<TGame>;
7
+ /**
8
+ * Events emitted by SceneManager.
9
+ */
10
+ export interface SceneManagerEvents {
11
+ 'scene:added': {
12
+ name: string;
13
+ scene: IScene;
14
+ };
15
+ 'scene:removed': {
16
+ name: string;
17
+ };
18
+ 'scene:change': {
19
+ from: string | null;
20
+ to: string;
21
+ data?: any;
22
+ };
23
+ 'scene:pushed': {
24
+ name: string;
25
+ depth: number;
26
+ data?: any;
27
+ };
28
+ 'scene:popped': {
29
+ name: string;
30
+ depth: number;
31
+ result?: any;
32
+ };
33
+ 'transition:start': {
34
+ type: string;
35
+ from: string | null;
36
+ to: string;
37
+ duration: number;
38
+ };
39
+ 'transition:complete': {
40
+ type: string;
41
+ from: string | null;
42
+ to: string;
43
+ };
44
+ }
45
+ /**
46
+ * Production-grade Scene Lifecycle & Modal Stack Manager.
47
+ */
48
+ export declare class SceneManager<TGame = any> {
49
+ readonly game: TGame;
50
+ readonly blackboard: Blackboard;
51
+ readonly events: EventEmitter<SceneManagerEvents>;
52
+ private _registry;
53
+ private _instances;
54
+ private _stack;
55
+ private _previousScene;
56
+ private _activeTransition;
57
+ private _transitionFromScene;
58
+ private _transitionToScene;
59
+ private _pendingSwitchData;
60
+ constructor(game?: TGame);
61
+ /**
62
+ * Register a scene by name. Supports both instantiated instances and class constructors.
63
+ */
64
+ add(name: string, scene: SceneEntry<TGame>): this;
65
+ /**
66
+ * Check if a scene is registered.
67
+ */
68
+ has(name: string): boolean;
69
+ /**
70
+ * Remove a registered scene. If scene is active or on stack, it is exited and destroyed.
71
+ */
72
+ remove(name: string): boolean;
73
+ /**
74
+ * Get an instantiated scene by name, instantiating lazily if needed.
75
+ */
76
+ get(name: string): IScene<TGame> | undefined;
77
+ /**
78
+ * Return a list of all registered scene names.
79
+ */
80
+ getSceneNames(): string[];
81
+ /**
82
+ * Currently active scene (top of stack).
83
+ */
84
+ get currentScene(): IScene<TGame> | null;
85
+ /**
86
+ * Scene that was active prior to the latest switch.
87
+ */
88
+ get previousScene(): IScene<TGame> | null;
89
+ /**
90
+ * Number of scenes currently in the modal stack.
91
+ */
92
+ get stackDepth(): number;
93
+ /**
94
+ * Read-only view of the current scene stack (bottom to top).
95
+ */
96
+ getStack(): readonly IScene<TGame>[];
97
+ /**
98
+ * Whether a visual scene transition is actively animating.
99
+ */
100
+ get isTransitioning(): boolean;
101
+ /**
102
+ * Currently executing scene transition, if any.
103
+ */
104
+ get activeTransition(): SceneTransition | null;
105
+ /**
106
+ * Switch directly to a scene, clearing the existing modal stack.
107
+ * Supports smooth visual transitions.
108
+ */
109
+ switchTo(name: string, transition?: SceneTransition, data?: any): boolean;
110
+ /**
111
+ * Push a modal scene onto the stack (e.g. Pause Menu, Inventory overlay).
112
+ * Pauses the underlying scene.
113
+ */
114
+ push(name: string, transition?: SceneTransition, data?: any): boolean;
115
+ /**
116
+ * Pop the top modal scene off the stack and resume the underlying scene.
117
+ * @param transition Optional transition out.
118
+ * @param popResult Optional result data passed to underlying scene's resume(data).
119
+ */
120
+ pop(transition?: SceneTransition, popResult?: any): IScene<TGame> | null;
121
+ /**
122
+ * Execute variable logic update for active scenes.
123
+ */
124
+ update(dt: number): void;
125
+ /**
126
+ * Execute deterministic fixed timestep update for active scenes.
127
+ */
128
+ fixedUpdate(dt: number): void;
129
+ /**
130
+ * Render active scenes with modal stack composition and transition blending.
131
+ */
132
+ render(ctx: CanvasRenderingContext2D | any): void;
133
+ /**
134
+ * Teardown all scenes and reset manager.
135
+ */
136
+ destroy(): void;
137
+ private _bindSceneMetadata;
138
+ private _ensureSceneInitialized;
139
+ private _executeDirectSwitch;
140
+ private _finishTransition;
141
+ }
142
+ //# sourceMappingURL=SceneManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SceneManager.d.ts","sourceRoot":"","sources":["../../src/scene/SceneManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import type { IScene } from './Scene';
2
+ /**
3
+ * Standard easing function signature: maps progress t in [0, 1] to eased value.
4
+ */
5
+ export type EasingFunction = (t: number) => number;
6
+ /**
7
+ * Built-in easing functions for smooth scene transitions.
8
+ */
9
+ export declare const Easing: {
10
+ readonly linear: (t: number) => number;
11
+ readonly easeInQuad: (t: number) => number;
12
+ readonly easeOutQuad: (t: number) => number;
13
+ readonly easeInOutQuad: (t: number) => number;
14
+ readonly easeInCubic: (t: number) => number;
15
+ readonly easeOutCubic: (t: number) => number;
16
+ readonly easeInOutCubic: (t: number) => number;
17
+ readonly smoothstep: (t: number) => number;
18
+ };
19
+ /**
20
+ * Base transition configuration options.
21
+ */
22
+ export interface TransitionOptions {
23
+ /** Duration of transition in seconds (default: 0.5s) */
24
+ duration?: number;
25
+ /** Easing function to apply to progress (default: Easing.linear) */
26
+ easing?: EasingFunction;
27
+ }
28
+ /**
29
+ * Abstract base class for all scene visual transitions.
30
+ */
31
+ export declare abstract class SceneTransition {
32
+ duration: number;
33
+ elapsed: number;
34
+ progress: number;
35
+ isComplete: boolean;
36
+ easing: EasingFunction;
37
+ /**
38
+ * If true, transition has a distinct midpoint (e.g. Fade to solid color)
39
+ * where the actual scene switch takes place.
40
+ */
41
+ readonly hasMidpoint: boolean;
42
+ midpointTriggered: boolean;
43
+ constructor(options?: TransitionOptions);
44
+ /**
45
+ * Reset transition timers and flags before starting.
46
+ */
47
+ reset(): void;
48
+ /**
49
+ * Initialize transition for a specific scene pairing.
50
+ */
51
+ start(_fromScene: IScene | null, _toScene: IScene | null): void;
52
+ /**
53
+ * Advance transition time and calculate eased progress.
54
+ */
55
+ update(dt: number): void;
56
+ /**
57
+ * Render the transitioning visual state.
58
+ */
59
+ abstract render(ctx: CanvasRenderingContext2D | any, fromScene: IScene | null, toScene: IScene | null): void;
60
+ /**
61
+ * Helper to retrieve canvas logical dimensions.
62
+ */
63
+ protected getCanvasDimensions(ctx: any): {
64
+ width: number;
65
+ height: number;
66
+ };
67
+ }
68
+ /**
69
+ * Options for FadeTransition.
70
+ */
71
+ export interface FadeTransitionOptions extends TransitionOptions {
72
+ /** Fade color (default: '#000000' black) */
73
+ color?: string;
74
+ }
75
+ /**
76
+ * Two-phase solid color fade transition:
77
+ * Phase 1 (0 -> 50%): fades fromScene to color.
78
+ * Midpoint (50%): scenes swap.
79
+ * Phase 2 (50% -> 100%): fades color to toScene.
80
+ */
81
+ export declare class FadeTransition extends SceneTransition {
82
+ readonly hasMidpoint: boolean;
83
+ readonly color: string;
84
+ constructor(options?: FadeTransitionOptions);
85
+ render(ctx: CanvasRenderingContext2D | any, fromScene: IScene | null, toScene: IScene | null): void;
86
+ }
87
+ /**
88
+ * Slide transition directions and presentation modes.
89
+ */
90
+ export type SlideDirection = 'left' | 'right' | 'up' | 'down';
91
+ export type SlideMode = 'push' | 'cover' | 'reveal';
92
+ export interface SlideTransitionOptions extends TransitionOptions {
93
+ direction?: SlideDirection;
94
+ mode?: SlideMode;
95
+ }
96
+ /**
97
+ * Slide transition translating scenes across screen boundaries.
98
+ */
99
+ export declare class SlideTransition extends SceneTransition {
100
+ readonly direction: SlideDirection;
101
+ readonly mode: SlideMode;
102
+ constructor(options?: SlideTransitionOptions);
103
+ render(ctx: CanvasRenderingContext2D | any, fromScene: IScene | null, toScene: IScene | null): void;
104
+ }
105
+ /**
106
+ * CrossFade transition blending transparency directly between scenes.
107
+ */
108
+ export declare class CrossFadeTransition extends SceneTransition {
109
+ render(ctx: CanvasRenderingContext2D | any, fromScene: IScene | null, toScene: IScene | null): void;
110
+ }
111
+ /**
112
+ * Instantaneous scene switch with 0s duration.
113
+ */
114
+ export declare class InstantTransition extends SceneTransition {
115
+ constructor();
116
+ render(ctx: CanvasRenderingContext2D | any, _fromScene: IScene | null, toScene: IScene | null): void;
117
+ }
118
+ //# sourceMappingURL=SceneTransition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SceneTransition.d.ts","sourceRoot":"","sources":["../../src/scene/SceneTransition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './Scene';
2
+ export * from './SceneTransition';
3
+ export * from './Blackboard';
4
+ export * from './SceneManager';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scene/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { Vector2 } from '../math/Vector2';
2
+ /**
3
+ * Standard 9-point normalized anchor presets for responsive canvas UI layout.
4
+ * Values range from 0.0 to 1.0.
5
+ */
6
+ export declare const UIAnchor: {
7
+ readonly TopLeft: Readonly<Vector2>;
8
+ readonly TopCenter: Readonly<Vector2>;
9
+ readonly TopRight: Readonly<Vector2>;
10
+ readonly CenterLeft: Readonly<Vector2>;
11
+ readonly Center: Readonly<Vector2>;
12
+ readonly CenterRight: Readonly<Vector2>;
13
+ readonly BottomLeft: Readonly<Vector2>;
14
+ readonly BottomCenter: Readonly<Vector2>;
15
+ readonly BottomRight: Readonly<Vector2>;
16
+ };
17
+ /**
18
+ * Standard 9-point normalized pivot presets for local element alignment.
19
+ */
20
+ export declare const UIPivot: {
21
+ readonly TopLeft: Readonly<Vector2>;
22
+ readonly TopCenter: Readonly<Vector2>;
23
+ readonly TopRight: Readonly<Vector2>;
24
+ readonly CenterLeft: Readonly<Vector2>;
25
+ readonly Center: Readonly<Vector2>;
26
+ readonly CenterRight: Readonly<Vector2>;
27
+ readonly BottomLeft: Readonly<Vector2>;
28
+ readonly BottomCenter: Readonly<Vector2>;
29
+ readonly BottomRight: Readonly<Vector2>;
30
+ };
31
+ //# sourceMappingURL=UIAnchor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UIAnchor.d.ts","sourceRoot":"","sources":["../../src/ui/UIAnchor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;CAUX,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;CAUV,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { UIElement, UIElementOptions, UIPointerEvent } from './UIElement';
2
+ import { Rect } from '../math/Rect';
3
+ import { Color } from '../math/Color';
4
+ import { UILabel } from './UILabel';
5
+ export declare enum UIButtonState {
6
+ Normal = "normal",
7
+ Hover = "hover",
8
+ Pressed = "pressed",
9
+ Disabled = "disabled"
10
+ }
11
+ export interface UIButtonStyle {
12
+ backgroundColor?: string | Color;
13
+ borderColor?: string | Color;
14
+ borderWidth?: number;
15
+ textColor?: string | Color;
16
+ }
17
+ export interface UIButtonOptions extends UIElementOptions {
18
+ text?: string;
19
+ fontSize?: number;
20
+ fontFamily?: string;
21
+ textColor?: string | Color;
22
+ borderRadius?: number;
23
+ stateStyles?: Partial<Record<UIButtonState, UIButtonStyle>>;
24
+ onHover?: (button: UIButton, isHovered: boolean) => void;
25
+ }
26
+ /**
27
+ * Production-grade Interactive Button with 4-state visual machine,
28
+ * hover/pressed feedback, pointer absorption, and optional embedded label.
29
+ */
30
+ export declare class UIButton extends UIElement {
31
+ state: UIButtonState;
32
+ borderRadius: number;
33
+ label: UILabel | null;
34
+ stateStyles: Record<UIButtonState, UIButtonStyle>;
35
+ onHover?: (button: UIButton, isHovered: boolean) => void;
36
+ private _isHovered;
37
+ private _isPressed;
38
+ constructor(options?: UIButtonOptions);
39
+ set disabled(value: boolean);
40
+ get disabled(): boolean;
41
+ handlePointerEnter(event: UIPointerEvent): void;
42
+ handlePointerLeave(event: UIPointerEvent): void;
43
+ handlePointerDown(event: UIPointerEvent): void;
44
+ handlePointerUp(event: UIPointerEvent): void;
45
+ private _syncLabelColor;
46
+ protected draw(raw: any, localBounds: Rect): void;
47
+ }
48
+ //# sourceMappingURL=UIButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UIButton.d.ts","sourceRoot":"","sources":["../../src/ui/UIButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC5B;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1D;AAED;;;GAGG;AACH,qBAAa,QAAS,SAAQ,SAAS;IAC9B,KAAK,EAAE,aAAa,CAAwB;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,GAAG,IAAI,CAAQ;IAC7B,WAAW,EAAE,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAElD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAEhE,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,UAAU,CAAkB;gBAExB,OAAO,GAAE,eAAoB;IA6DzC,IAAW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAUjC;IAED,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAEM,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAW/C,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAU/C,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAQ9C,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAmBnD,OAAO,CAAC,eAAe;cAQJ,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,GAAG,IAAI;CAkB3D"}