X-Git-Url: http://git.shiar.nl/netris.git/blobdiff_plain/392ee62ca6a0a64356e9a874100c981f70b8611a..406e72f6bc3be827e1202d817677e8af093231dc:/client.c diff --git a/client.c b/client.c index 98b9542..0137572 100644 --- a/client.c +++ b/client.c @@ -73,11 +73,11 @@ static char *cmds[] = { }; static char *hostStr; -static int paused = 0; +static bool paused = 0; static char lastadd; -void MapKeys(char *newKeys) +static void handle_setkeys(char *newKeys) { int i, k, ch; char used[256]; @@ -113,7 +113,7 @@ void MapKeys(char *newKeys) exit(1); } -void Usage(void) +static void Usage(void) { Header(); fprintf(stderr, @@ -133,15 +133,12 @@ void Usage(void) " -t, --team \tJoin a team (don't receive lines from your teammates)\n" " -l, --level \tBegin at a higher level (can be used as handicap)\n" " -k, --keys \tRemap keys (default is \"%s\" for cursors)\n" - "\n" - " -r, --robot \tExecute program to control the game instead of keyboard\n" - " -F, --fair-robot\tUse fair robot interface\n" "\n", DEFAULT_PORT, DEFAULT_KEYS ); } -void HandleOption(char tag, char *value) +static void handle_arg(char tag, char *value) { switch (tag) { case 'a': //ascii @@ -149,7 +146,7 @@ void HandleOption(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 @@ -174,7 +171,7 @@ void HandleOption(char tag, char *value) Sets.standout = value && !strcasecmp(value, "0") ? 1 : 0; break; case 'k': //keys - MapKeys(value); + handle_setkeys(value); break; case 'H': //info Header(); @@ -192,7 +189,7 @@ void HandleOption(char tag, char *value) } } -void ReadConf(char *filename) +static void handle_conffile(char *filename) { FILE *file_in; char buf[513]; @@ -213,7 +210,7 @@ void ReadConf(char *filename) sscanf(buf, "%80[^= \t] = %80[^\n]", tag, value); for (i = 0; options[i].name; i++){ if (!strcasecmp(options[i].name, tag)) { - HandleOption(options[i].val, value); + handle_arg(options[i].val, value); break; } } @@ -223,10 +220,9 @@ void ReadConf(char *filename) else { fprintf(stderr, "Unable to open config file %s.\n", filename); } //defaults - } -int StartNewPiece(int scr, char shape) +static int game_piece(int scr, char shape) { Players[scr].score.pieces++; { @@ -246,17 +242,16 @@ int StartNewPiece(int scr, char shape) return 1; } -void checkPaused(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 StartGame(void) +static void game_reset(void) { //init new game int i; @@ -279,7 +274,7 @@ void StartGame(void) InitFields(); } -void CheckClears(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) @@ -289,7 +284,7 @@ void CheckClears(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) @@ -302,7 +297,7 @@ void CheckClears(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; @@ -323,7 +318,7 @@ void CheckClears(int scr) } //lines cleared } -void OneGame(void) +static void game_loop(void) { bool changed = 0; short gameStatus = 2; //2=loop; 1=new piece; 0=quit @@ -347,8 +342,8 @@ void OneGame(void) else Message(Players[me].flags & SCF_paused ? "You are not ready" : "You are ready"); - checkPaused(); - if (game == GT_classicTwo) + game_setpaused(); + if (Game.type == GT_classicTwo) SendPacket(me, NP_pause, 0, NULL); ShowPause(me); changed = 1; @@ -388,11 +383,11 @@ void OneGame(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); } - void GameKey(char key) + void handle_key(char key) { char *p; @@ -479,7 +474,7 @@ void OneGame(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)); @@ -490,18 +485,18 @@ void OneGame(void) } } handle_keycmd(key); - } //GameKey + } int oldPaused = 0; - void GameNet(_netEvent net) + void handle_net(_netEvent net) { switch(net.type) { case NP_newPiece: { memcpy(&Players[net.uid].nextShape, net.data, sizeof(Players[0].nextShape)); - StartNewPiece(net.uid, Players[net.uid].curShape); + game_piece(net.uid, Players[net.uid].curShape); break; } case NP_down: @@ -523,7 +518,7 @@ void OneGame(void) DropPiece(net.uid); break; case NP_clear: - CheckClears(net.uid); + game_clear(net.uid); break; case NP_insertJunk: { @@ -604,9 +599,9 @@ void OneGame(void) Players[i].flags |= SCF_paused; } //reset players } - StartGame(); //reset everything + game_reset(); //reset everything ShowTime(); //redraw timer while unpaused - checkPaused(); //pause + game_setpaused(); //pause oldPaused = 0; //reset pause changed = 1; gameStatus = 1; @@ -614,9 +609,6 @@ void OneGame(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); @@ -625,9 +617,9 @@ void OneGame(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) { - checkPaused(); + game_setpaused(); } //player has paused // DrawField(net.uid); // ShowPause(net.uid); @@ -646,18 +638,18 @@ void OneGame(void) strcpy(s, Players[net.uid].flags&SCF_paused ? "is not ready" : "is ready"); Message("%s %s", Players[net.uid].name, s); - checkPaused(); + game_setpaused(); ShowPause(net.uid); changed = 1; break; } //(un)pause case NP_part: // player left - checkPaused(); + game_setpaused(); oldPaused = 0; Players[net.uid].alive = -1; Message("%s left", Players[net.uid].name); - checkPaused(); + game_setpaused(); ShowPause(net.uid); changed = 1; break; @@ -676,34 +668,34 @@ void OneGame(void) Message("\\%d%s fragged %s", Players[i].team > 7 ? 7 : Players[i].team, Players[i].name, Players[net.uid].name); - checkPaused(); + game_setpaused(); ShowPause(net.uid); changed = 1; break; } //G/O default: break; - } //E_net - } //GameNet + } + } MyEvent event; long pauseTimeLeft; int i; - StartGame(); + game_reset(); while (gameStatus) { -GameLoop: gameStatus = 2; if (Players[me].alive > 0) { - if (!StartNewPiece(me, ChooseOption(stdOptions))) { - netint4 data[4]; + if (!game_piece(me, ChooseOption(stdOptions))) { + netint4 data[4]; + Players[me].alive = 0; if (lastadd == me) Message("\\%dYou died", Players[me].team > 7 ? 7 : Players[me].team); 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; @@ -739,10 +731,10 @@ GameLoop: if (spied) SendPacket(me, NP_down, 0, NULL); break; case E_key: - GameKey(event.u.key); + handle_key(event.u.key); break; case E_net: - GameNet(event.u.net); + handle_net(event.u.net); break; case E_lostConn: goto gameOver; @@ -760,7 +752,7 @@ GameLoop: } //(un)pause } //game loop Players[me].score.score++; - CheckClears(me); + game_clear(me); } //new piece loop gameOver: SetITimer(0, 0); @@ -770,12 +762,12 @@ int main(int argc, char **argv) { char ch; - game = GT_onePlayer; + Game.type = GT_onePlayer; port = DEFAULT_PORT; maxPlayer = 1; Game.initspeed = DEFAULT_INTERVAL; Game.gravity = 0; - MapKeys(DEFAULT_KEYS); + handle_setkeys(DEFAULT_KEYS); { int i; char *userName; @@ -798,13 +790,13 @@ int main(int argc, char **argv) } //set defaults // if (getopt(argc, argv, "f:") == 'f') -// ReadConf(optarg); +// handle_conffile(optarg); // else - ReadConf(CONFIG_FILE); + handle_conffile(CONFIG_FILE); while ((ch = getopt_long( argc, argv, "hHRk:c:n:oSCap:i:l:t:", options, NULL )) != -1) - HandleOption(ch, optarg); + handle_arg(ch, optarg); if (optind < argc) { Usage(); exit(1); @@ -813,13 +805,13 @@ int main(int argc, char **argv) InitScreens(); //setup screen - if (game == GT_classicTwo) { + if (Game.type == GT_classicTwo) { spied = 1; InitiateConnection(hostStr, port); HandShake(); maxPlayer = me; - checkPaused(); - OneGame(); + game_setpaused(); + game_loop(); } //client else { Game.seed = time(0); @@ -827,7 +819,7 @@ int main(int argc, char **argv) me = 1; memcpy(&Players[me], &Players[0], sizeof(_Player)); Players[me].team = 7; - OneGame(); + game_loop(); } //singleplay return 0; }