- p = cmd + strlen(cmd);
- for (key = 0; keyNames[key]; ++key)
- if (!strcmp(keyNames[key], cmd) &&
- (fairRobot || (1 == sscanf(p, "%d", &num) &&
- num == pieceCount)))
- goto keyEvent;
- if (!strcmp(cmd, "Message")) {
- Messagef(p);
- changed = 1;
- }
- break;
- } //E_robot
- case E_net:
- switch(event.u.net.type) {
- case NP_newPiece:
- {
- short shapeNum;
- netint2 data[1];
-
- FreezePiece(event.u.net.uid);
- memcpy(data, event.u.net.data, sizeof(data));
- shapeNum = ntoh2(data[0]);
- StartNewPiece(event.u.net.uid,
- NetNumToShape(shapeNum));
- break;
- } //new piece
- case NP_down:
- MovePiece(event.u.net.uid, -1, 0);
- break;
- case NP_left:
- MovePiece(event.u.net.uid, 0, -1);
- break;
- case NP_right:
- MovePiece(event.u.net.uid, 0, 1);
- break;
- case NP_rotleft:
- RotatePiece(event.u.net.uid, 0);
- break;
- case NP_rotright:
- RotatePiece(event.u.net.uid, 1);
- break;
- case NP_drop:
- DropPiece(event.u.net.uid);
- break;
- case NP_clear:
- ClearFullLines(event.u.net.uid);
- break;
- case NP_insertJunk:
- {
- netint2 data[2];
-
- memcpy(data, event.u.net.data, sizeof(data));
- InsertJunk(event.u.net.uid, ntoh2(data[0]),
- ntoh2(data[1]));
- break;
- } //player added junklines
- case NP_giveJunk:
- {
- netint2 data[2];
- short column;
-
- if (Players[me].alive <= 0) break;
- memcpy(data, event.u.net.data, sizeof(data[0]));
- column = Random(0, Players[me].boardWidth);
- data[1] = hton2(column);
- Messagef("\\%d%s sends %d lines",
- Players[event.u.net.uid].team > 7 ? 7
- : Players[event.u.net.uid].team,
- Players[event.u.net.uid].name, ntoh2(data[0]));
- lastadd = event.u.net.uid;
- InsertJunk(me, ntoh2(data[0]), column);
- if (spied)
- SendPacket(me, NP_insertJunk, sizeof(data),
- data);
- break;
- } //receive junklines
- case NP_start:
- {
- Game.started = 2;
- paused = 0;
- Messagef("The game has started");
- for (i = 1; i < MAX_SCREENS; i++)
- if (Players[i].alive > 0) ShowPause(i);
- break;
- } //start game
- case NP_stop:
- {
- if (Game.started > 1)
- Messagef("The game has ended");
- Game.started = 0;
- memcpy(&Game.seed, event.u.net.data,
- event.u.net.size);
- for (i = 1; i < MAX_SCREENS; i++)
- if (Players[i].alive >= 0) {
- Players[i].alive = 1;
- Players[i].flags |= SCF_paused;
- } //reset players
- StartGame(); //reset everything
- ShowTime(); //redraw timer while unpaused
- checkPaused(); //pause
- oldPaused = 0; //reset pause
- changed = 1;
- goto GameLoop;
- } //stop game
- case NP_newPlayer:
- {
- if (event.u.net.uid > maxPlayer)
- maxPlayer = event.u.net.uid;
- memcpy(&Players[event.u.net.uid],
- event.u.net.data, event.u.net.size);
- ClearField(event.u.net.uid);
- if (Players[event.u.net.uid].team > 7)
- Messagef("%s joined the game",
- Players[event.u.net.uid].name);
- else
- Messagef("%s joined %s team",
- Players[event.u.net.uid].name,
- teams[Players[event.u.net.uid].team]);
- if (Players[event.u.net.uid].flags & SCF_paused) {
- checkPaused();
- if (robotEnable)
- RobotCmd(1, "Pause %d\n", paused);
- } //player has paused
- DrawField(event.u.net.uid);
-// ShowPause(event.u.net.uid);
- changed = 1;
- break;
- } //player joined
- case NP_pause:
- {
- char s[20];
-
- Players[event.u.net.uid].flags ^= SCF_paused;
- if (Game.started > 1)
- strcpy(s,
- Players[event.u.net.uid].flags & SCF_paused
- ? "paused the game" : "unpaused the game");
- else
- strcpy(s,
- Players[event.u.net.uid].flags & SCF_paused
- ? "is not ready" : "is ready");
- Messagef("%s %s",
- Players[event.u.net.uid].name, s);
- checkPaused();
- if (robotEnable) RobotCmd(1, "Pause %d\n", paused);
- ShowPause(event.u.net.uid);
- changed = 1;
- break;
- } //(un)pause
- case NP_part:
- checkPaused();
- oldPaused = 0;
- {
- Players[event.u.net.uid].alive = -1;
- Messagef("%s left",
- Players[event.u.net.uid].name);
- checkPaused();
- ShowPause(event.u.net.uid);
- changed = 1;
- break;
- } //player left
- case NP_argghhh:
- {
- char i;
- memcpy(&i, event.u.net.data, sizeof(i));
- Players[event.u.net.uid].alive = 0;
- if (i == me) Messagef("\\%dYou fragged %s",
- Players[me].team > 7 ? 7 : Players[me].team,
- Players[event.u.net.uid].name);
- else if (i == event.u.net.uid)
- Messagef("\\%d%s died",
- Players[i].team > 7 ? 7 : Players[i].team,
- Players[i].name);
- else Messagef("\\%d%s fragged %s",
- Players[i].team > 7 ? 7 : Players[i].team,
- Players[i].name,
- Players[event.u.net.uid].name);
- checkPaused();
- ShowPause(event.u.net.uid);
- changed = 1;
- break;
- } //G/O
- default:
- break;
- } //E_net
- break;
- case E_lostRobot:
- case E_lostConn:
- goto gameOver;
- default:
- break;