diff options
| author | Maks Jopek <maksymilian.jopek@prym-soft.pl> | 2021-05-01 00:20:33 +0200 |
|---|---|---|
| committer | Maks Jopek <maksymilian.jopek@prym-soft.pl> | 2021-05-01 00:20:33 +0200 |
| commit | c813dfadd4b673080695ef3ade37a44e37036c07 (patch) | |
| tree | 4d6348ecad8c65780323ccb823063f335c5c9e7f /frontend/ts/logic.ts | |
| parent | 040d5372c1033bb7c0580ad2c9b6b32f974a20c8 (diff) | |
| download | fia-c813dfadd4b673080695ef3ade37a44e37036c07.tar.gz fia-c813dfadd4b673080695ef3ade37a44e37036c07.tar.zst fia-c813dfadd4b673080695ef3ade37a44e37036c07.zip | |
Version 1.1
Diffstat (limited to 'frontend/ts/logic.ts')
| -rw-r--r-- | frontend/ts/logic.ts | 90 |
1 files changed, 60 insertions, 30 deletions
diff --git a/frontend/ts/logic.ts b/frontend/ts/logic.ts index 015226e..c5d4fb9 100644 --- a/frontend/ts/logic.ts +++ b/frontend/ts/logic.ts @@ -31,7 +31,7 @@ export default class Logic { 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; + homeIndex: number | undefined, befStart: number | undefined, normalTurn = true; if (color !== Helpers.Color.red) { gameBoard.map.forEach((square, i) => { @@ -45,25 +45,41 @@ export default class Logic { throw new Error("before start doesnt exist"); let range = (start: number, end: number) => Array.from(Array(end + 1).keys()).slice(start); - // if(i >= befStart && i + number <= befStart) { + // if(i >= befStart && i + number <= befStart) { + inMap = true; 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; + if (homeIndex !== -1) { + normalTurn = 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; + let homeSquare = gameBoard.homes[color as keyof HomesOrBases][homeIndex]; + if (homeSquare.chequer >= 0) { x = y = homeIndex = undefined; } + } + else { + x = y = undefined; + } } - else { - x = y = undefined; + } + if (normalTurn === true) { + if (homeIndex === -1) { + x = gameBoard.map[befStart].x; + y = gameBoard.map[befStart].y; + inMap = true; + homeIndex = undefined; } - } else { - if (i + number >= gameBoard.map.length) - number += i - gameBoard.map.length - i; //* -$i 'cause adding $i on 62 && 63 + else { + if (i + number >= gameBoard.map.length) + number += i - gameBoard.map.length - i; //* -$i 'cause adding $i on 62 && 63 - x = gameBoard.map[i + number].x; - y = gameBoard.map[i + number].y; - inMap = true; + x = gameBoard.map[i + number].x; + y = gameBoard.map[i + number].y; + inMap = true; + } } if (x === undefined || y === undefined) @@ -71,14 +87,24 @@ export default class Logic { else coords = { x, y }; - chequer.ghost = { - where: { - from: "map", oldIndex: i, - to: (inMap === true ? "map" : "home"), - newIndex: homeIndex || i + number - }, - color: color, - coords, + let newIndex: number; + if (homeIndex !== undefined) + newIndex = homeIndex; + else + newIndex = i + number; + + if (coords !== undefined) { + chequer.ghost = { + where: { + from: "map", oldIndex: i, + to: (inMap === true ? "map" : "home"), + newIndex: newIndex + }, + color: color, + coords, + } + } else { + chequer.ghost = undefined; } } } @@ -91,7 +117,7 @@ export default class Logic { home.forEach((chequer, i) => { if (chequer.chequer > -1) { let x: number | undefined, y: number | undefined, coords: Coordinates | undefined; - if (home[i + number] !== undefined) { + if (home[i + number] !== undefined && home[i + number].chequer < 0) { x = home[i + number].x; y = home[i + number].y; } else { @@ -103,14 +129,18 @@ export default class Logic { else coords = { x, y }; - chequer.ghost = { - where: { - from: "home", oldIndex: i, - to: "home", newIndex: i + number - }, - color: color, - coords, - }; + if (coords !== undefined) { + chequer.ghost = { + where: { + from: "home", oldIndex: i, + to: "home", newIndex: i + number + }, + color: color, + coords, + }; + } else { + chequer.ghost = undefined; + } } }); |
