Browse Source
- Refactored AppRuntime to include assetManager and NodeRegistry, improving resource management. - Updated Button component to support visual states and variants, enhancing user interaction. - Modified InitScene and WelcomeScene to utilize appRuntime for asset management and improved layout. - Added energy effect animations to InitScene for a more dynamic user experience. Made-with: Cursormaster
9 changed files with 243 additions and 34 deletions
@ -0,0 +1,41 @@ |
|||
import type { Container } from "pixi.js"; |
|||
|
|||
export class NodeRegistry { |
|||
private readonly nodes = new Map<string, Container>(); |
|||
|
|||
set(key: string, node: Container): void { |
|||
if (!key) { |
|||
throw new Error("NodeRegistry: key cannot be empty"); |
|||
} |
|||
this.nodes.set(key, node); |
|||
} |
|||
|
|||
get<T extends Container = Container>(key: string): T | undefined { |
|||
if (!key) { |
|||
return undefined; |
|||
} |
|||
return this.nodes.get(key) as T | undefined; |
|||
} |
|||
|
|||
has(key: string): boolean { |
|||
if (!key) { |
|||
return false; |
|||
} |
|||
return this.nodes.has(key); |
|||
} |
|||
|
|||
delete(key: string): boolean { |
|||
if (!key) { |
|||
return false; |
|||
} |
|||
return this.nodes.delete(key); |
|||
} |
|||
|
|||
clear(): void { |
|||
this.nodes.clear(); |
|||
} |
|||
|
|||
size(): number { |
|||
return this.nodes.size; |
|||
} |
|||
} |
|||
@ -0,0 +1,31 @@ |
|||
import { describe, expect, it } from "vitest"; |
|||
import { Container } from "pixi.js"; |
|||
import { NodeRegistry } from "@/kernel/NodeRegistry"; |
|||
|
|||
describe("NodeRegistry", () => { |
|||
it("stores and retrieves node references by key", () => { |
|||
const registry = new NodeRegistry(); |
|||
const node = new Container(); |
|||
|
|||
registry.set("hud:score", node); |
|||
|
|||
expect(registry.get("hud:score")).toBe(node); |
|||
expect(registry.has("hud:score")).toBe(true); |
|||
expect(registry.size()).toBe(1); |
|||
}); |
|||
|
|||
it("removes and clears registered nodes", () => { |
|||
const registry = new NodeRegistry(); |
|||
const a = new Container(); |
|||
const b = new Container(); |
|||
|
|||
registry.set("overlay:a", a); |
|||
registry.set("overlay:b", b); |
|||
expect(registry.delete("overlay:a")).toBe(true); |
|||
expect(registry.has("overlay:a")).toBe(false); |
|||
|
|||
registry.clear(); |
|||
expect(registry.has("overlay:b")).toBe(false); |
|||
expect(registry.size()).toBe(0); |
|||
}); |
|||
}); |
|||
Loading…
Reference in new issue