diff options
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 53 |
1 files changed, 50 insertions, 3 deletions
@@ -2,10 +2,12 @@ #include <curses.h> #include "ui.h" #include "game.h" +#include "net.h" +#include "player.h" int main(int argc, char **argv) { - uint16_t port = 0; + char* port = 0; char *addr; bool servermode = false; @@ -16,13 +18,58 @@ int main(int argc, char **argv) } else if (argc == 2) // Server mode { + int ssock; + int* csocks; + struct player_list players; + int opponents = 3; + char* nickname = "deki"; servermode = true; - port = atoi(argv[1]); + port = argv[1]; + + // start listening + ssock = server_start("12345"); + + // accept client connections + csocks = server_get_players(ssock, opponents); + + players.count = opponents + 1; + players.names[0] = nickname; + + for(int i=0; i<opponents; i++) + { + // wait for greeting from client i and read nick + char* name = server_recv(csocks[i], msg_type_hello); + players.names[i+1] = name; + printf("player connected: len:%d, name:%s\n", strlen(name), name); + } + + // start game and send player list to clients + server_start_game(csocks, opponents, &players); + + close(ssock); + free(csocks); } else if (argc == 3) // Client mode { + int sock; + struct player_list* players; + char* nickname = "schnippi"; addr = argv[1]; - port = atoi(argv[2]); + port = argv[2]; + + // connect to server + sock = client_connect_server(addr, port); + + // greet server and tell nickname + client_hello(sock, nickname); + + // retrieve list of all players from server + players = client_recv(sock, msg_type_start_game); + for(int i=0; i<players->count; i++) + printf("Player %d: %s\n", i, players->names[i]); + + close(sock); + free(players); } ui_init(); |
