From 040d5372c1033bb7c0580ad2c9b6b32f974a20c8 Mon Sep 17 00:00:00 2001 From: Maks Jopek Date: Thu, 29 Apr 2021 20:05:06 +0200 Subject: Version 1.0 --- frontend/ts/logic.ts | 213 +++++++++++++++++++++++++-------------------------- 1 file changed, 103 insertions(+), 110 deletions(-) (limited to 'frontend/ts/logic.ts') diff --git a/frontend/ts/logic.ts b/frontend/ts/logic.ts index 438bd8c..015226e 100644 --- a/frontend/ts/logic.ts +++ b/frontend/ts/logic.ts @@ -1,126 +1,119 @@ import { Coordinates, GameBoard, HomesOrBases, Square, tColors } from "../../helpers/helpersBack"; import Helpers from "../../helpers/helpers.js" export default class Logic { - static moveFromBase(gameBoard: GameBoard, color: tColors,) { - let start: Square, i: number; + static moveFromBase(gameBoard: GameBoard, color: tColors,) { + let start: Square, i: number; - gameBoard.map.forEach((square, j) => { - if (square.start === color) { - start = square; - i = j; - } - }) + gameBoard.map.forEach((square, j) => { + if (square.start === color) { + start = square; + i = j; + } + }) - gameBoard.bases[color as keyof HomesOrBases].forEach((chequer, j) => { - if (chequer.chequer > -1) { - chequer.ghost = { - where: { - from: "base", oldIndex: j, - to: "map", newIndex: i - }, - color: color, - coords: { x: start.x, y: start.y } - }; - } - }) + gameBoard.bases[color as keyof HomesOrBases].forEach((chequer, j) => { + if (chequer.chequer > -1) { + chequer.ghost = { + where: { + from: "base", oldIndex: j, + to: "map", newIndex: i + }, + color: color, + coords: { x: start.x, y: start.y } + }; + } + }) - return gameBoard; - } - static moveInMap(gameBoard: GameBoard, color: tColors, number: number) { - console.log("moveInMap::color ", color) - gameBoard.map.forEach((square, i) => { - if (square.chequers.length > 0 && square.chequers[0].color === color) { - for (let chequer of square.chequers) { - let x: number | undefined, y: number | undefined, coords: Coordinates | undefined, inMap: boolean, - homeIndex: number | undefined, befStart: number | undefined; + return gameBoard; + } + static moveInMap(gameBoard: GameBoard, color: tColors, number: number) { + gameBoard.map.forEach((square, i) => { + if (square.chequers.length > 0 && square.chequers[0].color === color) { + for (let chequer of square.chequers) { + let x: number | undefined, y: number | undefined, coords: Coordinates | undefined, inMap: boolean, + homeIndex: number | undefined, befStart: number | undefined; - if (color !== Helpers.Color.red) { - gameBoard.map.forEach((square, i) => { - if (square.start === color) - befStart = i - 1; - }); - } else { - befStart = gameBoard.map.length - 1; - } - if (befStart === undefined) - throw new Error("before start doesnt exist"); + if (color !== Helpers.Color.red) { + gameBoard.map.forEach((square, i) => { + if (square.start === color) + befStart = i - 1; + }); + } else { + befStart = gameBoard.map.length - 1; + } + if (befStart === undefined) + throw new Error("before start doesnt exist"); - let range = (start: number, end: number) => Array.from(Array(end + 1).keys()).slice(start); - console.log("range ", range(i, i + number)); - console.log("homeIndex ", befStart); - // if(i >= befStart && i + number <= befStart) { - if (range(i, i + number).includes(befStart)) { - // debugger; - // homeIndex = gameBoard.map.length - i - 1 - number - 1; - homeIndex = number - befStart + i - 1; - inMap = false; + let range = (start: number, end: number) => Array.from(Array(end + 1).keys()).slice(start); + // if(i >= befStart && i + number <= befStart) { + if (range(i, i + number).includes(befStart)) { + homeIndex = number - befStart + i - 1; + inMap = false; - if (homeIndex < gameBoard.homes[0].length) { - x = gameBoard.homes[color as keyof HomesOrBases][homeIndex].x; - y = gameBoard.homes[color as keyof HomesOrBases][homeIndex].y; - } - else { - x = y = undefined; - } - console.log("toHome check ", { x, y, homeIndex, befStart }); - } else { - if (i + number >= gameBoard.map.length) { - // debugger; - number += i - gameBoard.map.length - i; //* -$i 'cause adding $i on 62 && 63 - }// i += number - gameBoard.map.length - 1 - number; //* -$number 'cause adding $number on 62 && 63 - console.log("newIndex: ", i + number) - x = gameBoard.map[i + number].x; - y = gameBoard.map[i + number].y; - inMap = true; - } + if (homeIndex < gameBoard.homes[0].length) { + x = gameBoard.homes[color as keyof HomesOrBases][homeIndex].x; + y = gameBoard.homes[color as keyof HomesOrBases][homeIndex].y; + } + else { + x = y = undefined; + } + } else { + if (i + number >= gameBoard.map.length) + number += i - gameBoard.map.length - i; //* -$i 'cause adding $i on 62 && 63 - if (x === undefined || y === undefined) - coords = undefined; - else - coords = { x, y }; + x = gameBoard.map[i + number].x; + y = gameBoard.map[i + number].y; + inMap = true; + } - chequer.ghost = { - where: { - from: "map", oldIndex: i, - to: (inMap === true ? "map" : "home"), newIndex: homeIndex || i + number - }, - color: color, - coords, - } - } - } - }) - return gameBoard; - } - static moveInHome(gameBoard: GameBoard, color: tColors, number: number) { - let home = gameBoard.homes[color as keyof HomesOrBases]; + if (x === undefined || y === undefined) + coords = undefined; + else + coords = { x, y }; - home.forEach((chequer, i) => { - if (chequer.chequer > -1) { - let x: number | undefined, y: number | undefined, coords: Coordinates | undefined; - if (home[i + number] !== undefined) { - x = home[i + number].x; - y = home[i + number].y; - } else { - x = y = undefined; - } + chequer.ghost = { + where: { + from: "map", oldIndex: i, + to: (inMap === true ? "map" : "home"), + newIndex: homeIndex || i + number + }, + color: color, + coords, + } + } + } + }) + return gameBoard; + } + static moveInHome(gameBoard: GameBoard, color: tColors, number: number) { + let home = gameBoard.homes[color as keyof HomesOrBases]; - if (x === undefined || y === undefined) - coords = undefined; - else - coords = { x, y }; + home.forEach((chequer, i) => { + if (chequer.chequer > -1) { + let x: number | undefined, y: number | undefined, coords: Coordinates | undefined; + if (home[i + number] !== undefined) { + x = home[i + number].x; + y = home[i + number].y; + } else { + x = y = undefined; + } - chequer.ghost = { - where: { - from: "home", oldIndex: i, - to: "home", newIndex: i + number - }, - color: color, - coords, - }; - } - }); + if (x === undefined || y === undefined) + coords = undefined; + else + coords = { x, y }; + + chequer.ghost = { + where: { + from: "home", oldIndex: i, + to: "home", newIndex: i + number + }, + color: color, + coords, + }; + } + }); - return gameBoard; - } + return gameBoard; + } } \ No newline at end of file -- cgit v1.3.1