trainsim/state/states/RunningState.ts

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
}
}