#include #include #include #include #include #include "data_store.h" #include "game.h" static void print_usage(const char* name) { const char* usage = "Usage: %s [-u nickname] [-s server] [-n num_players] -p port\n" "\tserver\t\thostname/address of server; only required on client\n" "\tnum_players\tnumber of players; optional on server (default: 2)\n"; fprintf(stderr, usage, name); exit(EXIT_FAILURE); } int main(int argc, char *argv[]) { int opt; uint8_t num_players = 2; char* port = NULL; char* addr = NULL; bool servermode = true; data_store_t *ds = data_store(); const char* accepted = "u:s:p:n:h"; while((opt = getopt(argc, argv, accepted)) != -1) { switch(opt) { case 'u': // nickname strncpy(ds->nickname, optarg, MAX_PLAYER_NAME_LENGTH); ds->nickname[MAX_PLAYER_NAME_LENGTH] = '\0'; break; case 'p': // port port = optarg; break; case 's': // hostname addr = optarg; servermode = false; break; case 'n': // number of users num_players = atoi(optarg); break; case 'h': // help default: print_usage(argv[0]); break; } } if(port == NULL) print_usage(argv[0]); if(servermode) addr = "localhost"; if(strlen(ds->nickname) == 0) { const char* env_nick = getenv("USER"); strncpy(ds->nickname, (env_nick!=NULL)?env_nick:"hornoxe", MAX_PLAYER_NAME_LENGTH); ds->nickname[MAX_PLAYER_NAME_LENGTH] = '\0'; } start_game(servermode, addr, port, num_players); exit(EXIT_SUCCESS); }