From 6082c81076f8364a6e3bc2955b7fd42c7aa955b7 Mon Sep 17 00:00:00 2001
From: Raúl Benencia <rul@kalgan.cc>
Date: Tue, 31 Mar 2015 16:48:22 -0300
Subject: use square getters and setters

---
 lib/board.c | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

(limited to 'lib')

diff --git a/lib/board.c b/lib/board.c
index a4a6c49..e62deca 100644
--- a/lib/board.c
+++ b/lib/board.c
@@ -5,6 +5,7 @@
 #include "coordinate.h"
 #include "move.h"
 #include "piece.h"
+#include "square.h"
 
 static Board _setup_colors(Board b) {
     short i, j;
@@ -13,21 +14,20 @@ static Board _setup_colors(Board b) {
         for (j = 0; j < SIZE; j++)
             if (i % 2)
                 if (j % 2)
-                    b[i][j].color = BLACK;
+                    b[i][j] = square_set_color(b[i][j], BLACK);
                 else
-                    b[i][j].color = WHITE;
+                    b[i][j] = square_set_color(b[i][j], WHITE);
             else
                 if (j % 2)
-                    b[i][j].color = WHITE;
+                    b[i][j] = square_set_color(b[i][j], WHITE);
                 else
-                    b[i][j].color = BLACK;
+                    b[i][j] = square_set_color(b[i][j], BLACK);
 
     return b;
 }
 
 static Board _set_new_piece(Board b, Coord c, Color color, PieceType t) {
-    Square s = board_get_square(b, c);
-    s.piece = piece_new(color, t);
+    Square s = square_set_piece(board_get_square(b, c), piece_new(color, t));
 
     return board_set_square(b, c, s);
 }
@@ -113,7 +113,7 @@ Board board_init() {
     for (i = 0; i < SIZE; i++) {
         b[i] = malloc(sizeof(Square) * SIZE);
         for (j = 0; j < SIZE; j++)
-            b[i][j].piece = NULL;
+            b[i][j] = square_set_piece(b[i][j], NULL);
     }
 
     return _initial_setup(b);
@@ -124,8 +124,9 @@ int board_delete(Board b) {
 
     for (i = 0; i < SIZE; i++) {
         for (j = 0; j < SIZE; j++)
-            if (b[i][j].piece != NULL)
-                free(b[i][j].piece);
+            if (square_get_piece(b[i][j]) != NULL)
+                free(square_get_piece(b[i][j]));
+
         free(b[i]);
     }
 
@@ -153,15 +154,15 @@ Board board_set_square(Board b, Coord c, Square s) {
 Board board_make_move(Board b, Move m) {
     /* Get piece from orig square coordinate */
     Square s = board_get_square(b, move_get_orig(m));
-    Piece *p = s.piece;
+    Piece *p = square_get_piece(s);
 
     /* Empty orig square */
-    s.piece = NULL;
+    s = square_set_piece(s, NULL);
     board_set_square(b, move_get_orig(m), s);
 
     /* Set piece on dest square */
     s = board_get_square(b, move_get_dest(m));
-    s.piece = p;
+    s = square_set_piece(s, p);
     board_set_square(b, move_get_dest(m), s);
 
     return b;
-- 
cgit v1.2.3