/src/script/move.ts
import { ScriptInstruction, InstructionStatus, InstructionPromise } from './'; import gs from '../gamestate'; import { Direction, directionToDelta } from '../direction'; export class MoveInstruction implements ScriptInstruction { direction?: Direction; newPosition?: [number, number]; constructor(d: Direction | number, e?: number) { if (typeof e == 'undefined') { this.direction = d; } else { this.newPosition = [d, e]; } } execute(): InstructionPromise { if (typeof this.direction != 'undefined') { const [dx, dy] = directionToDelta(this.direction); gs.movePlayerRel(dx, dy); } else { gs.movePlayer(this.newPosition[0], this.newPosition[1]); } return Promise.resolve({ status: InstructionStatus.OK }); } }