diff options
Diffstat (limited to 'src/net')
| -rw-r--r-- | src/net/client.c | 13 | ||||
| -rw-r--r-- | src/net/client.h | 1 | ||||
| -rw-r--r-- | src/net/comm.c | 10 | ||||
| -rw-r--r-- | src/net/comm.h | 17 | ||||
| -rw-r--r-- | src/net/server.c | 7 | ||||
| -rw-r--r-- | src/net/server.h | 1 |
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); |
