mirror of
https://github.com/ZDoom/qzdoom.git
synced 2025-02-21 11:21:04 +00:00
Merge branch 'master' of https://github.com/rheit/zdoom
This commit is contained in:
commit
10203afa41
18 changed files with 126 additions and 41 deletions
|
@ -168,6 +168,9 @@ public:
|
||||||
// [CW] Fades for when you are being damaged.
|
// [CW] Fades for when you are being damaged.
|
||||||
PalEntry DamageFade;
|
PalEntry DamageFade;
|
||||||
|
|
||||||
|
// [SP] ViewBob Multiplier
|
||||||
|
double ViewBob;
|
||||||
|
|
||||||
bool UpdateWaterLevel (bool splash);
|
bool UpdateWaterLevel (bool splash);
|
||||||
bool ResetAirSupply (bool playgasp = true);
|
bool ResetAirSupply (bool playgasp = true);
|
||||||
|
|
||||||
|
|
|
@ -582,8 +582,9 @@ void P_BobWeapon (player_t *player, float *x, float *y, double ticfrac)
|
||||||
|
|
||||||
if (curbob != 0)
|
if (curbob != 0)
|
||||||
{
|
{
|
||||||
float bobx = float(player->bob * Rangex);
|
//[SP] Added in decorate player.viewbob checks
|
||||||
float boby = float(player->bob * Rangey);
|
float bobx = float(player->bob * Rangex * (float)player->mo->ViewBob);
|
||||||
|
float boby = float(player->bob * Rangey * (float)player->mo->ViewBob);
|
||||||
switch (bobstyle)
|
switch (bobstyle)
|
||||||
{
|
{
|
||||||
case AWeapon::BobNormal:
|
case AWeapon::BobNormal:
|
||||||
|
|
|
@ -640,6 +640,12 @@ static void ReadOnePlayer(FSerializer &arc, bool skipload)
|
||||||
playerTemp.Serialize(arc);
|
playerTemp.Serialize(arc);
|
||||||
if (!skipload)
|
if (!skipload)
|
||||||
{
|
{
|
||||||
|
// This temp player has undefined pitch limits, so set them to something
|
||||||
|
// that should leave the pitch stored in the savegame intact when
|
||||||
|
// rendering. The real pitch limits will be set by P_SerializePlayers()
|
||||||
|
// via a net command, but that won't be processed in time for a screen
|
||||||
|
// wipe, so we need something here.
|
||||||
|
playerTemp.MaxPitch = playerTemp.MinPitch = playerTemp.mo->Angles.Pitch;
|
||||||
CopyPlayer(&players[i], &playerTemp, name);
|
CopyPlayer(&players[i], &playerTemp, name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -651,7 +651,8 @@ void APlayerPawn::Serialize(FSerializer &arc)
|
||||||
("fallingscreammaxn", FallingScreamMaxSpeed, def->FallingScreamMaxSpeed)
|
("fallingscreammaxn", FallingScreamMaxSpeed, def->FallingScreamMaxSpeed)
|
||||||
("userange", UseRange, def->UseRange)
|
("userange", UseRange, def->UseRange)
|
||||||
("aircapacity", AirCapacity, def->AirCapacity)
|
("aircapacity", AirCapacity, def->AirCapacity)
|
||||||
("viewheight", ViewHeight, def->ViewHeight);
|
("viewheight", ViewHeight, def->ViewHeight)
|
||||||
|
("viewbob", ViewBob, def->ViewBob);
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -1891,7 +1892,7 @@ void P_CalcHeight (player_t *player)
|
||||||
{
|
{
|
||||||
bob = 0;
|
bob = 0;
|
||||||
}
|
}
|
||||||
player->viewz = player->mo->Z() + player->viewheight + bob;
|
player->viewz = player->mo->Z() + player->viewheight + (bob * player->mo->ViewBob); // [SP] Allow DECORATE changes to view bobbing speed.
|
||||||
if (player->mo->Floorclip && player->playerstate != PST_DEAD
|
if (player->mo->Floorclip && player->playerstate != PST_DEAD
|
||||||
&& player->mo->Z() <= player->mo->floorz)
|
&& player->mo->Z() <= player->mo->floorz)
|
||||||
{
|
{
|
||||||
|
|
|
@ -105,6 +105,7 @@ TArray<PortalDrawseg> WallPortals(1000); // note: this array needs to go away as
|
||||||
subsector_t *InSubsector;
|
subsector_t *InSubsector;
|
||||||
|
|
||||||
CVAR (Bool, r_drawflat, false, 0) // [RH] Don't texture segs?
|
CVAR (Bool, r_drawflat, false, 0) // [RH] Don't texture segs?
|
||||||
|
EXTERN_CVAR(Bool, r_fullbrightignoresectorcolor);
|
||||||
|
|
||||||
|
|
||||||
void R_StoreWallRange (int start, int stop);
|
void R_StoreWallRange (int start, int stop);
|
||||||
|
@ -1108,7 +1109,7 @@ void R_Subsector (subsector_t *sub)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
basecolormap = frontsector->ColorMap;
|
basecolormap = (r_fullbrightignoresectorcolor && fixedlightlev >= 0) ? &FullNormalLight : frontsector->ColorMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
portal = frontsector->ValidatePortal(sector_t::ceiling);
|
portal = frontsector->ValidatePortal(sector_t::ceiling);
|
||||||
|
@ -1142,7 +1143,7 @@ void R_Subsector (subsector_t *sub)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
basecolormap = frontsector->ColorMap;
|
basecolormap = (r_fullbrightignoresectorcolor && fixedlightlev >= 0) ? &FullNormalLight : frontsector->ColorMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
// killough 3/7/98: Add (x,y) offsets to flats, add deep water check
|
// killough 3/7/98: Add (x,y) offsets to flats, add deep water check
|
||||||
|
|
|
@ -59,6 +59,7 @@ static bool R_CheckForFixedLights(const BYTE *colormaps);
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
FDynamicColormap NormalLight;
|
FDynamicColormap NormalLight;
|
||||||
|
FDynamicColormap FullNormalLight; //[SP] Emulate GZDoom brightness
|
||||||
}
|
}
|
||||||
bool NormalLightHasFixedLights;
|
bool NormalLightHasFixedLights;
|
||||||
|
|
||||||
|
@ -72,6 +73,7 @@ struct FakeCmap
|
||||||
|
|
||||||
TArray<FakeCmap> fakecmaps;
|
TArray<FakeCmap> fakecmaps;
|
||||||
BYTE *realcolormaps;
|
BYTE *realcolormaps;
|
||||||
|
BYTE *realfbcolormaps; //[SP] For fullbright use
|
||||||
size_t numfakecmaps;
|
size_t numfakecmaps;
|
||||||
|
|
||||||
|
|
||||||
|
@ -459,6 +461,11 @@ void R_DeinitColormaps ()
|
||||||
delete[] realcolormaps;
|
delete[] realcolormaps;
|
||||||
realcolormaps = NULL;
|
realcolormaps = NULL;
|
||||||
}
|
}
|
||||||
|
if (realfbcolormaps != NULL)
|
||||||
|
{
|
||||||
|
delete[] realfbcolormaps;
|
||||||
|
realfbcolormaps = NULL;
|
||||||
|
}
|
||||||
FreeSpecialLights();
|
FreeSpecialLights();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -548,9 +555,20 @@ void R_InitColormaps ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// [SP] Create a copy of the colormap
|
||||||
|
if (!realfbcolormaps)
|
||||||
|
{
|
||||||
|
realfbcolormaps = new BYTE[256*NUMCOLORMAPS*fakecmaps.Size()];
|
||||||
|
memcpy(realfbcolormaps, realcolormaps, 256*NUMCOLORMAPS*fakecmaps.Size());
|
||||||
|
}
|
||||||
|
|
||||||
NormalLight.Color = PalEntry (255, 255, 255);
|
NormalLight.Color = PalEntry (255, 255, 255);
|
||||||
NormalLight.Fade = 0;
|
NormalLight.Fade = 0;
|
||||||
NormalLight.Maps = realcolormaps;
|
NormalLight.Maps = realcolormaps;
|
||||||
|
FullNormalLight.Color = PalEntry (255, 255, 255);
|
||||||
|
FullNormalLight.Fade = 0;
|
||||||
|
FullNormalLight.Maps = realfbcolormaps;
|
||||||
NormalLightHasFixedLights = R_CheckForFixedLights(realcolormaps);
|
NormalLightHasFixedLights = R_CheckForFixedLights(realcolormaps);
|
||||||
numfakecmaps = fakecmaps.Size();
|
numfakecmaps = fakecmaps.Size();
|
||||||
|
|
||||||
|
|
|
@ -80,6 +80,7 @@ extern BYTE DesaturateColormap[31][256];
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
extern FDynamicColormap NormalLight;
|
extern FDynamicColormap NormalLight;
|
||||||
|
extern FDynamicColormap FullNormalLight;
|
||||||
}
|
}
|
||||||
extern bool NormalLightHasFixedLights;
|
extern bool NormalLightHasFixedLights;
|
||||||
|
|
||||||
|
|
|
@ -455,6 +455,8 @@ void R_CopyStackedViewParameters()
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
|
EXTERN_CVAR(Bool, r_fullbrightignoresectorcolor)
|
||||||
|
|
||||||
void R_SetupColormap(player_t *player)
|
void R_SetupColormap(player_t *player)
|
||||||
{
|
{
|
||||||
realfixedcolormap = NULL;
|
realfixedcolormap = NULL;
|
||||||
|
@ -481,6 +483,11 @@ void R_SetupColormap(player_t *player)
|
||||||
else if (player->fixedlightlevel >= 0 && player->fixedlightlevel < NUMCOLORMAPS)
|
else if (player->fixedlightlevel >= 0 && player->fixedlightlevel < NUMCOLORMAPS)
|
||||||
{
|
{
|
||||||
fixedlightlev = player->fixedlightlevel * 256;
|
fixedlightlev = player->fixedlightlevel * 256;
|
||||||
|
// [SP] Emulate GZDoom's light-amp goggles.
|
||||||
|
if (r_fullbrightignoresectorcolor && fixedlightlev >= 0)
|
||||||
|
{
|
||||||
|
fixedcolormap = FullNormalLight.Maps;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// [RH] Inverse light for shooting the Sigil
|
// [RH] Inverse light for shooting the Sigil
|
||||||
|
|
|
@ -57,6 +57,7 @@
|
||||||
|
|
||||||
|
|
||||||
CVAR(Bool, r_np2, true, 0)
|
CVAR(Bool, r_np2, true, 0)
|
||||||
|
EXTERN_CVAR(Bool, r_fullbrightignoresectorcolor);
|
||||||
|
|
||||||
//CVAR (Int, ty, 8, 0)
|
//CVAR (Int, ty, 8, 0)
|
||||||
//CVAR (Int, tx, 8, 0)
|
//CVAR (Int, tx, 8, 0)
|
||||||
|
@ -313,7 +314,7 @@ void R_RenderMaskedSegRange (drawseg_t *ds, int x1, int x2)
|
||||||
rw_scalestep = ds->iscalestep;
|
rw_scalestep = ds->iscalestep;
|
||||||
|
|
||||||
if (fixedlightlev >= 0)
|
if (fixedlightlev >= 0)
|
||||||
dc_colormap = basecolormap->Maps + fixedlightlev;
|
dc_colormap = (r_fullbrightignoresectorcolor) ? (FullNormalLight.Maps + fixedlightlev) : (basecolormap->Maps + fixedlightlev);
|
||||||
else if (fixedcolormap != NULL)
|
else if (fixedcolormap != NULL)
|
||||||
dc_colormap = fixedcolormap;
|
dc_colormap = fixedcolormap;
|
||||||
|
|
||||||
|
@ -630,7 +631,7 @@ void R_RenderFakeWall(drawseg_t *ds, int x1, int x2, F3DFloor *rover)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fixedlightlev >= 0)
|
if (fixedlightlev >= 0)
|
||||||
dc_colormap = basecolormap->Maps + fixedlightlev;
|
dc_colormap = (r_fullbrightignoresectorcolor) ? (FullNormalLight.Maps + fixedlightlev) : (basecolormap->Maps + fixedlightlev);
|
||||||
else if (fixedcolormap != NULL)
|
else if (fixedcolormap != NULL)
|
||||||
dc_colormap = fixedcolormap;
|
dc_colormap = fixedcolormap;
|
||||||
|
|
||||||
|
@ -1788,7 +1789,7 @@ void R_RenderSegLoop ()
|
||||||
fixed_t xoffset = rw_offset;
|
fixed_t xoffset = rw_offset;
|
||||||
|
|
||||||
if (fixedlightlev >= 0)
|
if (fixedlightlev >= 0)
|
||||||
dc_colormap = basecolormap->Maps + fixedlightlev;
|
dc_colormap = (r_fullbrightignoresectorcolor) ? (FullNormalLight.Maps + fixedlightlev) : (basecolormap->Maps + fixedlightlev);
|
||||||
else if (fixedcolormap != NULL)
|
else if (fixedcolormap != NULL)
|
||||||
dc_colormap = fixedcolormap;
|
dc_colormap = fixedcolormap;
|
||||||
|
|
||||||
|
@ -3185,13 +3186,13 @@ static void R_RenderDecal (side_t *wall, DBaseDecal *decal, drawseg_t *clipper,
|
||||||
rereadcolormap = false;
|
rereadcolormap = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
rw_light = rw_lightleft + (x1 - WallC.sx1) * rw_lightstep;
|
rw_light = rw_lightleft + (x1 - savecoord.sx1) * rw_lightstep;
|
||||||
if (fixedlightlev >= 0)
|
if (fixedlightlev >= 0)
|
||||||
dc_colormap = usecolormap->Maps + fixedlightlev;
|
dc_colormap = (r_fullbrightignoresectorcolor) ? (FullNormalLight.Maps + fixedlightlev) : (usecolormap->Maps + fixedlightlev);
|
||||||
else if (fixedcolormap != NULL)
|
else if (fixedcolormap != NULL)
|
||||||
dc_colormap = fixedcolormap;
|
dc_colormap = fixedcolormap;
|
||||||
else if (!foggy && (decal->RenderFlags & RF_FULLBRIGHT))
|
else if (!foggy && (decal->RenderFlags & RF_FULLBRIGHT))
|
||||||
dc_colormap = usecolormap->Maps;
|
dc_colormap = (r_fullbrightignoresectorcolor) ? FullNormalLight.Maps : usecolormap->Maps;
|
||||||
else
|
else
|
||||||
calclighting = true;
|
calclighting = true;
|
||||||
|
|
||||||
|
|
|
@ -76,10 +76,20 @@ void R_InitSkyMap ()
|
||||||
int skyheight;
|
int skyheight;
|
||||||
FTexture *skytex1, *skytex2;
|
FTexture *skytex1, *skytex2;
|
||||||
|
|
||||||
|
// Do not allow the null texture which has no bitmap and will crash.
|
||||||
|
if (sky1texture.isNull())
|
||||||
|
{
|
||||||
|
sky1texture = TexMan.CheckForTexture("-noflat-", FTexture::TEX_Any);
|
||||||
|
}
|
||||||
|
if (sky2texture.isNull())
|
||||||
|
{
|
||||||
|
sky2texture = TexMan.CheckForTexture("-noflat-", FTexture::TEX_Any);
|
||||||
|
}
|
||||||
|
|
||||||
skytex1 = TexMan(sky1texture, true);
|
skytex1 = TexMan(sky1texture, true);
|
||||||
skytex2 = TexMan(sky2texture, true);
|
skytex2 = TexMan(sky2texture, true);
|
||||||
|
|
||||||
if (skytex1 == NULL)
|
if (skytex1 == nullptr)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((level.flags & LEVEL_DOUBLESKY) && skytex1->GetHeight() != skytex2->GetHeight())
|
if ((level.flags & LEVEL_DOUBLESKY) && skytex1->GetHeight() != skytex2->GetHeight())
|
||||||
|
|
|
@ -99,6 +99,7 @@ EXTERN_CVAR (Bool, st_scale)
|
||||||
EXTERN_CVAR(Bool, r_shadercolormaps)
|
EXTERN_CVAR(Bool, r_shadercolormaps)
|
||||||
EXTERN_CVAR(Int, r_drawfuzz)
|
EXTERN_CVAR(Int, r_drawfuzz)
|
||||||
EXTERN_CVAR(Bool, r_deathcamera);
|
EXTERN_CVAR(Bool, r_deathcamera);
|
||||||
|
CVAR(Bool, r_fullbrightignoresectorcolor, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Sprite rotation 0 is facing the viewer,
|
// Sprite rotation 0 is facing the viewer,
|
||||||
|
@ -548,7 +549,7 @@ void R_DrawWallSprite(vissprite_t *spr)
|
||||||
else if (fixedcolormap != NULL)
|
else if (fixedcolormap != NULL)
|
||||||
dc_colormap = fixedcolormap;
|
dc_colormap = fixedcolormap;
|
||||||
else if (!foggy && (spr->renderflags & RF_FULLBRIGHT))
|
else if (!foggy && (spr->renderflags & RF_FULLBRIGHT))
|
||||||
dc_colormap = usecolormap->Maps;
|
dc_colormap = (r_fullbrightignoresectorcolor) ? FullNormalLight.Maps : usecolormap->Maps;
|
||||||
else
|
else
|
||||||
calclighting = true;
|
calclighting = true;
|
||||||
|
|
||||||
|
@ -1066,7 +1067,8 @@ void R_ProjectSprite (AActor *thing, int fakeside, F3DFloor *fakefloor, F3DFloor
|
||||||
vis->deltax = float(pos.X - ViewPos.X);
|
vis->deltax = float(pos.X - ViewPos.X);
|
||||||
vis->deltay = float(pos.Y - ViewPos.Y);
|
vis->deltay = float(pos.Y - ViewPos.Y);
|
||||||
vis->renderflags = renderflags;
|
vis->renderflags = renderflags;
|
||||||
if(thing->flags5 & MF5_BRIGHT) vis->renderflags |= RF_FULLBRIGHT; // kg3D
|
if(thing->flags5 & MF5_BRIGHT)
|
||||||
|
vis->renderflags |= RF_FULLBRIGHT; // kg3D
|
||||||
vis->Style.RenderStyle = thing->RenderStyle;
|
vis->Style.RenderStyle = thing->RenderStyle;
|
||||||
vis->FillColor = thing->fillcolor;
|
vis->FillColor = thing->fillcolor;
|
||||||
vis->Translation = thing->Translation; // [RH] thing translation table
|
vis->Translation = thing->Translation; // [RH] thing translation table
|
||||||
|
@ -1140,7 +1142,7 @@ void R_ProjectSprite (AActor *thing, int fakeside, F3DFloor *fakefloor, F3DFloor
|
||||||
}
|
}
|
||||||
else if (!foggy && ((renderflags & RF_FULLBRIGHT) || (thing->flags5 & MF5_BRIGHT)))
|
else if (!foggy && ((renderflags & RF_FULLBRIGHT) || (thing->flags5 & MF5_BRIGHT)))
|
||||||
{ // full bright
|
{ // full bright
|
||||||
vis->Style.colormap = mybasecolormap->Maps;
|
vis->Style.colormap = (r_fullbrightignoresectorcolor) ? FullNormalLight.Maps : mybasecolormap->Maps;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // diminished light
|
{ // diminished light
|
||||||
|
@ -1462,11 +1464,11 @@ void R_DrawPSprite(DPSprite *pspr, AActor *owner, float bobx, float boby, double
|
||||||
}
|
}
|
||||||
if (fixedlightlev >= 0)
|
if (fixedlightlev >= 0)
|
||||||
{
|
{
|
||||||
vis->Style.colormap = mybasecolormap->Maps + fixedlightlev;
|
vis->Style.colormap = (r_fullbrightignoresectorcolor) ? (FullNormalLight.Maps + fixedlightlev) : (mybasecolormap->Maps + fixedlightlev);
|
||||||
}
|
}
|
||||||
else if (!foggy && pspr->GetState()->GetFullbright())
|
else if (!foggy && pspr->GetState()->GetFullbright())
|
||||||
{ // full bright
|
{ // full bright
|
||||||
vis->Style.colormap = mybasecolormap->Maps; // [RH] use basecolormap
|
vis->Style.colormap = (r_fullbrightignoresectorcolor) ? FullNormalLight.Maps : mybasecolormap->Maps; // [RH] use basecolormap
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // local light
|
{ // local light
|
||||||
|
@ -1516,6 +1518,11 @@ void R_DrawPSprite(DPSprite *pspr, AActor *owner, float bobx, float boby, double
|
||||||
{
|
{
|
||||||
noaccel = true;
|
noaccel = true;
|
||||||
}
|
}
|
||||||
|
// [SP] If emulating GZDoom fullbright, disable acceleration
|
||||||
|
if (r_fullbrightignoresectorcolor && fixedlightlev >= 0)
|
||||||
|
mybasecolormap = &FullNormalLight;
|
||||||
|
if (r_fullbrightignoresectorcolor && !foggy && pspr->GetState()->GetFullbright())
|
||||||
|
mybasecolormap = &FullNormalLight;
|
||||||
colormap_to_use = mybasecolormap;
|
colormap_to_use = mybasecolormap;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -2057,7 +2064,7 @@ void R_DrawSprite (vissprite_t *spr)
|
||||||
}
|
}
|
||||||
else if (!foggy && (spr->renderflags & RF_FULLBRIGHT))
|
else if (!foggy && (spr->renderflags & RF_FULLBRIGHT))
|
||||||
{ // full bright
|
{ // full bright
|
||||||
spr->Style.colormap = mybasecolormap->Maps;
|
spr->Style.colormap = (r_fullbrightignoresectorcolor) ? FullNormalLight.Maps : mybasecolormap->Maps;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // diminished light
|
{ // diminished light
|
||||||
|
@ -2615,7 +2622,7 @@ void R_ProjectParticle (particle_t *particle, const sector_t *sector, int shade,
|
||||||
}
|
}
|
||||||
else if (particle->bright)
|
else if (particle->bright)
|
||||||
{
|
{
|
||||||
vis->Style.colormap = map;
|
vis->Style.colormap = (r_fullbrightignoresectorcolor) ? FullNormalLight.Maps : map;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1002,7 +1002,7 @@ void FTextureManager::UpdateAnimations (DWORD mstime)
|
||||||
|
|
||||||
template<> FSerializer &Serialize(FSerializer &arc, const char *key, FDoorAnimation *&p, FDoorAnimation **def)
|
template<> FSerializer &Serialize(FSerializer &arc, const char *key, FDoorAnimation *&p, FDoorAnimation **def)
|
||||||
{
|
{
|
||||||
FTextureID tex = p->BaseTexture;
|
FTextureID tex = p? p->BaseTexture : FNullTextureID();
|
||||||
Serialize(arc, key, tex, def ? &(*def)->BaseTexture : nullptr);
|
Serialize(arc, key, tex, def ? &(*def)->BaseTexture : nullptr);
|
||||||
if (arc.isReading())
|
if (arc.isReading())
|
||||||
{
|
{
|
||||||
|
|
|
@ -2945,6 +2945,26 @@ DEFINE_CLASS_PROPERTY_PREFIX(player, weaponslot, ISsssssssssssssssssssssssssssss
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// [SP] Player.Viewbob
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
DEFINE_CLASS_PROPERTY_PREFIX(player, viewbob, F, PlayerPawn)
|
||||||
|
{
|
||||||
|
PROP_DOUBLE_PARM(z, 0);
|
||||||
|
// [SP] Hard limits. This is to prevent terrywads from making players sick.
|
||||||
|
// Remember - this messes with a user option who probably has it set a
|
||||||
|
// certain way for a reason. I think a 1.5 limit is pretty generous, but
|
||||||
|
// it may be safe to increase it. I really need opinions from people who
|
||||||
|
// could be affected by this.
|
||||||
|
if (z < 0.0 || z > 1.5)
|
||||||
|
{
|
||||||
|
I_Error("ViewBob must be between 0.0 and 1.5.");
|
||||||
|
}
|
||||||
|
defaults->ViewBob = z;
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
|
@ -11,21 +11,21 @@
|
||||||
|
|
||||||
#if COMPGOTO
|
#if COMPGOTO
|
||||||
#define OP(x) x
|
#define OP(x) x
|
||||||
#define NEXTOP do { unsigned op = pc->op; a = pc->a; pc++; goto *ops[op]; } while(0)
|
#define NEXTOP do { pc++; unsigned op = pc->op; a = pc->a; goto *ops[op]; } while(0)
|
||||||
#else
|
#else
|
||||||
#define OP(x) case OP_##x
|
#define OP(x) case OP_##x
|
||||||
#define NEXTOP break
|
#define NEXTOP pc++; break
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define luai_nummod(a,b) ((a) - floor((a)/(b))*(b))
|
#define luai_nummod(a,b) ((a) - floor((a)/(b))*(b))
|
||||||
|
|
||||||
#define A (pc[-1].a)
|
#define A (pc[0].a)
|
||||||
#define B (pc[-1].b)
|
#define B (pc[0].b)
|
||||||
#define C (pc[-1].c)
|
#define C (pc[0].c)
|
||||||
#define Cs (pc[-1].cs)
|
#define Cs (pc[0].cs)
|
||||||
#define BC (pc[-1].i16u)
|
#define BC (pc[0].i16u)
|
||||||
#define BCs (pc[-1].i16)
|
#define BCs (pc[0].i16)
|
||||||
#define ABCs (pc[-1].i24)
|
#define ABCs (pc[0].i24)
|
||||||
#define JMPOFS(x) ((x)->i24)
|
#define JMPOFS(x) ((x)->i24)
|
||||||
|
|
||||||
#define KC (konstd[C])
|
#define KC (konstd[C])
|
||||||
|
@ -48,8 +48,8 @@
|
||||||
|
|
||||||
#define CMPJMP(test) \
|
#define CMPJMP(test) \
|
||||||
if ((test) == (a & CMP_CHECK)) { \
|
if ((test) == (a & CMP_CHECK)) { \
|
||||||
assert(pc->op == OP_JMP); \
|
assert(pc[1].op == OP_JMP); \
|
||||||
pc += 1 + JMPOFS(pc); \
|
pc += 1 + JMPOFS(pc+1); \
|
||||||
} else { \
|
} else { \
|
||||||
pc += 1; \
|
pc += 1; \
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,11 +52,17 @@ begin:
|
||||||
{
|
{
|
||||||
#if !COMPGOTO
|
#if !COMPGOTO
|
||||||
VM_UBYTE op;
|
VM_UBYTE op;
|
||||||
for(;;) switch(op = pc->op, a = pc->a, pc++, op)
|
for(;;) switch(op = pc->op, a = pc->a, op)
|
||||||
#else
|
#else
|
||||||
|
pc--;
|
||||||
NEXTOP;
|
NEXTOP;
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
#if !COMPGOTO
|
||||||
|
default:
|
||||||
|
assert(0 && "Undefined opcode hit");
|
||||||
|
NEXTOP;
|
||||||
|
#endif
|
||||||
OP(LI):
|
OP(LI):
|
||||||
ASSERTD(a);
|
ASSERTD(a);
|
||||||
reg.d[a] = BCs;
|
reg.d[a] = BCs;
|
||||||
|
@ -367,13 +373,13 @@ begin:
|
||||||
}
|
}
|
||||||
NEXTOP;
|
NEXTOP;
|
||||||
OP(JMP):
|
OP(JMP):
|
||||||
pc += JMPOFS(pc - 1);
|
pc += JMPOFS(pc);
|
||||||
NEXTOP;
|
NEXTOP;
|
||||||
OP(IJMP):
|
OP(IJMP):
|
||||||
ASSERTD(a);
|
ASSERTD(a);
|
||||||
pc += (BCs + reg.d[a]);
|
pc += (BCs + reg.d[a]);
|
||||||
assert(pc->op == OP_JMP);
|
assert(pc[1].op == OP_JMP);
|
||||||
pc += 1 + JMPOFS(pc);
|
pc += 1 + JMPOFS(pc+1);
|
||||||
NEXTOP;
|
NEXTOP;
|
||||||
OP(PARAMI):
|
OP(PARAMI):
|
||||||
assert(f->NumParam < sfunc->MaxParam);
|
assert(f->NumParam < sfunc->MaxParam);
|
||||||
|
@ -490,7 +496,7 @@ begin:
|
||||||
VMReturn returns[MAX_RETURNS];
|
VMReturn returns[MAX_RETURNS];
|
||||||
int numret;
|
int numret;
|
||||||
|
|
||||||
FillReturns(reg, f, returns, pc, C);
|
FillReturns(reg, f, returns, pc+1, C);
|
||||||
if (call->Native)
|
if (call->Native)
|
||||||
{
|
{
|
||||||
numret = static_cast<VMNativeFunction *>(call)->NativeCall(stack, reg.param + f->NumParam - B, B, returns, C);
|
numret = static_cast<VMNativeFunction *>(call)->NativeCall(stack, reg.param + f->NumParam - B, B, returns, C);
|
||||||
|
@ -603,8 +609,8 @@ begin:
|
||||||
{
|
{
|
||||||
THROW(X_TOO_MANY_TRIES);
|
THROW(X_TOO_MANY_TRIES);
|
||||||
}
|
}
|
||||||
assert((pc + JMPOFS(pc - 1))->op == OP_CATCH);
|
assert((pc + JMPOFS(pc) + 1)->op == OP_CATCH);
|
||||||
exception_frames[try_depth++] = pc + JMPOFS(pc - 1);
|
exception_frames[try_depth++] = pc + JMPOFS(pc) + 1;
|
||||||
NEXTOP;
|
NEXTOP;
|
||||||
OP(UNTRY):
|
OP(UNTRY):
|
||||||
assert(a <= try_depth);
|
assert(a <= try_depth);
|
||||||
|
@ -704,8 +710,8 @@ begin:
|
||||||
}
|
}
|
||||||
if (cmp == (a & CMP_CHECK))
|
if (cmp == (a & CMP_CHECK))
|
||||||
{
|
{
|
||||||
assert(pc->op == OP_JMP);
|
assert(pc[1].op == OP_JMP);
|
||||||
pc += 1 + JMPOFS(pc);
|
pc += 1 + JMPOFS(pc+1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -33,6 +33,7 @@ Actor PlayerPawn : Actor native
|
||||||
Player.MugShotMaxHealth 0
|
Player.MugShotMaxHealth 0
|
||||||
Player.FlechetteType "ArtiPoisonBag3"
|
Player.FlechetteType "ArtiPoisonBag3"
|
||||||
Player.AirCapacity 1
|
Player.AirCapacity 1
|
||||||
|
Player.ViewBob 1
|
||||||
Obituary "$OB_MPDEFAULT"
|
Obituary "$OB_MPDEFAULT"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1787,6 +1787,7 @@ DSPLYMNU_PICKUPFADE = "Pickup Flash Intensity";
|
||||||
DSPLYMNU_PALLETEHACK = "DirectDraw palette hack"; // Not used
|
DSPLYMNU_PALLETEHACK = "DirectDraw palette hack"; // Not used
|
||||||
DSPLYMNU_ATTACHEDSURFACES = "Use attached surfaces"; // Not used
|
DSPLYMNU_ATTACHEDSURFACES = "Use attached surfaces"; // Not used
|
||||||
DSPLYMNU_SKYMODE = "Sky render mode";
|
DSPLYMNU_SKYMODE = "Sky render mode";
|
||||||
|
DSPLYMNU_GZDFULLBRIGHT = "Fullbright overrides sector color";
|
||||||
DSPLYMNU_DRAWFUZZ = "Use fuzz effect";
|
DSPLYMNU_DRAWFUZZ = "Use fuzz effect";
|
||||||
DSPLYMNU_TRANSSOUL = "Lost Soul translucency";
|
DSPLYMNU_TRANSSOUL = "Lost Soul translucency";
|
||||||
DSPLYMNU_FAKECONTRAST = "Use fake contrast";
|
DSPLYMNU_FAKECONTRAST = "Use fake contrast";
|
||||||
|
|
|
@ -696,6 +696,7 @@ OptionMenu "VideoOptions"
|
||||||
}
|
}
|
||||||
|
|
||||||
Option "$DSPLYMNU_SKYMODE", "r_skymode", "SkyModes"
|
Option "$DSPLYMNU_SKYMODE", "r_skymode", "SkyModes"
|
||||||
|
Option "$DSPLYMNU_GZDFULLBRIGHT", "r_fullbrightignoresectorcolor", "OnOff"
|
||||||
Option "$DSPLYMNU_DRAWFUZZ", "r_drawfuzz", "Fuzziness"
|
Option "$DSPLYMNU_DRAWFUZZ", "r_drawfuzz", "Fuzziness"
|
||||||
Slider "$DSPLYMNU_TRANSSOUL", "transsouls", 0.25, 1.0, 0.05, 2
|
Slider "$DSPLYMNU_TRANSSOUL", "transsouls", 0.25, 1.0, 0.05, 2
|
||||||
Option "$DSPLYMNU_FAKECONTRAST", "r_fakecontrast", "Contrast"
|
Option "$DSPLYMNU_FAKECONTRAST", "r_fakecontrast", "Contrast"
|
||||||
|
|
Loading…
Reference in a new issue