X-Git-Url: http://git.shiar.net/netris.git/blobdiff_plain/eb820d60637feceb84f559675344cf24a2c2f1cd..918eeb55956b4488f005248cdd66303ade5224a8:/client.c diff --git a/client.c b/client.c index 788684c..b8b7eed 100644 --- a/client.c +++ b/client.c @@ -41,7 +41,6 @@ static struct option options[] = { { "level", 1, 0, 'l' }, { "nick", 1, 0, 'n' }, { "team", 1, 0, 't' }, - { "dropmode", 2, 0, 'd' }, { "color", 2, 0, 'C' }, { "slowterm", 2, 0, 'S' }, { "keys", 1, 0, 'k' }, @@ -78,7 +77,7 @@ static int paused = 0; static char lastadd; -void MapKeys(char *newKeys) +void handle_setkeys(char *newKeys) { int i, k, ch; char used[256]; @@ -134,8 +133,6 @@ 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" - " -d, --dropmode\tDrops go into drop mode\n" - " -D, --instadrop\tInstant drop\n" "\n" " -r, --robot \tExecute program to control the game instead of keyboard\n" " -F, --fair-robot\tUse fair robot interface\n" @@ -144,7 +141,7 @@ void Usage(void) ); } -void HandleOption(char tag, char *value) +void handle_arg(char tag, char *value) { switch (tag) { case 'a': //ascii @@ -170,9 +167,6 @@ void HandleOption(char tag, char *value) case 't': //team Players[0].team = atoi(value); break; - case 'd': //dropmode - Sets.dropmode = value ? atoi(value) : 1; - break; case 'C': //color Sets.color = value && strcasecmp(value, "0") ? 1 : 0; break; @@ -180,7 +174,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(); @@ -198,7 +192,7 @@ void HandleOption(char tag, char *value) } } -void ReadConf(char *filename) +void handle_conffile(char *filename) { FILE *file_in; char buf[513]; @@ -219,7 +213,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; } } @@ -229,10 +223,9 @@ void ReadConf(char *filename) else { fprintf(stderr, "Unable to open config file %s.\n", filename); } //defaults - } -int StartNewPiece(int scr, char shape) +int game_piece(int scr, char shape) { Players[scr].score.pieces++; { @@ -252,7 +245,7 @@ int StartNewPiece(int scr, char shape) return 1; } -void checkPaused(void) +void game_setpaused(void) { //check whether anyone paused the game int i; @@ -262,7 +255,7 @@ void checkPaused(void) if (paused) paused = 1; } -void StartGame(void) +void game_reset(void) { //init new game int i; @@ -285,7 +278,7 @@ void StartGame(void) InitFields(); } -void CheckClears(int scr) +void game_clear(int scr) { //check for full lines int linesCleared; int linevalues[] = { 40, 100, 400, 1200, }; //= 50*lines! - 10*(lines==1) @@ -329,11 +322,11 @@ void CheckClears(int scr) } //lines cleared } -void OneGame(void) +void game_loop(void) { - int changed = 0; + bool changed = 0; short gameStatus = 2; //2=loop; 1=new piece; 0=quit - int chatMode = 0; + bool chatMode = 0; char chatText[MSG_WIDTH] = "\0"; void handle_cmd(char cmd, char *arg) @@ -353,7 +346,7 @@ void OneGame(void) else Message(Players[me].flags & SCF_paused ? "You are not ready" : "You are ready"); - checkPaused(); + game_setpaused(); if (game == GT_classicTwo) SendPacket(me, NP_pause, 0, NULL); ShowPause(me); @@ -398,7 +391,7 @@ void OneGame(void) SendPacket(me, NP_msg, strlen(chatText) + 1, chatText); } - void GameKey(char key) + void handle_key(char key) { char *p; @@ -426,7 +419,7 @@ void OneGame(void) if (!(p = strchr(keyTable, tolower(key)))) return; key = p - keyTable; - bool handle_key(char key) + void handle_keycmd(char key) { switch (key) { case KT_redraw: @@ -434,23 +427,18 @@ void OneGame(void) InitFields(); // ScheduleFullRedraw(); refresh(); - return 1; + return; case KT_say: chatMode = 1; Messagetype(key, strlen(chatText) - 1, chatText); - return 1; + return; case KT_quit: handle_cmd(CT_quit, NULL); - return 1; + return; case KT_pause: handle_cmd(CT_pause, NULL); - return 1; - default: - return 0; + return; } - } - // global actions (always possible, even if not playing) - if (handle_key(key)) return; if (Players[me].alive <= 0 || paused) return; // actions only available while actually playing @@ -499,19 +487,20 @@ void OneGame(void) changed = 1; break; } - return; - } //GameKey + } + handle_keycmd(key); + } 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: @@ -533,7 +522,7 @@ void OneGame(void) DropPiece(net.uid); break; case NP_clear: - CheckClears(net.uid); + game_clear(net.uid); break; case NP_insertJunk: { @@ -614,9 +603,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; @@ -637,7 +626,7 @@ void OneGame(void) Message("%s joined %s team", Players[net.uid].name, teams[Players[net.uid].team]); if (Players[net.uid].flags & SCF_paused) { - checkPaused(); + game_setpaused(); } //player has paused // DrawField(net.uid); // ShowPause(net.uid); @@ -656,18 +645,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; @@ -686,27 +675,27 @@ 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); @@ -749,10 +738,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; @@ -770,7 +759,7 @@ GameLoop: } //(un)pause } //game loop Players[me].score.score++; - CheckClears(me); + game_clear(me); } //new piece loop gameOver: SetITimer(0, 0); @@ -785,7 +774,7 @@ int main(int argc, char **argv) maxPlayer = 1; Game.initspeed = DEFAULT_INTERVAL; Game.gravity = 0; - MapKeys(DEFAULT_KEYS); + handle_setkeys(DEFAULT_KEYS); { int i; char *userName; @@ -805,17 +794,16 @@ int main(int argc, char **argv) strncpy(Players[0].name, userName, 16); //sizeof(Player.name) Players[0].name[16] = 0; Players[0].alive = 1; - Players[0].dropmode = 0; } //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:odDSCap:i:l:t:", options, NULL + 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); @@ -829,8 +817,8 @@ int main(int argc, char **argv) InitiateConnection(hostStr, port); HandShake(); maxPlayer = me; - checkPaused(); - OneGame(); + game_setpaused(); + game_loop(); } //client else { Game.seed = time(0); @@ -838,7 +826,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; }