/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); } }