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