42 lines
1.0 KiB
TypeScript
42 lines
1.0 KiB
TypeScript
import { Direction } from "../constants/Direction";
|
|
import { TrackType } from "../constants/TrackType";
|
|
import { Cell } from "./Cell";
|
|
import { ExternalNode } from "./ExternalNode";
|
|
import { InternalNode } from "./InternalNode";
|
|
|
|
export class PlacedPiece {
|
|
tracks: Set<{
|
|
nodes: {
|
|
firstNode: ExternalNode;
|
|
secondNode: ExternalNode | InternalNode;
|
|
};
|
|
type: TrackType;
|
|
}>;
|
|
internalNode?: InternalNode;
|
|
cell: Cell;
|
|
constructor(
|
|
tracks: Set<{
|
|
nodes: {
|
|
firstNode: ExternalNode;
|
|
secondNode: ExternalNode | InternalNode;
|
|
};
|
|
type: TrackType;
|
|
}>,
|
|
internalNodes: InternalNode | undefined,
|
|
cell: Cell,
|
|
) {
|
|
this.tracks = tracks;
|
|
this.internalNode = internalNodes;
|
|
this.cell = cell;
|
|
}
|
|
|
|
public findTrackForDirection(direction: Direction) {
|
|
return Array.from(this.tracks).find(
|
|
(track) =>
|
|
track.nodes.firstNode.direction === direction ||
|
|
(track.nodes.secondNode instanceof ExternalNode &&
|
|
track.nodes.secondNode.direction === direction),
|
|
);
|
|
}
|
|
}
|