summaryrefslogtreecommitdiff
path: root/src/net_client.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/net_client.c')
-rw-r--r--src/net_client.c30
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)