Mert Us Matthew Hannay Logan Starr

Dependencies:   mbed 4DGL-uLCD-SE

Revision:
7:9e01c9a334dc
Parent:
6:1c4dd5e24b8d
Child:
8:928d5d33258f
--- a/main.cpp	Mon Nov 14 21:36:39 2022 +0000
+++ b/main.cpp	Wed Nov 16 01:06:20 2022 +0000
@@ -6,6 +6,8 @@
 
 enum Piece {e, wK, bK, wQ, bQ, wR, bR, wB, bB, wN, bN, w, b};
 
+enum GameState {whiteSelecting, whitePickedUp, blackSelecting, blackPickedUp};
+
 struct pixelCoord {
     uint8_t x;
     uint8_t y;
@@ -489,6 +491,10 @@
     }
 
     // gets the pixel coordinates of the top left of the square
+    pixelCoord getTopLeftOfSquare(boardPos pos)
+    {
+        return getTopLeftOfSquare(pos.row, pos.column);
+    }
     pixelCoord getTopLeftOfSquare(int row, int column)
     {
         pixelCoord topLeft;
@@ -500,6 +506,10 @@
     // PIECE MOVEMENT AND GRAPHICS FUNCTIONS
 
     // returns the piece at a given location
+    Piece getPiece(boardPos pos)
+    {
+        return getPiece(pos.row, pos.column);
+    }
     Piece getPiece(int row, int column)
     {
         return boardState.getPiece(row, column);
@@ -508,6 +518,10 @@
     /*  puts the bit representation of a piece at the set position of the board
         assumes that the position of the board is emptied beforehand
     */
+    void placePieceAndDraw(Piece piece, boardPos pos)
+    {
+        placePieceAndDraw(piece, pos.row, pos.column);
+    }
     void placePieceAndDraw(Piece piece, int row, int column)
     {
         boardState.placePiece(piece, row, column);
@@ -545,6 +559,10 @@
     /*  removes a piece from the set position of the board
         returns the bit representation of the piece
     */
+    Piece removePieceAndDraw(boardPos pos)
+    {
+        return removePieceAndDraw(pos.row, pos.column);
+    }
     Piece removePieceAndDraw(int row, int column)
     {
         Piece removedPiece = boardState.removePiece(row, column);
@@ -562,6 +580,10 @@
     /*  moves a piece from one position to another
         returns the captured piece
     */
+    Piece movePieceAndDraw(boardPos startPos, boardPos endPos)
+    {
+        return movePieceAndDraw(startPos.row, startPos.column, endPos.row, endPos.column);
+    }
     Piece movePieceAndDraw(int startRow, int startColumn, int endRow, int endColumn)
     {
         Piece movingPiece = removePieceAndDraw(startRow, startColumn);
@@ -573,6 +595,10 @@
     // SQUARE BORDER GRAPHICS FUNCTIONS
 
     // removes selection border around square
+    void unselectSquare(boardPos pos)
+    {
+        unselectSquare(pos.row, pos.column);
+    }
     void unselectSquare(int row, int column)
     {
         pixelCoord tl = getTopLeftOfSquare(row, column);
@@ -585,6 +611,11 @@
         uLCD.rectangle(tl.x, tl.y, tl.x + 15, tl.y + 15, color);
     }
 
+    // draws the hover border around square
+    void hoverSquare(boardPos pos)
+    {
+        hoverSquare(pos.row, pos.column);
+    }
     void hoverSquare(int row, int column)
     {
         pixelCoord tl = getTopLeftOfSquare(row, column);
@@ -592,6 +623,10 @@
     }
 
     // draws selection border around square
+    void selectSquare(boardPos pos)
+    {
+        selectSquare(pos.row, pos.column);
+    }
     void selectSquare(int row, int column)
     {
         pixelCoord tl = getTopLeftOfSquare(row, column);
@@ -599,7 +634,78 @@
     }
 };
 
+// game variables
+GameBoard gameBoard;
+GameState state = whiteSelecting;
+boardPos cursorPos = (boardPos)
+{
+    3, 4
+};
+boardPos selectedPos = (boardPos)
+{
+    3, 4
+};
+
+// callbacks
+void joyStickUp()
+{
+    if (cursorPos.row < 7)
+    {
+        boardPos nextPos;
+        nextPos.row = cursorPos.row + 1;
+        nextPos.column = cursorPos.column;
+        gameBoard.unselectSquare(cursorPos);
+        gameBoard.hoverSquare(nextPos);
+        cursorPos = nextPos;
+    }
+}
+
+void joyStickDown()
+{
+    if (cursorPos.row > 0)
+    {
+        boardPos nextPos;
+        nextPos.row = cursorPos.row - 1;
+        nextPos.column = cursorPos.column;
+        gameBoard.unselectSquare(cursorPos);
+        gameBoard.hoverSquare(nextPos);
+        cursorPos = nextPos;
+    }
+}
+
+void joyStickLeft()
+{
+    if (cursorPos.column > 0)
+    {
+        boardPos nextPos;
+        nextPos.row = cursorPos.row;
+        nextPos.column = cursorPos.column - 1;
+        gameBoard.unselectSquare(cursorPos);
+        gameBoard.hoverSquare(nextPos);
+        cursorPos = nextPos;
+    }
+}
+
+void joyStickRight()
+{
+    if (cursorPos.column < 7)
+    {
+        boardPos nextPos;
+        nextPos.row = cursorPos.row;
+        nextPos.column = cursorPos.column + 1;
+        gameBoard.unselectSquare(cursorPos);
+        gameBoard.hoverSquare(nextPos);
+        cursorPos = nextPos;
+    }
+}
+
+void joyStickPressed()
+{
+    // state machine goes here
+}
+
 int main()
 {
+    gameBoard = GameBoard();
     return 0;
 }
\ No newline at end of file