52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import { bootstrapInputs } from "../../inputs.ts";
|
|
import { setContextItem } from "../../lib/context.ts";
|
|
import { InputManager } from "../../lib/input.ts";
|
|
import { ResourceManager } from "../../lib/resources.ts";
|
|
import { StraightTrack } from "../../track/shapes.ts";
|
|
import { TrackSystem } from "../../track/system.ts";
|
|
import { State } from "../machine.ts";
|
|
import { States } from "./index.ts";
|
|
|
|
export class LoadState extends State<States> {
|
|
override name: States = States.LOAD;
|
|
override validTransitions: Set<States> = new Set([
|
|
States.RUNNING,
|
|
]);
|
|
|
|
override update(): void {
|
|
// noop
|
|
}
|
|
override start(): void {
|
|
const track = this.loadTrack() ?? new TrackSystem([new StraightTrack()]);
|
|
setContextItem("track", track);
|
|
|
|
const trains = this.loadTrains() ?? [];
|
|
setContextItem("trains", trains);
|
|
|
|
const resources = new ResourceManager();
|
|
setContextItem("resources", resources);
|
|
|
|
const inputManager = new InputManager();
|
|
setContextItem("inputManager", inputManager);
|
|
|
|
bootstrapInputs();
|
|
|
|
this.stateMachine.transitionTo(States.RUNNING);
|
|
}
|
|
override stop(): void {
|
|
// noop
|
|
}
|
|
|
|
private loadTrack() {
|
|
const track = TrackSystem.deserialize(
|
|
JSON.parse(localStorage.getItem("track") || "[]"),
|
|
);
|
|
return track;
|
|
}
|
|
|
|
private loadTrains() {
|
|
const trains = JSON.parse(localStorage.getItem("trains") || "[]");
|
|
return trains;
|
|
}
|
|
}
|