33 lines
872 B
TypeScript
33 lines
872 B
TypeScript
import { getContext } from "../../lib/context.ts";
|
|
import { TrackSystem } from "../../track/system.ts";
|
|
import { Train } from "../../train/train.ts";
|
|
import { State } from "../machine.ts";
|
|
import { States } from "./index.ts";
|
|
|
|
export class RunningState extends State<States> {
|
|
override name: States = States.RUNNING;
|
|
override validTransitions: Set<States> = new Set([
|
|
States.PAUSED,
|
|
States.EDIT_TRACK,
|
|
]);
|
|
override update(dt: number): void {
|
|
const ctx = getContext() as { trains: Train[]; track: TrackSystem };
|
|
// TODO
|
|
// Update trains
|
|
// Update world
|
|
// Handle input
|
|
// Draw (maybe via a layer system that syncs with doodler)
|
|
ctx.track.draw();
|
|
for (const train of ctx.trains) {
|
|
train.draw();
|
|
}
|
|
// Monitor world events
|
|
}
|
|
override start(): void {
|
|
// noop
|
|
}
|
|
override stop(): void {
|
|
// noop
|
|
}
|
|
}
|