Skip to content
This repository has been archived by the owner on Apr 22, 2024. It is now read-only.

Updated take pieces functionality and reorganized modules into subfolders #17

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
756 changes: 29 additions & 727 deletions api/database.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions src/scripts/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@

import {
drawBoard
} from "./modules/drawBoard";
import "./modules/APIinterface";
} from "./modules/DOM/drawBoard";
import "./modules/API/APIinterface";
import "./modules/clickHandler";
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,15 @@ import {
} from "./API";
import {
placePieces
} from "./placePieces";
} from "../placePieces";
import {
makeNewGameData
} from "./newGame";
} from "../newGame";

// Game id is stored in the board's 'data-gameid' attribute

// API.games.read(1)
// .then(placePieces);

makeNewGame();

function makeNewGame() {
Expand All @@ -27,10 +26,8 @@ function fetchGameData(gameID) {

function updateMove(newPieceObject) {
let gameID = parseInt(document.getElementById("board").getAttribute("data-gameid"));
API.games.update(gameID, newPieceObject).then(pieces => {
console.log(pieces);
placePieces(pieces);
});
API.games.update(gameID, newPieceObject)
.then(placePieces);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ module.exports.buildDOMElement = function (tagName, parentElement, id, classArra
element.classList.add(cls);
});
} catch (e) {
console.log("No arguments passed to classArray");
}
if (attributesObject) {
for (const key of Object.keys(attributesObject)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
} from "./buildDOMElement";
import {
getSquareColor
} from "./placePieces";
} from "../placePieces";


drawBoard();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ module.exports.getFontChar = function (piece, color, squareColor) {
let lookup = `${color}${piece.type}`;
let char = values[lookup];

console.log(char);

if (squareColor === "black") char = char.toUpperCase();
return char;
};
Expand Down
13 changes: 2 additions & 11 deletions src/scripts/modules/clickHandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ import {
} from "./showLegalMoves";
import {
movePiece
} from "./movePiece";
} from "./moveHandler/movePiece";

const chessboard = document.getElementById("board");
chessboard.addEventListener("click", clickHandler);


function clickHandler(event) {
let targetSquare = getTargetSquare(event);
let targetSquare = event.target.id;
if (containsActiveColorPiece(targetSquare)) {
setActivePiece(targetSquare);
showLegalMoves(targetSquare);
Expand All @@ -29,15 +29,6 @@ function clickHandler(event) {



function getTargetSquare(event) {
let squareClicked = event.target;
// get square clicked, finding the parent if the square-inner is target
if (squareClicked.classList.contains("square-inner")) {
squareClicked = squareClicked.parentNode;
}
return squareClicked.id;
}

function containsActiveColorPiece(square) {
let activeColor = chessboard.getAttribute("data-turnColor");
let target = document.getElementById(square);
Expand Down
104 changes: 104 additions & 0 deletions src/scripts/modules/moveHandler/movePiece.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
import {
getPieceData
} from "../getPieceData";
import {
fetchGameData,
updateMove
} from "../API/APIinterface";
import {
isOccupied
} from "../possibleMoves/helpers";


module.exports.movePiece = function (targetSquare) {
fetchGameData(getGameID())
.then(gameObject => {
updateMove(updateGameObject(gameObject, targetSquare));
});
};





function updateGameObject(gameObject, targetSquare) {
const myColor = getActiveColor(),
myPieces = gameObject[`${myColor}Pieces`],
enemyColor = getEnemyColor(),
enemyPieces = gameObject[`${enemyColor}Pieces`],
targetElement = document.getElementById(targetSquare);


// Build new object for database
let newGameObject = {
turnColor: enemyColor,
turnNumber: gameObject.turnNumber
};
if (myColor === "black") newGameObject.turnNumber++;


if (isOccupied(targetElement)) {
newGameObject[`${enemyColor}Pieces`] = takeEnemyPiece(targetSquare, enemyPieces);
}

newGameObject[`${myColor}Pieces`] = updateMyPieces(targetSquare, myPieces);

return newGameObject;
}



function updateMyPieces(targetSquare, myPieces) {

let newPieceObject = pieceObjectFactory(targetSquare);
// find piece to update

// remove existing piece from array
let newPieces = myPieces
.filter(piece => piece.id !== newPieceObject.id);
newPieces.push(newPieceObject);

return newPieces;
}



function takeEnemyPiece(targetID, enemyPieces) {
let pieceToRemove = getPieceData(targetID);
return enemyPieces
.filter(piece => piece.id !== pieceToRemove.id);
// Return the modified array
}


function pieceObjectFactory(targetSquare) {
let chessboard = document.getElementById("board"),
activeSquareID = chessboard.getAttribute("data-activesquare-id"),
pieceToMove = getPieceData(activeSquareID),
newSquare = targetSquare.split("--");
// TODO: Check for pawn on last row

return {
type: pieceToMove.type,
x: parseInt(newSquare[1]),
y: parseInt(newSquare[2]),
moved: true,
id: pieceToMove.id
};

}


function getActiveColor() {
return document.getElementById("board").getAttribute("data-turncolor");
}

function getEnemyColor() {
let activeColor = getActiveColor();
if (activeColor === "white") return "black";
else return "white";
}

function getGameID() {
return parseInt(document.getElementById("board").getAttribute("data-gameID"));
}
68 changes: 0 additions & 68 deletions src/scripts/modules/movePiece.js

This file was deleted.

2 changes: 1 addition & 1 deletion src/scripts/modules/newGame.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {
API
} from "./API";
} from "./API/API";
import {
placePieces
} from "./placePieces";
Expand Down
6 changes: 4 additions & 2 deletions src/scripts/modules/placePieces.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {
getFontChar
} from "./font";
} from "./DOM/font";

module.exports.placePieces = function (game) {
clearBoard();
Expand All @@ -23,7 +23,9 @@ module.exports.getSquareColor = function (squareID) {
function clearBoard() {
let squares = document.querySelectorAll(".square");
squares.forEach(square => {
square.classList.remove("occupied", "occupied--white", "occupied--black");
if (square.classList.contains("square-black")) square.innerHTML = "+";
else square.innerHTML = " ";
square.classList.remove("occupied", "occupied--white", "occupied--black", "available", "active");
square.removeAttribute("data-piece");
square.removeAttribute("data-hasmoved");
});
Expand Down