code cosmetics: fix indentation
[netris.git] / server.c
index 39222bf6da6623ee14838c5bd426cae2ab8c6c7c..39a28a0676f68b53d81bd5a83b06cb82e9d1a64b 100644 (file)
--- a/server.c
+++ b/server.c
@@ -15,8 +15,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * $Id: game.c,v 1.39 1999/05/16 06:56:27 mhw Exp $
  */
 
 #define NOEXT
 #define HEADER_SIZE sizeof(netint4[3])
 
 static struct option options[] = {
-       { "wait",               0, 0, 'w' },
-       { "port",               1, 0, 'p' },
-       { "quadra",             1, 0, 'q' },
-       { "min-players",1, 0, 'm' },
-       { "max-players",1, 0, 'x' },
-       { "continuous", 1, 0, 'c' },
-       { "speed",              1, 0, 'i' },
-       { "seed",               1, 0, 's' },
-       { "verbose",    0, 0, 'v' },
-       { "info",               0, 0, 'H' },
-       { "help",               0, 0, 'h' },
-       { 0,                    0, 0,  0 }
+       { "wait",        0, 0, 'w' },
+       { "port",        1, 0, 'p' },
+       { "quadra",      1, 0, 'q' },
+       { "min-players", 1, 0, 'm' },
+       { "max-players", 1, 0, 'x' },
+       { "continuous",  1, 0, 'c' },
+       { "speed",       1, 0, 'i' },
+       { "seed",        1, 0, 's' },
+       { "verbose",     0, 0, 'v' },
+       { "info",        0, 0, 'H' },
+       { "help",        0, 0, 'h' },
+       { 0,             0, 0,  0  }
 };
 
 static char minplayers = 2;
@@ -61,15 +59,18 @@ struct sockaddr_in addr;
 
 MyEventType NetGenFunc(EventGenRec *gen, MyEvent *event);
 static EventGenRec netGen[MAX_SCREENS] = {
-       { NULL, 0, FT_read, -1, NetGenFunc, EM_net, 0, "\0", 0, HEADER_SIZE } };
+       { NULL, 0, FT_read, -1, NetGenFunc, EM_net, 0, "\0", 0, HEADER_SIZE }
+};
 
 static MyEventType AlarmGenFunc(EventGenRec *gen, MyEvent *event);
-static EventGenRec alarmGen =
-       { &alarmGen, 0, FT_read, -1, AlarmGenFunc, EM_alarm };
+static EventGenRec alarmGen = {
+       &alarmGen, 0, FT_read, -1, AlarmGenFunc, EM_alarm
+};
 
 static MyEventType ConnGenFunc(EventGenRec *gen, MyEvent *event);
-static EventGenRec connGen =
-       { NULL, 0, FT_read, -1, ConnGenFunc, EM_connect };
+static EventGenRec connGen = {
+       NULL, 0, FT_read, -1, ConnGenFunc, EM_connect
+};
 
 static EventGenRec *nextGen = &alarmGen;
 
@@ -91,12 +92,12 @@ void SendPacketTo(short playa, short uid, NetPacketType type, int size, void *da
                if (size > 0 && data && MyWrite(netGen[playa].fd, data, size) != size)
                        die("write");
        }
