140 lines
3.2 KiB
TypeScript
140 lines
3.2 KiB
TypeScript
import { State } from "./machine.ts";
|
|
|
|
enum States {
|
|
LOAD,
|
|
RUNNING,
|
|
PAUSED,
|
|
EDIT_TRACK,
|
|
EDIT_TRAIN,
|
|
}
|
|
|
|
export class LoadState extends State<States> {
|
|
override name: States = States.LOAD;
|
|
override validTransitions: Set<States> = 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<States> {
|
|
override name: States = States.RUNNING;
|
|
override validTransitions: Set<States> = 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<States> {
|
|
override name: States = States.PAUSED;
|
|
override validTransitions: Set<States> = 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<States> {
|
|
override name: States = States.EDIT_TRACK;
|
|
override validTransitions: Set<States> = 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<States> {
|
|
override name: States = States.EDIT_TRAIN;
|
|
override validTransitions: Set<States> = 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.");
|
|
}
|
|
}
|