mirror of
https://github.com/fabiangreffrath/woof.git
synced 2025-09-26 06:20:16 -04:00
automap overlay and rotate modes (based on Crispy Doom) (#216)
* add automap overlay mode * add automap rotate mode * add zoom automap with mouse wheel * remove automaprotate toggle * set mapangle in AM_Ticker * initialize zoomlevel on all maps so that a 4096 units square map would just fit in (from Crispy Doom) * revert 320->SCREENWITDH change * change STlib_updatePercent 'refresh' check * cleanup and add comment * move map title position calculation to the next block
This commit is contained in:
parent
107f6f6e52
commit
68fed677ac
234
Source/am_map.c
234
Source/am_map.c
@ -86,6 +86,8 @@ extern int key_map_clear; // |
|
|||||||
extern int key_map_grid; // phares
|
extern int key_map_grid; // phares
|
||||||
// [FG] automap joystick button
|
// [FG] automap joystick button
|
||||||
extern int joybautomap;
|
extern int joybautomap;
|
||||||
|
extern int key_map_overlay;
|
||||||
|
extern int key_map_rotate;
|
||||||
|
|
||||||
// scale on entry
|
// scale on entry
|
||||||
#define INITSCALEMTOF (int)(.2*FRACUNIT)
|
#define INITSCALEMTOF (int)(.2*FRACUNIT)
|
||||||
@ -99,6 +101,10 @@ extern int joybautomap;
|
|||||||
// pulls out to 0.5x in 1 second
|
// pulls out to 0.5x in 1 second
|
||||||
#define M_ZOOMOUT ((int) (FRACUNIT/1.02))
|
#define M_ZOOMOUT ((int) (FRACUNIT/1.02))
|
||||||
|
|
||||||
|
// [crispy] zoom faster with the mouse wheel
|
||||||
|
#define M2_ZOOMIN ((int) (1.08*FRACUNIT))
|
||||||
|
#define M2_ZOOMOUT ((int) (FRACUNIT/1.08))
|
||||||
|
|
||||||
// translates between frame-buffer and map distances
|
// translates between frame-buffer and map distances
|
||||||
// [FG] fix int overflow that causes map and grid lines to disappear
|
// [FG] fix int overflow that causes map and grid lines to disappear
|
||||||
#define FTOM(x) ((((int64_t)(x)<<16)*scale_ftom)>>16)
|
#define FTOM(x) ((((int64_t)(x)<<16)*scale_ftom)>>16)
|
||||||
@ -220,6 +226,8 @@ int automap_grid = 0;
|
|||||||
|
|
||||||
boolean automapactive = false;
|
boolean automapactive = false;
|
||||||
|
|
||||||
|
boolean automapoverlay = false;
|
||||||
|
|
||||||
// location of window on screen
|
// location of window on screen
|
||||||
static int f_x;
|
static int f_x;
|
||||||
static int f_y;
|
static int f_y;
|
||||||
@ -288,6 +296,17 @@ int followplayer = 1; // specifies whether to follow the player around
|
|||||||
|
|
||||||
static boolean stopped = true;
|
static boolean stopped = true;
|
||||||
|
|
||||||
|
// [crispy] automap rotate mode needs these early on
|
||||||
|
boolean automaprotate = false;
|
||||||
|
void AM_rotate(int64_t *x, int64_t *y, angle_t a);
|
||||||
|
static void AM_rotatePoint(mpoint_t *pt);
|
||||||
|
static mpoint_t mapcenter;
|
||||||
|
static angle_t mapangle;
|
||||||
|
|
||||||
|
// [FG] prev/next weapon keys and buttons
|
||||||
|
extern int mousebprevweapon;
|
||||||
|
extern int mousebnextweapon;
|
||||||
|
|
||||||
//
|
//
|
||||||
// AM_getIslope()
|
// AM_getIslope()
|
||||||
//
|
//
|
||||||
@ -457,14 +476,22 @@ void AM_findMinMaxBoundaries(void)
|
|||||||
//
|
//
|
||||||
void AM_changeWindowLoc(void)
|
void AM_changeWindowLoc(void)
|
||||||
{
|
{
|
||||||
|
int64_t incx, incy;
|
||||||
|
|
||||||
if (m_paninc.x || m_paninc.y)
|
if (m_paninc.x || m_paninc.y)
|
||||||
{
|
{
|
||||||
followplayer = 0;
|
followplayer = 0;
|
||||||
f_oldloc.x = D_MAXINT;
|
f_oldloc.x = D_MAXINT;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_x += m_paninc.x;
|
incx = m_paninc.x;
|
||||||
m_y += m_paninc.y;
|
incy = m_paninc.y;
|
||||||
|
if (automaprotate)
|
||||||
|
{
|
||||||
|
AM_rotate(&incx, &incy, -mapangle);
|
||||||
|
}
|
||||||
|
m_x += incx;
|
||||||
|
m_y += incy;
|
||||||
|
|
||||||
if (m_x + m_w/2 > max_x)
|
if (m_x + m_w/2 > max_x)
|
||||||
m_x = max_x - m_w/2;
|
m_x = max_x - m_w/2;
|
||||||
@ -600,7 +627,15 @@ void AM_LevelInit(void)
|
|||||||
f_h = (SCREENHEIGHT-ST_HEIGHT) << hires;
|
f_h = (SCREENHEIGHT-ST_HEIGHT) << hires;
|
||||||
|
|
||||||
AM_findMinMaxBoundaries();
|
AM_findMinMaxBoundaries();
|
||||||
scale_mtof = FixedDiv(min_scale_mtof, (int) (0.7*FRACUNIT));
|
|
||||||
|
// [crispy] initialize zoomlevel on all maps so that a 4096 units
|
||||||
|
// square map would just fit in (MAP01 is 3376x3648 units)
|
||||||
|
{
|
||||||
|
fixed_t a = FixedDiv(f_w, (max_w>>FRACBITS < 2048) ? 2*(max_w>>FRACBITS) : 4096);
|
||||||
|
fixed_t b = FixedDiv(f_h, (max_h>>FRACBITS < 2048) ? 2*(max_h>>FRACBITS) : 4096);
|
||||||
|
scale_mtof = FixedDiv(a < b ? a : b, (int) (0.7*FRACUNIT));
|
||||||
|
}
|
||||||
|
|
||||||
if (scale_mtof > max_scale_mtof)
|
if (scale_mtof > max_scale_mtof)
|
||||||
scale_mtof = min_scale_mtof;
|
scale_mtof = min_scale_mtof;
|
||||||
scale_ftom = FixedDiv(FRACUNIT, scale_mtof);
|
scale_ftom = FixedDiv(FRACUNIT, scale_mtof);
|
||||||
@ -720,6 +755,23 @@ boolean AM_Responder
|
|||||||
rc = true;
|
rc = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// [crispy] zoom automap with the mouse (wheel)
|
||||||
|
else if (ev->type == ev_mouse && !menuactive)
|
||||||
|
{
|
||||||
|
if (mousebprevweapon >= 0 && ev->data1 & (1 << mousebprevweapon))
|
||||||
|
{
|
||||||
|
mtof_zoommul = M2_ZOOMOUT;
|
||||||
|
ftom_zoommul = M2_ZOOMIN;
|
||||||
|
rc = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (mousebnextweapon >= 0 && ev->data1 & (1 << mousebnextweapon))
|
||||||
|
{
|
||||||
|
mtof_zoommul = M2_ZOOMIN;
|
||||||
|
ftom_zoommul = M2_ZOOMOUT;
|
||||||
|
rc = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (ev->type == ev_keydown)
|
else if (ev->type == ev_keydown)
|
||||||
{
|
{
|
||||||
rc = true;
|
rc = true;
|
||||||
@ -797,6 +849,23 @@ boolean AM_Responder
|
|||||||
plr->message = s_AMSTR_MARKSCLEARED; // ^
|
plr->message = s_AMSTR_MARKSCLEARED; // ^
|
||||||
} // |
|
} // |
|
||||||
else // phares
|
else // phares
|
||||||
|
if (ch == key_map_overlay)
|
||||||
|
{
|
||||||
|
automapoverlay = !automapoverlay;
|
||||||
|
if (automapoverlay)
|
||||||
|
plr->message = s_AMSTR_OVERLAYON;
|
||||||
|
else
|
||||||
|
plr->message = s_AMSTR_OVERLAYOFF;
|
||||||
|
}
|
||||||
|
else if (ch == key_map_rotate)
|
||||||
|
{
|
||||||
|
automaprotate = !automaprotate;
|
||||||
|
if (automaprotate)
|
||||||
|
plr->message = s_AMSTR_ROTATEON;
|
||||||
|
else
|
||||||
|
plr->message = s_AMSTR_ROTATEOFF;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
rc = false;
|
rc = false;
|
||||||
}
|
}
|
||||||
@ -847,6 +916,13 @@ void AM_changeWindowScale(void)
|
|||||||
scale_mtof = FixedMul(scale_mtof, mtof_zoommul);
|
scale_mtof = FixedMul(scale_mtof, mtof_zoommul);
|
||||||
scale_ftom = FixedDiv(FRACUNIT, scale_mtof);
|
scale_ftom = FixedDiv(FRACUNIT, scale_mtof);
|
||||||
|
|
||||||
|
// [crispy] reset after zooming with the mouse wheel
|
||||||
|
if (ftom_zoommul == M2_ZOOMIN || ftom_zoommul == M2_ZOOMOUT)
|
||||||
|
{
|
||||||
|
mtof_zoommul = FRACUNIT;
|
||||||
|
ftom_zoommul = FRACUNIT;
|
||||||
|
}
|
||||||
|
|
||||||
if (scale_mtof < min_scale_mtof)
|
if (scale_mtof < min_scale_mtof)
|
||||||
AM_minOutWindowScale();
|
AM_minOutWindowScale();
|
||||||
else if (scale_mtof > max_scale_mtof)
|
else if (scale_mtof > max_scale_mtof)
|
||||||
@ -911,7 +987,17 @@ void AM_Ticker (void)
|
|||||||
|
|
||||||
// Change x,y location
|
// Change x,y location
|
||||||
if (m_paninc.x || m_paninc.y)
|
if (m_paninc.x || m_paninc.y)
|
||||||
|
{
|
||||||
AM_changeWindowLoc();
|
AM_changeWindowLoc();
|
||||||
|
}
|
||||||
|
|
||||||
|
// [crispy] required for AM_rotatePoint()
|
||||||
|
if (automaprotate)
|
||||||
|
{
|
||||||
|
mapcenter.x = m_x + m_w / 2;
|
||||||
|
mapcenter.y = m_y + m_h / 2;
|
||||||
|
mapangle = ANG90 - viewangle;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1191,35 +1277,67 @@ void AM_drawGrid(int color)
|
|||||||
|
|
||||||
// Figure out start of vertical gridlines
|
// Figure out start of vertical gridlines
|
||||||
start = m_x;
|
start = m_x;
|
||||||
|
if (automaprotate)
|
||||||
|
{
|
||||||
|
start -= m_h / 2;
|
||||||
|
}
|
||||||
if ((start-bmaporgx)%(MAPBLOCKUNITS<<FRACBITS))
|
if ((start-bmaporgx)%(MAPBLOCKUNITS<<FRACBITS))
|
||||||
start += (MAPBLOCKUNITS<<FRACBITS)
|
start += (MAPBLOCKUNITS<<FRACBITS)
|
||||||
- ((start-bmaporgx)%(MAPBLOCKUNITS<<FRACBITS));
|
- ((start-bmaporgx)%(MAPBLOCKUNITS<<FRACBITS));
|
||||||
end = m_x + m_w;
|
end = m_x + m_w;
|
||||||
|
if (automaprotate)
|
||||||
|
{
|
||||||
|
end += m_h / 2;
|
||||||
|
}
|
||||||
|
|
||||||
// draw vertical gridlines
|
// draw vertical gridlines
|
||||||
ml.a.y = m_y;
|
|
||||||
ml.b.y = m_y+m_h;
|
|
||||||
for (x=start; x<end; x+=(MAPBLOCKUNITS<<FRACBITS))
|
for (x=start; x<end; x+=(MAPBLOCKUNITS<<FRACBITS))
|
||||||
{
|
{
|
||||||
ml.a.x = x;
|
ml.a.x = x;
|
||||||
ml.b.x = x;
|
ml.b.x = x;
|
||||||
|
// [crispy] moved here
|
||||||
|
ml.a.y = m_y;
|
||||||
|
ml.b.y = m_y+m_h;
|
||||||
|
if (automaprotate)
|
||||||
|
{
|
||||||
|
ml.a.y -= m_w / 2;
|
||||||
|
ml.b.y += m_w / 2;
|
||||||
|
AM_rotatePoint(&ml.a);
|
||||||
|
AM_rotatePoint(&ml.b);
|
||||||
|
}
|
||||||
AM_drawMline(&ml, color);
|
AM_drawMline(&ml, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Figure out start of horizontal gridlines
|
// Figure out start of horizontal gridlines
|
||||||
start = m_y;
|
start = m_y;
|
||||||
|
if (automaprotate)
|
||||||
|
{
|
||||||
|
start -= m_w / 2;
|
||||||
|
}
|
||||||
if ((start-bmaporgy)%(MAPBLOCKUNITS<<FRACBITS))
|
if ((start-bmaporgy)%(MAPBLOCKUNITS<<FRACBITS))
|
||||||
start += (MAPBLOCKUNITS<<FRACBITS)
|
start += (MAPBLOCKUNITS<<FRACBITS)
|
||||||
- ((start-bmaporgy)%(MAPBLOCKUNITS<<FRACBITS));
|
- ((start-bmaporgy)%(MAPBLOCKUNITS<<FRACBITS));
|
||||||
end = m_y + m_h;
|
end = m_y + m_h;
|
||||||
|
if (automaprotate)
|
||||||
|
{
|
||||||
|
end += m_w / 2;
|
||||||
|
}
|
||||||
|
|
||||||
// draw horizontal gridlines
|
// draw horizontal gridlines
|
||||||
ml.a.x = m_x;
|
|
||||||
ml.b.x = m_x + m_w;
|
|
||||||
for (y=start; y<end; y+=(MAPBLOCKUNITS<<FRACBITS))
|
for (y=start; y<end; y+=(MAPBLOCKUNITS<<FRACBITS))
|
||||||
{
|
{
|
||||||
ml.a.y = y;
|
ml.a.y = y;
|
||||||
ml.b.y = y;
|
ml.b.y = y;
|
||||||
|
// [crispy] moved here
|
||||||
|
ml.a.x = m_x;
|
||||||
|
ml.b.x = m_x + m_w;
|
||||||
|
if (automaprotate)
|
||||||
|
{
|
||||||
|
ml.a.x -= m_h / 2;
|
||||||
|
ml.b.x += m_h / 2;
|
||||||
|
AM_rotatePoint(&ml.a);
|
||||||
|
AM_rotatePoint(&ml.b);
|
||||||
|
}
|
||||||
AM_drawMline(&ml, color);
|
AM_drawMline(&ml, color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1293,6 +1411,11 @@ void AM_drawWalls(void)
|
|||||||
l.a.y = lines[i].v1->y;
|
l.a.y = lines[i].v1->y;
|
||||||
l.b.x = lines[i].v2->x;
|
l.b.x = lines[i].v2->x;
|
||||||
l.b.y = lines[i].v2->y;
|
l.b.y = lines[i].v2->y;
|
||||||
|
if (automaprotate)
|
||||||
|
{
|
||||||
|
AM_rotatePoint(&l.a);
|
||||||
|
AM_rotatePoint(&l.b);
|
||||||
|
}
|
||||||
// if line has been seen or IDDT has been used
|
// if line has been seen or IDDT has been used
|
||||||
if (ddt_cheating || (lines[i].flags & ML_MAPPED))
|
if (ddt_cheating || (lines[i].flags & ML_MAPPED))
|
||||||
{
|
{
|
||||||
@ -1498,6 +1621,27 @@ void AM_rotate
|
|||||||
*x = tmpx;
|
*x = tmpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// [crispy] rotate point around map center
|
||||||
|
// adapted from prboom-plus/src/am_map.c:898-920
|
||||||
|
static void AM_rotatePoint(mpoint_t *pt)
|
||||||
|
{
|
||||||
|
int64_t tmpx;
|
||||||
|
const angle_t actualangle = ANG90 - viewangle;
|
||||||
|
|
||||||
|
pt->x -= mapcenter.x;
|
||||||
|
pt->y -= mapcenter.y;
|
||||||
|
|
||||||
|
tmpx = (int64_t)FixedMul(pt->x, finecosine[actualangle>>ANGLETOFINESHIFT])
|
||||||
|
- (int64_t)FixedMul(pt->y, finesine[actualangle>>ANGLETOFINESHIFT])
|
||||||
|
+ mapcenter.x;
|
||||||
|
|
||||||
|
pt->y = (int64_t)FixedMul(pt->x, finesine[actualangle>>ANGLETOFINESHIFT])
|
||||||
|
+ (int64_t)FixedMul(pt->y, finecosine[actualangle>>ANGLETOFINESHIFT])
|
||||||
|
+ mapcenter.y;
|
||||||
|
|
||||||
|
pt->x = tmpx;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// AM_drawLineCharacter()
|
// AM_drawLineCharacter()
|
||||||
//
|
//
|
||||||
@ -1520,6 +1664,11 @@ void AM_drawLineCharacter
|
|||||||
int i;
|
int i;
|
||||||
mline_t l;
|
mline_t l;
|
||||||
|
|
||||||
|
if (automaprotate)
|
||||||
|
{
|
||||||
|
angle += mapangle;
|
||||||
|
}
|
||||||
|
|
||||||
for (i=0;i<lineguylines;i++)
|
for (i=0;i<lineguylines;i++)
|
||||||
{
|
{
|
||||||
l.a.x = lineguy[i].a.x;
|
l.a.x = lineguy[i].a.x;
|
||||||
@ -1571,9 +1720,17 @@ void AM_drawPlayers(void)
|
|||||||
//jff 1/6/98 static int their_colors[] = { GREENS, GRAYS, BROWNS, REDS };
|
//jff 1/6/98 static int their_colors[] = { GREENS, GRAYS, BROWNS, REDS };
|
||||||
int their_color = -1;
|
int their_color = -1;
|
||||||
int color;
|
int color;
|
||||||
|
mpoint_t pt;
|
||||||
|
|
||||||
if (!netgame)
|
if (!netgame)
|
||||||
{
|
{
|
||||||
|
pt.x = plr->mo->x;
|
||||||
|
pt.y = plr->mo->y;
|
||||||
|
if (automaprotate)
|
||||||
|
{
|
||||||
|
AM_rotatePoint(&pt);
|
||||||
|
}
|
||||||
|
|
||||||
if (ddt_cheating)
|
if (ddt_cheating)
|
||||||
AM_drawLineCharacter
|
AM_drawLineCharacter
|
||||||
(
|
(
|
||||||
@ -1582,8 +1739,8 @@ void AM_drawPlayers(void)
|
|||||||
0,
|
0,
|
||||||
plr->mo->angle,
|
plr->mo->angle,
|
||||||
mapcolor_sngl, //jff color
|
mapcolor_sngl, //jff color
|
||||||
plr->mo->x,
|
pt.x,
|
||||||
plr->mo->y
|
pt.y
|
||||||
);
|
);
|
||||||
else
|
else
|
||||||
AM_drawLineCharacter
|
AM_drawLineCharacter
|
||||||
@ -1593,8 +1750,8 @@ void AM_drawPlayers(void)
|
|||||||
0,
|
0,
|
||||||
plr->mo->angle,
|
plr->mo->angle,
|
||||||
mapcolor_sngl, //jff color
|
mapcolor_sngl, //jff color
|
||||||
plr->mo->x,
|
pt.x,
|
||||||
plr->mo->y);
|
pt.y);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1603,6 +1760,13 @@ void AM_drawPlayers(void)
|
|||||||
their_color++;
|
their_color++;
|
||||||
p = &players[i];
|
p = &players[i];
|
||||||
|
|
||||||
|
pt.x = p->mo->x;
|
||||||
|
pt.y = p->mo->y;
|
||||||
|
if (automaprotate)
|
||||||
|
{
|
||||||
|
AM_rotatePoint(&pt);
|
||||||
|
}
|
||||||
|
|
||||||
// killough 9/29/98: use !demoplayback so internal demos are no different
|
// killough 9/29/98: use !demoplayback so internal demos are no different
|
||||||
if ( (deathmatch && !demoplayback) && p != plr)
|
if ( (deathmatch && !demoplayback) && p != plr)
|
||||||
continue;
|
continue;
|
||||||
@ -1622,8 +1786,8 @@ void AM_drawPlayers(void)
|
|||||||
0,
|
0,
|
||||||
p->mo->angle,
|
p->mo->angle,
|
||||||
color,
|
color,
|
||||||
p->mo->x,
|
pt.x,
|
||||||
p->mo->y
|
pt.y
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1642,6 +1806,7 @@ void AM_drawThings
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
mobj_t* t;
|
mobj_t* t;
|
||||||
|
mpoint_t pt;
|
||||||
|
|
||||||
// for all sectors
|
// for all sectors
|
||||||
for (i=0;i<numsectors;i++)
|
for (i=0;i<numsectors;i++)
|
||||||
@ -1649,6 +1814,20 @@ void AM_drawThings
|
|||||||
t = sectors[i].thinglist;
|
t = sectors[i].thinglist;
|
||||||
while (t) // for all things in that sector
|
while (t) // for all things in that sector
|
||||||
{
|
{
|
||||||
|
// [crispy] do not draw an extra triangle for the player
|
||||||
|
if (t == plr->mo)
|
||||||
|
{
|
||||||
|
t = t->snext;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
pt.x = t->x;
|
||||||
|
pt.y = t->y;
|
||||||
|
if (automaprotate)
|
||||||
|
{
|
||||||
|
AM_rotatePoint(&pt);
|
||||||
|
}
|
||||||
|
|
||||||
//jff 1/5/98 case over doomednum of thing being drawn
|
//jff 1/5/98 case over doomednum of thing being drawn
|
||||||
if (mapcolor_rkey || mapcolor_ykey || mapcolor_bkey)
|
if (mapcolor_rkey || mapcolor_ykey || mapcolor_bkey)
|
||||||
{
|
{
|
||||||
@ -1663,8 +1842,8 @@ void AM_drawThings
|
|||||||
16<<FRACBITS,
|
16<<FRACBITS,
|
||||||
t->angle,
|
t->angle,
|
||||||
mapcolor_rkey!=-1? mapcolor_rkey : mapcolor_sprt,
|
mapcolor_rkey!=-1? mapcolor_rkey : mapcolor_sprt,
|
||||||
t->x,
|
pt.x,
|
||||||
t->y
|
pt.y
|
||||||
);
|
);
|
||||||
t = t->snext;
|
t = t->snext;
|
||||||
continue;
|
continue;
|
||||||
@ -1676,8 +1855,8 @@ void AM_drawThings
|
|||||||
16<<FRACBITS,
|
16<<FRACBITS,
|
||||||
t->angle,
|
t->angle,
|
||||||
mapcolor_ykey!=-1? mapcolor_ykey : mapcolor_sprt,
|
mapcolor_ykey!=-1? mapcolor_ykey : mapcolor_sprt,
|
||||||
t->x,
|
pt.x,
|
||||||
t->y
|
pt.y
|
||||||
);
|
);
|
||||||
t = t->snext;
|
t = t->snext;
|
||||||
continue;
|
continue;
|
||||||
@ -1689,8 +1868,8 @@ void AM_drawThings
|
|||||||
16<<FRACBITS,
|
16<<FRACBITS,
|
||||||
t->angle,
|
t->angle,
|
||||||
mapcolor_bkey!=-1? mapcolor_bkey : mapcolor_sprt,
|
mapcolor_bkey!=-1? mapcolor_bkey : mapcolor_sprt,
|
||||||
t->x,
|
pt.x,
|
||||||
t->y
|
pt.y
|
||||||
);
|
);
|
||||||
t = t->snext;
|
t = t->snext;
|
||||||
continue;
|
continue;
|
||||||
@ -1731,19 +1910,31 @@ void AM_drawThings
|
|||||||
void AM_drawMarks(void)
|
void AM_drawMarks(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
mpoint_t pt;
|
||||||
|
|
||||||
for (i=0;i<markpointnum;i++) // killough 2/22/98: remove automap mark limit
|
for (i=0;i<markpointnum;i++) // killough 2/22/98: remove automap mark limit
|
||||||
if (markpoints[i].x != -1)
|
if (markpoints[i].x != -1)
|
||||||
{
|
{
|
||||||
int w = 5 << hires;
|
int w = 5 << hires;
|
||||||
int h = 6 << hires;
|
int h = 6 << hires;
|
||||||
int fx = CXMTOF(markpoints[i].x);
|
int fx;
|
||||||
int fy = CYMTOF(markpoints[i].y);
|
int fy;
|
||||||
int j = i;
|
int j = i;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
int d = j % 10;
|
int d = j % 10;
|
||||||
|
|
||||||
|
// [crispy] center marks around player
|
||||||
|
pt.x = markpoints[i].x;
|
||||||
|
pt.y = markpoints[i].y;
|
||||||
|
if (automaprotate)
|
||||||
|
{
|
||||||
|
AM_rotatePoint(&pt);
|
||||||
|
}
|
||||||
|
fx = CXMTOF(pt.x);
|
||||||
|
fy = CYMTOF(pt.y);
|
||||||
|
|
||||||
if (d==1) // killough 2/22/98: less spacing for '1'
|
if (d==1) // killough 2/22/98: less spacing for '1'
|
||||||
fx += 1<<hires;
|
fx += 1<<hires;
|
||||||
|
|
||||||
@ -1782,6 +1973,7 @@ void AM_Drawer (void)
|
|||||||
{
|
{
|
||||||
if (!automapactive) return;
|
if (!automapactive) return;
|
||||||
|
|
||||||
|
if (!automapoverlay)
|
||||||
AM_clearFB(mapcolor_back); //jff 1/5/98 background default color
|
AM_clearFB(mapcolor_back); //jff 1/5/98 background default color
|
||||||
if (automap_grid) // killough 2/28/98: change var name
|
if (automap_grid) // killough 2/28/98: change var name
|
||||||
AM_drawGrid(mapcolor_grid); //jff 1/7/98 grid default color
|
AM_drawGrid(mapcolor_grid); //jff 1/7/98 grid default color
|
||||||
|
@ -346,6 +346,10 @@ char *s_AMSTR_GRIDON = AMSTR_GRIDON;
|
|||||||
char *s_AMSTR_GRIDOFF = AMSTR_GRIDOFF;
|
char *s_AMSTR_GRIDOFF = AMSTR_GRIDOFF;
|
||||||
char *s_AMSTR_MARKEDSPOT = AMSTR_MARKEDSPOT;
|
char *s_AMSTR_MARKEDSPOT = AMSTR_MARKEDSPOT;
|
||||||
char *s_AMSTR_MARKSCLEARED = AMSTR_MARKSCLEARED;
|
char *s_AMSTR_MARKSCLEARED = AMSTR_MARKSCLEARED;
|
||||||
|
char *s_AMSTR_OVERLAYON = AMSTR_OVERLAYON;
|
||||||
|
char *s_AMSTR_OVERLAYOFF = AMSTR_OVERLAYOFF;
|
||||||
|
char *s_AMSTR_ROTATEON = AMSTR_ROTATEON;
|
||||||
|
char *s_AMSTR_ROTATEOFF = AMSTR_ROTATEOFF;
|
||||||
char *s_STSTR_MUS = STSTR_MUS;
|
char *s_STSTR_MUS = STSTR_MUS;
|
||||||
char *s_STSTR_NOMUS = STSTR_NOMUS;
|
char *s_STSTR_NOMUS = STSTR_NOMUS;
|
||||||
char *s_STSTR_DQDON = STSTR_DQDON;
|
char *s_STSTR_DQDON = STSTR_DQDON;
|
||||||
@ -680,6 +684,10 @@ deh_strs deh_strlookup[] = {
|
|||||||
{&s_AMSTR_GRIDOFF,"AMSTR_GRIDOFF"},
|
{&s_AMSTR_GRIDOFF,"AMSTR_GRIDOFF"},
|
||||||
{&s_AMSTR_MARKEDSPOT,"AMSTR_MARKEDSPOT"},
|
{&s_AMSTR_MARKEDSPOT,"AMSTR_MARKEDSPOT"},
|
||||||
{&s_AMSTR_MARKSCLEARED,"AMSTR_MARKSCLEARED"},
|
{&s_AMSTR_MARKSCLEARED,"AMSTR_MARKSCLEARED"},
|
||||||
|
{&s_AMSTR_OVERLAYON,"AMSTR_OVERLAYON"},
|
||||||
|
{&s_AMSTR_OVERLAYOFF,"AMSTR_FOLLOWOFF"},
|
||||||
|
{&s_AMSTR_ROTATEON,"AMSTR_ROTATEON"},
|
||||||
|
{&s_AMSTR_ROTATEOFF,"AMSTR_ROTATEOFF"},
|
||||||
{&s_STSTR_MUS,"STSTR_MUS"},
|
{&s_STSTR_MUS,"STSTR_MUS"},
|
||||||
{&s_STSTR_NOMUS,"STSTR_NOMUS"},
|
{&s_STSTR_NOMUS,"STSTR_NOMUS"},
|
||||||
{&s_STSTR_DQDON,"STSTR_DQDON"},
|
{&s_STSTR_DQDON,"STSTR_DQDON"},
|
||||||
|
@ -599,6 +599,12 @@ extern char *s_AMSTR_MARKEDSPOT; // = AMSTR_MARKEDSPOT;
|
|||||||
//#define AMSTR_MARKSCLEARED "All Marks Cleared"
|
//#define AMSTR_MARKSCLEARED "All Marks Cleared"
|
||||||
extern char *s_AMSTR_MARKSCLEARED; // = AMSTR_MARKSCLEARED;
|
extern char *s_AMSTR_MARKSCLEARED; // = AMSTR_MARKSCLEARED;
|
||||||
|
|
||||||
|
extern char *s_AMSTR_OVERLAYON;
|
||||||
|
extern char *s_AMSTR_OVERLAYOFF;
|
||||||
|
|
||||||
|
extern char *s_AMSTR_ROTATEON;
|
||||||
|
extern char *s_AMSTR_ROTATEOFF;
|
||||||
|
|
||||||
//
|
//
|
||||||
// ST_stuff.C
|
// ST_stuff.C
|
||||||
//
|
//
|
||||||
|
@ -355,6 +355,12 @@
|
|||||||
#define AMSTR_MARKEDSPOT "Marked Spot"
|
#define AMSTR_MARKEDSPOT "Marked Spot"
|
||||||
#define AMSTR_MARKSCLEARED "All Marks Cleared"
|
#define AMSTR_MARKSCLEARED "All Marks Cleared"
|
||||||
|
|
||||||
|
#define AMSTR_OVERLAYON "Overlay Mode ON"
|
||||||
|
#define AMSTR_OVERLAYOFF "Overlay Mode OFF"
|
||||||
|
|
||||||
|
#define AMSTR_ROTATEON "Rotate Mode ON"
|
||||||
|
#define AMSTR_ROTATEOFF "Rotate Mode OFF"
|
||||||
|
|
||||||
//
|
//
|
||||||
// ST_stuff.C
|
// ST_stuff.C
|
||||||
//
|
//
|
||||||
|
@ -255,6 +255,12 @@
|
|||||||
#define AMSTR_MARKEDSPOT "REPERE MARQUE "
|
#define AMSTR_MARKEDSPOT "REPERE MARQUE "
|
||||||
#define AMSTR_MARKSCLEARED "REPERES EFFACES "
|
#define AMSTR_MARKSCLEARED "REPERES EFFACES "
|
||||||
|
|
||||||
|
#define AMSTR_OVERLAYON "MODE SUPERPOSTION ON"
|
||||||
|
#define AMSTR_OVERLAYOFF "MODE SUPERPOSTION OFF"
|
||||||
|
|
||||||
|
#define AMSTR_ROTATEON "MODE ROTATION ON"
|
||||||
|
#define AMSTR_ROTATEOFF "MODE ROTATION OFF"
|
||||||
|
|
||||||
//
|
//
|
||||||
// ST_stuff.C
|
// ST_stuff.C
|
||||||
//
|
//
|
||||||
|
@ -279,7 +279,7 @@ void D_Display (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// see if the border needs to be updated to the screen
|
// see if the border needs to be updated to the screen
|
||||||
if (gamestate == GS_LEVEL && !automapactive && scaledviewwidth != 320)
|
if (gamestate == GS_LEVEL && (!automapactive || automapoverlay) && scaledviewwidth != 320)
|
||||||
{
|
{
|
||||||
if (menuactive || menuactivestate || !viewactivestate)
|
if (menuactive || menuactivestate || !viewactivestate)
|
||||||
borderdrawcount = 3;
|
borderdrawcount = 3;
|
||||||
@ -295,6 +295,16 @@ void D_Display (void)
|
|||||||
inhelpscreensstate = inhelpscreens;
|
inhelpscreensstate = inhelpscreens;
|
||||||
oldgamestate = wipegamestate = gamestate;
|
oldgamestate = wipegamestate = gamestate;
|
||||||
|
|
||||||
|
if (automapactive && automapoverlay)
|
||||||
|
{
|
||||||
|
AM_Drawer();
|
||||||
|
HU_Drawer();
|
||||||
|
|
||||||
|
// [crispy] force redraw of status bar and border
|
||||||
|
viewactivestate = false;
|
||||||
|
inhelpscreensstate = true;
|
||||||
|
}
|
||||||
|
|
||||||
// draw pause pic
|
// draw pause pic
|
||||||
if (paused)
|
if (paused)
|
||||||
{
|
{
|
||||||
|
@ -198,6 +198,8 @@ extern int snd_DesiredSfxDevice;
|
|||||||
extern boolean statusbaractive;
|
extern boolean statusbaractive;
|
||||||
|
|
||||||
extern boolean automapactive; // In AutoMap mode?
|
extern boolean automapactive; // In AutoMap mode?
|
||||||
|
extern boolean automapoverlay;
|
||||||
|
extern boolean automaprotate;
|
||||||
extern boolean menuactive; // Menu overlayed?
|
extern boolean menuactive; // Menu overlayed?
|
||||||
extern boolean paused; // Game Pause?
|
extern boolean paused; // Game Pause?
|
||||||
extern boolean viewactive;
|
extern boolean viewactive;
|
||||||
|
@ -167,6 +167,8 @@ int key_map_follow;
|
|||||||
int key_map_mark;
|
int key_map_mark;
|
||||||
int key_map_clear;
|
int key_map_clear;
|
||||||
int key_map_grid;
|
int key_map_grid;
|
||||||
|
int key_map_overlay;
|
||||||
|
int key_map_rotate;
|
||||||
int key_help = KEYD_F1; // phares 4/13/98
|
int key_help = KEYD_F1; // phares 4/13/98
|
||||||
int key_soundvolume;
|
int key_soundvolume;
|
||||||
int key_hud;
|
int key_hud;
|
||||||
|
@ -148,6 +148,8 @@ extern int key_map_follow;
|
|||||||
extern int key_map_mark; // ^
|
extern int key_map_mark; // ^
|
||||||
extern int key_map_clear; // |
|
extern int key_map_clear; // |
|
||||||
extern int key_map_grid; // phares
|
extern int key_map_grid; // phares
|
||||||
|
extern int key_map_overlay;
|
||||||
|
extern int key_map_rotate;
|
||||||
extern int key_screenshot; // killough 2/22/98 -- add key for screenshot
|
extern int key_screenshot; // killough 2/22/98 -- add key for screenshot
|
||||||
extern int key_setup; // killough 10/98: shortcut to setup menu
|
extern int key_setup; // killough 10/98: shortcut to setup menu
|
||||||
extern int autorun; // always running? // phares
|
extern int autorun; // always running? // phares
|
||||||
|
@ -753,13 +753,16 @@ void HU_Drawer(void)
|
|||||||
|
|
||||||
plr = &players[displayplayer]; // killough 3/7/98
|
plr = &players[displayplayer]; // killough 3/7/98
|
||||||
// draw the automap widgets if automap is displayed
|
// draw the automap widgets if automap is displayed
|
||||||
if (automapactive)
|
if (automapactive && !(hud_distributed && automapoverlay))
|
||||||
{
|
{
|
||||||
fixed_t x,y,z; // killough 10/98:
|
fixed_t x,y,z; // killough 10/98:
|
||||||
void AM_Coordinates(const mobj_t *, fixed_t *, fixed_t *, fixed_t *);
|
void AM_Coordinates(const mobj_t *, fixed_t *, fixed_t *, fixed_t *);
|
||||||
|
|
||||||
|
if (!(hud_displayed && automapoverlay))
|
||||||
|
{
|
||||||
// map title
|
// map title
|
||||||
HUlib_drawTextLine(&w_title, false);
|
HUlib_drawTextLine(&w_title, false);
|
||||||
|
}
|
||||||
|
|
||||||
// [FG] draw player coords widget
|
// [FG] draw player coords widget
|
||||||
if (map_player_coords)
|
if (map_player_coords)
|
||||||
@ -831,7 +834,7 @@ void HU_Drawer(void)
|
|||||||
hud_active>0 && // hud optioned on
|
hud_active>0 && // hud optioned on
|
||||||
hud_displayed && // hud on from fullscreen key
|
hud_displayed && // hud on from fullscreen key
|
||||||
scaledviewheight==SCREENHEIGHT &&// fullscreen mode is active
|
scaledviewheight==SCREENHEIGHT &&// fullscreen mode is active
|
||||||
!automapactive // automap is not active
|
(!automapactive || automapoverlay)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
HU_MoveHud(); // insure HUD display coords are correct
|
HU_MoveHud(); // insure HUD display coords are correct
|
||||||
@ -1440,6 +1443,12 @@ void HU_Ticker(void)
|
|||||||
{
|
{
|
||||||
char *s;
|
char *s;
|
||||||
|
|
||||||
|
// [crispy] move map title to the bottom
|
||||||
|
if (automapoverlay && screenblocks >= 11)
|
||||||
|
w_title.y = HU_TITLEY + ST_HEIGHT;
|
||||||
|
else
|
||||||
|
w_title.y = HU_TITLEY;
|
||||||
|
|
||||||
if (map_level_stats)
|
if (map_level_stats)
|
||||||
{
|
{
|
||||||
sprintf(hud_lstatk, "K: %d/%d", plr->killcount, totalkills);
|
sprintf(hud_lstatk, "K: %d/%d", plr->killcount, totalkills);
|
||||||
|
@ -2591,12 +2591,13 @@ static int G_GotoNextLevel(void)
|
|||||||
#define X_BUTTON 301
|
#define X_BUTTON 301
|
||||||
#define Y_BUTTON 3
|
#define Y_BUTTON 3
|
||||||
|
|
||||||
// Definitions of the (in this case) four key binding screens.
|
// Definitions of the (in this case) five key binding screens.
|
||||||
|
|
||||||
setup_menu_t keys_settings1[];
|
setup_menu_t keys_settings1[];
|
||||||
setup_menu_t keys_settings2[];
|
setup_menu_t keys_settings2[];
|
||||||
setup_menu_t keys_settings3[];
|
setup_menu_t keys_settings3[];
|
||||||
setup_menu_t keys_settings4[];
|
setup_menu_t keys_settings4[];
|
||||||
|
setup_menu_t keys_settings5[];
|
||||||
|
|
||||||
// The table which gets you from one screen table to the next.
|
// The table which gets you from one screen table to the next.
|
||||||
|
|
||||||
@ -2606,6 +2607,7 @@ setup_menu_t* keys_settings[] =
|
|||||||
keys_settings2,
|
keys_settings2,
|
||||||
keys_settings3,
|
keys_settings3,
|
||||||
keys_settings4,
|
keys_settings4,
|
||||||
|
keys_settings5,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2768,17 +2770,30 @@ setup_menu_t keys_settings4[] = // Key Binding screen strings
|
|||||||
{"CLEAR MARKS",S_KEY ,m_map ,KB_X,KB_Y+ 9*8,{&key_map_clear}},
|
{"CLEAR MARKS",S_KEY ,m_map ,KB_X,KB_Y+ 9*8,{&key_map_clear}},
|
||||||
{"FULL/ZOOM" ,S_KEY ,m_map ,KB_X,KB_Y+10*8,{&key_map_gobig}},
|
{"FULL/ZOOM" ,S_KEY ,m_map ,KB_X,KB_Y+10*8,{&key_map_gobig}},
|
||||||
{"GRID" ,S_KEY ,m_map ,KB_X,KB_Y+11*8,{&key_map_grid}},
|
{"GRID" ,S_KEY ,m_map ,KB_X,KB_Y+11*8,{&key_map_grid}},
|
||||||
|
{"OVERLAY" ,S_KEY ,m_map ,KB_X,KB_Y+12*8,{&key_map_overlay}},
|
||||||
{"CHATTING" ,S_SKIP|S_TITLE,m_null,KB_X,KB_Y+12*8},
|
{"ROTATE" ,S_KEY ,m_map ,KB_X,KB_Y+13*8,{&key_map_rotate}},
|
||||||
{"BEGIN CHAT" ,S_KEY ,m_scrn,KB_X,KB_Y+13*8,{&key_chat}},
|
|
||||||
{"PLAYER 1" ,S_KEY ,m_scrn,KB_X,KB_Y+14*8,{&destination_keys[0]}},
|
|
||||||
{"PLAYER 2" ,S_KEY ,m_scrn,KB_X,KB_Y+15*8,{&destination_keys[1]}},
|
|
||||||
{"PLAYER 3" ,S_KEY ,m_scrn,KB_X,KB_Y+16*8,{&destination_keys[2]}},
|
|
||||||
{"PLAYER 4" ,S_KEY ,m_scrn,KB_X,KB_Y+17*8,{&destination_keys[3]}},
|
|
||||||
{"BACKSPACE" ,S_KEY ,m_scrn,KB_X,KB_Y+18*8,{&key_backspace}},
|
|
||||||
{"ENTER" ,S_KEY ,m_scrn,KB_X,KB_Y+19*8,{&key_enter}},
|
|
||||||
|
|
||||||
{"<- PREV" ,S_SKIP|S_PREV,m_null,KB_PREV,KB_Y+20*8, {keys_settings3}},
|
{"<- PREV" ,S_SKIP|S_PREV,m_null,KB_PREV,KB_Y+20*8, {keys_settings3}},
|
||||||
|
{"NEXT ->",S_SKIP|S_NEXT,m_null,KB_NEXT,KB_Y+20*8, {keys_settings5}},
|
||||||
|
|
||||||
|
// Final entry
|
||||||
|
|
||||||
|
{0,S_SKIP|S_END,m_null}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
setup_menu_t keys_settings5[] =
|
||||||
|
{
|
||||||
|
{"CHATTING" ,S_SKIP|S_TITLE,m_null,KB_X,KB_Y},
|
||||||
|
{"BEGIN CHAT" ,S_KEY ,m_scrn,KB_X,KB_Y+1*8,{&key_chat}},
|
||||||
|
{"PLAYER 1" ,S_KEY ,m_scrn,KB_X,KB_Y+2*8,{&destination_keys[0]}},
|
||||||
|
{"PLAYER 2" ,S_KEY ,m_scrn,KB_X,KB_Y+3*8,{&destination_keys[1]}},
|
||||||
|
{"PLAYER 3" ,S_KEY ,m_scrn,KB_X,KB_Y+4*8,{&destination_keys[2]}},
|
||||||
|
{"PLAYER 4" ,S_KEY ,m_scrn,KB_X,KB_Y+5*8,{&destination_keys[3]}},
|
||||||
|
{"BACKSPACE" ,S_KEY ,m_scrn,KB_X,KB_Y+6*8,{&key_backspace}},
|
||||||
|
{"ENTER" ,S_KEY ,m_scrn,KB_X,KB_Y+7*8,{&key_enter}},
|
||||||
|
|
||||||
|
{"<- PREV" ,S_SKIP|S_PREV,m_null,KB_PREV,KB_Y+20*8, {keys_settings4}},
|
||||||
|
|
||||||
// Final entry
|
// Final entry
|
||||||
|
|
||||||
|
@ -937,6 +937,20 @@ default_t defaults[] = {
|
|||||||
"key to toggle grid display over automap"
|
"key to toggle grid display over automap"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"key_map_overlay",
|
||||||
|
(config_t *) &key_map_overlay, NULL,
|
||||||
|
{'o'}, {0,255}, number, ss_keys, wad_no,
|
||||||
|
"key to toggle overlay mode"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"key_map_rotate",
|
||||||
|
(config_t *) &key_map_rotate, NULL,
|
||||||
|
{'r'}, {0,255}, number, ss_keys, wad_no,
|
||||||
|
"key to toggle rotate mode"
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"key_reverse",
|
"key_reverse",
|
||||||
(config_t *) &key_reverse, NULL,
|
(config_t *) &key_reverse, NULL,
|
||||||
@ -1548,6 +1562,20 @@ default_t defaults[] = {
|
|||||||
"1 to show level time widget"
|
"1 to show level time widget"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"automapoverlay",
|
||||||
|
(config_t *) &automapoverlay, NULL,
|
||||||
|
{0}, {0,1}, number, ss_auto, wad_no,
|
||||||
|
"1 to enable automap overlay mode"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"automaprotate",
|
||||||
|
(config_t *) &automaprotate, NULL,
|
||||||
|
{0}, {0,1}, number, ss_auto, wad_no,
|
||||||
|
"1 to enable automap rotate mode"
|
||||||
|
},
|
||||||
|
|
||||||
//jff 1/7/98 end additions for automap
|
//jff 1/7/98 end additions for automap
|
||||||
|
|
||||||
//jff 2/16/98 defaults for color ranges in hud and status
|
//jff 2/16/98 defaults for color ranges in hud and status
|
||||||
|
@ -694,7 +694,7 @@ void R_RenderPlayerView (player_t* player)
|
|||||||
R_RenderBSPNode (numnodes-1);
|
R_RenderBSPNode (numnodes-1);
|
||||||
|
|
||||||
// [FG] update automap while playing
|
// [FG] update automap while playing
|
||||||
if (automapactive)
|
if (automapactive && !automapoverlay)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Check for new console commands.
|
// Check for new console commands.
|
||||||
|
@ -396,7 +396,7 @@ void R_StoreWallRange(const int start, const int stop)
|
|||||||
linedef->flags |= ML_MAPPED;
|
linedef->flags |= ML_MAPPED;
|
||||||
|
|
||||||
// [FG] update automap while playing
|
// [FG] update automap while playing
|
||||||
if (automapactive)
|
if (automapactive && !automapoverlay)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// calculate rw_distance for scale calculation
|
// calculate rw_distance for scale calculation
|
||||||
|
@ -221,7 +221,9 @@ void STlib_updatePercent
|
|||||||
char *outrng, //jff 2/16/98 add color translation to digit output
|
char *outrng, //jff 2/16/98 add color translation to digit output
|
||||||
int refresh )
|
int refresh )
|
||||||
{
|
{
|
||||||
if (refresh || *per->n.on) // killough 2/21/98: fix percents not updated;
|
// Remove the check for 'refresh' because this causes percent symbols to always appear
|
||||||
|
// in automap overlay mode.
|
||||||
|
if (*per->n.on) // killough 2/21/98: fix percents not updated;
|
||||||
{
|
{
|
||||||
if (!sts_always_red) // also support gray-only percents
|
if (!sts_always_red) // also support gray-only percents
|
||||||
V_DrawPatchTranslated
|
V_DrawPatchTranslated
|
||||||
|
@ -838,7 +838,7 @@ void ST_diffDraw(void)
|
|||||||
|
|
||||||
void ST_Drawer(boolean fullscreen, boolean refresh)
|
void ST_Drawer(boolean fullscreen, boolean refresh)
|
||||||
{
|
{
|
||||||
st_statusbaron = !fullscreen || automapactive;
|
st_statusbaron = !fullscreen || (automapactive && !automapoverlay);
|
||||||
st_firsttime = st_firsttime || refresh;
|
st_firsttime = st_firsttime || refresh;
|
||||||
|
|
||||||
ST_doPaletteStuff(); // Do red-/gold-shifts from damage/items
|
ST_doPaletteStuff(); // Do red-/gold-shifts from damage/items
|
||||||
|
Loading…
x
Reference in New Issue
Block a user