local player settings together in a struct
[netris.git] / client.c
index b8b7eed3b47c735656f06f88d6fa65d4961e950c..8f2b00b1e81a032e788885b855ffe96466574b05 100644 (file)
--- a/client.c
+++ b/client.c
@@ -44,7 +44,6 @@ static struct option options[] = {
        { "color",              2, 0, 'C' },
        { "slowterm",   2, 0, 'S' },
        { "keys",               1, 0, 'k' },
-       { "rules",              0, 0, 'R' },
        { "info",               0, 0, 'H' },
        { "help",               0, 0, 'h' },
        { 0,                    0, 0,  0 }
@@ -73,11 +72,11 @@ static char *cmds[] = {
 };
 
 static char *hostStr;
-static int paused = 0;
+static bool paused = 0;
 static char lastadd;
 
 
-void handle_setkeys(char *newKeys)
+static void handle_setkeys(char *newKeys)
 {
        int i, k, ch;
        char used[256];
@@ -113,7 +112,7 @@ void handle_setkeys(char *newKeys)
                exit(1);
 }
 
-void Usage(void)
+static void Usage(void)
 {
        Header();
        fprintf(stderr,
@@ -121,7 +120,6 @@ void Usage(void)
                "\n"
                "  -h, --help\t\tPrint this usage information\n"
                "  -H, --info\t\tShow distribution and warranty information\n"
-               "  -R, --rules\t\tShow game rules\n"
                "\n"
                "  -S, --slowterm\tDisable inverse/bold/color for slow terminals\n"
                "  -a, --ascii\t\tUse ascii characters\n"
@@ -133,15 +131,12 @@ void Usage(void)
                "  -t, --team <team>\tJoin a team (don't receive lines from your teammates)\n"
                "  -l, --level <lvl>\tBegin at a higher level (can be used as handicap)\n"
                "  -k, --keys <keys>\tRemap keys (default is \"%s\" for cursors)\n"
-               "\n"
-               "  -r, --robot <cmd>\tExecute program to control the game instead of keyboard\n"
-               "  -F, --fair-robot\tUse fair robot interface\n"
                "\n",
                DEFAULT_PORT, DEFAULT_KEYS
        );
 }
 
-void handle_arg(char tag, char *value)
+static void handle_arg(char tag, char *value)
 {
        switch (tag) {
        case 'a':       //ascii
@@ -149,7 +144,7 @@ void handle_arg(char tag, char *value)
                Sets.drawstyle &= ~Sets.ascii;
                break;
        case 'c':       //connect
-               game = GT_classicTwo;
+               Game.type = GT_classicTwo;
                hostStr = value;
                break;
        case 'p':       //port
@@ -180,9 +175,6 @@ void handle_arg(char tag, char *value)
                Header();
                DistInfo();
                exit(0);
-       case 'R':       //rules
-               Rules();
-               exit(0);
        case 'h':       //help
                Usage();
                exit(0);
@@ -192,7 +184,7 @@ void handle_arg(char tag, char *value)
        }
 }
 
-void handle_conffile(char *filename)
+static void handle_conffile(char *filename)
 {
        FILE *file_in;
        char buf[513];
@@ -225,7 +217,7 @@ void handle_conffile(char *filename)
        } //defaults
 }
 
