diff options
Diffstat (limited to 'src/net_client.c')
| -rw-r--r-- | src/net_client.c | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/src/net_client.c b/src/net_client.c index e90e583..6b5fa60 100644 --- a/src/net_client.c +++ b/src/net_client.c @@ -9,6 +9,7 @@ #include "net.h" #include "player.h" #include "game.h" +#include "global.h" /** * Client side function; Send hello to server @@ -125,33 +126,28 @@ int client_connect_server(const char* host, const char* port) return sock; } -player_list* client_recv_player_list(const uint8_t* payload, const uint8_t data_len) +void* client_recv_player_list(const uint8_t* payload, const uint8_t data_len) { assert(payload != NULL); - player_list* players; + data_store* ds = datamodel(); uint32_t pos = 0; - players = create_playerlist(); - if(players == NULL) - { - printf("client_recv_player_list: Out of memory\n"); - exit(EXIT_FAILURE); - } - - players->count = payload[pos++]; + ds->players.count = payload[pos++]; // read usernames from buffer - for(int i=0; i<players->count; i++) + for(int i=0; i<ds->players.count; i++) { - /*uint8_t namelen = payload[pos++]; - players->names[i] = malloc(namelen+1); - memcpy(players->names[i], payload+pos, namelen); - players->names[i][namelen] = '\0'; - pos += namelen;*/ + uint8_t namelen; + ds->players.players[i].player_id = payload[pos++]; + namelen = payload[pos++]; + assert(namelen <= MAX_PLAYER_NAME_LENGTH); + strncpy(ds->players.players[i].player_name, payload+pos, namelen); + ds->players.players[i].player_name[namelen] = '\0'; + pos += namelen; } - return players; + return NULL; // TODO return boolean (for success indication) } hand_t *client_recv_deal_cards(const uint8_t* payload, const uint8_t payload_len) |
