text parsing fixes
increased emit rate for explosionsprite git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1297 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
f447bd2feb
commit
a6bee2bc12
4 changed files with 120 additions and 80 deletions
|
@ -3026,7 +3026,7 @@ char *CL_ParseChat(char *text, player_info_t **player)
|
||||||
Validation_Skins();
|
Validation_Skins();
|
||||||
skinsresponsetime = Sys_DoubleTime() + 5;
|
skinsresponsetime = Sys_DoubleTime() + 5;
|
||||||
}
|
}
|
||||||
return true;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
Validation_CheckIfResponse(text);
|
Validation_CheckIfResponse(text);
|
||||||
|
@ -3054,6 +3054,7 @@ char *CL_ParseChat(char *text, player_info_t **player)
|
||||||
}
|
}
|
||||||
|
|
||||||
msgflags = flags;
|
msgflags = flags;
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3080,14 +3081,24 @@ void CL_ParsePrint(char *msg, int level)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CL_PrintChat(player_info_t *plr, char *msg, qboolean team, qboolean observer)
|
// CL_ParseChat: takes chat strings and performs name coloring and cl_parsewhitetext parsing
|
||||||
|
// NOTE: text in rawmsg/msg is assumed destroyable and should not be used afterwards
|
||||||
|
void CL_PrintChat(player_info_t *plr, char *rawmsg, char *msg, int plrflags)
|
||||||
{
|
{
|
||||||
char *t;
|
char *t;
|
||||||
|
char *name = NULL;
|
||||||
int c;
|
int c;
|
||||||
int name_ormask;
|
int name_ormask = 0;
|
||||||
extern cvar_t cl_parsewhitetext;
|
extern cvar_t cl_parsewhitetext;
|
||||||
qboolean memessage = false;
|
qboolean memessage = false;
|
||||||
|
|
||||||
|
if (plrflags & TPM_FAKED)
|
||||||
|
{
|
||||||
|
name = rawmsg; // use rawmsg pointer and msg modification to generate null-terminated string
|
||||||
|
if (msg)
|
||||||
|
*(msg - 2) = 0; // it's assumed that msg has 2 chars before it due to strstr
|
||||||
|
}
|
||||||
|
|
||||||
if (msg[0] == '/' && msg[1] == 'm' && msg[2] == 'e' && msg[3] == ' ')
|
if (msg[0] == '/' && msg[1] == 'm' && msg[2] == 'e' && msg[3] == ' ')
|
||||||
{
|
{
|
||||||
msg += 4;
|
msg += 4;
|
||||||
|
@ -3095,17 +3106,19 @@ void CL_PrintChat(player_info_t *plr, char *msg, qboolean team, qboolean observe
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plr) // use special formatting with a real chat message
|
if (plr) // use special formatting with a real chat message
|
||||||
{
|
name = plr->name; // use player's name
|
||||||
name_ormask = 0;
|
|
||||||
if (cl_standardchat.value)
|
if (cl_standardchat.value)
|
||||||
{
|
{
|
||||||
name_ormask = CON_STANDARDMASK;
|
name_ormask = CON_STANDARDMASK;
|
||||||
c = 7;
|
c = 7;
|
||||||
}
|
}
|
||||||
else if (observer)
|
else
|
||||||
|
{
|
||||||
|
if (plrflags & TPM_SPECTATOR) // is an observer
|
||||||
{
|
{
|
||||||
// TODO: we don't even check for this yet...
|
// TODO: we don't even check for this yet...
|
||||||
if (team)
|
if (plrflags & TPM_TEAM) // is on team
|
||||||
c = 0; // blacken () on observers
|
c = 0; // blacken () on observers
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3113,7 +3126,9 @@ void CL_PrintChat(player_info_t *plr, char *msg, qboolean team, qboolean observe
|
||||||
c = 7;
|
c = 7;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (cl.teamfortress) //override based on team
|
else if (plr)
|
||||||
|
{
|
||||||
|
if (cl.teamfortress) //override based on team
|
||||||
{
|
{
|
||||||
// TODO: needs some work
|
// TODO: needs some work
|
||||||
switch (plr->bottomcolor)
|
switch (plr->bottomcolor)
|
||||||
|
@ -3156,7 +3171,10 @@ void CL_PrintChat(player_info_t *plr, char *msg, qboolean team, qboolean observe
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//primary override.
|
// override chat color with tc infokey
|
||||||
|
// 0-6 is standard colors (red to white)
|
||||||
|
// 7-13 is using secondard charactermask
|
||||||
|
// 14 and afterwards repeats
|
||||||
t = Info_ValueForKey(plr->userinfo, "tc");
|
t = Info_ValueForKey(plr->userinfo, "tc");
|
||||||
if (*t)
|
if (*t)
|
||||||
c = atoi(t);
|
c = atoi(t);
|
||||||
|
@ -3168,39 +3186,49 @@ void CL_PrintChat(player_info_t *plr, char *msg, qboolean team, qboolean observe
|
||||||
|
|
||||||
c = 1 + (c % 7);
|
c = 1 + (c % 7);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// defaults for fake clients
|
||||||
|
name_ormask = CON_STANDARDMASK;
|
||||||
|
c = 7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
c = '0' + c;
|
c = '0' + c;
|
||||||
|
|
||||||
|
if (name)
|
||||||
|
{
|
||||||
if (memessage)
|
if (memessage)
|
||||||
{
|
{
|
||||||
con_ormask = CON_STANDARDMASK;
|
con_ormask = CON_STANDARDMASK;
|
||||||
if (!cl_standardchat.value && observer)
|
if (!cl_standardchat.value && (plrflags & TPM_SPECTATOR))
|
||||||
Con_Printf ("^0*^7 ");
|
Con_Printf ("^0*^7 ");
|
||||||
else
|
else
|
||||||
Con_Printf ("* ");
|
Con_Printf ("* ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (team) // for team chat don't highlight the name, just the brackets
|
if (plrflags & TPM_TEAM) // for team chat don't highlight the name, just the brackets
|
||||||
{
|
{
|
||||||
// color is reset every printf so we're safe here
|
// color is reset every printf so we're safe here
|
||||||
con_ormask = name_ormask;
|
con_ormask = name_ormask;
|
||||||
Con_Printf("^%c(", c);
|
Con_Printf("^%c(", c);
|
||||||
con_ormask = CON_STANDARDMASK;
|
con_ormask = CON_STANDARDMASK;
|
||||||
Con_Printf("%s", plr->name);
|
Con_Printf("%s", name);
|
||||||
con_ormask = name_ormask;
|
con_ormask = name_ormask;
|
||||||
Con_Printf("^%c)", c);
|
Con_Printf("^%c)", c);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
con_ormask = name_ormask;
|
con_ormask = name_ormask;
|
||||||
Con_Printf("^%c%s", c, plr->name);
|
Con_Printf("^%c%s", c, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!memessage)
|
if (!memessage)
|
||||||
{
|
{
|
||||||
// only print seperator with an actual player name
|
// only print seperator with an actual player name
|
||||||
con_ormask = CON_STANDARDMASK;
|
con_ormask = CON_STANDARDMASK;
|
||||||
if (!cl_standardchat.value && observer)
|
if (!cl_standardchat.value && (plrflags & TPM_SPECTATOR))
|
||||||
Con_Printf ("^0:^7 ");
|
Con_Printf ("^0:^7 ");
|
||||||
else
|
else
|
||||||
Con_Printf (": ");
|
Con_Printf (": ");
|
||||||
|
@ -3211,7 +3239,7 @@ void CL_PrintChat(player_info_t *plr, char *msg, qboolean team, qboolean observe
|
||||||
|
|
||||||
// print message
|
// print message
|
||||||
con_ormask = CON_STANDARDMASK;
|
con_ormask = CON_STANDARDMASK;
|
||||||
if (cl_parsewhitetext.value && team && plr)
|
if (cl_parsewhitetext.value && (plrflags & TPM_TEAM))
|
||||||
{
|
{
|
||||||
char *u;
|
char *u;
|
||||||
|
|
||||||
|
@ -3413,7 +3441,7 @@ void CL_ParseServerMessage (void)
|
||||||
if (msg = CL_ParseChat(s, &plr))
|
if (msg = CL_ParseChat(s, &plr))
|
||||||
{
|
{
|
||||||
CL_ParsePrint(s, i);
|
CL_ParsePrint(s, i);
|
||||||
CL_PrintChat(plr, msg, msgflags & 2, msgflags & 4);
|
CL_PrintChat(plr, s, msg, msgflags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -3866,7 +3894,7 @@ void CLQ2_ParseServerMessage (void)
|
||||||
if (msg = CL_ParseChat(s, &plr))
|
if (msg = CL_ParseChat(s, &plr))
|
||||||
{
|
{
|
||||||
CL_ParsePrint(s, i);
|
CL_ParsePrint(s, i);
|
||||||
CL_PrintChat(plr, msg, msgflags & 2, msgflags & 4);
|
CL_PrintChat(plr, s, msg, msgflags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -3995,7 +4023,7 @@ void CLNQ_ParseServerMessage (void)
|
||||||
if (msg = CL_ParseChat(s+1, &plr))
|
if (msg = CL_ParseChat(s+1, &plr))
|
||||||
{
|
{
|
||||||
CL_ParsePrint(s+1, PRINT_CHAT);
|
CL_ParsePrint(s+1, PRINT_CHAT);
|
||||||
CL_PrintChat(plr, msg, msgflags & 2, msgflags & 4);
|
CL_PrintChat(plr, s+1, msg, msgflags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -834,6 +834,12 @@ void CL_InitCam(void);
|
||||||
//
|
//
|
||||||
//zqtp.c
|
//zqtp.c
|
||||||
//
|
//
|
||||||
|
#define TPM_UNKNOWN 0
|
||||||
|
#define TPM_NORMAL 1
|
||||||
|
#define TPM_TEAM 2
|
||||||
|
#define TPM_SPECTATOR 4
|
||||||
|
#define TPM_FAKED 16
|
||||||
|
|
||||||
qboolean TP_SoundTrigger(char *message);
|
qboolean TP_SoundTrigger(char *message);
|
||||||
char *TP_PlayerName (void);
|
char *TP_PlayerName (void);
|
||||||
char *TP_MapName (void);
|
char *TP_MapName (void);
|
||||||
|
|
|
@ -781,7 +781,7 @@ char *particle_set_spikeset =
|
||||||
"r_part explodesprite\n"
|
"r_part explodesprite\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" texture \"particles/flame\"\n"
|
" texture \"particles/flame\"\n"
|
||||||
" count 1\n"
|
" count 120\n"
|
||||||
" scale 80\n"
|
" scale 80\n"
|
||||||
" scalefactor 1\n"
|
" scalefactor 1\n"
|
||||||
" alpha 0.2\n"
|
" alpha 0.2\n"
|
||||||
|
|
|
@ -1913,7 +1913,7 @@ void TP_NewMap (void)
|
||||||
TP_CategorizeMessage
|
TP_CategorizeMessage
|
||||||
|
|
||||||
returns a combination of these values:
|
returns a combination of these values:
|
||||||
0 -- unknown (probably generated by the server)
|
0 -- unknown
|
||||||
1 -- normal
|
1 -- normal
|
||||||
2 -- team message
|
2 -- team message
|
||||||
4 -- spectator
|
4 -- spectator
|
||||||
|
@ -1934,10 +1934,10 @@ int TP_CategorizeMessage (char *s, int *offset, player_info_t **plr)
|
||||||
player_info_t *player;
|
player_info_t *player;
|
||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
flags = 0;
|
flags = TPM_UNKNOWN;
|
||||||
msglen = strlen(s);
|
msglen = strlen(s);
|
||||||
if (!msglen)
|
if (!msglen)
|
||||||
return 0;
|
return TPM_UNKNOWN;
|
||||||
|
|
||||||
*offset = 0;
|
*offset = 0;
|
||||||
*plr = NULL;
|
*plr = NULL;
|
||||||
|
@ -1953,9 +1953,9 @@ int TP_CategorizeMessage (char *s, int *offset, player_info_t **plr)
|
||||||
!strncmp(name, s, len))
|
!strncmp(name, s, len))
|
||||||
{
|
{
|
||||||
if (player->spectator)
|
if (player->spectator)
|
||||||
flags |= 4;
|
flags |= TPM_SPECTATOR;
|
||||||
else
|
else
|
||||||
flags |= 1;
|
flags |= TPM_NORMAL;
|
||||||
*offset = len + 2;
|
*offset = len + 2;
|
||||||
*plr = player;
|
*plr = player;
|
||||||
}
|
}
|
||||||
|
@ -1967,19 +1967,19 @@ int TP_CategorizeMessage (char *s, int *offset, player_info_t **plr)
|
||||||
// no team messages in teamplay 0, except for our own
|
// no team messages in teamplay 0, except for our own
|
||||||
if (i == cl.playernum[SP] || ( cl.teamplay &&
|
if (i == cl.playernum[SP] || ( cl.teamplay &&
|
||||||
!strcmp(cl.players[cl.playernum[SP]].team, player->team)) )
|
!strcmp(cl.players[cl.playernum[SP]].team, player->team)) )
|
||||||
flags |= 2;
|
flags |= TPM_TEAM;
|
||||||
|
|
||||||
*offset = len + 4;
|
*offset = len + 4;
|
||||||
*plr = player;
|
*plr = player;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!flags)
|
if (!flags) // search for fake player
|
||||||
{
|
{
|
||||||
if (name = strstr(s, ": ")) // use name as temp
|
if (name = strstr(s, ": ")) // use name as temp
|
||||||
{
|
{
|
||||||
*offset = (name - s) + 2;
|
*offset = (name - s) + 2;
|
||||||
flags = 16;
|
flags = TPM_FAKED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3228,7 +3228,13 @@ void CL_Say (qboolean team, char *extra)
|
||||||
}
|
}
|
||||||
*d = '\0';
|
*d = '\0';
|
||||||
|
|
||||||
CL_PrintChat(&cl.players[cl.playernum[SP]], text, team, false);
|
{
|
||||||
|
int plrflags = 0;
|
||||||
|
if (team)
|
||||||
|
plrflags |= 2;
|
||||||
|
|
||||||
|
CL_PrintChat(&cl.players[cl.playernum[SP]], NULL, text, plrflags);
|
||||||
|
}
|
||||||
|
|
||||||
//strip out the extra markup
|
//strip out the extra markup
|
||||||
for (s = sendtext, d = sendtext; *s; s++, d++)
|
for (s = sendtext, d = sendtext; *s; s++, d++)
|
||||||
|
|
Loading…
Reference in a new issue