summaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
Diffstat (limited to 'src/net')
-rw-r--r--src/net/client.c13
-rw-r--r--src/net/client.h1
-rw-r--r--src/net/comm.c10
-rw-r--r--src/net/comm.h17
-rw-r--r--src/net/server.c7
-rw-r--r--src/net/server.h1
6 files changed, 38 insertions, 11 deletions
diff --git a/src/net/client.c b/src/net/client.c
index ae0c828..1768926 100644
--- a/src/net/client.c
+++ b/src/net/client.c
@@ -140,11 +140,22 @@ bool client_parse_selected_card_all(const msg_t *m)
return true;
}
+bool client_parse_hello(const msg_t *m)
+{
+ assert(m != NULL);
+ assert(m->hdr.payload_length == 1);
+
+ data_store_t *ds = data_store();
+ ds->own_player_id = m->payload[0];
+
+ return true;
+}
+
void client_prep_hello(msg_t *m)
{
data_store_t *ds = data_store();
uint8_t namelen = strlen(ds->nickname);
- m->hdr.type = msg_type_hello;
+ m->hdr.type = msg_type_hello_c;
memcpy(m->payload, ds->nickname, namelen);
m->hdr.payload_length = namelen;
}
diff --git a/src/net/client.h b/src/net/client.h
index 56b9839..b15e329 100644
--- a/src/net/client.h
+++ b/src/net/client.h
@@ -11,6 +11,7 @@ void client_prep_hello(msg_t *m);
void client_prep_selected_card(msg_t *m);
void client_prep_selected_stack(msg_t *m);
+bool client_parse_hello(const msg_t *m);
bool client_parse_player_list(const msg_t *m);
bool client_parse_deal_hand(const msg_t *m);
bool client_parse_selected_stack(const msg_t *m);
diff --git a/src/net/comm.c b/src/net/comm.c
index ab9f34b..000c96f 100644
--- a/src/net/comm.c
+++ b/src/net/comm.c
@@ -29,9 +29,12 @@ bool net_recv(const int sock, const msg_type_t type)
switch(type)
{
- case msg_type_hello:
+ case msg_type_hello_c:
result = server_parse_hello(&m);
break;
+ case msg_type_hello_s:
+ result = client_parse_hello(&m);
+ break;
case msg_type_start_game:
result = client_parse_player_list(&m);
break;
@@ -73,9 +76,12 @@ bool net_send(const int sock, const msg_type_t type, const void *data)
switch(type)
{
- case msg_type_hello:
+ case msg_type_hello_c:
client_prep_hello(&m);
break;
+ case msg_type_hello_s:
+ server_prep_hello(&m, data);
+ break;
case msg_type_selected_card:
client_prep_selected_card(&m);
break;
diff --git a/src/net/comm.h b/src/net/comm.h
index 0cc5cd2..a014c6d 100644
--- a/src/net/comm.h
+++ b/src/net/comm.h
@@ -15,14 +15,15 @@
typedef enum
{
// Specify message type identifiers here
- msg_type_hello = 0x0,
- msg_type_start_game = 0x1,
- msg_type_deal_hand = 0x2,
- msg_type_initial_stacks = 0x3,
- msg_type_selected_card = 0x4,
- msg_type_selected_card_all = 0x5,
- msg_type_selected_stack_c = 0x6,
- msg_type_selected_stack_s = 0x7,
+ msg_type_hello_c = 0x0,
+ msg_type_hello_s = 0x1,
+ msg_type_start_game = 0x2,
+ msg_type_deal_hand = 0x3,
+ msg_type_initial_stacks = 0x4,
+ msg_type_selected_card = 0x5,
+ msg_type_selected_card_all = 0x6,
+ msg_type_selected_stack_c = 0x7,
+ msg_type_selected_stack_s = 0x8,
} msg_type_t;
// Header format
diff --git a/src/net/server.c b/src/net/server.c
index 2e186d0..7e9a111 100644
--- a/src/net/server.c
+++ b/src/net/server.c
@@ -173,6 +173,13 @@ void server_prep_start_game(msg_t *m)
m->hdr.payload_length = pos;
}
+void server_prep_hello(msg_t *m, const player_list_entry_t* player)
+{
+ m->hdr.type = msg_type_hello_s;
+ m->payload[0] = player->player_id;
+ m->hdr.payload_length = 1;
+}
+
void server_prep_selected_stack(msg_t *m)
{
data_store_t *ds = data_store();
diff --git a/src/net/server.h b/src/net/server.h
index 3522e14..625f24f 100644
--- a/src/net/server.h
+++ b/src/net/server.h
@@ -18,6 +18,7 @@ typedef struct
int server_start(const char* port);
void server_get_players(int serversock, socket_list_t* client_socks, const uint8_t count);
+void server_prep_hello(msg_t *m, const player_list_entry_t* player);
void server_prep_start_game(msg_t *m);
void server_prep_deal_hand(msg_t *m, const hand_t *h);
void server_prep_selected_stack(msg_t *m);