-} //SendPacketTo
+}
 
 static MyEventType AlarmGenFunc(EventGenRec *gen, MyEvent *event)
 {
        return E_alarm;
-} //AlarmGenFunc
+}
 
 void SCloseNet(short playa)
 { //kick some connection's ass!
@@ -105,14 +106,14 @@ void SCloseNet(short playa)
        if (netGen[playa].fd >= 0) {
                if (Players[playa].alive >= 0) {
                        SendPacketTo(playa, 0, NP_endConn, 0, NULL);
-                       do{} while (WaitMyEvent(&event, EM_net) != E_lostConn);
+                       do {} while (WaitMyEvent(&event, EM_net) != E_lostConn);
                } //say bye to player
                close(netGen[playa].fd);
                netGen[playa].fd = -1;
        }
        if (netGen[playa].next)
                RemoveEventGen(&netGen[playa]);
-} //SCloseNet
+}
 
 void CloseNets(void)
 { //nou oogjes dicht en snaveltjes toe
@@ -122,7 +123,7 @@ void CloseNets(void)
        for (i = 1; i < MAX_SCREENS; i++)
                SCloseNet(i); //bye everybuddy
        fprintf(stderr, "* All Done\n\n");
-} //CloseNets
+}
 
 MyEventType NetGenFunc(EventGenRec *gen, MyEvent *event)
 { //receive
@@ -158,7 +159,7 @@ MyEventType NetGenFunc(EventGenRec *gen, MyEvent *event)
                return E_lostConn;
        } //client sent quit signal
        return E_net;
-} //NetGenFunc
+}
 
 
 static MyEventType ConnGenFunc(EventGenRec *gen, MyEvent *event)
@@ -182,22 +183,22 @@ static MyEventType ConnGenFunc(EventGenRec *gen, MyEvent *event)
                sizeof(val2));
        AddEventGen(&netGen[new]);
        netGen[new].player = event->u.net.uid = new;
-                       { //new connection; netGen already initialized in GenFunc
-                               struct hostent *host;
-
-                               sprintf(Players[new].host, "%s", inet_ntoa(addr.sin_addr));
-                               if (addr.sin_family == AF_INET) {
-                                       host = gethostbyaddr((void *)&addr.sin_addr,
-                                                       sizeof(struct in_addr), AF_INET);
-                                       if (host) {
-                                               strncpy(Players[new].host, host->h_name,
-                                                       sizeof(Players[new].host) - 1);
-                                               Players[new].host[sizeof(Players[new].host) - 1] = 0;
-                                       } //set player's hostname
-                               }
-                       } //E_connect
+       { //new connection; netGen already initialized in GenFunc
+               struct hostent *host;
+
+               sprintf(Players[new].host, "%s", inet_ntoa(addr.sin_addr));
+               if (addr.sin_family == AF_INET) {
+                       host = gethostbyaddr((void *)&addr.sin_addr,
+                                                                sizeof(struct in_addr), AF_INET);
+                       if (host) {
+                               strncpy(Players[new].host, host->h_name,
+                                       sizeof(Players[new].host) - 1);
+                               Players[new].host[sizeof(Players[new].host) - 1] = 0;
+                       } //set player's hostname
+               }
+       } //E_connect
        return E_connect;
-} //ConnGenFunc
+}
 
 void CountPlayers(void)
 { //count number of players/teams
@@ -211,7 +212,7 @@ void CountPlayers(void)
                        } //player of same team counted before
                playercount++;
        } //player alive
