Files
trainsim/src/train/engines.ts
2025-02-16 13:06:52 -07:00

91 lines
1.9 KiB
TypeScript

import { Vector } from "@bearmetal/doodler";
import { TrainCar } from "./train.ts";
import { getContextItem } from "../lib/context.ts";
import { ResourceManager } from "../lib/resources.ts";
export class RedEngine extends TrainCar {
constructor() {
const resources = getContextItem<ResourceManager>("resources");
super(
55,
10,
resources.get<HTMLImageElement>("snr:sprite/engine")!,
80,
20,
{
at: new Vector(0, 60),
width: 80,
height: 20,
},
);
}
}
export class PurpleEngine extends TrainCar {
constructor() {
const resources = getContextItem<ResourceManager>("resources");
super(
55,
10,
resources.get<HTMLImageElement>("snr:sprite/engine")!,
80,
20,
{
at: new Vector(0, 60),
width: 80,
height: 20,
},
);
}
}
export class GreenEngine extends TrainCar {
constructor() {
const resources = getContextItem<ResourceManager>("resources");
super(
55,
10,
resources.get<HTMLImageElement>("snr:sprite/engine")!,
80,
20,
{
at: new Vector(0, 40),
width: 80,
height: 20,
},
);
}
}
export class GrayEngine extends TrainCar {
constructor() {
const resources = getContextItem<ResourceManager>("resources");
super(
55,
10,
resources.get<HTMLImageElement>("snr:sprite/engine")!,
80,
20,
{
at: new Vector(0, 20),
width: 80,
height: 20,
},
);
}
}
export class BlueEngine extends TrainCar {
constructor() {
const resources = getContextItem<ResourceManager>("resources");
super(
55,
10,
resources.get<HTMLImageElement>("snr:sprite/engine")!,
80,
20,
{
at: new Vector(0, 0),
width: 80,
height: 20,
},
);
}
}