--- 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; }