-} //CountPlayers
+}
 
 int StartServer(void)
 {
@@ -220,8 +221,10 @@ int StartServer(void)
        int playersReady = 0;
        int paused = 1;
        int i;
-       char teams[10][7] = { "", "Green", "Cyan", "Blue", "Purple",
-                                                       "Red", "Grey", "White", "*Orange" };
+       char teams[10][7] = {
+               "", "Green", "Cyan", "Blue", "Purple",
+               "Red", "Grey", "White", "*Orange"
+       };
 
        do {
                switch (WaitMyEvent(&event, EM_any)) {
@@ -238,143 +241,143 @@ int StartServer(void)
                                if (verbose) fprintf(stderr, ": %d sent %d\n",
                                        netGen[event.u.net.sender].fd, event.u.net.type);
                                switch(event.u.net.type) {
-                                       case NP_hello:
-//                                             if (event.u.net.type != NP_hello) ByeClient(new);
-                                       {
-                                               netint4 versiondata[2];
-                                               char data[255];
-                                               int major;
-                                               int protocolVersion;
-
-                                               memcpy(versiondata, event.u.net.data,
-                                                       sizeof(versiondata));
-                                               major = ntoh4(versiondata[0]);
-                                               protocolVersion = ntoh4(versiondata[1]);
-                                               if (major != MAJOR_VERSION
-                                               || protocolVersion != PROTOCOL_VERSION) {
-                                                       snprintf(data, sizeof(data),
-                                                               "Version mismatch: received %d.%d",
-                                                               major, protocolVersion);
-                                                       fprintf(stderr, "= Wrong version player #%d (%s)\n",
-                                                               event.u.net.sender, data);
-                                                       SendPacketTo(event.u.net.sender, 0, NP_error,
-                                                               strlen(data)+1, data);
-                                                       SCloseNet(event.u.net.sender);
-                                               } //version mismatch
-                                               fprintf(stderr, "* Accepted player #%d\n",
-                                                       event.u.net.sender);
+                               case NP_hello:
+//                                     if (event.u.net.type != NP_hello) ByeClient(new);
+                               {
+                                       netint4 versiondata[2];
+                                       char data[255];
+                                       int major;
+                                       int protocolVersion;
+
+                                       memcpy(versiondata, event.u.net.data,
+                                               sizeof(versiondata));
+                                       major = ntoh4(versiondata[0]);
+                                       protocolVersion = ntoh4(versiondata[1]);
+                                       if (major != MAJOR_VERSION
+                                        || protocolVersion != PROTOCOL_VERSION) {
+                                               snprintf(data, sizeof(data),
+                                                       "Version mismatch: received %d.%d",
+                                                       major, protocolVersion);
+                                               fprintf(stderr, "= Wrong version player #%d (%s)\n",
+                                                       event.u.net.sender, data);
+                                               SendPacketTo(event.u.net.sender, 0, NP_error,
+                                                       strlen(data)+1, data);
+                                               SCloseNet(event.u.net.sender);
+                                       } //version mismatch
+                                       fprintf(stderr, "* Accepted player #%d\n",
+                                               event.u.net.sender);
+                                       break;
+                               } //NP_hello
+                               case NP_newPlayer:
+                               //receive player details and return other players
+                                       memcpy(&Players[event.u.net.sender],
+                                               event.u.net.data, event.u.net.size);
+                                       if (Players[event.u.net.sender].team < 1
+                                       || Players[event.u.net.sender].team > 7) {
+                                               int team;
+
+                                               for (team = 1; team < 7; team++) {
+                                                       for (i = 1; i < MAX_SCREENS; i++)
+                                                               if ((Players[i].alive > 0) && (Players[i].team == team))
+                                                                       break; //team in use
+                                                       if (i==MAX_SCREENS) break;
+                                               } //find unused team
+                                               Players[event.u.net.sender].team = team;
+                                               SendPacketTo(event.u.net.sender, event.u.net.sender, NP_team,
+                                                       sizeof(Players[event.u.net.sender].team),
+                                                       &Players[event.u.net.sender].team);
+                                       } //invalid team
+                                       if (Game.started < 2)
+                                               Players[event.u.net.sender].flags |= SCF_paused;
+                                       if (!Game.continuous && Game.started >= 2) {
+                                               char data[40];
+                                               strcpy(data, "Can't join: Game has already started");
+                                               fprintf(stderr, "- Can't join player #%d in "
+                                                       "non-continuous game\n", event.u.net.sender);
+                                               SendPacketTo(event.u.net.sender, 0, NP_error,
+                                                       strlen(data)+1, data);
+//                                             SCloseNet(event.u.net.sender, 0);
                                                break;
-                                       } //NP_hello
-                                       case NP_newPlayer:
-                                       //receive player details and return other players
-                                               memcpy(&Players[event.u.net.sender],
-                                                       event.u.net.data, event.u.net.size);
-                                               if (Players[event.u.net.sender].team < 1
-                                               || Players[event.u.net.sender].team > 7) {
-                                                       int team;
-
-                                                       for (team = 1; team < 7; team++) {
-                                                               for (i = 1; i < MAX_SCREENS; i++)
-                                                                       if ((Players[i].alive > 0) && (Players[i].team == team))
-                                                                               break; //team in use
-                                                               if (i==MAX_SCREENS) break;
-                                                       } //find unused team
-                                                       Players[event.u.net.sender].team = team;
-                                                       SendPacketTo(event.u.net.sender, event.u.net.sender, NP_team,
-                                                               sizeof(Players[event.u.net.sender].team),
-                                                               &Players[event.u.net.sender].team);
-                                               } //invalid team
-                                               if (Game.started < 2)
-                                                       Players[event.u.net.sender].flags |= SCF_paused;
-                                               if (!Game.continuous && Game.started >= 2) {
-                                                       char data[40];
-                                                       strcpy(data, "Can't join: Game has already started");
-                                                       fprintf(stderr, "- Can't join player #%d in "
-                                                               "non-continuous game\n", event.u.net.sender);
-                                                       SendPacketTo(event.u.net.sender, 0, NP_error,
-                                                               strlen(data)+1, data);
-//                                                     SCloseNet(event.u.net.sender, 0);
-                                                       break;
-                                               } //can't join started game
-                                               {
-                                                       static struct {
-                                                               int playerflags;
-                                                               int gravity;    //1
-                                                               int started;    //2
-                                                               int continuous; //3
-                                                               long seed;              //4
-                                                               int initspeed;  //5
-                                                       } data;
-
-                                                       memcpy(&data, &Players[event.u.net.sender].flags,
-                                                               sizeof(data.playerflags));
-                                                       memcpy(&data.gravity, &Game,
-                                                               sizeof(data) - sizeof(data.playerflags));
-                                                       SendPacketTo(event.u.net.sender, 0, NP_gamedata,
-                                                               sizeof(data), &data);
-                                               } //send game options
-                                               for (i = 1; i < MAX_SCREENS; i++)
-                                                       if (netGen[i].fd >= 0 && i != event.u.net.sender) {
-                                                               SendPacketTo(event.u.net.sender, i,
-                                                                       NP_newPlayer, sizeof(_Player), &Players[i]);
-                                                               SendPacketTo(event.u.net.sender, i, NP_newPiece,
-                                                                       sizeof(Players[i].curShape), &Players[i].curShape);
-                                                               SendPacketTo(i, event.u.net.sender, NP_newPlayer,
-                                                                       sizeof(_Player), &Players[event.u.net.sender]);
-                                                       } //send (to) players
-                                               fprintf(stderr, "> Joined player #%d: %s <%s> (%s)\n",
-                                                       event.u.net.sender,
-                                                       Players[event.u.net.sender].name,
-                                                       Players[event.u.net.sender].host,
-                                                       teams[Players[event.u.net.sender].team]);
-                                               if (++playersReady >= minplayers) {
-                                                       if (Game.started > 1)
-                                                               SendPacketTo(event.u.net.sender, 0,
-                                                                       NP_start, 0, NULL);
-/*                                                     else {
-                                                               fprintf(stderr, "* Starting game (%010d)\n",
-                                                                       Game.seed);
-                                                               for (i = 1; i < MAX_SCREENS; i++)
-                                                                       SendPacketTo(i, 0, NP_start, 0, NULL);
-                                                               Game.started++;
-                                                       } //first goahead (to all)*/
-                                               } //give go ahead
-                                               break; //NP_playerdata
-                                       case NP_newPiece:
-                                               memcpy(&Players[event.u.net.sender].curShape,
-                                                       event.u.net.data, sizeof(Players[0].curShape));
-                                               goto sendtoall;
-                                       case NP_argghhh:
-                                               Players[event.u.net.sender].alive = 0;
-                                               fprintf(stderr, "< Player #%d died\n",
-                                                       event.u.net.sender);
-                                               //check for unpaused game
-                                       case NP_pause:
+                                       } //can't join started game
                                        {
-                                               Players[event.u.net.sender].flags ^= SCF_paused;
-                                               paused = Game.started < 1;
-                                               for (i = 1; i < MAX_SCREENS; i++)
-                                                       if (Players[i].alive > 0)
-                                                               paused |= Players[i].flags & SCF_paused;
-                                               fprintf(stderr, "* Player #%d (un)paused (pause=%d)\n",
-                                                       event.u.net.sender, paused);
-                                               if (paused) paused = 1;
-                                               goto sendtoall;
-                                       } //NP_pause
-                                       default: //relay data to all players
-                                       sendtoall:
-//                                             if (event.u.net.type >= NP_pause)
-                                               if (event.u.net.type >= NP_rotright
-                                               && Game.started < 2)
-                                                       break;
-                                               for (i = 1; i < MAX_SCREENS; i++)
-                                                       if (i != event.u.net.sender)
-                                                       if (event.u.net.type != NP_giveJunk ||
-                                                       Players[i].team != Players[event.u.net.sender].team)
-                                                               SendPacketTo(i, event.u.net.sender,
-                                                                       event.u.net.type, event.u.net.size,
-                                                                       event.u.net.data);
-                                               break; //>=NP_paused
+                                               static struct {
+                                                       int playerflags;
+                                                       int gravity;    //1
+                                                       int started;    //2
+                                                       int continuous; //3
+                                                       long seed;              //4
+                                                       int initspeed;  //5
+                                               } data;
+
+                                               memcpy(&data, &Players[event.u.net.sender].flags,
+                                                       sizeof(data.playerflags));
+                                               memcpy(&data.gravity, &Game,
+                                                       sizeof(data) - sizeof(data.playerflags));
+                                               SendPacketTo(event.u.net.sender, 0, NP_gamedata,
+                                                       sizeof(data), &data);
+                                       } //send game options
+                                       for (i = 1; i < MAX_SCREENS; i++)
+                                               if (netGen[i].fd >= 0 && i != event.u.net.sender) {
+                                                       SendPacketTo(event.u.net.sender, i,
+                                                               NP_newPlayer, sizeof(_Player), &Players[i]);
+                                                       SendPacketTo(event.u.net.sender, i, NP_newPiece,
+                                                               sizeof(Players[i].curShape), &Players[i].curShape);
+                                                       SendPacketTo(i, event.u.net.sender, NP_newPlayer,
+                                                               sizeof(_Player), &Players[event.u.net.sender]);
+                                               } //send (to) players
+                                       fprintf(stderr, "> Joined player #%d: %s <%s> (%s)\n",
+                                               event.u.net.sender,
+                                               Players[event.u.net.sender].name,
+                                               Players[event.u.net.sender].host,
+                                               teams[Players[event.u.net.sender].team]);
+                                       if (++playersReady >= minplayers) {
+                                               if (Game.started > 1)
+                                                       SendPacketTo(event.u.net.sender, 0,
+                                                               NP_start, 0, NULL);
+/*                                             else {
+                                                       fprintf(stderr, "* Starting game (%010d)\n",
+                                                               Game.seed);
+                                                       for (i = 1; i < MAX_SCREENS; i++)
+                                                               SendPacketTo(i, 0, NP_start, 0, NULL);
+                                                       Game.started++;
+                                               } //first goahead (to all)*/
+                                       } //give go ahead
+                                       break; //NP_playerdata
+                               case NP_newPiece:
+                                       memcpy(&Players[event.u.net.sender].curShape,
+                                               event.u.net.data, sizeof(Players[0].curShape));
+                                       goto sendtoall;
+                               case NP_argghhh:
+                                       Players[event.u.net.sender].alive = 0;
+                                       fprintf(stderr, "< Player #%d died\n",
+                                               event.u.net.sender);
+                                       //check for unpaused game
+                               case NP_pause:
+                               {
+                                       Players[event.u.net.sender].flags ^= SCF_paused;
+                                       paused = Game.started < 1;
+                                       for (i = 1; i < MAX_SCREENS; i++)
+                                               if (Players[i].alive > 0)
+                                                       paused |= Players[i].flags & SCF_paused;
+                                       fprintf(stderr, "* Player #%d (un)paused (pause=%d)\n",
+                                               event.u.net.sender, paused);
+                                       if (paused) paused = 1;
+                                       goto sendtoall;
+                               } //NP_pause
+                               default: //relay data to all players
+                               sendtoall:
+//                                     if (event.u.net.type >= NP_pause)
+                                       if (event.u.net.type >= NP_rotright
+                                        && Game.started < 2)
+                                               break;
+                                       for (i = 1; i < MAX_SCREENS; i++)
+                                               if (i != event.u.net.sender)
+                                               if (event.u.net.type != NP_giveJunk ||
+                                               Players[i].team != Players[event.u.net.sender].team)
+                                                       SendPacketTo(i, event.u.net.sender,
+                                                               event.u.net.type, event.u.net.size,
+                                                               event.u.net.data);
+                                       break; //>=NP_paused
                                }
                                break; //E_net
                        case E_connect:
@@ -418,57 +421,35 @@ int StartServer(void)
                } //game (ready to) start(ed)
        } while (1);
        fprintf(stderr, "* Exiting server\n");
