From 2e6a4a8761bf037283f7eb8dbfd57ab7b9e977a9 Mon Sep 17 00:00:00 2001 From: eug-vs Date: Sat, 12 Mar 2022 15:10:54 +0300 Subject: refactor: rename Cell -> Tile, Item -> Feature --- src/Cell/Cell.ts | 76 -------------------------------------------------------- 1 file changed, 76 deletions(-) delete mode 100644 src/Cell/Cell.ts (limited to 'src/Cell/Cell.ts') diff --git a/src/Cell/Cell.ts b/src/Cell/Cell.ts deleted file mode 100644 index 70bb792..0000000 --- a/src/Cell/Cell.ts +++ /dev/null @@ -1,76 +0,0 @@ -import _ from 'lodash'; -import Debug, { Debugger } from 'debug'; - -const debug = Debug('cell'); - -export enum Direction { - North, - East, - South, - West -} - -export enum Item { - Empty = " ", - Road = "R", - Town = "T", - River = "I", - Church = "C", -} - -export interface Attachment { - attachTo: Cell; - side: Direction; - cell: Cell; - rotation: number; // Clockwise rotation of a cell -} - - -export default class Cell { - center: Item; - private sides: [Item, Item, Item, Item]; - neighbors: [Cell, Cell, Cell, Cell]; - private orientation: number // amount of 90-degree counter-clockwise rotations from original orientation - shield?: boolean; - - debug: Debugger; - - public constructor(center: Item, sides: [Item, Item, Item, Item], orientation = 0, shield = false) { - this.center = center; - this.sides = sides; - this.shield = shield; - this.orientation = orientation; - } - - print() { - console.log( ` ${this.getSide(Direction.North)} \n${this.getSide(Direction.West)}${this.center}${this.getSide(Direction.East)}\n ${this.getSide(Direction.South)} `); - } - - getSide(direction: Direction) { - return this.sides[(((this.orientation + direction) % 4) + 4) % 4]; - } - - rotate(rotation = 1) { - debug(`Rotating ${rotation} clockwise`) - this.orientation = this.orientation - rotation; - } - - getAttachments(cell: Cell) { - return _.flatten([0, 1, 2, 3].map(side => { - const item = this.getSide(side); - return [0, 1, 2, 3] - .filter(rotation => cell.getSide(side - rotation + 2) === item) - .map(rotation => ({ - cell, - rotation, - side, - attachTo: this as Cell - })) - })); - } - - attach(cell: Cell, side: Direction) { - if (this.neighbors[side]) throw new Error('There is something already attached to this side!'); - this.neighbors[side] = cell; - } -} -- cgit v1.2.3