make HU widget strings local to the respective builder functions (#1172)

* make HU widget strings local to the respective builder functions

* express buffer sizes in terms of HU_MAXLINELENGTH
This commit is contained in:
Fabian Greffrath 2023-08-09 20:07:50 +02:00 committed by GitHub
parent 7cd5c8e2d0
commit 0d205abf97
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -90,7 +90,6 @@ char **player_names[] =
//jff 3/17/98 translate player colmap to text color ranges
int plyrcoltran[MAXPLAYERS]={CR_GREEN,CR_GRAY,CR_BROWN,CR_RED};
char chat_char; // remove later.
static player_t* plr;
// font sets
@ -201,17 +200,6 @@ static void HU_InitCrosshair(void);
static void HU_StartCrosshair(void);
int hud_crosshair;
//jff 2/16/98 initialization strings for ammo, health, armor widgets
static char hud_coordstr[80];
static char hud_fpsstr[16];
static char hud_ammostr[80];
static char hud_healthstr[80];
static char hud_armorstr[80];
static char hud_weapstr[80];
static char hud_keysstr[80];
static char hud_monsecstr[80];
static char hud_timestr[48]; // time above status bar
//
// Builtin map names.
// The actual names can be found in DStrings.h.
@ -543,20 +531,21 @@ void HU_Stop(void)
// Passed nothing, returns nothing
//
static void HU_widget_build_fps (void);
static void HU_widget_build_coord (void);
static void HU_widget_build_sttime(void);
static void HU_widget_build_monsec(void);
static void HU_widget_build_keys (void);
static void HU_widget_build_weapon (void);
static void HU_widget_build_armor (void);
static void HU_widget_build_health (void);
static void HU_widget_build_ammo (void);
static void HU_widget_build_armor (void);
static void HU_widget_build_coord (void);
static void HU_widget_build_fps (void);
static void HU_widget_build_health (void);
static void HU_widget_build_keys (void);
static void HU_widget_build_frag (void);
static void HU_widget_build_monsec(void);
static void HU_widget_build_sttime(void);
static void HU_widget_build_title (void);
static void HU_widget_build_weapon (void);
void HU_Start(void)
{
int i;
char *s, *n, tempstr[80] = {0};
if (headsupactive) // stop before starting
HU_Stop();
@ -611,7 +600,7 @@ void HU_Start(void)
//jff 2/16/98 added some HUD widgets
// create the map title widget - map title display in lower left of automap
HUlib_initTextLine(&w_title, HU_TITLEX, HU_TITLEY, &hu_font,
HU_FONTSTART, colrngs[hudcolor_titl], NULL);
HU_FONTSTART, colrngs[hudcolor_titl], NULL); // [FG] built only once below
// create the hud health widget
HUlib_initTextLine(&w_health, 0, 0, &hu_font2, HU_FONTSTART, colrngs[CR_GREEN], HU_widget_build_health);
@ -626,7 +615,7 @@ void HU_Start(void)
HUlib_initTextLine(&w_weapon, 0, 0, &hu_font2, HU_FONTSTART, colrngs[CR_GRAY], HU_widget_build_weapon);
// create the hud keys widget
HUlib_initTextLine(&w_keys, 0, 0, &hu_font2, HU_FONTSTART, colrngs[CR_GRAY], HU_widget_build_keys);
HUlib_initTextLine(&w_keys, 0, 0, &hu_font2, HU_FONTSTART, colrngs[CR_GRAY], deathmatch ? HU_widget_build_frag : HU_widget_build_keys);
// create the hud monster/secret widget
HUlib_initTextLine(&w_monsec, 0, 0, &hu_font2, HU_FONTSTART, colrngs[CR_GRAY], HU_widget_build_monsec);
@ -639,6 +628,23 @@ void HU_Start(void)
HUlib_initTextLine(&w_fps, 0, 0, &hu_font2, HU_FONTSTART, colrngs[hudcolor_xyco], HU_widget_build_fps);
// initialize the automap's level title widget
HU_widget_build_title();
HU_disableAllWidgets();
// init crosshair
if (hud_crosshair)
HU_StartCrosshair();
// now allow the heads-up display to run
headsupactive = true;
}
static void HU_widget_build_title (void)
{
char hud_titlestr[HU_MAXLINELENGTH] = "";
char *s, *n;
if (gamemapinfo && gamemapinfo->levelname)
{
if (gamemapinfo->label)
@ -648,7 +654,7 @@ void HU_Start(void)
if (s == gamemapinfo->mapname || U_CheckField(s))
{
M_snprintf(tempstr, sizeof(tempstr), "%s: ", s);
M_snprintf(hud_titlestr, sizeof(hud_titlestr), "%s: ", s);
}
s = gamemapinfo->levelname;
}
@ -678,53 +684,20 @@ void HU_Start(void)
*n = '\0';
}
M_StringConcat(tempstr, s, sizeof(tempstr));
M_StringConcat(hud_titlestr, s, sizeof(hud_titlestr));
HUlib_clearTextLine(&w_title);
HUlib_addStringToTextLine(&w_title, tempstr);
//jff 2/16/98 initialize ammo widget
sprintf(hud_ammostr, "AMM ");
HUlib_addStringToTextLine(&w_ammo, hud_ammostr);
//jff 2/16/98 initialize health widget
sprintf(hud_healthstr, "HEL ");
HUlib_addStringToTextLine(&w_health, hud_healthstr);
//jff 2/16/98 initialize armor widget
sprintf(hud_armorstr, "ARM ");
HUlib_addStringToTextLine(&w_armor, hud_armorstr);
//jff 2/17/98 initialize weapons widget
sprintf(hud_weapstr, "WEA ");
HUlib_addStringToTextLine(&w_weapon, hud_weapstr);
//jff 2/17/98 initialize keys widget
if (deathmatch)
sprintf(hud_keysstr, "FRG %c%c", '\x1b', '0'+CR_ORIG);
else
sprintf(hud_keysstr, "KEY %c%c", '\x1b', '0'+CR_NONE);
HUlib_addStringToTextLine(&w_keys, hud_keysstr);
HU_disableAllWidgets();
// init crosshair
if (hud_crosshair)
HU_StartCrosshair();
// now allow the heads-up display to run
headsupactive = true;
HUlib_addStringToTextLine(&w_title, hud_titlestr);
}
// do the hud ammo display
static void HU_widget_build_ammo (void)
{
char hud_ammostr[HU_MAXLINELENGTH] = "AMM ";
int i;
// clear the widgets internal line
HUlib_clearTextLine(&w_ammo);
hud_ammostr[4] = '\0';
// special case for weapon with no ammo selected - blank bargraph + N/A
if (weaponinfo[plr->readyweapon].ammo == am_noammo)
{
@ -789,6 +762,7 @@ static void HU_widget_build_ammo (void)
// do the hud health display
static void HU_widget_build_health (void)
{
char hud_healthstr[HU_MAXLINELENGTH] = "HEL ";
int i;
int healthbars = (st_health > 100) ? 25 : (st_health / 4);
@ -834,6 +808,7 @@ static void HU_widget_build_health (void)
// do the hud armor display
static void HU_widget_build_armor (void)
{
char hud_armorstr[HU_MAXLINELENGTH] = "ARM ";
int i;
int armorbars = (st_armor > 100) ? 25 : (st_armor / 4);
@ -898,13 +873,12 @@ static void HU_widget_build_armor (void)
// do the hud weapon display
static void HU_widget_build_weapon (void)
{
int i, w, ammo, fullammo, ammopct;
char hud_weapstr[HU_MAXLINELENGTH] = "WEA ";
int i = 4, w, ammo, fullammo, ammopct;
// clear the widgets internal line
HUlib_clearTextLine(&w_weapon);
i = 4; hud_weapstr[i] = '\0'; //jff 3/7/98 make sure ammo goes away
// do each weapon that exists in current gamemode
for (w = 0; w <= wp_supershotgun; w++) //jff 3/4/98 show fists too, why not?
{
@ -965,7 +939,7 @@ static void HU_widget_build_weapon (void)
HUlib_addStringToTextLine(&w_weapon, hud_weapstr);
}
static inline int HU_top(int i, int idx1, int top1)
static inline int HU_top(char *fragstr, int i, int idx1, int top1)
{
if (idx1 > -1)
{
@ -974,25 +948,22 @@ static inline int HU_top(int i, int idx1, int top1)
sprintf(numbuf, "%5d", top1);
// make frag count in player's color via escape code
hud_keysstr[i++] = '\x1b'; //jff 3/26/98 use ESC not '\' for paths
hud_keysstr[i++] = '0' + plyrcoltran[idx1 & 3];
fragstr[i++] = '\x1b'; //jff 3/26/98 use ESC not '\' for paths
fragstr[i++] = '0' + plyrcoltran[idx1 & 3];
s = numbuf;
while (*s)
hud_keysstr[i++] = *s++;
fragstr[i++] = *s++;
}
return i;
}
static void HU_widget_build_keys (void)
{
int i, k;
char hud_keysstr[HU_MAXLINELENGTH] = { 'K', 'E', 'Y', '\x1b', '0'+CR_NONE, '\0' };
int i = 6, k;
HUlib_clearTextLine(&w_keys); // clear the widget strings
i = 6; hud_keysstr[i] = '\0'; //jff 3/7/98 make sure deleted keys go away
if (!deathmatch)
{
// build text string whose characters call out graphic keys
for (k = 0; k < 6; k++)
{
@ -1005,13 +976,22 @@ static void HU_widget_build_keys (void)
hud_keysstr[i++] = ' ';
}
hud_keysstr[i] = '\0';
// transfer the built string (frags or key title) to the widget
HUlib_addStringToTextLine(&w_keys, hud_keysstr);
}
else //jff 3/17/98 show frags, not keys, in deathmatch
static void HU_widget_build_frag (void)
{
char hud_fragstr[HU_MAXLINELENGTH] = { 'F', 'R', 'G', '\x1b', '0'+CR_ORIG, '\0' };
int i = 6, k;
int top1 = -999, top2 = -999, top3 = -999, top4 = -999;
int idx1 = -1, idx2 = -1, idx3 = -1, idx4 = -1;
int fragcount, m;
HUlib_clearTextLine(&w_keys); // clear the widget strings
// scan thru players
for (k = 0; k < MAXPLAYERS; k++)
{
@ -1057,29 +1037,29 @@ static void HU_widget_build_keys (void)
// if the biggest number exists,
// put it in the init string
i = HU_top(i, idx1, top1);
i = HU_top(hud_fragstr, i, idx1, top1);
// if the second biggest number exists,
// put it in the init string
i = HU_top(i, idx2, top2);
i = HU_top(hud_fragstr, i, idx2, top2);
// if the third biggest number exists,
// put it in the init string
i = HU_top(i, idx3, top3);
i = HU_top(hud_fragstr, i, idx3, top3);
// if the fourth biggest number exists,
// put it in the init string
i = HU_top(i, idx4, top4);
i = HU_top(hud_fragstr, i, idx4, top4);
hud_keysstr[i] = '\0';
}
hud_fragstr[i] = '\0';
// transfer the built string (frags or key title) to the widget
HUlib_addStringToTextLine(&w_keys, hud_keysstr);
HUlib_addStringToTextLine(&w_keys, hud_fragstr);
}
static void HU_widget_build_monsec(void)
{
char hud_monsecstr[HU_MAXLINELENGTH];
int i, playerscount;
char kills_str[60];
int offset = 0;
@ -1147,6 +1127,7 @@ static void HU_widget_build_monsec(void)
static void HU_widget_build_sttime(void)
{
char hud_timestr[HU_MAXLINELENGTH/2];
int offset = 0;
extern int time_scale;
@ -1172,6 +1153,7 @@ static void HU_widget_build_sttime(void)
static void HU_widget_build_coord (void)
{
char hud_coordstr[HU_MAXLINELENGTH];
fixed_t x,y,z; // killough 10/98:
void AM_Coordinates(const mobj_t *, fixed_t *, fixed_t *, fixed_t *);
@ -1190,6 +1172,7 @@ static void HU_widget_build_coord (void)
static void HU_widget_build_fps (void)
{
char hud_fpsstr[HU_MAXLINELENGTH/4];
extern int fps;
sprintf(hud_fpsstr,"\x1b%c%d \x1b%cFPS", '0'+CR_GRAY, fps, '0'+CR_ORIG);