use player.team instead of infokey team

use player.name instead of infokey name
add weak per team hash for cl_standardchat/cl_standardmsg for cl.teamplay
use obtained freq for SDL


git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1552 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
TimeServ 2005-11-01 23:25:15 +00:00
parent e3db3df028
commit c916e40299
4 changed files with 53 additions and 42 deletions

View File

@ -1059,7 +1059,7 @@ void CL_ParseDownload (void)
if (!*cls.downloadname) //huh... that's not right...
{
Con_Printf("^1Warning: Server sending unknown file.\n");
Con_Printf("^1Warning^7: Server sending unknown file.\n");
strcpy(cls.downloadname, "unknown.txt");
strcpy(cls.downloadtempname, "unknown.tmp");
}
@ -3191,6 +3191,32 @@ int CL_PlayerColor(player_info_t *plr, int *name_ormask)
break;
}
}
else if (cl.teamplay)
{
// team name hacks
if (!strcmp(plr->team, "red"))
c = 1;
else if (!strcmp(plr->team, "blue"))
c = 6;
else
{
char *t;
t = plr->team;
c = 0;
for (t = plr->team; *t; t++)
{
c >>= 1;
c ^= *t; // TODO: very weak hash, replace
}
if ((c / 7) & 1)
*name_ormask = CON_STANDARDMASK;
c = 1 + (c % 7);
}
}
else
{
// override chat color with tc infokey
@ -3360,9 +3386,9 @@ void CL_PrintStandardMessage(char *msg)
int ormask;
char c;
if (!p->name[0])
name = p->name;
if (!(*name))
continue;
name = Info_ValueForKey (p->userinfo, "name");
len = strlen(name);
v = strstr(msg, name);
while (v)

View File

@ -1119,8 +1119,8 @@ void Sbar_SortTeams (void)
// find his team in the list
t[16] = 0;
Q_strncpyz(t, Info_ValueForKey(s->userinfo, "team"), sizeof(t));
if (!t || !t[0])
Q_strncpyz(t, s->team, sizeof(t));
if (!t[0])
continue; // not on team
for (j = 0; j < scoreboardteams; j++)
if (!strcmp(teams[j].team, t)) {
@ -1881,8 +1881,7 @@ void Sbar_TeamOverlay (void)
sprintf (num, "%5i", tm->players);
Draw_String (x + 104 + 88, y, num);
if (!strncmp(Info_ValueForKey(cl.players[cl.playernum[0]].userinfo,
"team"), tm->team, 16)) {
if (!strncmp(cl.players[cl.playernum[0]].team, tm->team, 16)) {
Draw_Character ( x + 104 - 8, y, 16);
Draw_Character ( x + 104 + 32, y, 17);
}
@ -1911,7 +1910,6 @@ void Sbar_DeathmatchOverlay (int start)
int total;
int minutes;
int p;
char team[64];
int skip = 10;
if (largegame)
@ -2044,10 +2042,7 @@ void Sbar_DeathmatchOverlay (int start)
// team
if (cl.teamplay)
{
Q_strncpyz (team, Info_ValueForKey(s->userinfo, "team"), sizeof(team));
Draw_FunStringLen (x+152, y, team, 4);
}
Draw_FunStringLen (x+152, y, s->team, 4);
// draw name
if (cl.teamplay)
@ -2091,9 +2086,9 @@ void Sbar_ChatModeOverlay(void)
Sbar_SortFrags (true);
if (Cam_TrackNum(0)>=0)
Q_strncpyz (team, Info_ValueForKey(cl.players[Cam_TrackNum(0)].userinfo, "team"), sizeof(team));
Q_strncpyz (team, cl.players[Cam_TrackNum(0)].team, sizeof(team));
else if (cl.playernum[0]>=0 && cl.playernum[0]<MAX_CLIENTS)
Q_strncpyz (team, Info_ValueForKey(cl.players[cl.playernum[0]].userinfo, "team"), sizeof(team));
Q_strncpyz (team, cl.players[cl.playernum[0]].team, sizeof(team));
else
*team = '\0';
@ -2143,7 +2138,7 @@ void Sbar_ChatModeOverlay(void)
}
else if (cl.teamplay)
{
if (!stricmp(Info_ValueForKey(s->userinfo, "team"), team))
if (!stricmp(s->team, team))
{
Draw_Character ( x, y, '[');
Draw_Character ( x+8*3, y, ']');
@ -2181,7 +2176,6 @@ void Sbar_MiniDeathmatchOverlay (void)
int x, y, f;
char num[12];
player_info_t *s;
char team[64];
int numlines;
char name[64+1];
team_t *tm;
@ -2258,9 +2252,7 @@ void Sbar_MiniDeathmatchOverlay (void)
// team and name
if (cl.teamplay)
{
Q_strncpyz (team, Info_ValueForKey(s->userinfo, "team"), sizeof(team));
Draw_FunStringLen (x+48, y, team, 4);
Draw_FunStringLen (x+48, y, s->team, 4);
Draw_FunStringLen (x+48+40, y, name, MAX_DISPLAYEDNAME);
}
else
@ -2286,15 +2278,13 @@ void Sbar_MiniDeathmatchOverlay (void)
tm = teams + k;
// draw pings
Q_strncpyz (team, tm->team, sizeof(team));
Draw_FunStringLen (x, y, team, 4);
Draw_FunStringLen (x, y, tm->team, 4);
// draw total
sprintf (num, "%5i", tm->frags);
Draw_FunString(x + 40, y, num);
if (!strncmp(Info_ValueForKey(cl.players[cl.playernum[0]].userinfo,
"team"), tm->team, 16)) {
if (!strncmp(cl.players[cl.playernum[0]].team, tm->team, 16)) {
Draw_Character ( x - 8, y, 16);
Draw_Character ( x + 32, y, 17);
}

View File

@ -97,7 +97,7 @@ Con_Printf("SDL AUDIO INITING\n");
return false;
}
sc->sn.numchannels = obtained.channels;
sc->sn.speed = desired.freq;
sc->sn.speed = obtained.freq;
sc->sn.samplebits = 16;
sc->sn.samples = SOUND_BUFFER_SIZE;
sc->sn.buffer = malloc(SOUND_BUFFER_SIZE*sc->sn.samplebits/8);

View File

@ -1745,19 +1745,22 @@ int TP_CountPlayers (void)
return count;
}
char *TP_PlayerTeam (void)
{
return cl.players[cl.playernum[SP]].team;
}
char *TP_EnemyTeam (void)
{
int i;
char myteam[MAX_INFO_KEY];
static char enemyteam[MAX_INFO_KEY];
strcpy (myteam, Info_ValueForKey(cls.userinfo, "team"));
char *myteam = TP_PlayerTeam();
for (i = 0; i < MAX_CLIENTS ; i++) {
if (cl.players[i].name[0] && !cl.players[i].spectator)
{
strcpy (enemyteam, Info_ValueForKey(cl.players[i].userinfo, "team"));
if (strcmp(myteam, enemyteam) != 0)
strcpy (enemyteam, cl.players[i].team);
if (strcmp(myteam, cl.players[i].team) != 0)
return enemyteam;
}
}
@ -1766,30 +1769,22 @@ char *TP_EnemyTeam (void)
char *TP_PlayerName (void)
{
static char myname[MAX_INFO_KEY];
strcpy (myname, Info_ValueForKey(cl.players[cl.playernum[SP]].userinfo, "name"));
return myname;
return cl.players[cl.playernum[SP]].name;
}
char *TP_PlayerTeam (void)
{
static char myteam[MAX_INFO_KEY];
strcpy (myteam, Info_ValueForKey(cl.players[cl.playernum[SP]].userinfo, "team"));
return myteam;
}
char *TP_EnemyName (void)
{
int i;
char *myname;
static char enemyname[MAX_INFO_KEY];
static char enemyname[MAX_SCOREBOARDNAME];
myname = TP_PlayerName ();
for (i = 0; i < MAX_CLIENTS ; i++) {
if (cl.players[i].name[0] && !cl.players[i].spectator)
{
strcpy (enemyname, Info_ValueForKey(cl.players[i].userinfo, "name"));
strcpy (enemyname, cl.players[i].name);
if (!strcmp(enemyname, myname))
return enemyname;
}
@ -1975,9 +1970,9 @@ int TP_CategorizeMessage (char *s, int *offset, player_info_t **plr)
for (i=0, player=cl.players ; i < MAX_CLIENTS ; i++, player++)
{
if (!player->name[0])
name = player->name;
if (!(*name))
continue;
name = Info_ValueForKey (player->userinfo, "name");
len = strlen(name);
// check messagemode1
if (len+2 <= msglen && s[len] == ':' && s[len+1] == ' ' &&