src/client.c

changeset 51
84f2e380a434
parent 34
c4d4b8a8f902
child 55
54ea19938d57
equal deleted inserted replaced
50:41017d0a72c5 51:84f2e380a434
71 if (client_handshake(&server)) { 71 if (client_handshake(&server)) {
72 net_destroy(&server); 72 net_destroy(&server);
73 return EXIT_FAILURE; 73 return EXIT_FAILURE;
74 } 74 }
75 75
76 if (net_recieve_code(server.fd) == NETCODE_GAMEINFO) { 76 uint8_t code = net_recieve_code(server.fd);
77 net_recieve_data(server.fd, &(settings->gameinfo), 77 if (code == NETCODE_GAMEINFO) {
78 sizeof(settings->gameinfo)); 78 // Start new game
79 net_recieve_data(server.fd, &(settings->gameinfo), sizeof(GameInfo));
79 dump_gameinfo(&(settings->gameinfo)); 80 dump_gameinfo(&(settings->gameinfo));
80 if (prompt_yesno("Accept challenge")) { 81 if (prompt_yesno("Accept challenge")) {
81 net_send_code(server.fd, NETCODE_ACCEPT); 82 net_send_code(server.fd, NETCODE_ACCEPT);
82 game_start(settings, server.fd); 83 game_start(settings, server.fd);
84 } else {
85 net_send_code(server.fd, NETCODE_DECLINE);
86 }
87 } else if (code == NETCODE_PGNDATA) {
88 net_recieve_data(server.fd, &(settings->gameinfo), sizeof(GameInfo));
89 dump_gameinfo(&(settings->gameinfo));
90 uint16_t mc;
91 net_recieve_data(server.fd, &mc, sizeof(mc));
92 Move *moves = calloc(mc, sizeof(Move));
93 net_recieve_data(server.fd, moves, mc*sizeof(Move));
94 GameState continuegame;
95 gamestate_init(&continuegame);
96 for (size_t i = 0 ; i < mc ; i++) {
97 apply_move(&continuegame, &(moves[i]));
98 }
99 free(moves);
100 addch('\n');
101 dump_moveinfo(&continuegame);
102 if (prompt_yesno(
103 "\n\nServer wants to continue a game. Accept challenge")) {
104 net_send_code(server.fd, NETCODE_ACCEPT);
105 game_continue(settings, server.fd, &continuegame);
83 } else { 106 } else {
84 net_send_code(server.fd, NETCODE_DECLINE); 107 net_send_code(server.fd, NETCODE_DECLINE);
85 } 108 }
86 } else { 109 } else {
87 addstr("Server sent invalid gameinfo."); 110 addstr("Server sent invalid gameinfo.");

mercurial