mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-22 04:21:23 +00:00
Merge branch 'showinput' into 'next'
Allow input view outside of record attack See merge request STJr/SRB2!2020
This commit is contained in:
commit
553240f7c2
6 changed files with 51 additions and 40 deletions
|
@ -4834,6 +4834,7 @@ const char *const POWERS_LIST[] = {
|
||||||
|
|
||||||
const char *const HUDITEMS_LIST[] = {
|
const char *const HUDITEMS_LIST[] = {
|
||||||
"LIVES",
|
"LIVES",
|
||||||
|
"INPUT",
|
||||||
|
|
||||||
"RINGS",
|
"RINGS",
|
||||||
"RINGSNUM",
|
"RINGSNUM",
|
||||||
|
|
|
@ -638,6 +638,7 @@ extern boolean singletics;
|
||||||
|
|
||||||
extern consvar_t cv_timetic; // display high resolution timer
|
extern consvar_t cv_timetic; // display high resolution timer
|
||||||
extern consvar_t cv_powerupdisplay; // display powerups
|
extern consvar_t cv_powerupdisplay; // display powerups
|
||||||
|
extern consvar_t cv_showinput; // display input viewer outside of time attack
|
||||||
extern consvar_t cv_showinputjoy; // display joystick in time attack
|
extern consvar_t cv_showinputjoy; // display joystick in time attack
|
||||||
extern consvar_t cv_forceskin; // force clients to use the server's skin
|
extern consvar_t cv_forceskin; // force clients to use the server's skin
|
||||||
extern consvar_t cv_downloading; // allow clients to downloading WADs.
|
extern consvar_t cv_downloading; // allow clients to downloading WADs.
|
||||||
|
|
|
@ -24,6 +24,7 @@ enum hud {
|
||||||
hud_time,
|
hud_time,
|
||||||
hud_rings,
|
hud_rings,
|
||||||
hud_lives,
|
hud_lives,
|
||||||
|
hud_input,
|
||||||
// Match / CTF / Tag / Ringslinger
|
// Match / CTF / Tag / Ringslinger
|
||||||
hud_weaponrings,
|
hud_weaponrings,
|
||||||
hud_powerstones,
|
hud_powerstones,
|
||||||
|
|
|
@ -209,6 +209,7 @@ static CV_PossibleValue_t matchboxes_cons_t[] = {{0, "Normal"}, {1, "Mystery"},
|
||||||
static CV_PossibleValue_t chances_cons_t[] = {{0, "MIN"}, {9, "MAX"}, {0, NULL}};
|
static CV_PossibleValue_t chances_cons_t[] = {{0, "MIN"}, {9, "MAX"}, {0, NULL}};
|
||||||
static CV_PossibleValue_t pause_cons_t[] = {{0, "Server"}, {1, "All"}, {0, NULL}};
|
static CV_PossibleValue_t pause_cons_t[] = {{0, "Server"}, {1, "All"}, {0, NULL}};
|
||||||
|
|
||||||
|
consvar_t cv_showinput = CVAR_INIT ("showinput", "Off", CV_ALLOWLUA, CV_OnOff, NULL);
|
||||||
consvar_t cv_showinputjoy = CVAR_INIT ("showinputjoy", "Off", CV_ALLOWLUA, CV_OnOff, NULL);
|
consvar_t cv_showinputjoy = CVAR_INIT ("showinputjoy", "Off", CV_ALLOWLUA, CV_OnOff, NULL);
|
||||||
|
|
||||||
#ifdef NETGAME_DEVMODE
|
#ifdef NETGAME_DEVMODE
|
||||||
|
@ -736,6 +737,7 @@ void D_RegisterClientCommands(void)
|
||||||
CV_RegisterVar(&cv_timetic);
|
CV_RegisterVar(&cv_timetic);
|
||||||
CV_RegisterVar(&cv_powerupdisplay);
|
CV_RegisterVar(&cv_powerupdisplay);
|
||||||
CV_RegisterVar(&cv_itemfinder);
|
CV_RegisterVar(&cv_itemfinder);
|
||||||
|
CV_RegisterVar(&cv_showinput);
|
||||||
CV_RegisterVar(&cv_showinputjoy);
|
CV_RegisterVar(&cv_showinputjoy);
|
||||||
|
|
||||||
// time attack ghost options are also saved to config
|
// time attack ghost options are also saved to config
|
||||||
|
|
|
@ -139,6 +139,7 @@ static patch_t *fireflower;
|
||||||
hudinfo_t hudinfo[NUMHUDITEMS] =
|
hudinfo_t hudinfo[NUMHUDITEMS] =
|
||||||
{
|
{
|
||||||
{ 16, 176, V_SNAPTOLEFT|V_SNAPTOBOTTOM}, // HUD_LIVES
|
{ 16, 176, V_SNAPTOLEFT|V_SNAPTOBOTTOM}, // HUD_LIVES
|
||||||
|
{ 16, 152, V_SNAPTOLEFT|V_SNAPTOBOTTOM}, // HUD_INPUT
|
||||||
|
|
||||||
{ 16, 42, V_SNAPTOLEFT|V_SNAPTOTOP}, // HUD_RINGS
|
{ 16, 42, V_SNAPTOLEFT|V_SNAPTOTOP}, // HUD_RINGS
|
||||||
{ 96, 42, V_SNAPTOLEFT|V_SNAPTOTOP}, // HUD_RINGSNUM
|
{ 96, 42, V_SNAPTOLEFT|V_SNAPTOTOP}, // HUD_RINGSNUM
|
||||||
|
@ -1037,32 +1038,36 @@ static void ST_drawInput(void)
|
||||||
INT32 col;
|
INT32 col;
|
||||||
UINT8 offs;
|
UINT8 offs;
|
||||||
|
|
||||||
INT32 x = hudinfo[HUD_LIVES].x, y = hudinfo[HUD_LIVES].y;
|
INT32 x = hudinfo[HUD_INPUT].x, y = hudinfo[HUD_INPUT].y;
|
||||||
|
|
||||||
if (stplyr->powers[pw_carry] == CR_NIGHTSMODE)
|
if (stplyr->powers[pw_carry] == CR_NIGHTSMODE)
|
||||||
y -= 16;
|
y += 8;
|
||||||
|
else if (modeattacking || !LUA_HudEnabled(hud_lives))
|
||||||
|
y += 24;
|
||||||
|
else if (G_RingSlingerGametype() && LUA_HudEnabled(hud_powerstones))
|
||||||
|
y -= 5;
|
||||||
|
|
||||||
if (F_GetPromptHideHud(y))
|
if (F_GetPromptHideHud(y))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// O backing
|
// O backing
|
||||||
V_DrawFill(x, y-1, 16, 16, hudinfo[HUD_LIVES].f|20);
|
V_DrawFill(x, y-1, 16, 16, hudinfo[HUD_INPUT].f|20);
|
||||||
V_DrawFill(x, y+15, 16, 1, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x, y+15, 16, 1, hudinfo[HUD_INPUT].f|29);
|
||||||
|
|
||||||
if (cv_showinputjoy.value) // joystick render!
|
if (cv_showinputjoy.value) // joystick render!
|
||||||
{
|
{
|
||||||
/*V_DrawFill(x , y , 16, 1, hudinfo[HUD_LIVES].f|16);
|
/*V_DrawFill(x , y , 16, 1, hudinfo[HUD_INPUT.f|16);
|
||||||
V_DrawFill(x , y+15, 16, 1, hudinfo[HUD_LIVES].f|16);
|
V_DrawFill(x , y+15, 16, 1, hudinfo[HUD_INPUT].f|16);
|
||||||
V_DrawFill(x , y+ 1, 1, 14, hudinfo[HUD_LIVES].f|16);
|
V_DrawFill(x , y+ 1, 1, 14, hudinfo[HUD_INPUT].f|16);
|
||||||
V_DrawFill(x+15, y+ 1, 1, 14, hudinfo[HUD_LIVES].f|16); -- red's outline*/
|
V_DrawFill(x+15, y+ 1, 1, 14, hudinfo[HUD_INPUT].f|16); -- red's outline*/
|
||||||
if (stplyr->cmd.sidemove || stplyr->cmd.forwardmove)
|
if (stplyr->cmd.sidemove || stplyr->cmd.forwardmove)
|
||||||
{
|
{
|
||||||
// joystick hole
|
// joystick hole
|
||||||
V_DrawFill(x+5, y+4, 6, 6, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x+5, y+4, 6, 6, hudinfo[HUD_INPUT].f|29);
|
||||||
// joystick top
|
// joystick top
|
||||||
V_DrawFill(x+3+stplyr->cmd.sidemove/12,
|
V_DrawFill(x+3+stplyr->cmd.sidemove/12,
|
||||||
y+2-stplyr->cmd.forwardmove/12,
|
y+2-stplyr->cmd.forwardmove/12,
|
||||||
10, 10, hudinfo[HUD_LIVES].f|29);
|
10, 10, hudinfo[HUD_INPUT].f|29);
|
||||||
V_DrawFill(x+3+stplyr->cmd.sidemove/9,
|
V_DrawFill(x+3+stplyr->cmd.sidemove/9,
|
||||||
y+1-stplyr->cmd.forwardmove/9,
|
y+1-stplyr->cmd.forwardmove/9,
|
||||||
10, 10, accent);
|
10, 10, accent);
|
||||||
|
@ -1070,10 +1075,10 @@ static void ST_drawInput(void)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// just a limited, greyed out joystick top
|
// just a limited, greyed out joystick top
|
||||||
V_DrawFill(x+3, y+11, 10, 1, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x+3, y+11, 10, 1, hudinfo[HUD_INPUT].f|29);
|
||||||
V_DrawFill(x+3,
|
V_DrawFill(x+3,
|
||||||
y+1,
|
y+1,
|
||||||
10, 10, hudinfo[HUD_LIVES].f|16);
|
10, 10, hudinfo[HUD_INPUT].f|16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // arrows!
|
else // arrows!
|
||||||
|
@ -1087,10 +1092,10 @@ static void ST_drawInput(void)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
offs = 1;
|
offs = 1;
|
||||||
col = hudinfo[HUD_LIVES].f|16;
|
col = hudinfo[HUD_INPUT].f|16;
|
||||||
V_DrawFill(x- 2, y+10, 6, 1, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x- 2, y+10, 6, 1, hudinfo[HUD_INPUT].f|29);
|
||||||
V_DrawFill(x+ 4, y+ 9, 1, 1, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x+ 4, y+ 9, 1, 1, hudinfo[HUD_INPUT].f|29);
|
||||||
V_DrawFill(x+ 5, y+ 8, 1, 1, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x+ 5, y+ 8, 1, 1, hudinfo[HUD_INPUT].f|29);
|
||||||
}
|
}
|
||||||
V_DrawFill(x- 2, y+ 5-offs, 6, 6, col);
|
V_DrawFill(x- 2, y+ 5-offs, 6, 6, col);
|
||||||
V_DrawFill(x+ 4, y+ 6-offs, 1, 4, col);
|
V_DrawFill(x+ 4, y+ 6-offs, 1, 4, col);
|
||||||
|
@ -1105,12 +1110,12 @@ static void ST_drawInput(void)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
offs = 1;
|
offs = 1;
|
||||||
col = hudinfo[HUD_LIVES].f|16;
|
col = hudinfo[HUD_INPUT].f|16;
|
||||||
V_DrawFill(x+ 5, y+ 3, 1, 1, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x+ 5, y+ 3, 1, 1, hudinfo[HUD_INPUT].f|29);
|
||||||
V_DrawFill(x+ 6, y+ 4, 1, 1, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x+ 6, y+ 4, 1, 1, hudinfo[HUD_INPUT].f|29);
|
||||||
V_DrawFill(x+ 7, y+ 5, 2, 1, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x+ 7, y+ 5, 2, 1, hudinfo[HUD_INPUT].f|29);
|
||||||
V_DrawFill(x+ 9, y+ 4, 1, 1, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x+ 9, y+ 4, 1, 1, hudinfo[HUD_INPUT].f|29);
|
||||||
V_DrawFill(x+10, y+ 3, 1, 1, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x+10, y+ 3, 1, 1, hudinfo[HUD_INPUT].f|29);
|
||||||
}
|
}
|
||||||
V_DrawFill(x+ 5, y- 2-offs, 6, 6, col);
|
V_DrawFill(x+ 5, y- 2-offs, 6, 6, col);
|
||||||
V_DrawFill(x+ 6, y+ 4-offs, 4, 1, col);
|
V_DrawFill(x+ 6, y+ 4-offs, 4, 1, col);
|
||||||
|
@ -1125,10 +1130,10 @@ static void ST_drawInput(void)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
offs = 1;
|
offs = 1;
|
||||||
col = hudinfo[HUD_LIVES].f|16;
|
col = hudinfo[HUD_INPUT].f|16;
|
||||||
V_DrawFill(x+12, y+10, 6, 1, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x+12, y+10, 6, 1, hudinfo[HUD_INPUT].f|29);
|
||||||
V_DrawFill(x+11, y+ 9, 1, 1, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x+11, y+ 9, 1, 1, hudinfo[HUD_INPUT].f|29);
|
||||||
V_DrawFill(x+10, y+ 8, 1, 1, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x+10, y+ 8, 1, 1, hudinfo[HUD_INPUT].f|29);
|
||||||
}
|
}
|
||||||
V_DrawFill(x+12, y+ 5-offs, 6, 6, col);
|
V_DrawFill(x+12, y+ 5-offs, 6, 6, col);
|
||||||
V_DrawFill(x+11, y+ 6-offs, 1, 4, col);
|
V_DrawFill(x+11, y+ 6-offs, 1, 4, col);
|
||||||
|
@ -1143,8 +1148,8 @@ static void ST_drawInput(void)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
offs = 1;
|
offs = 1;
|
||||||
col = hudinfo[HUD_LIVES].f|16;
|
col = hudinfo[HUD_INPUT].f|16;
|
||||||
V_DrawFill(x+ 5, y+17, 6, 1, hudinfo[HUD_LIVES].f|29);
|
V_DrawFill(x+ 5, y+17, 6, 1, hudinfo[HUD_INPUT].f|29);
|
||||||
}
|
}
|
||||||
V_DrawFill(x+ 5, y+12-offs, 6, 6, col);
|
V_DrawFill(x+ 5, y+12-offs, 6, 6, col);
|
||||||
V_DrawFill(x+ 6, y+11-offs, 4, 1, col);
|
V_DrawFill(x+ 6, y+11-offs, 4, 1, col);
|
||||||
|
@ -1160,16 +1165,16 @@ static void ST_drawInput(void)
|
||||||
else\
|
else\
|
||||||
{\
|
{\
|
||||||
offs = 1;\
|
offs = 1;\
|
||||||
col = hudinfo[HUD_LIVES].f|16;\
|
col = hudinfo[HUD_INPUT].f|16;\
|
||||||
V_DrawFill(x+16+(xoffs), y+9+(yoffs), 10, 1, hudinfo[HUD_LIVES].f|29);\
|
V_DrawFill(x+16+(xoffs), y+9+(yoffs), 10, 1, hudinfo[HUD_INPUT].f|29);\
|
||||||
}\
|
}\
|
||||||
V_DrawFill(x+16+(xoffs), y+(yoffs)-offs, 10, 10, col);\
|
V_DrawFill(x+16+(xoffs), y+(yoffs)-offs, 10, 10, col);\
|
||||||
V_DrawCharacter(x+16+1+(xoffs), y+1+(yoffs)-offs, hudinfo[HUD_LIVES].f|symb, false)
|
V_DrawCharacter(x+16+1+(xoffs), y+1+(yoffs)-offs, hudinfo[HUD_INPUT].f|symb, false)
|
||||||
|
|
||||||
drawbutt( 4,-3, BT_JUMP, 'J');
|
drawbutt( 4,-3, BT_JUMP, 'J');
|
||||||
drawbutt(15,-3, BT_SPIN, 'S');
|
drawbutt(15,-3, BT_SPIN, 'S');
|
||||||
|
|
||||||
V_DrawFill(x+16+4, y+8, 21, 10, hudinfo[HUD_LIVES].f|20); // sundial backing
|
V_DrawFill(x+16+4, y+8, 21, 10, hudinfo[HUD_INPUT].f|20); // sundial backing
|
||||||
if (stplyr->mo)
|
if (stplyr->mo)
|
||||||
{
|
{
|
||||||
UINT8 i, precision;
|
UINT8 i, precision;
|
||||||
|
@ -1189,7 +1194,7 @@ static void ST_drawInput(void)
|
||||||
{
|
{
|
||||||
V_DrawFill(x+16+14-(i*xcomp)/precision,
|
V_DrawFill(x+16+14-(i*xcomp)/precision,
|
||||||
y+12-(i*ycomp)/precision,
|
y+12-(i*ycomp)/precision,
|
||||||
1, 1, hudinfo[HUD_LIVES].f|16);
|
1, 1, hudinfo[HUD_INPUT].f|16);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ycomp <= 0)
|
if (ycomp <= 0)
|
||||||
|
@ -1206,7 +1211,7 @@ static void ST_drawInput(void)
|
||||||
if (stplyr->pflags & PF_AUTOBRAKE)
|
if (stplyr->pflags & PF_AUTOBRAKE)
|
||||||
{
|
{
|
||||||
V_DrawThinString(x, y,
|
V_DrawThinString(x, y,
|
||||||
hudinfo[HUD_LIVES].f|
|
hudinfo[HUD_INPUT].f|
|
||||||
((!stplyr->powers[pw_carry]
|
((!stplyr->powers[pw_carry]
|
||||||
&& (stplyr->pflags & PF_APPLYAUTOBRAKE)
|
&& (stplyr->pflags & PF_APPLYAUTOBRAKE)
|
||||||
&& !(stplyr->cmd.sidemove || stplyr->cmd.forwardmove)
|
&& !(stplyr->cmd.sidemove || stplyr->cmd.forwardmove)
|
||||||
|
@ -1219,22 +1224,22 @@ static void ST_drawInput(void)
|
||||||
switch (P_ControlStyle(stplyr))
|
switch (P_ControlStyle(stplyr))
|
||||||
{
|
{
|
||||||
case CS_LMAOGALOG:
|
case CS_LMAOGALOG:
|
||||||
V_DrawThinString(x, y, hudinfo[HUD_LIVES].f, "ANALOG");
|
V_DrawThinString(x, y, hudinfo[HUD_INPUT].f, "ANALOG");
|
||||||
y -= 8;
|
y -= 8;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CS_SIMPLE:
|
case CS_SIMPLE:
|
||||||
V_DrawThinString(x, y, hudinfo[HUD_LIVES].f, "AUTOMATIC");
|
V_DrawThinString(x, y, hudinfo[HUD_INPUT].f, "AUTOMATIC");
|
||||||
y -= 8;
|
y -= 8;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CS_STANDARD:
|
case CS_STANDARD:
|
||||||
V_DrawThinString(x, y, hudinfo[HUD_LIVES].f, "MANUAL");
|
V_DrawThinString(x, y, hudinfo[HUD_INPUT].f, "MANUAL");
|
||||||
y -= 8;
|
y -= 8;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CS_LEGACY:
|
case CS_LEGACY:
|
||||||
V_DrawThinString(x, y, hudinfo[HUD_LIVES].f, "STRAFE");
|
V_DrawThinString(x, y, hudinfo[HUD_INPUT].f, "STRAFE");
|
||||||
y -= 8;
|
y -= 8;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1243,7 +1248,7 @@ static void ST_drawInput(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!demosynced) // should always be last, so it doesn't push anything else around
|
if (!demosynced) // should always be last, so it doesn't push anything else around
|
||||||
V_DrawThinString(x, y, hudinfo[HUD_LIVES].f|((leveltime & 4) ? V_YELLOWMAP : V_REDMAP), "BAD DEMO!!");
|
V_DrawThinString(x, y, hudinfo[HUD_INPUT].f|((leveltime & 4) ? V_YELLOWMAP : V_REDMAP), "BAD DEMO!!");
|
||||||
}
|
}
|
||||||
|
|
||||||
static patch_t *lt_patches[3];
|
static patch_t *lt_patches[3];
|
||||||
|
@ -2844,7 +2849,7 @@ static void ST_overlayDrawer(void)
|
||||||
if (!hu_showscores && (netgame || multiplayer) && LUA_HudEnabled(hud_textspectator))
|
if (!hu_showscores && (netgame || multiplayer) && LUA_HudEnabled(hud_textspectator))
|
||||||
ST_drawTextHUD();
|
ST_drawTextHUD();
|
||||||
|
|
||||||
if (modeattacking && !(demoplayback && hu_showscores))
|
if ((cv_showinput.value && !players[displayplayer].spectator) || (modeattacking && !(demoplayback && hu_showscores)))
|
||||||
ST_drawInput();
|
ST_drawInput();
|
||||||
|
|
||||||
ST_drawDebugInfo();
|
ST_drawDebugInfo();
|
||||||
|
|
|
@ -92,6 +92,7 @@ typedef struct
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
HUD_LIVES,
|
HUD_LIVES,
|
||||||
|
HUD_INPUT,
|
||||||
|
|
||||||
HUD_RINGS,
|
HUD_RINGS,
|
||||||
HUD_RINGSNUM,
|
HUD_RINGSNUM,
|
||||||
|
|
Loading…
Reference in a new issue