mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-13 16:07:55 +00:00
Merge branch 'master' of https://github.com/rheit/zdoom
This commit is contained in:
commit
b499742d46
5 changed files with 110 additions and 57 deletions
151
src/am_map.cpp
151
src/am_map.cpp
|
@ -204,6 +204,7 @@ CVAR (Color, am_ovthingcolor_friend, 0xe88800, CVAR_ARCHIVE);
|
||||||
CVAR (Color, am_ovthingcolor_monster, 0xe88800, CVAR_ARCHIVE);
|
CVAR (Color, am_ovthingcolor_monster, 0xe88800, CVAR_ARCHIVE);
|
||||||
CVAR (Color, am_ovthingcolor_item, 0xe88800, CVAR_ARCHIVE);
|
CVAR (Color, am_ovthingcolor_item, 0xe88800, CVAR_ARCHIVE);
|
||||||
CVAR (Color, am_ovthingcolor_citem, 0xe88800, CVAR_ARCHIVE);
|
CVAR (Color, am_ovthingcolor_citem, 0xe88800, CVAR_ARCHIVE);
|
||||||
|
CVAR (Int, am_showthingsprites, 0, CVAR_ARCHIVE);
|
||||||
|
|
||||||
|
|
||||||
static int bigstate = 0;
|
static int bigstate = 0;
|
||||||
|
@ -412,6 +413,9 @@ static bool stopped = true;
|
||||||
|
|
||||||
static void AM_calcMinMaxMtoF();
|
static void AM_calcMinMaxMtoF();
|
||||||
|
|
||||||
|
static void DrawMarker (FTexture *tex, fixed_t x, fixed_t y, int yadjust,
|
||||||
|
INTBOOL flip, fixed_t xscale, fixed_t yscale, int translation, fixed_t alpha, DWORD fillcolor, FRenderStyle renderstyle);
|
||||||
|
|
||||||
void AM_rotatePoint (fixed_t *x, fixed_t *y);
|
void AM_rotatePoint (fixed_t *x, fixed_t *y);
|
||||||
void AM_rotate (fixed_t *x, fixed_t *y, angle_t an);
|
void AM_rotate (fixed_t *x, fixed_t *y, angle_t an);
|
||||||
void AM_doFollowPlayer ();
|
void AM_doFollowPlayer ();
|
||||||
|
@ -2193,6 +2197,12 @@ AM_drawLineCharacter
|
||||||
|
|
||||||
void AM_drawPlayers ()
|
void AM_drawPlayers ()
|
||||||
{
|
{
|
||||||
|
if (am_cheat >= 2 && am_showthingsprites > 0)
|
||||||
|
{
|
||||||
|
// Player sprites are drawn with the others
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
mpoint_t pt;
|
mpoint_t pt;
|
||||||
angle_t angle;
|
angle_t angle;
|
||||||
int i;
|
int i;
|
||||||
|
@ -2344,74 +2354,101 @@ void AM_drawThings ()
|
||||||
{
|
{
|
||||||
p.x = t->x >> FRACTOMAPBITS;
|
p.x = t->x >> FRACTOMAPBITS;
|
||||||
p.y = t->y >> FRACTOMAPBITS;
|
p.y = t->y >> FRACTOMAPBITS;
|
||||||
angle = t->angle;
|
|
||||||
|
|
||||||
if (am_rotate == 1 || (am_rotate == 2 && viewactive))
|
if (am_showthingsprites > 0)
|
||||||
{
|
{
|
||||||
AM_rotatePoint (&p.x, &p.y);
|
const spritedef_t& sprite = sprites[t->sprite];
|
||||||
angle += ANG90 - players[consoleplayer].camera->angle;
|
const size_t spriteIndex = sprite.spriteframes + (am_showthingsprites > 1 ? t->frame : 0);
|
||||||
}
|
|
||||||
|
|
||||||
color = ThingColor;
|
const spriteframe_t& frame = SpriteFrames[spriteIndex];
|
||||||
|
angle_t angle = ANGLE_270 - t->angle;
|
||||||
// use separate colors for special thing types
|
if (frame.Texture[0] != frame.Texture[1]) angle += (ANGLE_180 / 16);
|
||||||
if (t->flags3&MF3_ISMONSTER && !(t->flags&MF_CORPSE))
|
if (am_rotate == 1 || (am_rotate == 2 && viewactive))
|
||||||
{
|
|
||||||
if (t->flags & MF_FRIENDLY || !(t->flags & MF_COUNTKILL)) color = ThingColor_Friend;
|
|
||||||
else color = ThingColor_Monster;
|
|
||||||
}
|
|
||||||
else if (t->flags&MF_SPECIAL)
|
|
||||||
{
|
|
||||||
// Find the key's own color.
|
|
||||||
// Only works correctly if single-key locks have lower numbers than any-key locks.
|
|
||||||
// That is the case for all default keys, however.
|
|
||||||
if (t->IsKindOf(RUNTIME_CLASS(AKey)))
|
|
||||||
{
|
{
|
||||||
if (G_SkillProperty(SKILLP_EasyKey))
|
angle += players[consoleplayer].camera->angle - ANGLE_90;
|
||||||
{
|
|
||||||
// Already drawn by AM_drawKeys(), so don't draw again
|
|
||||||
color.Index = -1;
|
|
||||||
}
|
|
||||||
else if (am_showkeys)
|
|
||||||
{
|
|
||||||
int P_GetMapColorForKey (AInventory * key);
|
|
||||||
int c = P_GetMapColorForKey(static_cast<AKey *>(t));
|
|
||||||
|
|
||||||
if (c >= 0) color.FromRGB(RPART(c), GPART(c), BPART(c));
|
|
||||||
else color = ThingColor_CountItem;
|
|
||||||
AM_drawLineCharacter(&CheatKey[0], CheatKey.Size(), 0, 0, color, p.x, p.y);
|
|
||||||
color.Index = -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
color = ThingColor_Item;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (t->flags&MF_COUNTITEM)
|
const angle_t rotation = angle >> 28;
|
||||||
color = ThingColor_CountItem;
|
|
||||||
else
|
|
||||||
color = ThingColor_Item;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (color.Index != -1)
|
const FTextureID textureID = frame.Texture[am_showthingsprites > 2 ? rotation : 0];
|
||||||
{
|
FTexture* texture = TexMan(textureID);
|
||||||
AM_drawLineCharacter
|
|
||||||
(thintriangle_guy, NUMTHINTRIANGLEGUYLINES,
|
|
||||||
16<<MAPBITS, angle, color, p.x, p.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (am_cheat >= 3)
|
const fixed_t spriteScale = 10 * scale_mtof;
|
||||||
|
|
||||||
|
DrawMarker (texture, p.x, p.y, 0, !!(frame.Flip & (1 << rotation)),
|
||||||
|
spriteScale, spriteScale, 0, FRACUNIT, 0, LegacyRenderStyles[STYLE_Normal]);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
static const mline_t box[4] =
|
angle = t->angle;
|
||||||
|
|
||||||
|
if (am_rotate == 1 || (am_rotate == 2 && viewactive))
|
||||||
{
|
{
|
||||||
{ { -MAPUNIT, -MAPUNIT }, { MAPUNIT, -MAPUNIT } },
|
AM_rotatePoint (&p.x, &p.y);
|
||||||
{ { MAPUNIT, -MAPUNIT }, { MAPUNIT, MAPUNIT } },
|
angle += ANG90 - players[consoleplayer].camera->angle;
|
||||||
{ { MAPUNIT, MAPUNIT }, { -MAPUNIT, MAPUNIT } },
|
}
|
||||||
{ { -MAPUNIT, MAPUNIT }, { -MAPUNIT, -MAPUNIT } },
|
|
||||||
};
|
|
||||||
|
|
||||||
AM_drawLineCharacter (box, 4, t->radius >> FRACTOMAPBITS, angle - t->angle, color, p.x, p.y);
|
color = ThingColor;
|
||||||
|
|
||||||
|
// use separate colors for special thing types
|
||||||
|
if (t->flags3&MF3_ISMONSTER && !(t->flags&MF_CORPSE))
|
||||||
|
{
|
||||||
|
if (t->flags & MF_FRIENDLY || !(t->flags & MF_COUNTKILL)) color = ThingColor_Friend;
|
||||||
|
else color = ThingColor_Monster;
|
||||||
|
}
|
||||||
|
else if (t->flags&MF_SPECIAL)
|
||||||
|
{
|
||||||
|
// Find the key's own color.
|
||||||
|
// Only works correctly if single-key locks have lower numbers than any-key locks.
|
||||||
|
// That is the case for all default keys, however.
|
||||||
|
if (t->IsKindOf(RUNTIME_CLASS(AKey)))
|
||||||
|
{
|
||||||
|
if (G_SkillProperty(SKILLP_EasyKey))
|
||||||
|
{
|
||||||
|
// Already drawn by AM_drawKeys(), so don't draw again
|
||||||
|
color.Index = -1;
|
||||||
|
}
|
||||||
|
else if (am_showkeys)
|
||||||
|
{
|
||||||
|
int P_GetMapColorForKey (AInventory * key);
|
||||||
|
int c = P_GetMapColorForKey(static_cast<AKey *>(t));
|
||||||
|
|
||||||
|
if (c >= 0) color.FromRGB(RPART(c), GPART(c), BPART(c));
|
||||||
|
else color = ThingColor_CountItem;
|
||||||
|
AM_drawLineCharacter(&CheatKey[0], CheatKey.Size(), 0, 0, color, p.x, p.y);
|
||||||
|
color.Index = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
color = ThingColor_Item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (t->flags&MF_COUNTITEM)
|
||||||
|
color = ThingColor_CountItem;
|
||||||
|
else
|
||||||
|
color = ThingColor_Item;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (color.Index != -1)
|
||||||
|
{
|
||||||
|
AM_drawLineCharacter
|
||||||
|
(thintriangle_guy, NUMTHINTRIANGLEGUYLINES,
|
||||||
|
16<<MAPBITS, angle, color, p.x, p.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (am_cheat >= 3)
|
||||||
|
{
|
||||||
|
static const mline_t box[4] =
|
||||||
|
{
|
||||||
|
{ { -MAPUNIT, -MAPUNIT }, { MAPUNIT, -MAPUNIT } },
|
||||||
|
{ { MAPUNIT, -MAPUNIT }, { MAPUNIT, MAPUNIT } },
|
||||||
|
{ { MAPUNIT, MAPUNIT }, { -MAPUNIT, MAPUNIT } },
|
||||||
|
{ { -MAPUNIT, MAPUNIT }, { -MAPUNIT, -MAPUNIT } },
|
||||||
|
};
|
||||||
|
|
||||||
|
AM_drawLineCharacter (box, 4, t->radius >> FRACTOMAPBITS, angle - t->angle, color, p.x, p.y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
t = t->snext;
|
t = t->snext;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -958,6 +958,7 @@ public:
|
||||||
if (CurNode->SpeakerName != NULL)
|
if (CurNode->SpeakerName != NULL)
|
||||||
{
|
{
|
||||||
speakerName = CurNode->SpeakerName;
|
speakerName = CurNode->SpeakerName;
|
||||||
|
if (speakerName[0] == '$') speakerName = GStrings(speakerName+1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1747,6 +1747,7 @@ enum SIX_Flags
|
||||||
SIXF_TRANSFERSCALE = 1 << 14,
|
SIXF_TRANSFERSCALE = 1 << 14,
|
||||||
SIXF_TRANSFERSPECIAL = 1 << 15,
|
SIXF_TRANSFERSPECIAL = 1 << 15,
|
||||||
SIXF_CLEARCALLERSPECIAL = 1 << 16,
|
SIXF_CLEARCALLERSPECIAL = 1 << 16,
|
||||||
|
SIXF_TRANSFERSTENCILCOL = 1 << 17,
|
||||||
};
|
};
|
||||||
|
|
||||||
static bool InitSpawnedItem(AActor *self, AActor *mo, int flags)
|
static bool InitSpawnedItem(AActor *self, AActor *mo, int flags)
|
||||||
|
@ -1859,6 +1860,10 @@ static bool InitSpawnedItem(AActor *self, AActor *mo, int flags)
|
||||||
self->special = 0;
|
self->special = 0;
|
||||||
memset(self->args, 0, sizeof(self->args));
|
memset(self->args, 0, sizeof(self->args));
|
||||||
}
|
}
|
||||||
|
if (flags & SIXF_TRANSFERSTENCILCOL)
|
||||||
|
{
|
||||||
|
mo->fillcolor = self->fillcolor;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,6 +59,7 @@ const int SXF_MULTIPLYSPEED = 8192;
|
||||||
const int SXF_TRANSFERSCALE = 16384;
|
const int SXF_TRANSFERSCALE = 16384;
|
||||||
const int SXF_TRANSFERSPECIAL = 32768;
|
const int SXF_TRANSFERSPECIAL = 32768;
|
||||||
const int SXF_CLEARCALLERSPECIAL = 65536;
|
const int SXF_CLEARCALLERSPECIAL = 65536;
|
||||||
|
const int SXF_TRANSFERSTENCILCOL = 131072;
|
||||||
|
|
||||||
// Flags for A_Chase
|
// Flags for A_Chase
|
||||||
const int CHF_FASTCHASE = 1;
|
const int CHF_FASTCHASE = 1;
|
||||||
|
|
|
@ -912,6 +912,14 @@ OptionValue MaplabelTypes
|
||||||
2, "Not for hubs"
|
2, "Not for hubs"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OptionValue STSTypes
|
||||||
|
{
|
||||||
|
0, "Off"
|
||||||
|
1, "Front"
|
||||||
|
2, "Animated"
|
||||||
|
3, "Rotated"
|
||||||
|
}
|
||||||
|
|
||||||
OptionMenu AutomapOptions
|
OptionMenu AutomapOptions
|
||||||
{
|
{
|
||||||
Title "AUTOMAP OPTIONS"
|
Title "AUTOMAP OPTIONS"
|
||||||
|
@ -934,6 +942,7 @@ OptionMenu AutomapOptions
|
||||||
Option "Draw map background", "am_drawmapback", "OnOff"
|
Option "Draw map background", "am_drawmapback", "OnOff"
|
||||||
Option "Show keys (cheat)", "am_showkeys", "OnOff"
|
Option "Show keys (cheat)", "am_showkeys", "OnOff"
|
||||||
Option "Show trigger lines", "am_showtriggerlines", "OnOff"
|
Option "Show trigger lines", "am_showtriggerlines", "OnOff"
|
||||||
|
Option "Show things as sprites", "am_showthingsprites", "STSTypes"
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in a new issue