summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game.c9
-rw-r--r--src/net.h2
-rw-r--r--src/net_server.c20
-rw-r--r--src/player.c21
-rw-r--r--src/player.h3
5 files changed, 15 insertions, 40 deletions
diff --git a/src/game.c b/src/game.c
index 9cff96e..f4bb226 100644
--- a/src/game.c
+++ b/src/game.c
@@ -245,18 +245,19 @@ void start_game(const bool servermode, const char* addr, const char* port)
{
int server_sock;
socket_list_t client_socks;
- uint8_t num_opponents = 1;
+ uint8_t num_players = 1;
server_sock = server_start(port);
- server_get_players(server_sock, &client_socks, num_opponents);
+ server_get_players(server_sock, &client_socks, num_players);
+ data->players.count = num_players;
- for(int i=0; i<num_opponents; i++)
+ for(int i=0; i<num_players; i++)
{
net_recv(client_socks.sockets[i], msg_type_hello);
printf("Player connected: %s\n", data->players.players[i].player_name);
}
- for(int i=0; i<num_opponents; i++)
+ for(int i=0; i<num_players; i++)
{
net_send(client_socks.sockets[i], msg_type_start_game, NULL);
}
diff --git a/src/net.h b/src/net.h
index 0caaa21..4f140dc 100644
--- a/src/net.h
+++ b/src/net.h
@@ -54,7 +54,7 @@ bool net_send(int sock, const msg_type_t type, void* param);
// Server side functions
int server_start(const char* port);
void server_get_players(int serversock, socket_list_t* client_socks, const uint8_t count);
-char* server_recv_hello(const uint8_t* payload, const uint8_t payload_len);
+bool server_recv_hello(const uint8_t* payload, const uint8_t payload_len);
card* server_recv_selected_card(const uint8_t* payload, const uint8_t payload_len);
uint8_t* server_recv_selected_stack(const uint8_t* payload, const uint8_t payload_len);
uint8_t server_send_start_game(uint8_t* payload, const uint8_t payload_len);
diff --git a/src/net_server.c b/src/net_server.c
index 7127428..327a695 100644
--- a/src/net_server.c
+++ b/src/net_server.c
@@ -108,23 +108,21 @@ void server_get_players(int serversock, socket_list_t* client_socks, const uint8
* @param[in] sock Socket to use
* @return Username of client
*/
-char* server_recv_hello(const uint8_t* payload, const uint8_t payload_len)
+bool server_recv_hello(const uint8_t* payload, const uint8_t payload_len)
{
- assert(payload != NULL);
+ assert(payload != NULL && payload_len < MAX_PLAYER_NAME_LENGTH && payload_len > 0);
- char* name;
+ data_store* ds = datamodel();
- name = malloc(payload_len+1);
- if(name == NULL)
+ for(int i=0; i<ds->players.count; i++)
{
- printf("sender_recv_hello: Out of memory\n");
- exit(EXIT_FAILURE);
+ if(strlen(ds->players.players[i].player_name) > 0) // search for first empty (not yet assigned) slot
+ continue;
+ memcpy(ds->players.players[i].player_name, payload, payload_len);
+ ds->players.players[i].player_name[payload_len] = '\0';
}
- memcpy(name, payload, payload_len);
- name[payload_len] = '\0';
-
- return name;
+ return true;
}
card* server_recv_selected_card(const uint8_t* payload, const uint8_t payload_len)
diff --git a/src/player.c b/src/player.c
deleted file mode 100644
index f4b6490..0000000
--- a/src/player.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "player.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-player_list* create_playerlist(void)
-{
- player_list* pl = malloc(sizeof(player_list));
- memset(pl, 0, sizeof(player_list));
-
- return pl;
-}
-
-void cleanup_playerlist(player_list* pl)
-{
- assert(pl != NULL);
-
- //for(int i=0; i<MAX_PLAYERS; i++)
- // free(pl->names[i]);
- free(pl);
-}
diff --git a/src/player.h b/src/player.h
index aad8fcf..4540702 100644
--- a/src/player.h
+++ b/src/player.h
@@ -12,7 +12,4 @@ typedef struct
pnoc_t players[MAX_PLAYERS];
} player_list;
-player_list* create_playerlist(void);
-void cleanup_playerlist(player_list* pl);
-
#endif // OXEN_PLAYER_H