mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-29 07:02:12 +00:00
Hexen2: Tweaks to the sbar to better match hexen2's.
This commit is contained in:
parent
d0141bd6ed
commit
587032f1f6
3 changed files with 170 additions and 38 deletions
|
@ -657,6 +657,7 @@ struct playerview_s
|
||||||
#ifdef HEXEN2
|
#ifdef HEXEN2
|
||||||
int sb_hexen2_cur_item;//hexen2 hud
|
int sb_hexen2_cur_item;//hexen2 hud
|
||||||
float sb_hexen2_item_time;
|
float sb_hexen2_item_time;
|
||||||
|
float sb_hexen2_extra_info_lines;
|
||||||
qboolean sb_hexen2_extra_info;//show the extra stuff
|
qboolean sb_hexen2_extra_info;//show the extra stuff
|
||||||
qboolean sb_hexen2_infoplaque;
|
qboolean sb_hexen2_infoplaque;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -126,7 +126,8 @@ static apic_t *hsb_items[2];
|
||||||
|
|
||||||
static qboolean sbarfailed;
|
static qboolean sbarfailed;
|
||||||
#ifdef HEXEN2
|
#ifdef HEXEN2
|
||||||
static qboolean sbar_hexen2;
|
qboolean sbar_hexen2;
|
||||||
|
static const char *puzzlenames;
|
||||||
#endif
|
#endif
|
||||||
#ifdef NQPROT
|
#ifdef NQPROT
|
||||||
static void Sbar_CTFScores_f(void);
|
static void Sbar_CTFScores_f(void);
|
||||||
|
@ -842,13 +843,14 @@ static void Sbar_Hexen2InvLeft_f(void)
|
||||||
int tries = 15;
|
int tries = 15;
|
||||||
playerview_t *pv = &cl.playerview[seat];
|
playerview_t *pv = &cl.playerview[seat];
|
||||||
pv->sb_hexen2_item_time = realtime;
|
pv->sb_hexen2_item_time = realtime;
|
||||||
|
S_LocalSound("misc/invmove.wav");
|
||||||
while (tries-- > 0)
|
while (tries-- > 0)
|
||||||
{
|
{
|
||||||
pv->sb_hexen2_cur_item--;
|
pv->sb_hexen2_cur_item--;
|
||||||
if (pv->sb_hexen2_cur_item < 0)
|
if (pv->sb_hexen2_cur_item < 0)
|
||||||
pv->sb_hexen2_cur_item = 14;
|
pv->sb_hexen2_cur_item = 14;
|
||||||
|
|
||||||
if (pv->stats[STAT_H2_CNT_TORCH+pv->sb_hexen2_cur_item] > 0)
|
if (pv->stats[STAT_H2_CNT_FIRST+pv->sb_hexen2_cur_item] > 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -869,13 +871,14 @@ static void Sbar_Hexen2InvRight_f(void)
|
||||||
int tries = 15;
|
int tries = 15;
|
||||||
playerview_t *pv = &cl.playerview[seat];
|
playerview_t *pv = &cl.playerview[seat];
|
||||||
pv->sb_hexen2_item_time = realtime;
|
pv->sb_hexen2_item_time = realtime;
|
||||||
|
S_LocalSound("misc/invmove.wav");
|
||||||
while (tries-- > 0)
|
while (tries-- > 0)
|
||||||
{
|
{
|
||||||
pv->sb_hexen2_cur_item++;
|
pv->sb_hexen2_cur_item++;
|
||||||
if (pv->sb_hexen2_cur_item > 14)
|
if (pv->sb_hexen2_cur_item > 14)
|
||||||
pv->sb_hexen2_cur_item = 0;
|
pv->sb_hexen2_cur_item = 0;
|
||||||
|
|
||||||
if (pv->stats[STAT_H2_CNT_TORCH+pv->sb_hexen2_cur_item] > 0)
|
if (pv->stats[STAT_H2_CNT_FIRST+pv->sb_hexen2_cur_item] > 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -895,6 +898,7 @@ static void Sbar_Hexen2InvUse_f(void)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
playerview_t *pv = &cl.playerview[seat];
|
playerview_t *pv = &cl.playerview[seat];
|
||||||
|
S_LocalSound("misc/invuse.wav");
|
||||||
Cmd_ExecuteString(va("impulse %d\n", 100+pv->sb_hexen2_cur_item), Cmd_ExecLevel);
|
Cmd_ExecuteString(va("impulse %d\n", 100+pv->sb_hexen2_cur_item), Cmd_ExecLevel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2422,26 +2426,45 @@ void Sbar_DrawScoreboard (playerview_t *pv)
|
||||||
static void Sbar_Hexen2DrawActiveStuff(playerview_t *pv)
|
static void Sbar_Hexen2DrawActiveStuff(playerview_t *pv)
|
||||||
{
|
{
|
||||||
int x = r_refdef.grect.x + r_refdef.grect.width;
|
int x = r_refdef.grect.x + r_refdef.grect.width;
|
||||||
mpic_t *pic;
|
int y = 0;
|
||||||
|
|
||||||
|
//rings are vertical...
|
||||||
|
if (pv->stats[STAT_H2_RINGS_ACTIVE] & 8)
|
||||||
|
{ //turning...
|
||||||
|
R2D_ScalePic(x-32, r_refdef.grect.y+y, 32, 32, R2D_SafeCachePic(va("gfx/rngtrn%d.lmp", ((int)(cl.time*16)%15)+1)));
|
||||||
|
y += 32;
|
||||||
|
}
|
||||||
|
if (pv->stats[STAT_H2_RINGS_ACTIVE] & 2)
|
||||||
|
{ //water breathing
|
||||||
|
R2D_ScalePic(x-32, r_refdef.grect.y+y, 32, 32, R2D_SafeCachePic(va("gfx/rngwtr%d.lmp", ((int)(cl.time*16)%15)+1)));
|
||||||
|
y += 32;
|
||||||
|
}
|
||||||
|
if (pv->stats[STAT_H2_RINGS_ACTIVE] & 1)
|
||||||
|
{ //flight
|
||||||
|
R2D_ScalePic(x-32, r_refdef.grect.y+y, 32, 32, R2D_SafeCachePic(va("gfx/rngfly%d.lmp", ((int)(cl.time*16)%15)+1)));
|
||||||
|
y += 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (y) //if we drew the rings column, move artifacts over so they don't fight
|
||||||
|
x -= 50;
|
||||||
|
|
||||||
|
//artifacts are horizontal (without stomping on rings)...
|
||||||
if (pv->stats[STAT_H2_ARTIFACT_ACTIVE] & 4)
|
if (pv->stats[STAT_H2_ARTIFACT_ACTIVE] & 4)
|
||||||
{
|
{ //tome of power
|
||||||
pic = R2D_SafeCachePic(va("gfx/pwrbook%d.lmp", ((int)(cl.time*16)%15)+1));
|
|
||||||
x -= 32;
|
x -= 32;
|
||||||
R2D_ScalePic(x, r_refdef.grect.y, 32, 32, pic);
|
R2D_ScalePic(x, r_refdef.grect.y, 32, 32, R2D_SafeCachePic(va("gfx/pwrbook%d.lmp", ((int)(cl.time*16)%15)+1)));
|
||||||
x -= 18;
|
x -= 18;
|
||||||
}
|
}
|
||||||
if (pv->stats[STAT_H2_ARTIFACT_ACTIVE] & 1)
|
if (pv->stats[STAT_H2_ARTIFACT_ACTIVE] & 1)
|
||||||
{
|
{ //boots
|
||||||
pic = R2D_SafeCachePic(va("gfx/durhst%d.lmp", ((int)(cl.time*16)%15)+1));
|
|
||||||
x -= 32;
|
x -= 32;
|
||||||
R2D_ScalePic(x, r_refdef.grect.y, 32, 32, pic);
|
R2D_ScalePic(x, r_refdef.grect.y, 32, 32, R2D_SafeCachePic(va("gfx/durhst%d.lmp", ((int)(cl.time*16)%15)+1)));
|
||||||
x -= 18;
|
x -= 18;
|
||||||
}
|
}
|
||||||
if (pv->stats[STAT_H2_ARTIFACT_ACTIVE] & 2)
|
if (pv->stats[STAT_H2_ARTIFACT_ACTIVE] & 2)
|
||||||
{
|
{ //invincibility
|
||||||
pic = R2D_SafeCachePic(va("gfx/durshd%d.lmp", ((int)(cl.time*16)%15)+1));
|
|
||||||
x -= 32;
|
x -= 32;
|
||||||
R2D_ScalePic(x, r_refdef.grect.y, 32, 32, pic);
|
R2D_ScalePic(x, r_refdef.grect.y, 32, 32, R2D_SafeCachePic(va("gfx/durshd%d.lmp", ((int)(cl.time*16)%15)+1)));
|
||||||
x -= 18;
|
x -= 18;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2450,9 +2473,11 @@ static void Sbar_Hexen2DrawItem(playerview_t *pv, float x, float y, int itemnum)
|
||||||
int num;
|
int num;
|
||||||
Sbar_DrawMPic(x, y, 29, 28, R2D_SafeCachePic(va("gfx/arti%02d.lmp", itemnum)));
|
Sbar_DrawMPic(x, y, 29, 28, R2D_SafeCachePic(va("gfx/arti%02d.lmp", itemnum)));
|
||||||
|
|
||||||
num = pv->stats[STAT_H2_CNT_TORCH+itemnum];
|
num = pv->stats[STAT_H2_CNT_FIRST+itemnum];
|
||||||
if(num > 0)
|
if(num > 0)
|
||||||
{
|
{
|
||||||
|
if (num > 99)
|
||||||
|
num = 99;
|
||||||
if (num >= 10)
|
if (num >= 10)
|
||||||
Sbar_DrawMPic(x+20, y+21, 4, 6, R2D_SafeCachePic(va("gfx/artinum%d.lmp", num/10)));
|
Sbar_DrawMPic(x+20, y+21, 4, 6, R2D_SafeCachePic(va("gfx/artinum%d.lmp", num/10)));
|
||||||
Sbar_DrawMPic(x+20+4, y+21, 4, 6, R2D_SafeCachePic(va("gfx/artinum%d.lmp", num%10)));
|
Sbar_DrawMPic(x+20+4, y+21, 4, 6, R2D_SafeCachePic(va("gfx/artinum%d.lmp", num%10)));
|
||||||
|
@ -2467,23 +2492,26 @@ static void Sbar_Hexen2DrawInventory(playerview_t *pv)
|
||||||
int activeright = 0;
|
int activeright = 0;
|
||||||
|
|
||||||
/*always select an artifact that we actually have whether we are drawing the full bar or not.*/
|
/*always select an artifact that we actually have whether we are drawing the full bar or not.*/
|
||||||
for (i = 0; i < 15; i++)
|
/*NOTE: Hexen2 reorders them in collection order.*/
|
||||||
|
for (i = 0; i < STAT_H2_CNT_COUNT; i++)
|
||||||
{
|
{
|
||||||
if (pv->stats[STAT_H2_CNT_TORCH+(i+pv->sb_hexen2_cur_item)%15])
|
if (pv->stats[STAT_H2_CNT_FIRST+(i+pv->sb_hexen2_cur_item)%STAT_H2_CNT_COUNT])
|
||||||
{
|
{
|
||||||
pv->sb_hexen2_cur_item = (pv->sb_hexen2_cur_item + i)%15;
|
pv->sb_hexen2_cur_item = (pv->sb_hexen2_cur_item + i)%STAT_H2_CNT_COUNT;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pv->sb_hexen2_item_time+3 < realtime)
|
if (pv->sb_hexen2_item_time+3 < realtime)
|
||||||
return;
|
return;
|
||||||
|
if (!pv->stats[STAT_H2_CNT_FIRST+pv->sb_hexen2_cur_item])
|
||||||
|
return; //no items... don't confuse the user.
|
||||||
|
|
||||||
for (i = pv->sb_hexen2_cur_item; i < 15; i++)
|
for (i = pv->sb_hexen2_cur_item; i < STAT_H2_CNT_COUNT; i++)
|
||||||
if (pv->sb_hexen2_cur_item == i || pv->stats[STAT_H2_CNT_TORCH+i] > 0)
|
if (pv->sb_hexen2_cur_item == i || pv->stats[STAT_H2_CNT_FIRST+i] > 0)
|
||||||
activeright++;
|
activeright++;
|
||||||
for (i = pv->sb_hexen2_cur_item-1; i >= 0; i--)
|
for (i = pv->sb_hexen2_cur_item-1; i >= 0; i--)
|
||||||
if (pv->sb_hexen2_cur_item == i || pv->stats[STAT_H2_CNT_TORCH+i] > 0)
|
if (pv->sb_hexen2_cur_item == i || pv->stats[STAT_H2_CNT_FIRST+i] > 0)
|
||||||
activeleft++;
|
activeleft++;
|
||||||
|
|
||||||
if (activeleft > 3 + (activeright<=3?(4-activeright):0))
|
if (activeleft > 3 + (activeright<=3?(4-activeright):0))
|
||||||
|
@ -2491,7 +2519,7 @@ static void Sbar_Hexen2DrawInventory(playerview_t *pv)
|
||||||
x=320/2-114 + (activeleft-1)*33;
|
x=320/2-114 + (activeleft-1)*33;
|
||||||
for (i = pv->sb_hexen2_cur_item-1; x>=320/2-114; i--)
|
for (i = pv->sb_hexen2_cur_item-1; x>=320/2-114; i--)
|
||||||
{
|
{
|
||||||
if (!pv->stats[STAT_H2_CNT_TORCH+i])
|
if (!pv->stats[STAT_H2_CNT_FIRST+i])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (i == pv->sb_hexen2_cur_item)
|
if (i == pv->sb_hexen2_cur_item)
|
||||||
|
@ -2501,9 +2529,9 @@ static void Sbar_Hexen2DrawInventory(playerview_t *pv)
|
||||||
}
|
}
|
||||||
|
|
||||||
x=320/2-114 + activeleft*33;
|
x=320/2-114 + activeleft*33;
|
||||||
for (i = pv->sb_hexen2_cur_item; i < 15 && x < 320/2-114+7*33; i++)
|
for (i = pv->sb_hexen2_cur_item; i < STAT_H2_CNT_COUNT && x < 320/2-114+7*33; i++)
|
||||||
{
|
{
|
||||||
if (i != pv->sb_hexen2_cur_item && !pv->stats[STAT_H2_CNT_TORCH+i])
|
if (i != pv->sb_hexen2_cur_item && !pv->stats[STAT_H2_CNT_FIRST+i])
|
||||||
continue;
|
continue;
|
||||||
if (i == pv->sb_hexen2_cur_item)
|
if (i == pv->sb_hexen2_cur_item)
|
||||||
Sbar_DrawMPic(x+9, y-12, 11, 11, R2D_SafeCachePic("gfx/artisel.lmp"));
|
Sbar_DrawMPic(x+9, y-12, 11, 11, R2D_SafeCachePic("gfx/artisel.lmp"));
|
||||||
|
@ -2512,6 +2540,83 @@ static void Sbar_Hexen2DrawInventory(playerview_t *pv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void Sbar_Hexen2DrawPuzzles (playerview_t *pv)
|
||||||
|
{
|
||||||
|
unsigned int i, place=0, x, y, mid, j;
|
||||||
|
char name[64];
|
||||||
|
const char *line;
|
||||||
|
mpic_t *pic;
|
||||||
|
|
||||||
|
puzzlenames = FS_LoadMallocFile("puzzles.txt", NULL);
|
||||||
|
if (!puzzlenames)
|
||||||
|
puzzlenames = Z_StrDup("");
|
||||||
|
|
||||||
|
for (i = 0; i < 8; i++)
|
||||||
|
{
|
||||||
|
if (pv->statsstr[STAT_H2_PUZZLE1+i] && *pv->statsstr[STAT_H2_PUZZLE1+i])
|
||||||
|
{
|
||||||
|
pic = R2D_SafeCachePic(va("gfx/puzzle/%s.lmp", pv->statsstr[STAT_H2_PUZZLE1+i]));
|
||||||
|
|
||||||
|
strcpy(name, "Unknown");
|
||||||
|
for (line = puzzlenames; (line = COM_Parse(line)); )
|
||||||
|
{
|
||||||
|
if (!Q_strcasecmp(com_token, pv->statsstr[STAT_H2_PUZZLE1+i]))
|
||||||
|
{
|
||||||
|
while (*line == ' ' || *line == '\t')
|
||||||
|
line++;
|
||||||
|
for (j = 0; j < countof(name)-1; j++)
|
||||||
|
{
|
||||||
|
if (*line == '\r' || *line == '\n' || !*line)
|
||||||
|
break;
|
||||||
|
name[j] = *line++;
|
||||||
|
}
|
||||||
|
name[j] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
line = strchr(line, '\n');
|
||||||
|
if (!line)
|
||||||
|
break;
|
||||||
|
line++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (r_refdef.grect.width < 320)
|
||||||
|
{ //screen too narrow for side by side. depend on height.
|
||||||
|
x = r_refdef.grect.x + 10;
|
||||||
|
y = 50 + place*32;
|
||||||
|
if (y+26 > r_refdef.grect.height)
|
||||||
|
continue;
|
||||||
|
y += sbar_rect.y;
|
||||||
|
mid = r_refdef.grect.x + r_refdef.grect.width;
|
||||||
|
R2D_ScalePic(x, y, 26, 26, pic);
|
||||||
|
Draw_FunStringWidth(x+35, y+(26-8)/2, name, mid-(x+35), false, false);
|
||||||
|
}
|
||||||
|
else if (place < 4)
|
||||||
|
{ //first four are on the left.
|
||||||
|
x = r_refdef.grect.x + 10;
|
||||||
|
y = 50 + place*32;
|
||||||
|
if (y+26 > r_refdef.grect.height)
|
||||||
|
continue;
|
||||||
|
y += sbar_rect.y;
|
||||||
|
mid = r_refdef.grect.x + r_refdef.grect.width/2;
|
||||||
|
R2D_ScalePic(x, y, 26, 26, pic);
|
||||||
|
R_DrawTextField(x+35, y, mid-(x+35), 26, name, CON_WHITEMASK, CPRINT_LALIGN, font_default, NULL);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //last four are on the right
|
||||||
|
x = r_refdef.grect.x + r_refdef.grect.width - 10 - 26;
|
||||||
|
y = 50 + (place-4)*32;
|
||||||
|
if (y+26 > r_refdef.grect.height)
|
||||||
|
continue;
|
||||||
|
y += sbar_rect.y;
|
||||||
|
mid = r_refdef.grect.x + r_refdef.grect.width/2;
|
||||||
|
R2D_ScalePic(x, y, 26, 26, pic);
|
||||||
|
R_DrawTextField(mid, y, x-(35-26)-mid, 26, name, CON_WHITEMASK, CPRINT_RALIGN, font_default, NULL);
|
||||||
|
}
|
||||||
|
place++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void Sbar_Hexen2DrawExtra (playerview_t *pv)
|
static void Sbar_Hexen2DrawExtra (playerview_t *pv)
|
||||||
{
|
{
|
||||||
unsigned int i, slot;
|
unsigned int i, slot;
|
||||||
|
@ -2528,20 +2633,13 @@ static void Sbar_Hexen2DrawExtra (playerview_t *pv)
|
||||||
"Demoness"
|
"Demoness"
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!pv->sb_hexen2_extra_info)
|
// if (!pv->sb_hexen2_extra_info)
|
||||||
{
|
// return;
|
||||||
sbar_rect.y -= 46-SBAR_HEIGHT;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pclass = cl.players[pv->playernum].h2playerclass;
|
pclass = cl.players[pv->playernum].h2playerclass;
|
||||||
if (pclass >= sizeof(pclassname)/sizeof(pclassname[0]))
|
if (pclass >= sizeof(pclassname)/sizeof(pclassname[0]))
|
||||||
pclass = 0;
|
pclass = 0;
|
||||||
|
|
||||||
|
|
||||||
//adjust it so there's space
|
|
||||||
sbar_rect.y -= 46+98-SBAR_HEIGHT;
|
|
||||||
|
|
||||||
Sbar_DrawMPic(0, 46, 160, 98, R2D_SafeCachePic("gfx/btmbar1.lmp"));
|
Sbar_DrawMPic(0, 46, 160, 98, R2D_SafeCachePic("gfx/btmbar1.lmp"));
|
||||||
Sbar_DrawMPic(160, 46, 160, 98, R2D_SafeCachePic("gfx/btmbar2.lmp"));
|
Sbar_DrawMPic(160, 46, 160, 98, R2D_SafeCachePic("gfx/btmbar2.lmp"));
|
||||||
|
|
||||||
|
@ -2694,8 +2792,8 @@ static void Sbar_Hexen2DrawBasic(playerview_t *pv)
|
||||||
Sbar_DrawMPic(43, 36, 10, 10, R2D_SafeCachePic("gfx/chnlcov.lmp"));
|
Sbar_DrawMPic(43, 36, 10, 10, R2D_SafeCachePic("gfx/chnlcov.lmp"));
|
||||||
Sbar_DrawMPic(267, 36, 10, 10, R2D_SafeCachePic("gfx/chnrcov.lmp"));
|
Sbar_DrawMPic(267, 36, 10, 10, R2D_SafeCachePic("gfx/chnrcov.lmp"));
|
||||||
|
|
||||||
|
if (pv->stats[STAT_H2_CNT_FIRST+pv->sb_hexen2_cur_item])
|
||||||
Sbar_Hexen2DrawItem(pv, 144, 3, pv->sb_hexen2_cur_item);
|
Sbar_Hexen2DrawItem(pv, 144, 3, pv->sb_hexen2_cur_item);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Sbar_Hexen2DrawMinimal(playerview_t *pv)
|
static void Sbar_Hexen2DrawMinimal(playerview_t *pv)
|
||||||
|
@ -2709,6 +2807,9 @@ static void Sbar_Hexen2DrawMinimal(playerview_t *pv)
|
||||||
Sbar_DrawTinyStringf(10, y+18+6, "%03d", pv->stats[STAT_H2_GREENMANA]);
|
Sbar_DrawTinyStringf(10, y+18+6, "%03d", pv->stats[STAT_H2_GREENMANA]);
|
||||||
|
|
||||||
Sbar_Hexen2DrawNum(38, y+18, pv->stats[STAT_HEALTH], 3);
|
Sbar_Hexen2DrawNum(38, y+18, pv->stats[STAT_HEALTH], 3);
|
||||||
|
|
||||||
|
if (pv->stats[STAT_H2_CNT_FIRST+pv->sb_hexen2_cur_item])
|
||||||
|
Sbar_Hexen2DrawItem(pv, 320-32, y+10, pv->sb_hexen2_cur_item);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2999,6 +3100,8 @@ void Sbar_Draw (playerview_t *pv)
|
||||||
#ifdef HEXEN2
|
#ifdef HEXEN2
|
||||||
if (sbar_hexen2)
|
if (sbar_hexen2)
|
||||||
{
|
{
|
||||||
|
extern cvar_t scr_conspeed;
|
||||||
|
float targlines;
|
||||||
//hexen2 hud
|
//hexen2 hud
|
||||||
|
|
||||||
if (pv->sb_hexen2_infoplaque)
|
if (pv->sb_hexen2_infoplaque)
|
||||||
|
@ -3013,19 +3116,44 @@ void Sbar_Draw (playerview_t *pv)
|
||||||
pv->sb_hexen2_infoplaque = false;
|
pv->sb_hexen2_infoplaque = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sb_lines > 24 || pv->sb_hexen2_extra_info)
|
if (pv->sb_hexen2_extra_info)
|
||||||
|
targlines = 46+98; //extra stuff shown when hitting tab
|
||||||
|
else if (sb_lines > SBAR_HEIGHT)
|
||||||
|
targlines = 46; //viewsize 100 stuff...
|
||||||
|
else
|
||||||
|
targlines = -23; //viewsize 110/120 transparent overlay. negative covers the extra translucent details above.
|
||||||
|
if (targlines > pv->sb_hexen2_extra_info_lines)
|
||||||
|
{ //expand
|
||||||
|
pv->sb_hexen2_extra_info_lines += scr_conspeed.value*host_frametime;
|
||||||
|
if (pv->sb_hexen2_extra_info_lines > targlines)
|
||||||
|
pv->sb_hexen2_extra_info_lines = targlines;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //shrink
|
||||||
|
pv->sb_hexen2_extra_info_lines -= scr_conspeed.value*host_frametime;
|
||||||
|
if (pv->sb_hexen2_extra_info_lines < targlines)
|
||||||
|
pv->sb_hexen2_extra_info_lines = targlines;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sb_lines > 0 && pv->sb_hexen2_extra_info_lines < 46)
|
||||||
|
Sbar_Hexen2DrawMinimal(pv);
|
||||||
|
if (pv->sb_hexen2_extra_info_lines > -23)
|
||||||
{
|
{
|
||||||
Sbar_Hexen2DrawExtra(pv);
|
sbar_rect.y -= pv->sb_hexen2_extra_info_lines - SBAR_HEIGHT; //Sbar_DrawMPic... eww.
|
||||||
|
if (pv->sb_hexen2_extra_info_lines > 46)
|
||||||
|
Sbar_Hexen2DrawExtra(pv);
|
||||||
Sbar_Hexen2DrawBasic(pv);
|
Sbar_Hexen2DrawBasic(pv);
|
||||||
}
|
}
|
||||||
else if (sb_lines > 0)
|
|
||||||
Sbar_Hexen2DrawMinimal(pv);
|
|
||||||
Sbar_Hexen2DrawInventory(pv);
|
Sbar_Hexen2DrawInventory(pv);
|
||||||
|
|
||||||
if (minidmoverlay)
|
if (minidmoverlay)
|
||||||
Sbar_MiniDeathmatchOverlay (pv);
|
Sbar_MiniDeathmatchOverlay (pv);
|
||||||
|
|
||||||
Sbar_Hexen2DrawActiveStuff(pv);
|
Sbar_Hexen2DrawActiveStuff(pv);
|
||||||
|
|
||||||
|
if (!cls.deathmatch)
|
||||||
|
if (pv->sb_showscores || pv->sb_showteamscores || pv->stats[STAT_HEALTH] <= 0)
|
||||||
|
Sbar_Hexen2DrawPuzzles(pv);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -968,6 +968,7 @@ STAT_H2_DEXTERITY, // changes stat bar
|
||||||
STAT_H2_BLUEMANA, // changes stat bar
|
STAT_H2_BLUEMANA, // changes stat bar
|
||||||
STAT_H2_GREENMANA, // changes stat bar
|
STAT_H2_GREENMANA, // changes stat bar
|
||||||
STAT_H2_EXPERIENCE, // changes stat bar
|
STAT_H2_EXPERIENCE, // changes stat bar
|
||||||
|
#define STAT_H2_CNT_FIRST (STAT_H2_CNT_TORCH)
|
||||||
STAT_H2_CNT_TORCH, // changes stat bar
|
STAT_H2_CNT_TORCH, // changes stat bar
|
||||||
STAT_H2_CNT_H_BOOST, // changes stat bar
|
STAT_H2_CNT_H_BOOST, // changes stat bar
|
||||||
STAT_H2_CNT_SH_BOOST, // changes stat bar
|
STAT_H2_CNT_SH_BOOST, // changes stat bar
|
||||||
|
@ -983,6 +984,8 @@ STAT_H2_CNT_POLYMORPH, // changes stat bar
|
||||||
STAT_H2_CNT_FLIGHT, // changes stat bar
|
STAT_H2_CNT_FLIGHT, // changes stat bar
|
||||||
STAT_H2_CNT_CUBEOFFORCE, // changes stat bar
|
STAT_H2_CNT_CUBEOFFORCE, // changes stat bar
|
||||||
STAT_H2_CNT_INVINCIBILITY, // changes stat bar
|
STAT_H2_CNT_INVINCIBILITY, // changes stat bar
|
||||||
|
#define STAT_H2_CNT_LAST (STAT_H2_CNT_INVINCIBILITY)
|
||||||
|
#define STAT_H2_CNT_COUNT (STAT_H2_CNT_LAST+1-STAT_H2_CNT_FIRST)
|
||||||
STAT_H2_ARTIFACT_ACTIVE,
|
STAT_H2_ARTIFACT_ACTIVE,
|
||||||
STAT_H2_ARTIFACT_LOW,
|
STAT_H2_ARTIFACT_LOW,
|
||||||
STAT_H2_MOVETYPE,
|
STAT_H2_MOVETYPE,
|
||||||
|
|
Loading…
Reference in a new issue