diff --git a/src/common/rpg/components/sprite.ts b/src/common/rpg/components/sprite.ts index 1fa1ad5..4434d5c 100644 --- a/src/common/rpg/components/sprite.ts +++ b/src/common/rpg/components/sprite.ts @@ -27,6 +27,10 @@ export class Sprite extends Component<{ } } } + + get image(): string { + return this.state.frames[this.state.currentFrame]; + } } @component export class Hidden extends Component<{}> { diff --git a/src/common/rpg/systems/render/text.ts b/src/common/rpg/systems/render/text.ts index b6c9efa..3f8911f 100644 --- a/src/common/rpg/systems/render/text.ts +++ b/src/common/rpg/systems/render/text.ts @@ -16,11 +16,16 @@ export class TextDisplaySystem extends System { const sprites = Array.from(world.query(Sprite, Position)).sort((a, b) => a[2].state.z - b[2].state.z); for (const [e, sprite, pos] of sprites) { if (e.has(Hidden)) continue; - const { frames, currentFrame } = sprite.state; + const image = sprite.image; const { x, y } = pos.state; - const data = Resources.get(TextRegion, frames[currentFrame]) ?? new TextRegion(frames[currentFrame]); - this.display.setRegion(x, y, data); + const data = + Resources.get(TextRegion, image) + ?? Resources.get(String, image) + ?? image; + + const region = data instanceof TextRegion ? data : new TextRegion(data); + this.display.setRegion(x, y, region); } } } \ No newline at end of file diff --git a/src/common/rpg/utils/resources.ts b/src/common/rpg/utils/resources.ts index 7017d9b..c5d3de8 100644 --- a/src/common/rpg/utils/resources.ts +++ b/src/common/rpg/utils/resources.ts @@ -4,6 +4,9 @@ export namespace Resources { const resources = new Map>(); export function get(id: string): T | undefined; + export function get(ctor: StringConstructor, id: string): string | undefined; + export function get(ctor: NumberConstructor, id: string): number | undefined; + export function get(ctor: BooleanConstructor, id: string): boolean | undefined; export function get(ctor: Class, id: string): T | undefined; export function get(ctorOrId: Class | string, id?: string): T | undefined { const ctor = typeof ctorOrId === 'string' ? undefined : ctorOrId;