X-Git-Url: http://git.shiar.net/netris.git/blobdiff_plain/eb820d60637feceb84f559675344cf24a2c2f1cd..HEAD:/client.c diff --git a/client.c b/client.c index 788684c..d4ab95a 100644 --- a/client.c +++ b/client.c @@ -41,11 +41,9 @@ 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' }, - { "rules", 0, 0, 'R' }, { "info", 0, 0, 'H' }, { "help", 0, 0, 'h' }, { 0, 0, 0, 0 } @@ -61,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]; @@ -74,11 +72,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]; @@ -114,7 +112,7 @@ void MapKeys(char *newKeys) exit(1); } -void Usage(void) +static void Usage(void) { Header(); fprintf(stderr, @@ -122,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" @@ -134,17 +131,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" - " -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" "\n", DEFAULT_PORT, DEFAULT_KEYS ); } -void HandleOption(char tag, char *value) +static void handle_arg(char tag, char *value) { switch (tag) { case 'a': //ascii @@ -152,7 +144,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 @@ -170,9 +162,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,15 +169,12 @@ 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(); DistInfo(); exit(0); - case 'R': //rules - Rules(); - exit(0); case 'h': //help Usage(); exit(0); @@ -198,7 +184,7 @@ void HandleOption(char tag, char *value) } } -void ReadConf(char *filename) +static void handle_conffile(char *filename) { FILE *file_in; char buf[513]; @@ -219,7 +205,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 +215,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 player_piece(int scr, char shape) { Players[scr].score.pieces++; { @@ -241,51 +226,53 @@ int StartNewPiece(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; } -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; 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(); } -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) @@ -294,8 +281,8 @@ void CheckClears(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 (game == GT_onePlayer) + if ((linesCleared = player_lineclear(scr)) > 0) { + if (Game.type == GT_onePlayer) if ((Players[scr].score.lines / 10) < ((Players[scr].score.lines+linesCleared)/10)) { if ((Game.speed /= SPEEDINC) < SPEEDMINIMUM) @@ -308,7 +295,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; @@ -317,30 +304,30 @@ void CheckClears(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 } //lines cleared } -void OneGame(void) +static 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) { switch (cmd) { case CT_quit: - ShowPause(me); + window_msg_status(me); refresh(); gameStatus = 0; return; @@ -348,15 +335,15 @@ void OneGame(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"); - checkPaused(); - if (game == GT_classicTwo) + 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; } @@ -378,7 +365,7 @@ void OneGame(void) return handle_cmd(i, cmdend + 1); } } - Message("Unknown command /%s", cmd); + msg_add(MSG_CMD_EUNKNOWN, cmd); } void handle_str(char *str) @@ -391,14 +378,14 @@ void OneGame(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 == 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; @@ -410,7 +397,7 @@ void OneGame(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 @@ -419,57 +406,52 @@ void OneGame(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 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: clear(); - InitFields(); + screen_setup(); // ScheduleFullRedraw(); refresh(); - return 1; + return; case KT_say: chatMode = 1; - Messagetype(key, strlen(chatText) - 1, chatText); - return 1; + msg_add_char(key, strlen(chatText) - 1, chatText); + 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 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 @@ -477,70 +459,71 @@ void OneGame(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 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)); Players[me].score.level++; - ShowScore(me, Players[me].score); + status_draw(me, Players[me].score); 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); + 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: - CheckClears(net.uid); + game_clear(net.uid); break; case NP_insertJunk: { 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: @@ -551,11 +534,11 @@ void OneGame(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; @@ -565,7 +548,7 @@ void OneGame(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; @@ -576,9 +559,9 @@ void OneGame(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: @@ -588,21 +571,21 @@ void OneGame(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); @@ -614,9 +597,9 @@ void OneGame(void) Players[i].flags |= SCF_paused; } //reset players } - StartGame(); //reset everything - ShowTime(); //redraw timer while unpaused - checkPaused(); //pause + game_reset(); //reset everything + status_tick(); //redraw timer while unpaused + game_setpaused(); //pause oldPaused = 0; //reset pause changed = 1; gameStatus = 1; @@ -624,23 +607,20 @@ 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); - 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, - teams[Players[net.uid].team]); + msg_add(MSG_GAME_JOIN_TEAM, Players[net.uid].name, + teamname[Players[net.uid].team]); if (Players[net.uid].flags & SCF_paused) { - checkPaused(); + 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 @@ -651,24 +631,24 @@ void OneGame(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); - checkPaused(); - ShowPause(net.uid); + ? MSG_GAME_UNREADY : MSG_GAME_READY); + msg_add(s, Players[net.uid].name); + game_setpaused(); + window_msg_status(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(); - ShowPause(net.uid); + msg_add(MSG_GAME_PART, Players[net.uid].name); + game_setpaused(); + window_msg_status(net.uid); changed = 1; break; case NP_argghhh: @@ -677,49 +657,49 @@ void OneGame(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); - checkPaused(); - ShowPause(net.uid); + game_setpaused(); + window_msg_status(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 (!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 == GT_classicTwo) + 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 @@ -727,10 +707,10 @@ GameLoop: } //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 @@ -743,16 +723,16 @@ GameLoop: 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); 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 +750,7 @@ GameLoop: } //(un)pause } //game loop Players[me].score.score++; - CheckClears(me); + game_clear(me); } //new piece loop gameOver: SetITimer(0, 0); @@ -780,12 +760,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; @@ -797,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]) @@ -805,17 +785,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, "hHk:c:n:oSCap:i:l:t:", options, NULL )) != -1) - HandleOption(ch, optarg); + handle_arg(ch, optarg); if (optind < argc) { Usage(); exit(1); @@ -824,21 +803,24 @@ 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 { + 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; - OneGame(); + game_loop(); } //singleplay return 0; }