-} //StartServer
+}
 
 
 void SHeader(void)
 {
        fprintf(stderr,
-         "NETRIS Server %s\t(c) 2002 Shiar <shiar@shiar.org>\n\n",
-         version_string);
+               "NETRIS Server %s\t(c) 2002 Shiar <shiar@shiar.org>\n\n",
+               version_string);
 }
 
 void SUsage(void)
 {
        SHeader();
        fprintf(stderr,
-         "Usage: netris <options>\n"
-         "\n"
-         "  -h, --help\t\tPrint this usage information\n"
-         "  -H, --info\t\tShow distribution and warranty information\n"
-         "\n"
-         "  -p, --port <port>\tSet port number (default is %d)\n"
-         "\n"
-         "  -s, --seed <seed>\tStart with given random seed\n"
-         "  -i, --speed <sec>\tSet the initial step-down interval, in seconds\n"
-         "  -m, --min-players <2>\tNumber of players required before starting the game\n"
-         "  -x, --max-players <8>\tMaximum number of players allowed in the game\n"
-         "  -c, --continuous\tDon'n quit the game\n"
-         "\n", DEFAULT_PORT);
+               "Usage: netris <options>\n"
+               "\n"
+               "  -h, --help\t\tPrint this usage information\n"
+               "  -H, --info\t\tShow distribution and warranty information\n"
+               "\n"
+               "  -p, --port <port>\tSet port number (default is %d)\n"
+               "\n"
+               "  -s, --seed <seed>\tStart with given random seed\n"
+               "  -i, --speed <sec>\tSet the initial step-down interval, in seconds\n"
+               "  -m, --min-players <2>\tNumber of players required before starting the game\n"
+               "  -x, --max-players <8>\tMaximum number of players allowed in the game\n"
+               "  -c, --continuous\tDon'n quit the game\n"
+               "\n", DEFAULT_PORT);
 }
 
