mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-29 15:22:08 +00:00
- Replaced WALLF_AUTOCONTRAST with WALLF_NOFAKECONTRAST so that the
default setting for the flags is 0. - Added: doom2day's smoothlighting - Added: dontincrement argument to A_CheckForReload. SVN r1179 (trunk)
This commit is contained in:
parent
f64862fe75
commit
76cb09d546
12 changed files with 64 additions and 27 deletions
|
@ -1,4 +1,8 @@
|
|||
August 21, 2008 (Changes by Graf Zahl)
|
||||
- Replaced WALLF_AUTOCONTRAST with WALLF_NOFAKECONTRAST so that the
|
||||
default setting for the flags is 0.
|
||||
- Added: doom2day's smoothlighting
|
||||
- Added: dontincrement argument to A_CheckForReload.
|
||||
- Fixed: The UDMF parser wrote class filter bits into SkillFilter.
|
||||
- Fixed: (SBARINFO patch) DrawInventoryBar has a missing argument in
|
||||
one of its drawgraphic calls.
|
||||
|
|
|
@ -278,6 +278,7 @@ static const char *MapInfoMapLevel[] =
|
|||
"lightning",
|
||||
"fadetable",
|
||||
"evenlighting",
|
||||
"smoothlighting",
|
||||
"noautosequences",
|
||||
"forcenoskystretch",
|
||||
"allowfreelook",
|
||||
|
@ -429,6 +430,7 @@ MapHandlers[] =
|
|||
{ MITYPE_SETFLAG, LEVEL_STARTLIGHTNING, 0 },
|
||||
{ MITYPE_LUMPNAME, lioffset(fadetable), 0 },
|
||||
{ MITYPE_CLRBYTES, lioffset(WallVertLight), lioffset(WallHorizLight) },
|
||||
{ MITYPE_SETFLAG, LEVEL_SMOOTHLIGHTING, 0 },
|
||||
{ MITYPE_SETFLAG, LEVEL_SNDSEQTOTALCTRL, 0 },
|
||||
{ MITYPE_SETFLAG, LEVEL_FORCENOSKYSTRETCH, 0 },
|
||||
{ MITYPE_SCFLAGS, LEVEL_FREELOOK_YES, ~LEVEL_FREELOOK_NO },
|
||||
|
|
|
@ -122,6 +122,8 @@
|
|||
#define LEVEL_DUMMYSWITCHES UCONST64(0x40000000000000)
|
||||
#define LEVEL_HEXENHACK UCONST64(0x80000000000000) // Level was defined in a Hexen style MAPINFO
|
||||
|
||||
#define LEVEL_SMOOTHLIGHTING UCONST64(0x100000000000000) // Level uses the smooth lighting feature.
|
||||
|
||||
|
||||
struct acsdefered_s;
|
||||
|
||||
|
|
|
@ -405,5 +405,6 @@ xx(offsety_bottom)
|
|||
xx(light)
|
||||
xx(lightabsolute)
|
||||
xx(nofakecontrast)
|
||||
xx(smoothlighting)
|
||||
|
||||
xx(Renderstyle)
|
||||
|
|
|
@ -2177,7 +2177,7 @@ void P_LoadSideDefs2 (MapData * map)
|
|||
sd->SetTextureXOffset(LittleShort(msd->textureoffset)<<FRACBITS);
|
||||
sd->SetTextureYOffset(LittleShort(msd->rowoffset)<<FRACBITS);
|
||||
sd->linenum = NO_INDEX;
|
||||
sd->Flags = WALLF_AUTOCONTRAST;
|
||||
sd->Flags = 0;
|
||||
|
||||
// killough 4/4/98: allow sidedef texture names to be overloaded
|
||||
// killough 4/11/98: refined to allow colormaps to work as wall
|
||||
|
|
|
@ -765,20 +765,18 @@ DWallLightTransfer::DWallLightTransfer (sector_t *srcSec, int target, BYTE flags
|
|||
Flags = flags;
|
||||
DoTransfer (LastLight = srcSec->lightlevel, target, Flags);
|
||||
|
||||
if (!(flags&WLF_NOFAKECONTRAST)) wallflags = WALLF_AUTOCONTRAST|WALLF_ABSLIGHTING;
|
||||
else wallflags = WALLF_ABSLIGHTING;
|
||||
if (!(flags&WLF_NOFAKECONTRAST)) wallflags = WALLF_ABSLIGHTING;
|
||||
else wallflags = WALLF_NOFAKECONTRAST|WALLF_ABSLIGHTING;
|
||||
|
||||
for (linenum = -1; (linenum = P_FindLineFromID (target, linenum)) >= 0; )
|
||||
{
|
||||
if (flags & WLF_SIDE1 && lines[linenum].sidenum[0]!=NO_SIDE)
|
||||
{
|
||||
sides[lines[linenum].sidenum[0]].Flags &= ~WALLF_AUTOCONTRAST;
|
||||
sides[lines[linenum].sidenum[0]].Flags |= wallflags;
|
||||
}
|
||||
|
||||
if (flags & WLF_SIDE2 && lines[linenum].sidenum[1]!=NO_SIDE)
|
||||
{
|
||||
sides[lines[linenum].sidenum[0]].Flags &= ~WALLF_AUTOCONTRAST;
|
||||
sides[lines[linenum].sidenum[1]].Flags |= wallflags;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -733,13 +733,18 @@ struct UDMFParser
|
|||
break;
|
||||
|
||||
case NAME_lightabsolute:
|
||||
if (CheckBool(key)) sd->Flags|=WALLF_ABSLIGHTING;
|
||||
else sd->Flags&=~WALLF_ABSLIGHTING;
|
||||
if (CheckBool(key)) sd->Flags |= WALLF_ABSLIGHTING;
|
||||
else sd->Flags &= ~WALLF_ABSLIGHTING;
|
||||
break;
|
||||
|
||||
case NAME_nofakecontrast:
|
||||
if (CheckBool(key)) sd->Flags&=~WALLF_AUTOCONTRAST;
|
||||
else sd->Flags|=WALLF_AUTOCONTRAST;
|
||||
if (CheckBool(key)) sd->Flags |= WALLF_NOFAKECONTRAST;
|
||||
else sd->Flags &= WALLF_NOFAKECONTRAST;
|
||||
break;
|
||||
|
||||
case NAME_smoothlighting:
|
||||
if (CheckBool(key)) sd->Flags |= WALLF_SMOOTHLIGHTING;
|
||||
else sd->Flags &= ~WALLF_SMOOTHLIGHTING;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
@ -622,7 +622,8 @@ enum
|
|||
{
|
||||
WALLF_ABSLIGHTING = 1, // Light is absolute instead of relative
|
||||
WALLF_NOAUTODECALS = 2, // Do not attach impact decals to this wall
|
||||
WALLF_AUTOCONTRAST = 4, // Automatically handle fake contrast in side_t::GetLightLevel
|
||||
WALLF_NOFAKECONTRAST = 4, // Don't do fake contrast for this wall in side_t::GetLightLevel
|
||||
WALLF_SMOOTHLIGHTING = 8, // Similar to autocontrast but applies to all angles.
|
||||
};
|
||||
|
||||
struct side_t
|
||||
|
|
|
@ -1421,6 +1421,8 @@ void R_NewWall (bool needlights)
|
|||
}
|
||||
}
|
||||
|
||||
CVAR(Bool, r_smoothlighting, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||
|
||||
int side_t::GetLightLevel (bool foggy, int baselight) const
|
||||
{
|
||||
if (Flags & WALLF_ABSLIGHTING)
|
||||
|
@ -1431,10 +1433,22 @@ int side_t::GetLightLevel (bool foggy, int baselight) const
|
|||
|
||||
if (!foggy) // Don't do relative lighting in foggy sectors
|
||||
{
|
||||
if (Flags & WALLF_AUTOCONTRAST)
|
||||
if (!(Flags & WALLF_NOFAKECONTRAST))
|
||||
{
|
||||
baselight += lines[linenum].dx==0? level.WallVertLight :
|
||||
lines[linenum].dy==0? level.WallHorizLight : 0;
|
||||
if((level.flags & LEVEL_SMOOTHLIGHTING) || (Flags & WALLF_SMOOTHLIGHTING) || r_smoothlighting)
|
||||
{
|
||||
baselight += int // OMG LEE KILLOUGH LIVES! :/
|
||||
(
|
||||
(float(level.WallHorizLight)
|
||||
+abs(atan(float(linedef->dy)/float(linedef->dx))/float(1.57079))
|
||||
*float(level.WallVertLight - level.WallHorizLight))
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
baselight += lines[linenum].dx==0? level.WallVertLight :
|
||||
lines[linenum].dy==0? level.WallHorizLight : 0;
|
||||
}
|
||||
}
|
||||
if (!(Flags & WALLF_ABSLIGHTING))
|
||||
{
|
||||
|
|
|
@ -2192,13 +2192,20 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CheckForReload)
|
|||
ACTION_PARAM_START(2);
|
||||
ACTION_PARAM_INT(count, 0);
|
||||
ACTION_PARAM_STATE(jump, 1);
|
||||
ACTION_PARAM_BOOL(dontincrement, 2)
|
||||
|
||||
if (count <= 0) return;
|
||||
|
||||
AWeapon *weapon = self->player->ReadyWeapon;
|
||||
|
||||
weapon->ReloadCounter = (weapon->ReloadCounter+1) % count;
|
||||
int ReloadCounter = weapon->ReloadCounter;
|
||||
if(!dontincrement || ReloadCounter != 0)
|
||||
ReloadCounter = (weapon->ReloadCounter+1) % count;
|
||||
else // 0 % 1 = 1? So how do we check if the weapon was never fired? We should only do this when we're not incrementing the counter though.
|
||||
ReloadCounter = 1;
|
||||
|
||||
// If we have not made our last shot...
|
||||
if (weapon->ReloadCounter != 0)
|
||||
if (ReloadCounter != 0)
|
||||
{
|
||||
// Go back to the refire frames, instead of continuing on to the reload frames.
|
||||
ACTION_JUMP(jump);
|
||||
|
@ -2208,6 +2215,9 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CheckForReload)
|
|||
// We need to reload. However, don't reload if we're out of ammo.
|
||||
weapon->CheckAmmo( false, false );
|
||||
}
|
||||
|
||||
if(!dontincrement)
|
||||
weapon->ReloadCounter = ReloadCounter;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
// SAVESIG should match SAVEVER.
|
||||
|
||||
// MINSAVEVER is the minimum level snapshot version that can be loaded.
|
||||
#define MINSAVEVER 1129
|
||||
#define MINSAVEVER 1179
|
||||
|
||||
#if SVN_REVISION_NUMBER < MINSAVEVER
|
||||
// Never write a savegame with a version lower than what we need
|
||||
|
|
|
@ -38,7 +38,7 @@ ACTOR Inventory native
|
|||
action native A_CheckReload();
|
||||
action native A_GunFlash();
|
||||
action native A_Saw(sound fullsound = "weapons/sawfull", sound hitsound = "weapons/sawhit", int damage = 2, class<Actor> pufftype = "BulletPuff");
|
||||
action native A_CheckForReload(int counter, state label);
|
||||
action native A_CheckForReload(int counter, state label, bool dontincrement = false);
|
||||
action native A_ResetReloadCounter();
|
||||
action native A_RestoreSpecialPosition();
|
||||
action native A_RestoreSpecialDoomThing();
|
||||
|
|
Loading…
Reference in a new issue