mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-23 12:32:13 +00:00
- wall flag interface cleanup.
With wall textures now available the workarounds could be removed.
This commit is contained in:
parent
041d5214a4
commit
1f5cd93564
7 changed files with 35 additions and 43 deletions
|
@ -154,6 +154,19 @@ DEFINE_ACTION_FUNCTION_NATIVE(_Raze, FindSoundByResID, Raze_FindSoundByResID)
|
|||
ACTION_RETURN_INT(Raze_FindSoundByResID(i));
|
||||
}
|
||||
|
||||
int raze_tileflags(int tex)
|
||||
{
|
||||
return tileflags(FSetTextureID(tex));
|
||||
}
|
||||
|
||||
DEFINE_ACTION_FUNCTION_NATIVE(_Raze, tileflags, raze_tileflags)
|
||||
{
|
||||
PARAM_PROLOGUE;
|
||||
PARAM_INT(which);
|
||||
ACTION_RETURN_INT(raze_tileflags(which));
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// internal sector struct - no longer identical with on-disk format
|
||||
|
|
|
@ -215,6 +215,19 @@ DEFINE_ACTION_FUNCTION_NATIVE(_Duke, isaccessswitch, Duke_isaccessswitch)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int Duke_isshootableswitch(int texint)
|
||||
{
|
||||
return isshootableswitch(FSetTextureID(texint));
|
||||
}
|
||||
|
||||
DEFINE_ACTION_FUNCTION_NATIVE(_Duke, isshootableswitch, Duke_isshootableswitch)
|
||||
{
|
||||
PARAM_PROLOGUE;
|
||||
PARAM_INT(v);
|
||||
ACTION_RETURN_BOOL(Duke_isshootableswitch(v));
|
||||
return 0;
|
||||
}
|
||||
|
||||
DEFINE_GLOBAL_UNSIZED(dlevel)
|
||||
DEFINE_GLOBAL(camsprite)
|
||||
|
||||
|
@ -1251,30 +1264,6 @@ DEFINE_ACTION_FUNCTION_NATIVE(_DukeLevel, floorsurface, duke_floorsurface)
|
|||
ACTION_RETURN_INT(duke_floorsurface(sect));
|
||||
}
|
||||
|
||||
int duke_floorflags(sectortype* sector)
|
||||
{
|
||||
return tileflags(sector->floortexture);
|
||||
}
|
||||
|
||||
DEFINE_ACTION_FUNCTION_NATIVE(_DukeLevel, floorflags, duke_floorflags)
|
||||
{
|
||||
PARAM_PROLOGUE;
|
||||
PARAM_POINTER(sect, sectortype);
|
||||
ACTION_RETURN_INT(duke_floorflags(sect));
|
||||
}
|
||||
|
||||
int duke_ceilingflags(sectortype* sector)
|
||||
{
|
||||
return tileflags(sector->ceilingtexture);
|
||||
}
|
||||
|
||||
DEFINE_ACTION_FUNCTION_NATIVE(_DukeLevel, ceilingflags, duke_ceilingflags)
|
||||
{
|
||||
PARAM_PROLOGUE;
|
||||
PARAM_POINTER(sect, sectortype);
|
||||
ACTION_RETURN_INT(duke_ceilingflags(sect));
|
||||
}
|
||||
|
||||
int duke_ceilingsurface(sectortype* sector)
|
||||
{
|
||||
return tilesurface(sector->ceilingtexture);
|
||||
|
@ -1287,19 +1276,6 @@ DEFINE_ACTION_FUNCTION_NATIVE(_DukeLevel, ceilingsurface, duke_ceilingsurface)
|
|||
ACTION_RETURN_INT(duke_ceilingsurface(sect));
|
||||
}
|
||||
|
||||
int duke_wallflags(walltype* wal, int which)
|
||||
{
|
||||
return tileflags(which? wal->overtexture : wal->walltexture);
|
||||
}
|
||||
|
||||
DEFINE_ACTION_FUNCTION_NATIVE(_DukeLevel, wallflags, duke_wallflags)
|
||||
{
|
||||
PARAM_PROLOGUE;
|
||||
PARAM_POINTER(sect, walltype);
|
||||
PARAM_INT(which);
|
||||
ACTION_RETURN_INT(duke_wallflags(sect, which));
|
||||
}
|
||||
|
||||
int duke_ismirror(walltype* wal)
|
||||
{
|
||||
return wal->walltexture == mirrortex || wal->overtexture == mirrortex;
|
||||
|
|
|
@ -62,7 +62,7 @@ class DukeBloodSplat1 : DukeActor
|
|||
return true;
|
||||
if (wal.hitag != 0)
|
||||
return true;
|
||||
if (dlevel.wallflags(wal, 1) & Duke.TFLAG_NOBLOODSPLAT)
|
||||
if (Raze.tileflags(wal.walltexture) & Duke.TFLAG_NOBLOODSPLAT)
|
||||
return true;
|
||||
if ((wal.cstat & CSTAT_WALL_MASKED) != 0)
|
||||
return true;
|
||||
|
|
|
@ -1019,7 +1019,7 @@ class RedneckSawBlade : DukeProjectile
|
|||
|
||||
override bool weaponhitwall(walltype wal)
|
||||
{
|
||||
if (dlevel.wallflags(wal, 0) & Duke.TFLAG_NOCIRCLEREFLECT)
|
||||
if (Raze.tileflags(wal.walltexture) & Duke.TFLAG_NOCIRCLEREFLECT)
|
||||
{
|
||||
self.Destroy();
|
||||
return true;
|
||||
|
|
|
@ -364,10 +364,7 @@ struct DukeLevel
|
|||
native static void operatemasterswitches(int lotag);
|
||||
native static void operateactivators(int lotag, DukePlayer p);
|
||||
native static int floorsurface(sectortype s);
|
||||
native static int floorflags(sectortype s);
|
||||
native static int ceilingsurface(sectortype s);
|
||||
native static int ceilingflags(sectortype s);
|
||||
native static int wallflags(walltype s, int which);
|
||||
native static void AddCycler(sectortype sector, int lotag, int shade, int shade2, int hitag, int state);
|
||||
native static void addtorch(sectortype sector, int shade, int lotag);
|
||||
native static void addlightning(sectortype sector, int shade);
|
||||
|
|
|
@ -77,6 +77,11 @@ struct Duke native
|
|||
TFLAG_BLOCKDOOR = 1 << 4,
|
||||
TFLAG_NOBLOODSPLAT = 1 << 5,
|
||||
TFLAG_NOCIRCLEREFLECT = 1 << 6,
|
||||
TFLAG_SEASICKWALL = 1 << 7,
|
||||
TFLAG_FORCEFIELD = 1 << 8,
|
||||
TFLAG_ANIMFORCEFIELD = 1 << 9,
|
||||
TFLAG_ANIMSCREEN = 1 << 10,
|
||||
TFLAG_ANIMSCREENNOISE = 1 << 11,
|
||||
};
|
||||
|
||||
enum ETexSurfaces
|
||||
|
@ -174,6 +179,7 @@ struct Duke native
|
|||
static native int getPlayerIndex(DukePlayer p);
|
||||
static native void setlastvisinc(int amount);
|
||||
static native bool isaccessswitch(TextureID tex);
|
||||
static native bool isshootableswitch(TextureID tex);
|
||||
static int rnd(int val)
|
||||
{
|
||||
return (random(0, 255) >= (255 - (val)));
|
||||
|
|
|
@ -214,7 +214,7 @@ struct Raze
|
|||
native static void SetReverbDelay(int d);
|
||||
native static Sound FindSoundByResID(int id);
|
||||
|
||||
//native static int tileflags(TextureID tex)
|
||||
native static int tileflags(TextureID tex);
|
||||
|
||||
native static sectortype updatesector(Vector2 pos, sectortype lastsect, double maxdist = 96);
|
||||
native static sectortype, Vector3 clipmove(Vector3 pos, sectortype sect, Vector2 move, double walldist, double ceildist, double flordist, uint cliptype, CollisionData coll, int clipmoveboxtracenum = 3);
|
||||
|
|
Loading…
Reference in a new issue