201 lines
4.2 KiB
TypeScript
201 lines
4.2 KiB
TypeScript
import { Piece } from "../types/Piece";
|
|
import { Direction } from "./Direction";
|
|
import { InternalNodeType } from "./InternalNodeType";
|
|
import { TrackType } from "./TrackType";
|
|
|
|
const STRAIGHT_RAIL: Piece = new Piece({
|
|
useInternalTracks: false,
|
|
trackDefinitions: [
|
|
{
|
|
startPoint: Direction.NORTH,
|
|
endPoint: Direction.SOUTH,
|
|
type: TrackType.RAIL,
|
|
},
|
|
],
|
|
});
|
|
|
|
const TURN_RAIL: Piece = new Piece({
|
|
useInternalTracks: false,
|
|
trackDefinitions: [
|
|
{
|
|
startPoint: Direction.SOUTH,
|
|
endPoint: Direction.EAST,
|
|
type: TrackType.RAIL,
|
|
},
|
|
],
|
|
});
|
|
const FOUR_WAY_CROSS_RAIL: Piece = new Piece({
|
|
useInternalTracks: true,
|
|
internalNodeType: InternalNodeType.NONE,
|
|
trackDefinitions: [
|
|
{
|
|
startPoint: Direction.NORTH,
|
|
type: TrackType.RAIL,
|
|
},
|
|
{
|
|
startPoint: Direction.EAST,
|
|
type: TrackType.RAIL,
|
|
},
|
|
{
|
|
startPoint: Direction.SOUTH,
|
|
type: TrackType.RAIL,
|
|
},
|
|
{
|
|
startPoint: Direction.WEST,
|
|
type: TrackType.RAIL,
|
|
},
|
|
],
|
|
});
|
|
const T_JUNCTION_RAIL: Piece = new Piece({
|
|
useInternalTracks: true,
|
|
internalNodeType: InternalNodeType.NONE,
|
|
trackDefinitions: [
|
|
{
|
|
startPoint: Direction.WEST,
|
|
type: TrackType.RAIL,
|
|
},
|
|
{
|
|
startPoint: Direction.SOUTH,
|
|
type: TrackType.RAIL,
|
|
},
|
|
{
|
|
startPoint: Direction.EAST,
|
|
type: TrackType.RAIL,
|
|
},
|
|
],
|
|
});
|
|
const DEAD_END_STATION_RAIL: Piece = new Piece({
|
|
useInternalTracks: true,
|
|
internalNodeType: InternalNodeType.STATION,
|
|
trackDefinitions: [
|
|
{
|
|
startPoint: Direction.SOUTH,
|
|
type: TrackType.RAIL,
|
|
},
|
|
],
|
|
});
|
|
const TURN_RAIL_TO_ROAD: Piece = new Piece({
|
|
useInternalTracks: true,
|
|
internalNodeType: InternalNodeType.STATION,
|
|
trackDefinitions: [
|
|
{
|
|
startPoint: Direction.SOUTH,
|
|
type: TrackType.RAIL,
|
|
},
|
|
{
|
|
startPoint: Direction.EAST,
|
|
type: TrackType.ROAD,
|
|
},
|
|
],
|
|
});
|
|
const T_JUNCTION_WITH_ROAD_ON_SIDE: Piece = new Piece({
|
|
useInternalTracks: true,
|
|
internalNodeType: InternalNodeType.STATION,
|
|
trackDefinitions: [
|
|
{
|
|
startPoint: Direction.SOUTH,
|
|
type: TrackType.RAIL,
|
|
},
|
|
{
|
|
startPoint: Direction.WEST,
|
|
type: TrackType.RAIL,
|
|
},
|
|
{
|
|
startPoint: Direction.EAST,
|
|
type: TrackType.ROAD,
|
|
},
|
|
],
|
|
});
|
|
const FOUR_WAY_WITH_ONE_ROAD: Piece = new Piece({
|
|
useInternalTracks: true,
|
|
internalNodeType: InternalNodeType.STATION,
|
|
trackDefinitions: [
|
|
{
|
|
startPoint: Direction.NORTH,
|
|
type: TrackType.RAIL,
|
|
},
|
|
{
|
|
startPoint: Direction.EAST,
|
|
type: TrackType.ROAD,
|
|
},
|
|
{
|
|
startPoint: Direction.SOUTH,
|
|
type: TrackType.RAIL,
|
|
},
|
|
{
|
|
startPoint: Direction.WEST,
|
|
type: TrackType.RAIL,
|
|
},
|
|
],
|
|
});
|
|
const T_JUNCTION_WITH_ROAD_AT_CENTER: Piece = new Piece({
|
|
useInternalTracks: true,
|
|
internalNodeType: InternalNodeType.STATION,
|
|
trackDefinitions: [
|
|
{
|
|
startPoint: Direction.NORTH,
|
|
type: TrackType.RAIL,
|
|
},
|
|
{
|
|
startPoint: Direction.EAST,
|
|
type: TrackType.ROAD,
|
|
},
|
|
{
|
|
startPoint: Direction.SOUTH,
|
|
type: TrackType.RAIL,
|
|
},
|
|
],
|
|
});
|
|
const STRAIGHT_TRACK_CHANGE: Piece = new Piece({
|
|
useInternalTracks: true,
|
|
internalNodeType: InternalNodeType.STATION,
|
|
trackDefinitions: [
|
|
{
|
|
startPoint: Direction.EAST,
|
|
type: TrackType.ROAD,
|
|
},
|
|
{
|
|
startPoint: Direction.WEST,
|
|
type: TrackType.RAIL,
|
|
},
|
|
],
|
|
});
|
|
|
|
export enum PieceId {
|
|
P01 = "P01",
|
|
P02 = "P02",
|
|
P03 = "P03",
|
|
P04 = "P04",
|
|
P05 = "P05",
|
|
P06 = "P06",
|
|
P07 = "P07",
|
|
P08 = "P08",
|
|
P09 = "P09",
|
|
P10 = "P10",
|
|
P11 = "P11",
|
|
P12 = "P12",
|
|
P13 = "P13",
|
|
P14 = "P14",
|
|
P15 = "P15",
|
|
P16 = "P16",
|
|
P17 = "P17",
|
|
P18 = "P18",
|
|
P19 = "P19",
|
|
P20 = "P20",
|
|
P21 = "P21",
|
|
P22 = "P22",
|
|
}
|
|
|
|
export const pieceMap: Record<PieceId, Piece> = {
|
|
[PieceId.P01]: STRAIGHT_RAIL,
|
|
[PieceId.P02]: TURN_RAIL,
|
|
[PieceId.P03]: FOUR_WAY_CROSS_RAIL,
|
|
[PieceId.P04]: T_JUNCTION_RAIL,
|
|
[PieceId.P05]: DEAD_END_STATION_RAIL,
|
|
[PieceId.P06]: TURN_RAIL_TO_ROAD,
|
|
[PieceId.P07]: T_JUNCTION_WITH_ROAD_ON_SIDE,
|
|
[PieceId.P08]: FOUR_WAY_WITH_ONE_ROAD,
|
|
[PieceId.P09]: T_JUNCTION_WITH_ROAD_AT_CENTER,
|
|
[PieceId.P10]: STRAIGHT_TRACK_CHANGE,
|
|
};
|