mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-20 18:52:43 +00:00
- Blood: Fix DeleteSprite
This commit is contained in:
parent
9213eae606
commit
3a44f168e0
3 changed files with 11 additions and 16 deletions
|
@ -174,12 +174,6 @@ using BloodSectIterator = TSectIterator<DBloodActor>;
|
|||
using BloodSpriteIterator = TSpriteIterator<DBloodActor>;
|
||||
using BloodLinearSpriteIterator = TLinearSpriteIterator<DBloodActor>;
|
||||
|
||||
inline int DeleteSprite(DBloodActor* nSprite)
|
||||
{
|
||||
if (nSprite) return DeleteSprite(nSprite->GetSpriteIndex());
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline void GetActorExtents(DBloodActor* actor, int* top, int* bottom)
|
||||
{
|
||||
GetSpriteExtents(&actor->s(), top, bottom);
|
||||
|
|
|
@ -189,23 +189,24 @@ DBloodActor* InsertSprite(sectortype* pSector, int nStat)
|
|||
return actor;
|
||||
}
|
||||
|
||||
int DeleteSprite(int nSprite)
|
||||
|
||||
inline int DeleteSprite(DBloodActor* actor)
|
||||
{
|
||||
auto sp = &sprite[nSprite];
|
||||
FVector3 pos = GetSoundPos(&sp->pos);
|
||||
soundEngine->RelinkSound(SOURCE_Actor, &sprite[nSprite], nullptr, &pos);
|
||||
auto sp = &actor->s();
|
||||
FVector3 pos = GetSoundPos(&actor->s().pos);
|
||||
soundEngine->RelinkSound(SOURCE_Actor, actor, nullptr, &pos);
|
||||
|
||||
assert(sp->statnum >= 0 && sp->statnum < kMaxStatus);
|
||||
RemoveSpriteStat(nSprite);
|
||||
RemoveSpriteStat(actor->GetSpriteIndex());
|
||||
assert(sp->insector());
|
||||
RemoveSpriteSect(nSprite);
|
||||
InsertSpriteStat(nSprite, kMaxStatus);
|
||||
RemoveSpriteSect(actor->GetSpriteIndex());
|
||||
InsertSpriteStat(actor->GetSpriteIndex(), kMaxStatus);
|
||||
#ifdef NOONE_EXTENSIONS
|
||||
for (auto& ctrl : gPlayerCtrl) if (ctrl.qavScene.initiator == &bloodActors[nSprite]) ctrl.qavScene.initiator = nullptr;
|
||||
for (auto& ctrl : gPlayerCtrl) if (ctrl.qavScene.initiator == actor) ctrl.qavScene.initiator = nullptr;
|
||||
#endif
|
||||
Numsprites--;
|
||||
|
||||
return nSprite;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ChangeSpriteSect(int nSprite, int nSector)
|
||||
|
|
|
@ -118,7 +118,7 @@ void InsertSpriteStat(int nSprite, int nStat);
|
|||
void RemoveSpriteStat(int nSprite);
|
||||
void qinitspritelists(void);
|
||||
DBloodActor* InsertSprite(sectortype* pSector, int nStat);
|
||||
int DeleteSprite(int nSprite);
|
||||
int DeleteSprite(DBloodActor* actor);
|
||||
int ChangeSpriteSect(int nSprite, int nSector);
|
||||
int qchangespritesect(short nSprite, short nSector);
|
||||
int ChangeSpriteStat(int nSprite, int nStatus);
|
||||
|
|
Loading…
Reference in a new issue