mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-11 07:11:54 +00:00
Merge branch 'master' of https://github.com/rheit/zdoom
This commit is contained in:
commit
4ed78d78cc
6 changed files with 49 additions and 7 deletions
|
@ -698,6 +698,13 @@ void G_DoCompleted (void)
|
||||||
|
|
||||||
gameaction = ga_nothing;
|
gameaction = ga_nothing;
|
||||||
|
|
||||||
|
if ( gamestate == GS_DEMOSCREEN
|
||||||
|
|| gamestate == GS_FULLCONSOLE
|
||||||
|
|| gamestate == GS_STARTUP)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (gamestate == GS_TITLELEVEL)
|
if (gamestate == GS_TITLELEVEL)
|
||||||
{
|
{
|
||||||
level.MapName = nextlevel;
|
level.MapName = nextlevel;
|
||||||
|
|
|
@ -186,10 +186,12 @@ void ASkyPicker::PostBeginPlay ()
|
||||||
if (0 == (args[1] & 2))
|
if (0 == (args[1] & 2))
|
||||||
{
|
{
|
||||||
Sector->CeilingSkyBox = box;
|
Sector->CeilingSkyBox = box;
|
||||||
|
if (box == NULL) Sector->MoreFlags |= SECF_NOCEILINGSKYBOX; // sector should ignore the level's default skybox
|
||||||
}
|
}
|
||||||
if (0 == (args[1] & 1))
|
if (0 == (args[1] & 1))
|
||||||
{
|
{
|
||||||
Sector->FloorSkyBox = box;
|
Sector->FloorSkyBox = box;
|
||||||
|
if (box == NULL) Sector->MoreFlags |= SECF_NOFLOORSKYBOX; // sector should ignore the level's default skybox
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Destroy ();
|
Destroy ();
|
||||||
|
|
|
@ -133,6 +133,16 @@ enum
|
||||||
ARMORINFO_ACTUALSAVEAMOUNT,
|
ARMORINFO_ACTUALSAVEAMOUNT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// PickActor
|
||||||
|
// [JP] I've renamed these flags to something else to avoid confusion with the other PAF_ flags
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
// PAF_FORCETID,
|
||||||
|
// PAF_RETURNTID
|
||||||
|
PICKAF_FORCETID = 1,
|
||||||
|
PICKAF_RETURNTID = 2,
|
||||||
|
};
|
||||||
|
|
||||||
struct CallReturn
|
struct CallReturn
|
||||||
{
|
{
|
||||||
CallReturn(int pc, ScriptFunction *func, FBehavior *module, SDWORD *locals, ACSLocalArrays *arrays, bool discard, unsigned int runaway)
|
CallReturn(int pc, ScriptFunction *func, FBehavior *module, SDWORD *locals, ACSLocalArrays *arrays, bool discard, unsigned int runaway)
|
||||||
|
@ -5779,11 +5789,10 @@ doplaysound: if (funcIndex == ACSF_PlayActorSound)
|
||||||
wallMask = args[6];
|
wallMask = args[6];
|
||||||
}
|
}
|
||||||
|
|
||||||
bool forceTID = 0;
|
int flags = 0;
|
||||||
if (argCount >= 8)
|
if (argCount >= 8)
|
||||||
{
|
{
|
||||||
if (args[7] != 0)
|
flags = args[7];
|
||||||
forceTID = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AActor* pickedActor = P_LinePickActor(actor, args[1] << 16, args[3], args[2] << 16, actorMask, wallMask);
|
AActor* pickedActor = P_LinePickActor(actor, args[1] << 16, args[3], args[2] << 16, actorMask, wallMask);
|
||||||
|
@ -5791,15 +5800,19 @@ doplaysound: if (funcIndex == ACSF_PlayActorSound)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(forceTID) && (args[4] == 0) && (pickedActor->tid == 0))
|
if (!(flags & PICKAF_FORCETID) && (args[4] == 0) && (pickedActor->tid == 0))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if ((pickedActor->tid == 0) || (forceTID))
|
if ((pickedActor->tid == 0) || (flags & PICKAF_FORCETID))
|
||||||
{
|
{
|
||||||
pickedActor->RemoveFromHash();
|
pickedActor->RemoveFromHash();
|
||||||
pickedActor->tid = args[4];
|
pickedActor->tid = args[4];
|
||||||
pickedActor->AddToHash();
|
pickedActor->AddToHash();
|
||||||
}
|
}
|
||||||
|
if (flags & PICKAF_RETURNTID)
|
||||||
|
{
|
||||||
|
return pickedActor->tid;
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "po_man.h"
|
#include "po_man.h"
|
||||||
#include "farchive.h"
|
#include "farchive.h"
|
||||||
#include "r_utility.h"
|
#include "r_utility.h"
|
||||||
|
#include "a_sharedglobal.h"
|
||||||
#include "r_data/colormaps.h"
|
#include "r_data/colormaps.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -800,6 +801,20 @@ int sector_t::GetCeilingLight () const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ASkyViewpoint *sector_t::GetSkyBox(int which)
|
||||||
|
{
|
||||||
|
if (which == floor)
|
||||||
|
{
|
||||||
|
return FloorSkyBox != NULL ? FloorSkyBox : (MoreFlags & SECF_NOFLOORSKYBOX)? (ASkyViewpoint*)NULL : level.DefaultSkybox;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return CeilingSkyBox != NULL ? CeilingSkyBox : (MoreFlags & SECF_NOCEILINGSKYBOX)? (ASkyViewpoint*)NULL : level.DefaultSkybox;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
sector_t *sector_t::GetHeightSec() const
|
sector_t *sector_t::GetHeightSec() const
|
||||||
{
|
{
|
||||||
if (heightsec == NULL)
|
if (heightsec == NULL)
|
||||||
|
|
|
@ -1087,7 +1087,8 @@ void R_Subsector (subsector_t *sub)
|
||||||
basecolormap = frontsector->ColorMap;
|
basecolormap = frontsector->ColorMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
skybox = frontsector->CeilingSkyBox != NULL ? frontsector->CeilingSkyBox : level.DefaultSkybox;
|
skybox = frontsector->GetSkyBox(sector_t::ceiling);
|
||||||
|
|
||||||
ceilingplane = frontsector->ceilingplane.PointOnSide(viewx, viewy, viewz) > 0 ||
|
ceilingplane = frontsector->ceilingplane.PointOnSide(viewx, viewy, viewz) > 0 ||
|
||||||
frontsector->GetTexture(sector_t::ceiling) == skyflatnum ||
|
frontsector->GetTexture(sector_t::ceiling) == skyflatnum ||
|
||||||
(skybox != NULL && skybox->bAlways) ||
|
(skybox != NULL && skybox->bAlways) ||
|
||||||
|
@ -1127,7 +1128,7 @@ void R_Subsector (subsector_t *sub)
|
||||||
// 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
|
||||||
// killough 3/16/98: add floorlightlevel
|
// killough 3/16/98: add floorlightlevel
|
||||||
// killough 10/98: add support for skies transferred from sidedefs
|
// killough 10/98: add support for skies transferred from sidedefs
|
||||||
skybox = frontsector->FloorSkyBox != NULL ? frontsector->FloorSkyBox : level.DefaultSkybox;
|
skybox = frontsector->GetSkyBox(sector_t::floor);
|
||||||
floorplane = frontsector->floorplane.PointOnSide(viewx, viewy, viewz) > 0 || // killough 3/7/98
|
floorplane = frontsector->floorplane.PointOnSide(viewx, viewy, viewz) > 0 || // killough 3/7/98
|
||||||
frontsector->GetTexture(sector_t::floor) == skyflatnum ||
|
frontsector->GetTexture(sector_t::floor) == skyflatnum ||
|
||||||
(skybox != NULL && skybox->bAlways) ||
|
(skybox != NULL && skybox->bAlways) ||
|
||||||
|
|
|
@ -377,6 +377,8 @@ enum
|
||||||
SECF_UNDERWATERMASK = 32+64,
|
SECF_UNDERWATERMASK = 32+64,
|
||||||
SECF_DRAWN = 128, // sector has been drawn at least once
|
SECF_DRAWN = 128, // sector has been drawn at least once
|
||||||
SECF_HIDDEN = 256, // Do not draw on textured automap
|
SECF_HIDDEN = 256, // Do not draw on textured automap
|
||||||
|
SECF_NOFLOORSKYBOX = 512, // force use of regular sky
|
||||||
|
SECF_NOCEILINGSKYBOX = 1024, // force use of regular sky
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
@ -490,6 +492,8 @@ struct sector_t
|
||||||
DInterpolation *SetInterpolation(int position, bool attach);
|
DInterpolation *SetInterpolation(int position, bool attach);
|
||||||
void StopInterpolation(int position);
|
void StopInterpolation(int position);
|
||||||
|
|
||||||
|
ASkyViewpoint *GetSkyBox(int which);
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
floor,
|
floor,
|
||||||
|
|
Loading…
Reference in a new issue