Merge branch 'maint' into scripting

This commit is contained in:
Christoph Oelckers 2013-07-28 10:47:17 +02:00
commit 909ec2e35a
8 changed files with 122 additions and 57 deletions

View File

@ -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;
@ -2328,7 +2338,6 @@ void AM_drawKeys ()
// //
// //
//============================================================================= //=============================================================================
void AM_drawThings () void AM_drawThings ()
{ {
AMColor color; AMColor color;
@ -2344,6 +2353,42 @@ void AM_drawThings ()
{ {
p.x = t->x >> FRACTOMAPBITS; p.x = t->x >> FRACTOMAPBITS;
p.y = t->y >> FRACTOMAPBITS; p.y = t->y >> FRACTOMAPBITS;
if (am_showthingsprites > 0 && t->sprite > 0)
{
FTexture *texture = NULL;
spriteframe_t *frame;
angle_t rotation = 0;
// try all modes backwards until a valid texture has been found.
for(int show = am_showthingsprites; show > 0 && texture == NULL; show--)
{
const spritedef_t& sprite = sprites[t->sprite];
const size_t spriteIndex = sprite.spriteframes + (show > 1 ? t->frame : 0);
frame = &SpriteFrames[spriteIndex];
angle_t angle = ANGLE_270 - t->angle;
if (frame->Texture[0] != frame->Texture[1]) angle += (ANGLE_180 / 16);
if (am_rotate == 1 || (am_rotate == 2 && viewactive))
{
angle += players[consoleplayer].camera->angle - ANGLE_90;
}
rotation = angle >> 28;
const FTextureID textureID = frame->Texture[show > 2 ? rotation : 0];
texture = TexMan(textureID);
}
if (texture == NULL) goto drawTriangle; // fall back to standard display if no sprite can be found.
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
{
drawTriangle:
angle = t->angle; angle = t->angle;
if (am_rotate == 1 || (am_rotate == 2 && viewactive)) if (am_rotate == 1 || (am_rotate == 2 && viewactive))
@ -2412,6 +2457,8 @@ void AM_drawThings ()
AM_drawLineCharacter (box, 4, t->radius >> FRACTOMAPBITS, angle - t->angle, color, p.x, p.y); AM_drawLineCharacter (box, 4, t->radius >> FRACTOMAPBITS, angle - t->angle, color, p.x, p.y);
} }
}
t = t->snext; t = t->snext;
} }
} }

View File

@ -643,7 +643,8 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_BFGSpray)
damage += (pr_bfgspray() & 7) + 1; damage += (pr_bfgspray() & 7) + 1;
thingToHit = linetarget; thingToHit = linetarget;
int newdam = P_DamageMobj (thingToHit, self->target, self->target, damage, spray != NULL? FName(spray->DamageType) : FName(NAME_BFGSplash)); int newdam = P_DamageMobj (thingToHit, self->target, self->target, damage, spray != NULL? FName(spray->DamageType) : FName(NAME_BFGSplash),
spray != NULL && (spray->flags3 & MF3_FOILINVUL)? DMG_FOILINVUL : 0);
P_TraceBleed (newdam > 0 ? newdam : damage, thingToHit, self->target); P_TraceBleed (newdam > 0 ? newdam : damage, thingToHit, self->target);
} }
return 0; return 0;

View File

@ -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
{ {

View File

@ -960,7 +960,7 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage,
{ // actor is invulnerable { // actor is invulnerable
if (target->player == NULL) if (target->player == NULL)
{ {
if (inflictor == NULL || !(inflictor->flags3 & MF3_FOILINVUL)) if (inflictor == NULL || (!(inflictor->flags3 & MF3_FOILINVUL) && !(flags & DMG_FOILINVUL)))
{ {
return -1; return -1;
} }

View File

@ -558,6 +558,7 @@ enum EDmgFlags
DMG_FORCED = 8, DMG_FORCED = 8,
DMG_NO_FACTOR = 16, DMG_NO_FACTOR = 16,
DMG_PLAYERATTACK = 32, DMG_PLAYERATTACK = 32,
DMG_FOILINVUL = 64,
}; };

View File

@ -1891,6 +1891,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)
@ -2003,6 +2004,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;
} }

View File

@ -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;

View File

@ -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"
} }
//------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------