/src/event.ts
import Storable from './storable';
import { ID, generateID } from './id';
import { Script } from './script';
import gs from './gamestate';
export enum GameEventType {
Enter,
Leave,
Random,
Action,
}
export interface GameEventProperties {
id: ID
type: GameEventType
script: string
title: string
}
export class GameEvent extends Storable {
id: ID
type: GameEventType
script: string
title: string
saveProperties = ['id', 'type', 'script', 'title']
constructor() {
super();
this.id = generateID();
this.type = GameEventType.Random;
this.script = '';
this.title = '';
}
async execute() {
const script = new Script(this.script);
gs.actions.clear();
await script.execute();
gs.showCellActions();
}
getCallback() {
return this.execute.bind(this);
}
store() : GameEventProperties {
return <GameEventProperties>super.store()
}
load(properties: GameEventProperties) {
return super.load(properties);
}
}