src/main.c

changeset 5
f7dfef88947d
parent 4
560e07f7a6a1
child 7
41468077b5bb
     1.1 --- a/src/main.c	Mon Mar 17 14:35:53 2014 +0100
     1.2 +++ b/src/main.c	Mon Mar 17 15:39:36 2014 +0100
     1.3 @@ -31,7 +31,6 @@
     1.4  #include <string.h>
     1.5  #include <time.h>
     1.6  #include <ncurses.h>
     1.7 -#include "input.h"
     1.8  
     1.9  int get_settings(int argc, char **argv, Settings *settings) {
    1.10      char *valid;
    1.11 @@ -126,17 +125,6 @@
    1.12      refresh();
    1.13  }
    1.14  
    1.15 -int cleanup(Settings *settings, int exitcode) {
    1.16 -
    1.17 -    if (settings->server) {
    1.18 -        if (net_destroy(settings->server)) {
    1.19 -            perror("Server shutdown failed");
    1.20 -        }
    1.21 -    }
    1.22 -    
    1.23 -    return exitcode;
    1.24 -}
    1.25 -
    1.26  static WINDOW* window;
    1.27  
    1.28  void leavescr() {
    1.29 @@ -179,88 +167,6 @@
    1.30      cbreak();
    1.31      atexit(leavescr);
    1.32      
    1.33 -    Server server;
    1.34 -    settings.server = &server;
    1.35 -    
    1.36 -    if (is_server(&settings)) {
    1.37 -        dump_gameinfo(&(settings.gameinfo));
    1.38 -        printw("\nListening for client...\n");
    1.39 -        refresh();
    1.40 -        if (net_create(&server, settings.port)) {
    1.41 -            perror("Server creation failed");
    1.42 -            return cleanup(&settings, EXIT_FAILURE);
    1.43 -        }
    1.44 -        
    1.45 -        if (net_listen(&server)) {
    1.46 -            perror("Listening for client failed");
    1.47 -            return cleanup(&settings, EXIT_FAILURE);
    1.48 -        }
    1.49 -        
    1.50 -        /* net version handshake */
    1.51 -        int fd = server.client->fd;
    1.52 -        net_send_code(fd, NETCODE_VERSION);
    1.53 -        if (net_recieve_code(fd) != NETCODE_VERSION) {
    1.54 -            fprintf(stderr, "Client uses an incompatible software version.\n");
    1.55 -            return cleanup(&settings, EXIT_FAILURE);
    1.56 -        }
    1.57 -        
    1.58 -        printw("Client connected - transmitting gameinfo...");
    1.59 -        refresh();
    1.60 -        
    1.61 -        
    1.62 -        net_send_code(fd, NETCODE_GAMEINFO);
    1.63 -        net_send_data(fd, &(settings.gameinfo), sizeof(settings.gameinfo));
    1.64 -        printw("\rClient connected - awaiting challenge acceptance...");
    1.65 -        refresh();
    1.66 -        int code = net_recieve_code(fd);
    1.67 -        if (code == NETCODE_ACCEPT) {
    1.68 -            printw("\rClient connected - challenge accepted.");
    1.69 -            clrtoeol();
    1.70 -        } else if (code == NETCODE_DECLINE) {
    1.71 -            printw("\rClient connected - challenge declined.");
    1.72 -            clrtoeol();
    1.73 -        } else {
    1.74 -            fprintf(stderr, "Invalid client response\n");
    1.75 -            return cleanup(&settings, EXIT_FAILURE);
    1.76 -        }
    1.77 -    } else {
    1.78 -        if (net_find(&server, settings.serverhost, settings.port)) {
    1.79 -            fprintf(stderr, "Can't find server\n");
    1.80 -            return cleanup(&settings, EXIT_FAILURE);
    1.81 -        }
    1.82 -        
    1.83 -        if (net_connect(&server)) {
    1.84 -            perror("Can't connect to server");
    1.85 -            return cleanup(&settings, EXIT_FAILURE);
    1.86 -        }
    1.87 -        
    1.88 -        int fd = server.fd;
    1.89 -        if (net_recieve_code(fd) != NETCODE_VERSION) {
    1.90 -            fprintf(stderr, "Server uses an incompatible software version.\n");
    1.91 -            return cleanup(&settings, EXIT_FAILURE);
    1.92 -        } else {
    1.93 -            net_send_code(fd, NETCODE_VERSION);
    1.94 -        }
    1.95 -
    1.96 -        printw("Connection established!\n\n");
    1.97 -        refresh();
    1.98 -        
    1.99 -        if (net_recieve_code(fd) == NETCODE_GAMEINFO) {
   1.100 -            net_recieve_data(fd, &(settings.gameinfo),
   1.101 -                sizeof(settings.gameinfo));
   1.102 -            dump_gameinfo(&(settings.gameinfo));
   1.103 -            printw("Accept challenge (y/n)? ");
   1.104 -            if (prompt_yesno()) {
   1.105 -                net_send_code(fd, NETCODE_ACCEPT);
   1.106 -                // TODO: start game
   1.107 -            } else {
   1.108 -                net_send_code(fd, NETCODE_DECLINE);
   1.109 -            }
   1.110 -        } else {
   1.111 -            fprintf(stderr, "Server sent invalid gameinfo.\n");
   1.112 -        }
   1.113 -    }
   1.114 -    
   1.115 -    return cleanup(&settings, EXIT_SUCCESS);
   1.116 +    return is_server(&settings) ? server_run(&settings) : client_run(&settings);
   1.117  }
   1.118  

mercurial