-/*
-void DistInfo(void)
-{
-       SHeader();
-       fprintf(stderr,
-         "This program is free software; you can redistribute it and/or modify\n"
-         "it under the terms of the GNU General Public License as published by\n"
-         "the Free Software Foundation; either version 2 of the License, or\n"
-         "(at your option) any later version.\n"
-         "\n"
-         "This program is distributed in the hope that it will be useful,\n"
-         "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-         "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
-         "GNU General Public License for more details.\n"
-         "\n"
-         "You should have received a copy of the GNU General Public License\n"
-         "along with this program; if not, write to the Free Software\n"
-         "Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n"
-         "\n");
-} //DistInfo
-*/
-
 void WriteConf(void)
 {
        FILE *file_out;
@@ -483,45 +464,46 @@ void WriteConf(void)
 
        fclose(file_out);
        fprintf(stderr, "Wrote new game configuration to %s\n", CONFIG_FILE);
-} //WriteConf
+}
 
 void HandleOption(char tag, char *value)
 {
        switch (tag) {
-               case 'v':       //verbose
-                       verbose = 1;
-                       break;
-               case 'p':       //port
-                       port = atoi(value);
-                       break;
-               case 'c':       //min-players
-                       Game.continuous = atoi(value);
-                       break;
-               case 'm':       //min-players
-                       minplayers = atoi(value);
-                       break;
-               case 'x':       //max-players
-                       maxplayers = atoi(value);
-                       if (maxplayers >= MAX_SCREENS)
-                               maxplayers = MAX_SCREENS;
-                       break;
-               case 'q':       //quadra-style gravity
-                       Game.gravity ^= 1;
-                       break;
-               case 'i':       //speed (of level 1)
-                       Game.initspeed = atof(value) * 1e6;
-                       break;
-               case 's':       //seed
-                       Game.seed = atoi(value);
-                       break;
-               case 'H':       //info
-                       DistInfo(); exit(0);
-               case 'h':       //help
-                       SUsage(); exit(0);
-               default:
-                       break;
+       case 'v':  //verbose
+               verbose = 1;
+               break;
+       case 'p':  //port
+               port = atoi(value);
+               break;
+       case 'c':  //min-players
+               Game.continuous = atoi(value);
+               break;
+       case 'm':  //min-players
+               minplayers = atoi(value);
+               break;
+       case 'x':  //max-players
+               maxplayers = atoi(value);
+               if (maxplayers >= MAX_SCREENS)
+                       maxplayers = MAX_SCREENS;
+               break;
+       case 'q':  //quadra-style gravity
+               Game.gravity ^= 1;
+               break;
+       case 'i':  //speed (of level 1)
+               Game.initspeed = atof(value) * 1e6;
+               break;
+       case 's':  //seed
+               Game.seed = atoi(value);
+               break;
+       case 'H':  //info
+               SHeader();
+               DistInfo(); exit(0);
+       case 'h':  //help
+               SUsage(); exit(0);
+       default:
+               break;
        }
-} //HandleParam
+}
 
 void ReadConf(char *filename)
 {
@@ -537,8 +519,8 @@ void ReadConf(char *filename)
                        if ((ch = strchr(buf, '#')))
                                *ch = '\0'; // truncate string from # char
                        for (i = strlen(buf)-1; i >= 0; i--)
-                               if (buf[i] == ' ' || buf[i] == '\t'
-                               || buf[i] == '\n' || buf[i] == 13)
+                               if (buf[i] == ' '  || buf[i] == '\t'
+                                || buf[i] == '\n' || buf[i] == 13)
                                        buf[i] = '\0';
                                else break;
 
@@ -556,7 +538,7 @@ void ReadConf(char *filename)
                fprintf(stderr, "Unable to open config file %s.\n", filename);
        } //defaults
 
-} //ReadConf
+}
 
 void CatchInt(int sig)
 {
@@ -585,8 +567,9 @@ int main(int argc, char **argv)
 //             ReadConf(optarg);
 //     else
        ReadConf(CONFIG_FILE);
-       while ((ch = getopt_long(argc, argv,
-                       "hHvqp:i:s:c:m:x:", options, NULL)) != -1)
+       while ((ch = getopt_long(
+               argc, argv, "hHvqp:i:s:c:m:x:", options, NULL
+       )) != -1)
                HandleOption(ch, optarg);
        if (optind < argc) {
                SUsage();
@@ -616,7 +599,7 @@ int main(int argc, char **argv)
                        die("socket");
                val1 = 1;
                setsockopt(connGen.fd, SOL_SOCKET, SO_REUSEADDR,
-                               (void *)&val1, sizeof(val1));
+                       (void *)&val1, sizeof(val1));
                if (bind(connGen.fd, (struct sockaddr *)&addr, sizeof(addr)) < 0)
                        die("bind");
                if (listen(connGen.fd, 1) < 0)
@@ -630,7 +613,3 @@ int main(int argc, char **argv)
        return 0;
 }
 
-/*
- * vi: ts=4 ai
- * vim: noai si
- */