Stabilize resources
This commit is contained in:
parent
1d3882e954
commit
1c22edaac1
|
|
@ -2,7 +2,6 @@ import type { Class } from "@common/types";
|
|||
|
||||
export namespace Resources {
|
||||
const resources = new Map<Function, Map<string, any>>();
|
||||
let resourceId = 0;
|
||||
|
||||
export function get<T>(id: string): T | undefined;
|
||||
export function get<T>(ctor: Class<T>, id: string): T | undefined;
|
||||
|
|
@ -22,16 +21,12 @@ export namespace Resources {
|
|||
return resources.get(ctor)?.get(id) as T;
|
||||
}
|
||||
|
||||
export function set<T>(id: string, value: NonNullable<T>): void {
|
||||
export function add<T>(id: string, value: NonNullable<T>): string {
|
||||
const ctor = value.constructor;
|
||||
const namespace: Map<string, T> = resources.get(ctor) ?? new Map();
|
||||
if (namespace.has(id)) throw new Error(`Resource "${id}" is already registered`);
|
||||
namespace.set(id, value);
|
||||
resources.set(ctor, namespace);
|
||||
}
|
||||
|
||||
export function add<T>(value: NonNullable<T>): string {
|
||||
const id = `__resource_${resourceId++}`;
|
||||
Resources.set(id, value);
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
|
@ -2,29 +2,21 @@ import { Color, TextRegion } from "@common/display/text"
|
|||
import { Resources } from "@common/rpg/utils/resources";
|
||||
|
||||
export const PLAYER_SPRITE = [
|
||||
new TextRegion('@', Color.YELLOW)
|
||||
].map(Resources.add);
|
||||
Resources.add("player", new TextRegion('@', Color.YELLOW)),
|
||||
];
|
||||
|
||||
export const DOOR_SPRITE = [
|
||||
new TextRegion('┘ └'),
|
||||
new TextRegion([
|
||||
'└',
|
||||
' ',
|
||||
'┌',
|
||||
]),
|
||||
new TextRegion('┐ ┌'),
|
||||
new TextRegion([
|
||||
'┘',
|
||||
' ',
|
||||
'┐',
|
||||
]),
|
||||
new TextRegion('^', Color.CYAN),
|
||||
new TextRegion('_', Color.GREEN),
|
||||
].map(Resources.add);
|
||||
Resources.add("door_n", new TextRegion('┘ └')),
|
||||
Resources.add("door_e", new TextRegion(['└', ' ', '┌'])),
|
||||
Resources.add("door_s", new TextRegion('┐ ┌')),
|
||||
Resources.add("door_w", new TextRegion(['┘', ' ', '┐'])),
|
||||
Resources.add("door_u", new TextRegion('^', Color.CYAN)),
|
||||
Resources.add("door_d", new TextRegion('_', Color.GREEN)),
|
||||
];
|
||||
|
||||
export const ITEM_SPRITE = [
|
||||
new TextRegion('ъ', Color.MAGENTA),
|
||||
new TextRegion('ъ', Color.YELLOW),
|
||||
new TextRegion('ъ', Color.CYAN),
|
||||
new TextRegion('ъ', Color.GREEN),
|
||||
].map(Resources.add);
|
||||
Resources.add("key_m", new TextRegion('ъ', Color.MAGENTA)),
|
||||
Resources.add("key_y", new TextRegion('ъ', Color.YELLOW)),
|
||||
Resources.add("key_c", new TextRegion('ъ', Color.CYAN)),
|
||||
Resources.add("key_g", new TextRegion('ъ', Color.GREEN)),
|
||||
];
|
||||
|
|
|
|||
Loading…
Reference in New Issue