/src/object.ts
import Storable from './storable';
import { ID, generateID } from './id';
export enum GameObjectType {
Player = 'PLAYER',
Unknown = 'UNKNOWN',
}
export interface GameObjectProperties {
id: ID
type: GameObjectType
name: string
description: string
properties: PropertyBag
}
interface PropertyBag {
[k: string]: number | string
}
export class GameObject extends Storable {
id: ID
type: GameObjectType
name: string
description: string
properties: PropertyBag
saveProperties = ['id', 'type', 'name', 'description', 'properties']
constructor(t: GameObjectType = GameObjectType.Unknown) {
super();
this.id = generateID();
this.type = t;
this.properties = {};
}
set(k: string, v: number | string) {
this.properties[k] = v;
}
get(k: string): number | string {
return this.properties[k];
}
store(): GameObjectProperties {
return <GameObjectProperties>super.store();
}
load(o: GameObjectProperties) {
super.load(o);
}
}