summaryrefslogtreecommitdiff
path: root/src/game.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/game.c')
-rw-r--r--src/game.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/game.c b/src/game.c
index 0da39e4..f868cac 100644
--- a/src/game.c
+++ b/src/game.c
@@ -3,6 +3,7 @@
#include "hand.h"
#include <stdlib.h>
#include <stdbool.h>
+#include <string.h>
#include <time.h>
#include <unistd.h>
#include <assert.h>
@@ -31,7 +32,7 @@ static void init_mainstack(card *stack, const uint32_t size)
}
}
-static void main_loop_client()
+static void main_loop_client(int sock)
{
bool running = true;
gamestate state = STATE_CLIENT_WAIT_CARDS;
@@ -113,7 +114,7 @@ static void main_loop_client()
}
-static void main_loop_server()
+static void main_loop_server(socket_list_t* sock)
{
bool running = true;
gamestate state = STATE_SERVER_DEAL_CARDS;
@@ -242,13 +243,25 @@ void start_game(const bool servermode, const char* addr, const char* port)
if(server_process) // Start server and connect to localhost
{
- int ssock;
+ int server_sock;
+ socket_list_t client_socks;
uint8_t num_opponents = 1;
- ssock = server_start(port);
- server_get_players(ssock, num_opponents);
+ server_sock = server_start(port);
+ server_get_players(server_sock, &client_socks, num_opponents);
- main_loop_server();
+ for(int i=0; i<num_opponents; 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++)
+ {
+ net_send(client_socks.sockets[i], msg_type_start_game, NULL);
+ }
+
+ main_loop_server(&client_socks);
}
else // Connect to server
{
@@ -256,7 +269,10 @@ void start_game(const bool servermode, const char* addr, const char* port)
sleep(1); // TODO make sure server process is listening
sock = client_connect_server(addr, port);
- client_hello(sock, "nickname1");
+
+ strncpy(data->nickname, "nickname", 10);
+ //client_hello(sock, "nickname1");
+ //net_send()
net_recv(sock, msg_type_start_game);
net_recv(sock, msg_type_deal_cards);
net_recv(sock, msg_type_init_stacks);
@@ -269,7 +285,7 @@ void start_game(const bool servermode, const char* addr, const char* port)
ui_display_wnd_current_state(pnoc, num_players, 2, score);
ui_display_wnd_hand_cards(&data->hand, false, 0);
- main_loop_client();
+ main_loop_client(sock);
ui_fini();
}