X-Git-Url: http://git.shiar.net/netris.git/blobdiff_plain/19e8d14204202ce86590615d9371d4f29072586f..HEAD:/client.c diff --git a/client.c b/client.c index ee27cf0..d4ab95a 100644 --- a/client.c +++ b/client.c @@ -59,7 +59,7 @@ static char *keyNames[KT_numKeys+1] = { "Faster", "Pause", "Redraw", "Say", "Quit", NULL }; -_Sets Sets = {7, 0, 1, 1, 1}; +sets_t Sets = {3, 0, 1, 1, 1}; static char keyTable[KT_numKeys+1]; @@ -217,7 +217,7 @@ static void handle_conffile(char *filename) } //defaults } -static int game_piece(int scr, char shape) +static int player_piece(int scr, char shape) { Players[scr].score.pieces++; { @@ -226,13 +226,13 @@ static int game_piece(int scr, char shape) } Players[scr].curY = Players[scr].boardVisible + 4; Players[scr].curX = Players[scr].boardWidth / 2 - 2; - while (!ShapeVisible(Players[scr].curShape, scr, + while (!shape_visible(Players[scr].curShape, scr, Players[scr].curY, Players[scr].curX)) Players[scr].curY--; - if (!ShapeFits(Players[scr].curShape, scr, + if (!shape_get(Players[scr].curShape, scr, Players[scr].curY, Players[scr].curX)) return 0; - PlotShape(Players[scr].curShape, scr, + shape_draw(Players[scr].curShape, scr, Players[scr].curY, Players[scr].curX, scr == me); return 1; } @@ -252,21 +252,24 @@ static void game_reset(void) lastadd = me; SRandom(Game.seed); + + // speed = MAX(initspeed / SPEEDINC ** (level - 1), SPEEDMINIMUM) Game.speed = Game.initspeed; for (i = 1; i < Players[me].score.level; i++) Game.speed /= SPEEDINC; if (Game.speed < SPEEDMINIMUM) Game.speed = SPEEDMINIMUM; + ResetBaseTime(); //reset timer SetITimer(Game.speed, Game.speed); - Players[me].nextShape = ChooseOption(stdOptions); + Players[me].nextShape = ChooseOption(Game.shapes); for (i = 1; i <= maxPlayer; i++) { Players[i].score.score = Players[i].score.lines = Players[i].score.adds = 0; Players[i].score.pieces = -1; - ClearField(i); + player_empty(i); } //reset all players - InitFields(); + screen_setup(); } static void game_clear(int scr) @@ -278,7 +281,7 @@ static void game_clear(int scr) int linevaluesq[] = { 20, 50, 100, 200, 500, 750, 1000, 1250, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000, 6000, 7500 }; - if ((linesCleared = ClearFullLines(scr)) > 0) { + if ((linesCleared = player_lineclear(scr)) > 0) { if (Game.type == GT_onePlayer) if ((Players[scr].score.lines / 10) < ((Players[scr].score.lines+linesCleared)/10)) { @@ -301,12 +304,12 @@ static void game_clear(int scr) junkLines = linesCleared - (Game.gravity ? 1 : linesCleared < 4); data[0] = junkLines; SendPacket(me, NP_giveJunk, sizeof(data), data); - Message("\\%dYou send %d lines", + msg_add("\\%d" MSG_GAME_LINES_SELF, Players[me].team > 7 ? 7 : Players[me].team, junkLines); } //send junk to others } //multiplayer else { - Message("\\%dYou cleared %d lines", + msg_add("\\%d" MSG_GAME_LINE_SELF, Players[me].team > 7 ? 7 : Players[me].team, linesCleared); } //singleplayer } //IT'S YOU @@ -324,7 +327,7 @@ static void game_loop(void) { switch (cmd) { case CT_quit: - ShowPause(me); + window_msg_status(me); refresh(); gameStatus = 0; return; @@ -332,15 +335,15 @@ static void game_loop(void) if (Players[me].alive <= 0) return; Players[me].flags ^= SCF_paused; if (Game.started > 1) - Message(Players[me].flags & SCF_paused - ? "You paused the game" : "You unpaused the game"); + msg_add(Players[me].flags & SCF_paused + ? MSG_GAME_PAUSE_SELF : MSG_GAME_UNPAUSE_SELF); else - Message(Players[me].flags & SCF_paused - ? "You are not ready" : "You are ready"); + msg_add(Players[me].flags & SCF_paused + ? MSG_GAME_UNREADY_SELF : MSG_GAME_READY_SELF); game_setpaused(); if (Game.type == GT_classicTwo) SendPacket(me, NP_pause, 0, NULL); - ShowPause(me); + window_msg_status(me); changed = 1; return; } @@ -362,7 +365,7 @@ static void game_loop(void) return handle_cmd(i, cmdend + 1); } } - Message("Unknown command /%s", cmd); + msg_add(MSG_CMD_EUNKNOWN, cmd); } void handle_str(char *str) @@ -375,7 +378,7 @@ static void game_loop(void) memmove(chatText, chatText + 1, strlen(chatText)); } - Message("<\\%d%s\\7> %s", + msg_add("<\\%d%s\\7> %s", Players[me].team > 7 ? 7 : Players[me].team, Players[me].name, chatText); if (Game.type == GT_classicTwo) @@ -394,7 +397,7 @@ static void game_loop(void) handle_str(chatText); memset(chatText, 0, sizeof(chatText)); } //say it - else Messagetype(27, -1, NULL); //escape + else msg_add_char(27, -1, NULL); //escape return; } else if (key == 27) //escape @@ -403,7 +406,7 @@ static void game_loop(void) chatText[strlen(chatText) - 1] = 0; else if (strlen(chatText) < MSG_WIDTH-1) //text chatText[strlen(chatText)] = key; - Messagetype(key, strlen(chatText) - 1, chatText); + msg_add_char(key, strlen(chatText) - 1, chatText); return; } //key in chat mode @@ -415,13 +418,13 @@ static void game_loop(void) switch (key) { case KT_redraw: clear(); - InitFields(); + screen_setup(); // ScheduleFullRedraw(); refresh(); return; case KT_say: chatMode = 1; - Messagetype(key, strlen(chatText) - 1, chatText); + msg_add_char(key, strlen(chatText) - 1, chatText); return; case KT_quit: handle_cmd(CT_quit, NULL); @@ -435,20 +438,20 @@ static void game_loop(void) // actions only available while actually playing switch (key) { case KT_left: - if (MovePiece(me, 0, -1) && spied) SendPacket(me, NP_left, 0, NULL); + if (player_move(me, 0, -1) && spied) SendPacket(me, NP_left, 0, NULL); break; case KT_right: - if (MovePiece(me, 0, 1) && spied) SendPacket(me, NP_right, 0, NULL); + if (player_move(me, 0, 1) && spied) SendPacket(me, NP_right, 0, NULL); break; case KT_rotleft: - if (RotatePiece(me, -1) && spied) SendPacket(me, NP_rotleft, 0, NULL); + if (player_rotate(me, -1) && spied) SendPacket(me, NP_rotleft, 0, NULL); break; case KT_rotright: - if (RotatePiece(me, 1) && spied) SendPacket(me, NP_rotright, 0, NULL); + if (player_rotate(me, 1) && spied) SendPacket(me, NP_rotright, 0, NULL); break; case KT_down: SetITimer(Game.speed, Game.speed); - if (MovePiece(me, -1, 0)) { + if (player_move(me, -1, 0)) { if (spied) SendPacket(me, NP_down, 0, NULL); } //move one down else @@ -456,14 +459,14 @@ static void game_loop(void) break; case KT_dropsoft: SetITimer(Game.speed, Game.speed); - if (DropPiece(me)) { + if (player_drop(me)) { if (spied) SendPacket(me, NP_drop, 0, NULL); } else gameStatus = 1; //dropped break; case KT_drop: SetITimer(Game.speed, Game.speed); - if (DropPiece(me)) { + if (player_drop(me)) { if (spied) SendPacket(me, NP_drop, 0, NULL); } gameStatus = 1; // drop @@ -474,7 +477,7 @@ static void game_loop(void) Game.speed = SPEEDMINIMUM; SetITimer(Game.speed, SetITimer(0, 0)); Players[me].score.level++; - ShowScore(me, Players[me].score); + status_draw(me, Players[me].score); changed = 1; break; } @@ -491,26 +494,26 @@ static void game_loop(void) { memcpy(&Players[net.uid].nextShape, net.data, sizeof(Players[0].nextShape)); - game_piece(net.uid, Players[net.uid].curShape); + player_piece(net.uid, Players[net.uid].curShape); break; } case NP_down: - MovePiece(net.uid, -1, 0); + player_move(net.uid, -1, 0); break; case NP_left: - MovePiece(net.uid, 0, -1); + player_move(net.uid, 0, -1); break; case NP_right: - MovePiece(net.uid, 0, 1); + player_move(net.uid, 0, 1); break; case NP_rotleft: - RotatePiece(net.uid, -1); + player_rotate(net.uid, -1); break; case NP_rotright: - RotatePiece(net.uid, 1); + player_rotate(net.uid, 1); break; case NP_drop: - DropPiece(net.uid); + player_drop(net.uid); break; case NP_clear: game_clear(net.uid); @@ -520,7 +523,7 @@ static void game_loop(void) netint4 data[3]; memcpy(data, net.data, sizeof(data)); - InsertJunk(net.uid, Players[data[2]].team, data[0], data[1]); + player_lineadd(net.uid, Players[data[2]].team, data[0], data[1]); break; } //player added junklines case NP_giveJunk: @@ -531,11 +534,11 @@ static void game_loop(void) if (Players[me].alive <= 0) break; memcpy(data, net.data, sizeof(data[0])); column = Random(0, Players[me].boardWidth); - Message("\\%d%s sends %d lines", + msg_add("\\%d" MSG_GAME_LINES, Players[net.uid].team > 7 ? 7 : Players[net.uid].team, Players[net.uid].name, data[0]); lastadd = net.uid; - InsertJunk(me, Players[net.uid].team, data[0], column); + player_lineadd(me, Players[net.uid].team, data[0], column); if (spied) { data[1] = column; data[2] = net.uid; @@ -545,7 +548,7 @@ static void game_loop(void) } //receive junklines case NP_msg: { - Message("<\\%d%s\\7> %s", + msg_add("<\\%d%s\\7> %s", Players[net.uid].team > 7 ? 7 : Players[net.uid].team, Players[net.uid].name, net.data, net.type); break; @@ -556,9 +559,9 @@ static void game_loop(void) Game.started = 2; paused = 0; - Message("The game has started"); + msg_add(MSG_GAME_START); for (i = 1; i < MAX_SCREENS; i++) if (Players[i].alive > 0) - ShowPause(i); + window_msg_status(i); break; } //start game case NP_stop: @@ -568,21 +571,21 @@ static void game_loop(void) float timer; int i; - Message("The game has ended"); + msg_add(MSG_GAME_STOP); timer = CurTimeval() / 1e6; if (timer > 5) { for (i = MAX_SCREENS-1; i > 0; i--) if (Players[i].alive >= 0) { - Message("\\%d%10s%6.1fp%5.1fa", + msg_add("\\%d%10s%6.1fp%5.1fa", Players[i].team > 7 ? 7 : Players[i].team, Players[i].name, Players[i].score.pieces / timer * 60, Players[i].score.adds / timer * 60); if (Players[i].alive > 0) winner = i; } //show player stats if (winner) - Message("%s won after %0.0f'%02d\"", + msg_add(MSG_GAME_WINNER, Players[winner].name, timer / 60, (int)timer % 60); } //show game stats - Message(NULL); + msg_add(NULL); } //game was playing Game.started = 0; memcpy(&Game.seed, net.data, net.size); @@ -595,7 +598,7 @@ static void game_loop(void) } //reset players } game_reset(); //reset everything - ShowTime(); //redraw timer while unpaused + status_tick(); //redraw timer while unpaused game_setpaused(); //pause oldPaused = 0; //reset pause changed = 1; @@ -606,18 +609,18 @@ static void game_loop(void) { if (net.uid>maxPlayer) maxPlayer = net.uid; memcpy(&Players[net.uid], net.data, net.size); - ClearField(net.uid); - InitFields(); + player_empty(net.uid); + screen_setup(); if (Players[net.uid].team > 7) - Message("%s joined the game", Players[net.uid].name); + msg_add(MSG_GAME_JOIN, Players[net.uid].name); else - Message("%s joined %s team", Players[net.uid].name, + msg_add(MSG_GAME_JOIN_TEAM, Players[net.uid].name, teamname[Players[net.uid].team]); if (Players[net.uid].flags & SCF_paused) { game_setpaused(); } //player has paused -// DrawField(net.uid); -// ShowPause(net.uid); +// window_draw(net.uid); +// window_msg_status(net.uid); changed = 1; break; } //player joined @@ -628,13 +631,13 @@ static void game_loop(void) Players[net.uid].flags ^= SCF_paused; if (Game.started > 1) strcpy(s, Players[net.uid].flags&SCF_paused - ? "paused the game" : "unpaused the game"); + ? MSG_GAME_PAUSE : MSG_GAME_UNPAUSE); else strcpy(s, Players[net.uid].flags&SCF_paused - ? "is not ready" : "is ready"); - Message("%s %s", Players[net.uid].name, s); + ? MSG_GAME_UNREADY : MSG_GAME_READY); + msg_add(s, Players[net.uid].name); game_setpaused(); - ShowPause(net.uid); + window_msg_status(net.uid); changed = 1; break; } //(un)pause @@ -643,9 +646,9 @@ static void game_loop(void) game_setpaused(); oldPaused = 0; Players[net.uid].alive = -1; - Message("%s left", Players[net.uid].name); + msg_add(MSG_GAME_PART, Players[net.uid].name); game_setpaused(); - ShowPause(net.uid); + window_msg_status(net.uid); changed = 1; break; case NP_argghhh: @@ -654,17 +657,17 @@ static void game_loop(void) memcpy(&i, net.data, sizeof(i)); Players[net.uid].alive = 0; if (i == me) - Message("\\%dYou fragged %s", + msg_add("\\%d" MSG_GAME_KILL_1_2, Players[me].team > 7 ? 7 : Players[me].team, Players[net.uid].name); else if (i == net.uid) - Message("\\%d%s died", + msg_add("\\%d" MSG_GAME_KILL_2_2, Players[i].team > 7 ? 7 : Players[i].team, Players[i].name); else - Message("\\%d%s fragged %s", + msg_add("\\%d" MSG_GAME_KILL_2_3, Players[i].team > 7 ? 7 : Players[i].team, Players[i].name, Players[net.uid].name); game_setpaused(); - ShowPause(net.uid); + window_msg_status(net.uid); changed = 1; break; } //G/O @@ -681,22 +684,22 @@ static void game_loop(void) while (gameStatus) { gameStatus = 2; if (Players[me].alive > 0) { - if (!game_piece(me, ChooseOption(stdOptions))) { + if (!player_piece(me, ChooseOption(Game.shapes))) { netint4 data[4]; Players[me].alive = 0; - if (lastadd == me) Message("\\%dYou died", + if (lastadd == me) msg_add("\\%d" MSG_GAME_KILL_1_1, Players[me].team > 7 ? 7 : Players[me].team); - else Message("\\%d%s fragged you", + else msg_add("\\%d" MSG_GAME_KILL_2_1, Players[lastadd].team > 7 ? 7 : Players[lastadd].team, Players[lastadd].name); if (Game.type == GT_classicTwo) SendPacket(me, NP_argghhh, sizeof(lastadd), &lastadd); - ShowPause(me); + window_msg_status(me); changed = 1; } //die else { - ShowScore(me, Players[me].score); + status_draw(me, Players[me].score); if (spied) { SendPacket(me, NP_newPiece, sizeof(Players[me].curShape), &Players[me].curShape); } //send new piece @@ -704,10 +707,10 @@ static void game_loop(void) } //new piece while (gameStatus == 2) { for (i = 1; i < MAX_SCREENS; i++) - if (Players[i].alive > 0 && PlayerDisp[i]) - changed |= RefreshBoard(i); + if (Players[i].alive > 0 && window[i].shown) + changed |= player_draw(i); if (changed) { - if (!paused) ShowTime(); + if (!paused) status_tick(); refresh(); changed = 0; } //screen update @@ -720,7 +723,7 @@ static void game_loop(void) switch (WaitMyEvent(&event, EM_any)) { case E_alarm: if (!paused && Players[me].alive > 0) - if (!MovePiece(me, -1, 0)) //move down + if (!player_move(me, -1, 0)) //move down gameStatus = 1; //new piece else if (spied) SendPacket(me, NP_down, 0, NULL); @@ -774,7 +777,7 @@ int main(int argc, char **argv) Players[i].boardHeight = MAX_BOARD_HEIGHT; Players[i].boardVisible = 20; strcpy(Players[i].name, "???"); - ClearField(i); + player_empty(i); } if (!(userName = getenv("LOGNAME")) || !userName[0]) if (!(userName = getenv("USER")) || !userName[0]) @@ -809,10 +812,13 @@ int main(int argc, char **argv) game_loop(); } //client else { + int i; Game.seed = time(0); + for (i = 0; i < sizeof(Game.shapes) / sizeof(Game.shapes[0]); i++) + Game.shapes[i] = 1; Game.started = 2; me = 1; - memcpy(&Players[me], &Players[0], sizeof(_Player)); + memcpy(&Players[me], &Players[0], sizeof(player_t)); Players[me].team = 7; game_loop(); } //singleplay