mirror of
https://github.com/ZDoom/Raze.git
synced 2025-04-22 07:50:54 +00:00
nnext fully integrated, everything compiles and links again.
This commit is contained in:
parent
c17ccd62e6
commit
6e0d61d137
11 changed files with 39 additions and 32 deletions
|
@ -1758,7 +1758,7 @@ void aiInitSprite(DBloodActor* actor)
|
|||
actor->xspr.data3 = 0;
|
||||
|
||||
// make dude follow the markers
|
||||
bool uwater = spriteIsUnderwater(actor);
|
||||
bool uwater = spriteIsUnderwater(actor, false);
|
||||
|
||||
if (stateTimer > 0)
|
||||
{
|
||||
|
|
|
@ -1247,7 +1247,6 @@ void enterMorph(DBloodActor* pSpr)
|
|||
|
||||
void thinkMorph(DBloodActor* pSpr)
|
||||
{
|
||||
int nTarget;
|
||||
bool triggerOn, triggerOff;
|
||||
DCustomDude* pDude = cdudeGet(pSpr);
|
||||
|
||||
|
|
|
@ -111,6 +111,13 @@ size_t DBloodActor::PropagateMark()
|
|||
return Super::PropagateMark();
|
||||
}
|
||||
|
||||
void DBloodActor::OnDestroy()
|
||||
{
|
||||
if (customDude) customDude->Destroy();
|
||||
customDude = nullptr;
|
||||
Super::OnDestroy();
|
||||
}
|
||||
|
||||
static void markgcroots()
|
||||
{
|
||||
#ifdef NOONE_EXTENSIONS
|
||||
|
|
|
@ -391,4 +391,13 @@ struct GameInterface : public ::GameInterface
|
|||
void FinalizeSetup() override;
|
||||
};
|
||||
|
||||
inline void viewBackupSpriteLoc(DBloodActor* actor)
|
||||
{
|
||||
if (!actor->interpolated)
|
||||
{
|
||||
actor->backuploc();
|
||||
actor->interpolated = true;
|
||||
}
|
||||
}
|
||||
|
||||
END_BLD_NS
|
||||
|
|
|
@ -305,7 +305,6 @@ void Respawn(DBloodActor* actor) // 9
|
|||
seqSpawn(getDudeInfo(nType + kDudeBase)->seqStartID, actor);
|
||||
break;
|
||||
case kDudeModernCustom:
|
||||
seqSpawn(genDudeSeqStartId(actor), actor);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -278,5 +278,15 @@ struct DUDEEXTRA
|
|||
int birthCounter;
|
||||
};
|
||||
|
||||
struct SPRITEMASS { // sprite mass info for getSpriteMassBySize();
|
||||
int seqId;
|
||||
FTextureID texid; // mainly needs for moving debris
|
||||
DVector2 scale;
|
||||
int16_t airVel; // mainly needs for moving debris
|
||||
double clipDist; // mass multiplier
|
||||
int mass;
|
||||
int fraction; // mainly needs for moving debris
|
||||
};
|
||||
|
||||
|
||||
END_BLD_NS
|
||||
|
|
|
@ -4373,7 +4373,7 @@ DBloodActor* cdudeSpawn(DBloodActor* pSource, DBloodActor* pSprite, double nDist
|
|||
|
||||
|
||||
// for kThingModernEnemyLifeLeech
|
||||
void cdudeLeechOperate(DBloodActor* pSpr, XSPRITE* pXSpr)
|
||||
void cdudeLeechOperate(DBloodActor* pSpr)
|
||||
{
|
||||
if (DBloodActor* pOwn = pSpr->ownerActor)
|
||||
{
|
||||
|
|
|
@ -993,6 +993,7 @@ class CUSTOMDUDE_EFFECT
|
|||
else
|
||||
{
|
||||
nID -= kCdudeFXEffectBase;
|
||||
DBloodActor* pFX;
|
||||
if ((pFX = gFX.fxSpawnActor((FX_ID)nID, pSpr->spr.sectp, pos)) != nullptr)
|
||||
Setup(pSpr, pFX, false);
|
||||
}
|
||||
|
|
|
@ -477,7 +477,7 @@ int idListProcessPhysSprite(DBloodActor* actor)
|
|||
|
||||
actor->norm_ang();
|
||||
DAngle ang = actor->spr.Angles.Yaw;
|
||||
if ((uwater = spriteIsUnderwater(actor)) == false) evKillActor(actor, AF(EnemyBubble));
|
||||
if ((uwater = spriteIsUnderwater(actor, false)) == false) evKillActor(actor, AF(EnemyBubble));
|
||||
else if (Chance(0x1000 - mass))
|
||||
{
|
||||
if (actor->vel.Z > 0x100) debrisBubble(actor);
|
||||
|
@ -758,7 +758,8 @@ DBloodActor* nnExtFireMissile(DBloodActor* actor, double xyoff, double zoff, DVe
|
|||
VMCall(func, p, 2, nullptr, 0);
|
||||
}
|
||||
|
||||
actPropagateSpriteOwner(pShot, actor);
|
||||
|
||||
pShot->SetOwner(actor);
|
||||
|
||||
pShot->spr.cstat &= ~CSTAT_SPRITE_BLOCK; // projectiles don't even need this
|
||||
pShot->xspr.target = nullptr;
|
||||
|
@ -2084,7 +2085,7 @@ void aiSetGenIdleState(DBloodActor* actor)
|
|||
switch (actor->GetType())
|
||||
{
|
||||
case kDudeModernCustom:
|
||||
aiGenDudeNewState(actor, &genIdle);
|
||||
cdudeGet(actor)->NewState(kCdudeStateGenIdle);
|
||||
break;
|
||||
default:
|
||||
aiNewState(actor, &genIdle);
|
||||
|
@ -4532,8 +4533,7 @@ bool aiFightUnitCanFly(DBloodActor* dude)
|
|||
|
||||
bool aiFightIsMeleeUnit(DBloodActor* dude)
|
||||
{
|
||||
if (dude->GetType() == kDudeModernCustom) return (dude->hasX() && dudeIsMelee(dude));
|
||||
else return (dude->IsDudeActor() && gDudeInfoExtra[dude->GetType() - kDudeBase].melee);
|
||||
return (dude->IsDudeActor() && gDudeInfoExtra[dude->GetType() - kDudeBase].melee);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -6382,7 +6382,7 @@ void usePictureChanger(DBloodActor* sourceactor, int objType, sectortype* targSe
|
|||
|
||||
void useCustomDudeSpawn(DBloodActor* pSource, DBloodActor* pActor)
|
||||
{
|
||||
genDudeSpawn(pSource, pActor, pActor->clipdist * 0.5);
|
||||
cdudeSpawn(pSource, pActor, pActor->clipdist * 2);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -6396,7 +6396,7 @@ void useDripGenerator(DBloodActor* pSource, DBloodActor* pActor)
|
|||
double top, bottom;
|
||||
GetActorExtents(pActor, &top, &bottom);
|
||||
auto pThing = actSpawnThing(pActor->sector(), DVector3(pActor->spr.pos.XY(), bottom), (pActor->GetType() == kGenDripWater) ? kThingDripWater : kThingDripBlood);
|
||||
actPropagateSpriteOwner(pThing, pActor);
|
||||
pThing->SetOwner(pActor);
|
||||
if (pSource->xspr.data4)
|
||||
pThing->vel.Z = pSource->xspr.data4 / 256.;
|
||||
}
|
||||
|
|
|
@ -175,16 +175,6 @@ enum {
|
|||
|
||||
// - STRUCTS ------------------------------------------------------------------
|
||||
|
||||
struct SPRITEMASS { // sprite mass info for getSpriteMassBySize();
|
||||
int seqId;
|
||||
FTextureID texid; // mainly needs for moving debris
|
||||
DVector2 scale;
|
||||
int16_t airVel; // mainly needs for moving debris
|
||||
double clipDist; // mass multiplier
|
||||
int mass;
|
||||
int fraction; // mainly needs for moving debris
|
||||
};
|
||||
|
||||
struct EXPLOSION_EXTRA
|
||||
{
|
||||
uint8_t seq;
|
||||
|
@ -252,7 +242,6 @@ extern const THINGINFO_EXTRA gThingInfoExtra[kThingMax];
|
|||
extern const VECTORINFO_EXTRA gVectorInfoExtra[kVectorMax];
|
||||
extern const MISSILEINFO_EXTRA gMissileInfoExtra[kMissileMax];
|
||||
extern const EXPLOSION_EXTRA gExplodeExtra[kExplosionMax];
|
||||
extern const DUDEINFO_EXTRA gDudeInfoExtra[kDudeMax];
|
||||
extern TRPLAYERCTRL gPlayerCtrl[kMaxPlayers];
|
||||
extern AISTATE genPatrolStates[kPatrolStateSize];
|
||||
|
||||
|
@ -410,7 +399,7 @@ bool dudeIsAlive(DBloodActor* actor);
|
|||
DBloodActor* nnExtFireMissile(DBloodActor* actor, double xyoff, double zoff, DVector3 dc, int nType);
|
||||
bool nnExtOffsetSprite(DBloodActor* pSpr, const DVector3& opos);
|
||||
DBloodActor* nnExtSpawnDude(DBloodActor* pSrc, int nType, const DVector3& pos);
|
||||
bool spriteIsUnderwater(DBloodActor* actor, bool oldWay);
|
||||
bool spriteIsUnderwater(DBloodActor* actor, bool oldWay = false);
|
||||
|
||||
|
||||
inline bool valueIsBetween(int val, int min, int max)
|
||||
|
|
|
@ -30,6 +30,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
|
||||
BEGIN_BLD_NS
|
||||
|
||||
class DBloodPlayer;
|
||||
|
||||
extern bool gPrediction;
|
||||
|
||||
enum VIEW_EFFECT {
|
||||
|
@ -106,14 +108,5 @@ inline void viewInterpolateWall(walltype* pWall)
|
|||
StartInterpolation(pWall, Interp_Wall_Y);
|
||||
}
|
||||
|
||||
inline void viewBackupSpriteLoc(DBloodActor* actor)
|
||||
{
|
||||
if (!actor->interpolated)
|
||||
{
|
||||
actor->backuploc();
|
||||
actor->interpolated = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
END_BLD_NS
|
||||
|
|
Loading…
Reference in a new issue