Update of /cvsroot/netrek/client/netrekxp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8425/src Modified Files: defaults.c input.c option.c playerlist.c Log Message: Some playerlist fixes, including new playerlist option to show all players, but put all observers on the bottom of the playerlist. Index: playerlist.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/playerlist.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- playerlist.c 30 Apr 2006 15:59:40 -0000 1.4 +++ playerlist.c 30 Apr 2006 20:17:48 -0000 1.5 @@ -366,7 +366,7 @@ { if (players[count].p_status != PFREE) { - if (playerListObserver == 0) + if (playerListObserver == 0 || playerListObserver == 3) { PlistLine (playerw, players + count, plistPos[count]); PlistLine (playerw2, players + count, plistPos[count]); @@ -388,7 +388,7 @@ else { if ((players[count].p_status != PFREE) && - ((playerListObserver == 0) || + ((playerListObserver == 0 || playerListObserver == 3) || ((playerListObserver == 1) && !(players[count].p_flags & PFOBSERV)) || ((playerListObserver == 2) && @@ -423,6 +423,7 @@ struct player *current; int teamPos[NUMTEAM + 1]; int *pos; + int obscount = 0; static int plistLastRow = -1; static int blankLine = -1; @@ -450,7 +451,7 @@ } - /* Count the number of players in each team. */ + /* Count the number of players in each team, and total number of in game players. */ for (i = NUMTEAM; i >= 0; --i) teamPos[i] = 0; @@ -463,22 +464,31 @@ { if (playerListObserver == 0) ++teamPos[remap[current->p_team]]; - else if (playerListObserver == 1 && - current->p_mapchars[1] <= 'f') + else if ((playerListObserver == 1 || playerListObserver == 3) + && current->p_mapchars[1] <= 'f') ++teamPos[remap[current->p_team]]; - else if (playerListObserver == 2 && - !(current->p_mapchars[1] <= 'f')) + else if (playerListObserver == 2 + && !(current->p_mapchars[1] <= 'f')) ++teamPos[remap[current->p_team]]; + + if (!(current->p_mapchars[1] <= 'f')) + obscount++; } } else { - if ((current->p_status != PFREE) && - ((playerListObserver == 0) || - ((playerListObserver == 1) && !(current->p_flags & PFOBSERV)) - || ((playerListObserver == 2) - && (current->p_flags & PFOBSERV)))) - ++teamPos[remap[current->p_team]]; + if (current->p_status != PFREE) + { + if ( (playerListObserver == 0) + || ((playerListObserver == 1 || playerListObserver == 3) + && !(current->p_flags & PFOBSERV)) + || ((playerListObserver == 2) + && (current->p_flags & PFOBSERV)) ) + ++teamPos[remap[current->p_team]]; + + if (current->p_flags & PFOBSERV) + obscount++; + } } } @@ -562,8 +572,8 @@ } plistLastRow = last; - - + if (playerListObserver == 3) + plistLastRow += obscount; /* Write out each player that has either changed position or has * new stats. */ @@ -578,8 +588,12 @@ } if (playerListHack) { - if (playerListObserver == 0) + if (playerListObserver == 0 || playerListObserver == 3) { + if (playerListObserver == 3 && !(current->p_mapchars[1] <= 'f')) + row = --plistLastRow; + else + row = --(teamPos[remap[current->p_team]]); row = --(teamPos[remap[current->p_team]]); if ((!updatePlayer[i]) && plistPos[i] == row) continue; @@ -616,14 +630,30 @@ PlistLine (playerw, current, row); PlistLine (playerw2, current, row); } + else if (playerListObserver == 3) + { + row = --(teamPos[remap[current->p_team]]); + if ((!updatePlayer[i]) && plistPos[i] == row) + continue; + + plistPos[i] = row; + updatePlayer[i] = FALSE; + + PlistLine (playerw, current, row); + PlistLine (playerw2, current, row); + } } else { - if ((playerListObserver == 0) || + if ((playerListObserver == 0) || ((playerListObserver == 1) && !(current->p_flags & PFOBSERV)) || - ((playerListObserver == 2) && (current->p_flags & PFOBSERV))) + ((playerListObserver == 2) && (current->p_flags & PFOBSERV)) || + (playerListObserver == 3)) { - row = --(teamPos[remap[current->p_team]]); + if (playerListObserver == 3 && (current->p_flags & PFOBSERV)) + row = --plistLastRow; + else + row = --(teamPos[remap[current->p_team]]); if ((!updatePlayer[i]) && plistPos[i] == row) continue; @@ -694,7 +724,10 @@ pos = count + 1; plistPos[count] = pos; - if (players[count].p_status != PFREE) + if ( players[count].p_status != PFREE && + (((playerListObserver == 0) || (playerListObserver == 3)) || + ((playerListObserver == 1) && !(players[count].p_flags & PFOBSERV)) || + ((playerListObserver == 2) && (players[count].p_flags & PFOBSERV))) ) { PlistLine (playerw, players + count, pos); PlistLine (playerw2, players + count, pos); @@ -1376,7 +1409,7 @@ { if (playerListHack) { - if (playerListObserver == 0) + if (playerListObserver == 0 || playerListObserver == 3) { player_no = i; break; @@ -1396,7 +1429,7 @@ } else { - if (playerListObserver == 0) + if (playerListObserver == 0 || playerListObserver == 3) { player_no = i; break; @@ -1420,7 +1453,7 @@ { if (playerListHack) { - if (playerListObserver == 0) + if (playerListObserver == 0 || playerListObserver == 3) flag = 1; else if (playerListObserver == 1 && (players[player_no].p_mapchars[1] <= 'f')) @@ -1431,7 +1464,7 @@ } else { - if (playerListObserver == 0) + if (playerListObserver == 0 || playerListObserver == 3) flag = 1; else if (playerListObserver == 1 && !(players[player_no].p_flags & PFOBSERV)) Index: input.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/input.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- input.c 30 Apr 2006 15:59:40 -0000 1.7 +++ input.c 30 Apr 2006 20:17:47 -0000 1.8 @@ -2634,19 +2634,25 @@ if (sortPlayers) { - playerListObserver++; switch (playerListObserver) { case (0): - W_MapWindow (playerw); + playerListObserver++; break; case (1): + playerListObserver++; break; case (2): + playerListObserver++; break; case (3): - playerListObserver = -1; + playerListObserver++; W_UnmapWindow (playerw); + break; + case (4): + playerListObserver = 0; + W_MapWindow (playerw); + break; } if (W_IsMapped (playerw)) Index: option.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/option.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- option.c 29 Apr 2006 19:22:38 -0000 1.10 +++ option.c 30 Apr 2006 20:17:48 -0000 1.11 @@ -113,6 +113,8 @@ static char *playerlistobservermess[] = { "Display all players in playerlist", "Display in game players only", "Display observers only", + "Display players, then observers", + "Playerlist is off", "" }; @@ -226,7 +228,7 @@ struct int_range messagehud_range = { 0, 2, 1 }; #endif -struct int_range playerlistobserver_range = { 0, 2, 1 }; +struct int_range playerlistobserver_range = { 0, 4, 1 }; struct int_range planetbitmaprange = { 0, 2, 1 }; Index: defaults.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/defaults.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- defaults.c 29 Apr 2006 19:22:38 -0000 1.12 +++ defaults.c 30 Apr 2006 20:17:47 -0000 1.13 @@ -368,6 +368,7 @@ "0 - all (default)", "1 - players", "2 - observers", + "3 - players, then observers", NULL } },