import { State } from "./machine.ts"; enum States { LOAD, RUNNING, PAUSED, EDIT_TRACK, EDIT_TRAIN, } export class LoadState extends State { override name: States = States.LOAD; override validTransitions: Set = new Set([ States.RUNNING, ]); override update(dt: number): void { throw new Error("Method not implemented."); // TODO // Do nothing } override start(): void { throw new Error("Method not implemented."); // TODO // load track into context // Load trains into context // Load resources into context // Switch to running state } override stop(): void { throw new Error("Method not implemented."); // TODO // Do nothing } } export class RunningState extends State { override name: States = States.RUNNING; override validTransitions: Set = new Set([ States.PAUSED, States.EDIT_TRACK, ]); override update(dt: number): void { throw new Error("Method not implemented."); // TODO // Update trains // Update world // Handle input // Draw (maybe via a layer system that syncs with doodler) // Monitor world events } override start(): void { throw new Error("Method not implemented."); // TODO // Do nothing } override stop(): void { throw new Error("Method not implemented."); // TODO // Do nothing } } export class PausedState extends State { override name: States = States.PAUSED; override validTransitions: Set = new Set([ States.LOAD, States.RUNNING, States.EDIT_TRACK, States.EDIT_TRAIN, ]); override update(dt: number): void { throw new Error("Method not implemented."); // TODO // Handle input // Draw ui } override start(): void { throw new Error("Method not implemented."); // TODO // Save tracks to cache // Save trains to cache // Save resources to cache } override stop(): void { throw new Error("Method not implemented."); // TODO // Do nothing } } export class EditTrackState extends State { override name: States = States.EDIT_TRACK; override validTransitions: Set = new Set([ States.RUNNING, States.PAUSED, ]); override update(dt: number): void { throw new Error("Method not implemented."); // TODO // Handle input // Draw ui // Draw track // Draw track points // Draw track tangents } override start(): void { throw new Error("Method not implemented."); // TODO // Cache trains and save // Stash track in context } override stop(): void { throw new Error("Method not implemented."); } } export class EditTrainState extends State { override name: States = States.EDIT_TRAIN; override validTransitions: Set = new Set([ States.RUNNING, States.PAUSED, ]); override update(dt: number): void { throw new Error("Method not implemented."); } override start(): void { throw new Error("Method not implemented."); // TODO // Cache trains // Stash train in context // Draw track // Draw train (filtered by train ID) } override stop(): void { throw new Error("Method not implemented."); } }