-int game_piece(int scr, char shape)
+static int game_piece(int scr, char shape)
 {
        Players[scr].score.pieces++;
        {
@@ -245,17 +237,16 @@ int game_piece(int scr, char shape)
        return 1;
 }
 
-void game_setpaused(void)
+static void game_setpaused(void)
 { //check whether anyone paused the game
        int i;
 
        paused = Game.started < 1;
        for (i = 1; i < MAX_SCREENS; i++) if (Players[i].alive > 0)
-               paused |= Players[i].flags & SCF_paused;
-       if (paused) paused = 1;
+               paused |= (Players[i].flags & SCF_paused) != 0;
 }
 
-void game_reset(void)
+static void game_reset(void)
 { //init new game
        int i;
 
@@ -278,7 +269,7 @@ void game_reset(void)
        InitFields();
 }
 
-void game_clear(int scr)
+static void game_clear(int scr)
 { //check for full lines
        int linesCleared;
        int linevalues[] = { 40, 100, 400, 1200, }; //= 50*lines! - 10*(lines==1)
@@ -288,7 +279,7 @@ void game_clear(int scr)
                              2500, 3000, 3500, 4000, 4500, 5000, 6000, 7500 };
 
        if ((linesCleared = ClearFullLines(scr)) > 0) {
-               if (game == GT_onePlayer)
+               if (Game.type == GT_onePlayer)
                        if ((Players[scr].score.lines / 10) <
                                        ((Players[scr].score.lines+linesCleared)/10)) {
                                if ((Game.speed /= SPEEDINC) < SPEEDMINIMUM)
@@ -301,7 +292,7 @@ void game_clear(int scr)
                Players[scr].score.lines += linesCleared;
                Players[scr].score.adds += linesCleared - (linesCleared < 4); //XXX match handicap
                if (scr == me) {
-                       if (game == GT_classicTwo) {
+                       if (Game.type == GT_classicTwo) {
                                SendPacket(scr, NP_clear, 0, NULL);
                                if (linesCleared > 1) {
                                        short junkLines;
@@ -322,7 +313,7 @@ void game_clear(int scr)
        } //lines cleared
 }
 
-void game_loop(void)
+static void game_loop(void)
 {
        bool changed = 0;
        short gameStatus = 2; //2=loop; 1=new piece; 0=quit
@@ -347,7 +338,7 @@ void game_loop(void)
                                Message(Players[me].flags & SCF_paused
                                        ? "You are not ready" : "You are ready");
                        game_setpaused();
-                       if (game == GT_classicTwo)
+                       if (Game.type == GT_classicTwo)
                                SendPacket(me, NP_pause, 0, NULL);
                        ShowPause(me);
                        changed = 1;
@@ -387,7 +378,7 @@ void game_loop(void)
                Message("<\\%d%s\\7> %s",
                        Players[me].team > 7 ? 7 : Players[me].team,
                        Players[me].name, chatText);
-               if (game == GT_classicTwo)
+               if (Game.type == GT_classicTwo)
                        SendPacket(me, NP_msg, strlen(chatText) + 1, chatText);
        }
 
@@ -478,7 +469,7 @@ void game_loop(void)
                        gameStatus = 1; // drop
                        break;
                case KT_faster:
-                       if (game != GT_onePlayer) break;
+                       if (Game.type != GT_onePlayer) break;
                        if ((Game.speed /= SPEEDINC) < SPEEDMINIMUM)
                                Game.speed = SPEEDMINIMUM;
                        SetITimer(Game.speed, SetITimer(0, 0));
@@ -613,9 +604,6 @@ void game_loop(void)
                } //stop game
                case NP_newPlayer:
                {
-                       char teams[10][7] = { "", "Green", "Cyan", "Blue", "Purple",
-                                                                 "Red", "Grey", "White", "*Orange" };
-
                        if (net.uid>maxPlayer) maxPlayer = net.uid;
                        memcpy(&Players[net.uid], net.data, net.size);
                        ClearField(net.uid);
@@ -624,7 +612,7 @@ void game_loop(void)
                                Message("%s joined the game", Players[net.uid].name);
                        else
                                Message("%s joined %s team", Players[net.uid].name,
-                                       teams[Players[net.uid].team]);
+                                       teamname[Players[net.uid].team]);
                        if (Players[net.uid].flags & SCF_paused) {
                                game_setpaused();
                        } //player has paused
@@ -702,7 +690,7 @@ void game_loop(void)
                                else Message("\\%d%s fragged you",
                                        Players[lastadd].team > 7 ? 7 : Players[lastadd].team,
                                        Players[lastadd].name);
-                               if (game == GT_classicTwo)
+                               if (Game.type == GT_classicTwo)
                                        SendPacket(me, NP_argghhh, sizeof(lastadd), &lastadd);
                                ShowPause(me);
                                changed = 1;
@@ -716,7 +704,7 @@ void game_loop(void)
                } //new piece
                while (gameStatus == 2) {
                        for (i = 1; i < MAX_SCREENS; i++)
-                               if (Players[i].alive > 0 && PlayerDisp[i])
+                               if (Players[i].alive > 0 && window[i].shown)
                                        changed |= RefreshBoard(i);
                        if (changed) {
                                if (!paused) ShowTime();
@@ -769,7 +757,7 @@ int main(int argc, char **argv)
 {
        char ch;
 
-       game = GT_onePlayer;
+       Game.type = GT_onePlayer;
        port = DEFAULT_PORT;
        maxPlayer = 1;
        Game.initspeed = DEFAULT_INTERVAL;
@@ -801,7 +789,7 @@ int main(int argc, char **argv)
 //     else
        handle_conffile(CONFIG_FILE);
        while ((ch = getopt_long(
-               argc, argv, "hHRk:c:n:oSCap:i:l:t:", options, NULL
+               argc, argv, "hHk:c:n:oSCap:i:l:t:", options, NULL
        )) != -1)
                handle_arg(ch, optarg);
        if (optind < argc) {
@@ -812,7 +800,7 @@ int main(int argc, char **argv)
 
        InitScreens();  //setup screen
 
-       if (game == GT_classicTwo) {
+       if (Game.type == GT_classicTwo) {
                spied = 1;
                InitiateConnection(hostStr, port);
                HandShake();