X-Git-Url: http://git.shiar.net/netris.git/blobdiff_plain/b9be7d416f4550cd6c6d98228d8a61e4c61e2901..eb820d60637feceb84f559675344cf24a2c2f1cd:/server.c diff --git a/server.c b/server.c index 39a28a0..947c8e1 100644 --- a/server.c +++ b/server.c @@ -121,7 +121,7 @@ void CloseNets(void) fprintf(stderr, "- Closing connections...\n"); for (i = 1; i < MAX_SCREENS; i++) - SCloseNet(i); //bye everybuddy + SCloseNet(i); // bye everybuddy fprintf(stderr, "* All Done\n\n"); } @@ -141,7 +141,7 @@ MyEventType NetGenFunc(EventGenRec *gen, MyEvent *event) if (gen->bufSize < gen->bufGoal) return E_none; // *ugly* memcpy(data, gen->buf, sizeof(data)); - uid = ntoh4(data[0]); + uid = ntoh4(data[0]); type = ntoh4(data[1]); size = ntoh4(data[2]); gen->bufGoal = size; @@ -173,9 +173,10 @@ static MyEventType ConnGenFunc(EventGenRec *gen, MyEvent *event) if (netGen[new].fd < 0) break; if (new > maxplayers) return; - if ((netGen[new].fd = - accept(gen->fd, (struct sockaddr *)&addr, &addrLen)) < 0) - die("accept"); + if (( + netGen[new].fd = accept(gen->fd, (struct sockaddr *)&addr, &addrLen) + ) < 0) + die("accept"); fprintf(stderr, "+ Connection: %s\n", inet_ntoa(addr.sin_addr)); val2.l_onoff = 1; val2.l_linger = 0; @@ -188,8 +189,9 @@ static MyEventType ConnGenFunc(EventGenRec *gen, MyEvent *event) sprintf(Players[new].host, "%s", inet_ntoa(addr.sin_addr)); if (addr.sin_family == AF_INET) { - host = gethostbyaddr((void *)&addr.sin_addr, - sizeof(struct in_addr), AF_INET); + host = gethostbyaddr( + (void *)&addr.sin_addr, sizeof(struct in_addr), AF_INET + ); if (host) { strncpy(Players[new].host, host->h_name, sizeof(Players[new].host) - 1); @@ -205,11 +207,12 @@ void CountPlayers(void) int i, j; playercount = 0; for (i = 1; i < MAX_SCREENS; i++) if (Players[i].alive > 0) { - if (Players[i].team < 128) for (j = 1; j < i; j++) - if (Players[j].alive > 0 && (Players[j].team == Players[i].team)) { - playercount--; + if (Players[i].team < 128) for (j = 1; j < i; j++) { + if (Players[j].alive > 0 && Players[j].team == Players[i].team) { + playercount--; // player of same team counted before break; - } //player of same team counted before + } + } playercount++; } //player alive } @@ -249,8 +252,7 @@ int StartServer(void) int major; int protocolVersion; - memcpy(versiondata, event.u.net.data, - sizeof(versiondata)); + memcpy(versiondata, event.u.net.data, sizeof(versiondata)); major = ntoh4(versiondata[0]); protocolVersion = ntoh4(versiondata[1]); if (major != MAJOR_VERSION @@ -273,14 +275,14 @@ int StartServer(void) memcpy(&Players[event.u.net.sender], event.u.net.data, event.u.net.size); if (Players[event.u.net.sender].team < 1 - || Players[event.u.net.sender].team > 7) { + || Players[event.u.net.sender].team > 7) { int team; for (team = 1; team < 7; team++) { for (i = 1; i < MAX_SCREENS; i++) - if ((Players[i].alive > 0) && (Players[i].team == team)) + if (Players[i].alive > 0 && Players[i].team == team) break; //team in use - if (i==MAX_SCREENS) break; + if (i == MAX_SCREENS) break; } //find unused team Players[event.u.net.sender].team = team; SendPacketTo(event.u.net.sender, event.u.net.sender, NP_team, @@ -318,8 +320,8 @@ int StartServer(void) } //send game options for (i = 1; i < MAX_SCREENS; i++) if (netGen[i].fd >= 0 && i != event.u.net.sender) { - SendPacketTo(event.u.net.sender, i, - NP_newPlayer, sizeof(_Player), &Players[i]); + SendPacketTo(event.u.net.sender, i, NP_newPlayer, + sizeof(_Player), &Players[i]); SendPacketTo(event.u.net.sender, i, NP_newPiece, sizeof(Players[i].curShape), &Players[i].curShape); SendPacketTo(i, event.u.net.sender, NP_newPlayer, @@ -372,8 +374,8 @@ int StartServer(void) break; for (i = 1; i < MAX_SCREENS; i++) if (i != event.u.net.sender) - if (event.u.net.type != NP_giveJunk || - Players[i].team != Players[event.u.net.sender].team) + if (event.u.net.type != NP_giveJunk + || Players[i].team != Players[event.u.net.sender].team) SendPacketTo(i, event.u.net.sender, event.u.net.type, event.u.net.size, event.u.net.data); @@ -392,7 +394,7 @@ int StartServer(void) } //event CountPlayers(); if (Game.started < 1) { - if (playercount > 1) { + if (playercount >= 2) { fprintf(stderr, "* Game (%010d) ready to start\n", Game.seed); Game.started++; } //give goahead @@ -401,13 +403,14 @@ int StartServer(void) if (playercount < 2) { fprintf(stderr, "* Stopping game\n"); if (Game.seed) Game.seed++; - if (Game.started > 1) for (i = 1; i < MAX_SCREENS; i++) + if (Game.started > 1) for (i = 1; i < MAX_SCREENS; i++) { if (Players[i].alive >= 0) { Players[i].alive = 1; Players[i].flags |= SCF_paused; SendPacketTo(i, 0, NP_stop, sizeof(Game.seed), &Game.seed); } //transmit game stop and set players not ready + } paused = 1; Game.started = 0; } //too few players for game @@ -440,30 +443,16 @@ void SUsage(void) " -h, --help\t\tPrint this usage information\n" " -H, --info\t\tShow distribution and warranty information\n" "\n" - " -p, --port \tSet port number (default is %d)\n" + " -p, --port %d\tSet port number\n" "\n" " -s, --seed \tStart with given random seed\n" - " -i, --speed \tSet the initial step-down interval, in seconds\n" - " -m, --min-players <2>\tNumber of players required before starting the game\n" - " -x, --max-players <8>\tMaximum number of players allowed in the game\n" + " -i, --speed %.2f\tSet the initial step-down interval, in seconds\n" + " -m, --min-players %d\tNumber of players required before starting the game\n" + " -x, --max-players %d\tMaximum number of players allowed in the game\n" " -c, --continuous\tDon'n quit the game\n" - "\n", DEFAULT_PORT); -} - -void WriteConf(void) -{ - FILE *file_out; - - file_out = fopen(CONFIG_FILE, "w"); - if (file_out == NULL) { - perror("Error writing config file"); - exit(1); - } - - fprintf(file_out, "### NETRIS %s Config file ###\n\n", version_string); - - fclose(file_out); - fprintf(stderr, "Wrote new game configuration to %s\n", CONFIG_FILE); + "\n", + DEFAULT_PORT, DEFAULT_INTERVAL/1e6, minplayers, maxplayers + ); } void HandleOption(char tag, char *value) @@ -482,9 +471,7 @@ void HandleOption(char tag, char *value) minplayers = atoi(value); break; case 'x': //max-players - maxplayers = atoi(value); - if (maxplayers >= MAX_SCREENS) - maxplayers = MAX_SCREENS; + maxplayers = MIN(atoi(value), MAX_SCREENS); break; case 'q': //quadra-style gravity Game.gravity ^= 1; @@ -497,9 +484,11 @@ void HandleOption(char tag, char *value) break; case 'H': //info SHeader(); - DistInfo(); exit(0); + DistInfo(); + exit(0); case 'h': //help - SUsage(); exit(0); + SUsage(); + exit(0); default: break; }