src/client.c

changeset 83
ead00609e5e6
parent 78
ceb9197b3c6d
--- a/src/client.c	Thu Jun 05 19:05:02 2025 +0200
+++ b/src/client.c	Fri Jun 06 19:19:14 2025 +0200
@@ -76,13 +76,17 @@
     }
 
     uint8_t code = net_recieve_code(server.fd);
+    GameState gamestate;
+    gamestate_init(&gamestate);
+    bool played = false;
     if (code == NETCODE_GAMEINFO) {
         /* Start new game */
         net_recieve_data(server.fd, &(settings->gameinfo), sizeof(GameInfo));
         dump_gameinfo(&(settings->gameinfo));
         if (prompt_yesno("Accept challenge")) {
             net_send_code(server.fd, NETCODE_ACCEPT);
-            game_start(settings, server.fd);
+            game_play(settings, &gamestate, server.fd);
+            played = true;
         } else {
             net_send_code(server.fd, NETCODE_DECLINE);
         }
@@ -93,18 +97,17 @@
         net_recieve_data(server.fd, &mc, sizeof(mc));
         Move *moves = calloc(mc, sizeof(Move));
         net_recieve_data(server.fd, moves, mc*sizeof(Move));
-        GameState continuegame;
-        gamestate_init(&continuegame);
         for (size_t i = 0 ; i < mc ; i++) {
-            apply_move(&continuegame, &(moves[i]));
+            apply_move(&gamestate, &(moves[i]));
         }
         free(moves);
         addch('\n');
-        dump_moveinfo(&continuegame);
+        dump_moveinfo(&gamestate);
         if (prompt_yesno(
                 "\n\nServer wants to continue a game. Accept challenge")) {
             net_send_code(server.fd, NETCODE_ACCEPT);
-            game_continue(settings, server.fd, &continuegame);
+            game_play(settings, &gamestate, server.fd);
+            played = true;
         } else {
             net_send_code(server.fd, NETCODE_DECLINE);
         }
@@ -113,7 +116,11 @@
         net_destroy(&server);
         return 1;
     }
-    
+
+    if (played) {
+        game_review(settings, &gamestate);
+    }
+
     net_destroy(&server);
     return 0;
 }

mercurial