- moved AI wrappers out of the main sources.

This is mainly to reduce commit noise for what follows. These functions will soon be deleted.
This commit is contained in:
Christoph Oelckers 2021-10-28 18:04:35 +02:00
parent 3842936012
commit 7a65cc46d0
25 changed files with 437 additions and 339 deletions

View file

@ -48,3 +48,357 @@
#include "src/wasp.cpp"
// This includes the VM so it is last
#include "src/d_menu.cpp"
// just to keep things temporarily clean.
BEGIN_PS_NS
void FuncAnim(int nObject, int nMessage, int nDamage, int nRun)
{
AIAnim ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncAnubis(int nObject, int nMessage, int nDamage, int nRun)
{
AIAnubis ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncBubble(int nObject, int nMessage, int nDamage, int nRun)
{
AIBubble ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncBullet(int nObject, int nMessage, int nDamage, int nRun)
{
AIBullet ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncFishLimb(int nObject, int nMessage, int nDamage, int nRun)
{
AIFishLimb ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncFish(int nObject, int nMessage, int nDamage, int nRun)
{
AIFish ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncGrenade(int nObject, int nMessage, int nDamage, int nRun)
{
AIGrenade ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncLavaLimb(int nObject, int nMessage, int nDamage, int nRun)
{
AILavaDudeLimb ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncLava(int nObject, int nMessage, int nDamage, int nRun)
{
AILavaDude ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncLion(int nObject, int nMessage, int nDamage, int nRun)
{
AILion ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncCreatureChunk(int nObject, int nMessage, int nDamage, int nRun)
{
AICreatureChunk ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncMummy(int nObject, int nMessage, int nDamage, int nRun)
{
AIMummy ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncElev(int nObject, int nMessage, int nDamage, int nRun)
{
AIElev ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncWallFace(int nObject, int nMessage, int nDamage, int nRun)
{
AIWallFace ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncSlide(int nObject, int nMessage, int nDamage, int nRun)
{
AISlide ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncTrap(int nObject, int nMessage, int nDamage, int nRun)
{
AITrap ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncSpark(int nObject, int nMessage, int nDamage, int nRun)
{
AISpark ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncEnergyBlock(int nObject, int nMessage, int nDamage, int nRun)
{
AIEnergyBlock ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncObject(int nObject, int nMessage, int nDamage, int nRun)
{
AIObject ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncPlayer(int nObject, int nMessage, int nDamage, int nRun)
{
AIPlayer ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncQueenEgg(int nObject, int nMessage, int nDamage, int nRun)
{
AIQueenEgg ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncQueenHead(int nObject, int nMessage, int nDamage, int nRun)
{
AIQueenHead ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncQueen(int nObject, int nMessage, int nDamage, int nRun)
{
AIQueen ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncRa(int nObject, int nMessage, int nDamage, int nRun)
{
AIRa ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncRat(int nObject, int nMessage, int nDamage, int nRun)
{
AIRat ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncRex(int nObject, int nMessage, int nDamage, int nRun)
{
AIRex ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncRoach(int nObject, int nMessage, int nDamage, int nRun)
{
AIRoach ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncScorp(int nObject, int nMessage, int nDamage, int nRun)
{
AIScorp ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncSoul(int nObject, int nMessage, int nDamage, int nRun)
{
AISoul ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncSet(int nObject, int nMessage, int nDamage, int nRun)
{
AISet ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncSnake(int nObject, int nMessage, int nDamage, int nRun)
{
AISnake ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncSpider(int nObject, int nMessage, int nDamage, int nRun)
{
AISpider ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void FuncSwReady(int nObject, int nMessage, int, int nRun)
{
AISWReady ai;
runlist_DispatchEvent(&ai, nObject, nMessage, 0, nRun);
}
void FuncSwPause(int nObject, int nMessage, int, int nRun)
{
AISWPause ai;
runlist_DispatchEvent(&ai, nObject, nMessage, 0, nRun);
}
void FuncSwStepOn(int nObject, int nMessage, int, int nRun)
{
AISWStepOn ai;
runlist_DispatchEvent(&ai, nObject, nMessage, 0, nRun);
}
void FuncSwNotOnPause(int nObject, int nMessage, int, int nRun)
{
AISWNotOnPause ai;
runlist_DispatchEvent(&ai, nObject, nMessage, 0, nRun);
}
void FuncSwPressSector(int nObject, int nMessage, int, int nRun)
{
AISWPressSector ai;
runlist_DispatchEvent(&ai, nObject, nMessage, 0, nRun);
}
void FuncSwPressWall(int nObject, int nMessage, int, int nRun)
{
AISWPressWall ai;
runlist_DispatchEvent(&ai, nObject, nMessage, 0, nRun);
}
void FuncWasp(int nObject, int nMessage, int nDamage, int nRun)
{
AIWasp ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
AiFunc aiFunctions[kFuncMax] = {
FuncElev,
FuncSwReady,
FuncSwPause,
FuncSwStepOn,
FuncSwNotOnPause,
FuncSwPressSector,
FuncSwPressWall,
FuncWallFace,
FuncSlide,
FuncAnubis,
FuncPlayer,
FuncBullet,
FuncSpider,
FuncCreatureChunk,
FuncMummy,
FuncGrenade,
FuncAnim,
FuncSnake,
FuncFish,
FuncLion,
FuncBubble,
FuncLava,
FuncLavaLimb,
FuncObject,
FuncRex,
FuncSet,
FuncQueen,
FuncQueenHead,
FuncRoach,
FuncQueenEgg,
FuncWasp,
FuncTrap,
FuncFishLimb,
FuncRa,
FuncScorp,
FuncSoul,
FuncRat,
FuncEnergyBlock,
FuncSpark,
};
// This is only temporary so that the event system can be refactored in smaller steps.
void runlist_DispatchEvent(ExhumedAI* ai, int nObject, int nMessage, int nDamage, int nRun)
{
RunListEvent ev{};
ev.nMessage = (EMessageType)(nMessage >> 16);
ev.nObjIndex = RunData[nRun].nObjIndex;
ev.pObjActor = RunData[nRun].pObjActor;
ev.nParam = nObject;
ev.nDamage = nDamage;
ev.nRun = nRun;
switch (ev.nMessage)
{
case EMessageType::ProcessChannel:
ai->ProcessChannel(&ev);
break;
case EMessageType::Tick:
ai->Tick(&ev);
break;
case EMessageType::Process:
ai->Process(&ev);
break;
case EMessageType::Use:
ai->Use(&ev);
break;
case EMessageType::TouchFloor:
ai->TouchFloor(&ev);
break;
case EMessageType::LeaveSector:
ai->LeaveSector(&ev);
break;
case EMessageType::EnterSector:
ai->EnterSector(&ev);
break;
case EMessageType::Damage:
ev.pOtherActor = &exhumedActors[nObject];
ai->Damage(&ev);
break;
case EMessageType::Draw:
ev.pTSprite = &mytsprite[nObject];
ai->Draw(&ev);
break;
case EMessageType::RadialDamage:
ev.nRadialDamage = nRadialDamage;
ev.nDamageRadius = nDamageRadius;
ev.pOtherActor = nullptr; // &exhumedActors[nObject]; nObject is always 0 here, this was setting some random invalid target
ev.pRadialActor = pRadialActor;
ai->RadialDamage(&ev);
break;
}
}
END_PS_NS

View file

@ -234,12 +234,6 @@ void AIAnim::Draw(RunListEvent* ev)
ev->pTSprite->owner = -1;
}
void FuncAnim(int nObject, int nMessage, int nDamage, int nRun)
{
AIAnim ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void BuildExplosion(DExhumedActor* pActor)
{
auto pSprite = &pActor->s();

View file

@ -448,10 +448,4 @@ void AIAnubis::Damage(RunListEvent* ev)
}
void FuncAnubis(int nObject, int nMessage, int nDamage, int nRun)
{
AIAnubis ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -118,11 +118,6 @@ void AIBubble::Draw(RunListEvent* ev)
ev->pTSprite->owner = -1;
}
void FuncBubble(int nObject, int nMessage, int nDamage, int nRun)
{
AIBubble ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void DoBubbleMachines()
{

View file

@ -879,9 +879,4 @@ void AIBullet::Draw(RunListEvent* ev)
}
}
void FuncBullet(int nObject, int nMessage, int nDamage, int nRun)
{
AIBullet ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -145,12 +145,6 @@ void AIFishLimb::Draw(RunListEvent* ev)
}
void FuncFishLimb(int nObject, int nMessage, int nDamage, int nRun)
{
AIFishLimb ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void BuildFish(DExhumedActor* pActor, int x, int y, int z, int nSector, int nAngle)
{
spritetype* pSprite;
@ -514,11 +508,4 @@ void AIFish::Tick(RunListEvent* ev)
}
}
void FuncFish(int nObject, int nMessage, int nDamage, int nRun)
{
AIFish ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -357,10 +357,5 @@ void AIGrenade::RadialDamage(RunListEvent* ev)
}
}
void FuncGrenade(int nObject, int nMessage, int nDamage, int nRun)
{
AIGrenade ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -103,11 +103,6 @@ void AILavaDudeLimb::Draw(RunListEvent* ev)
seq_PlotSequence(ev->nParam, (SeqOffsets[kSeqLavag] + 30) + pActor->s().picnum, 0, 1);
}
void FuncLavaLimb(int nObject, int nMessage, int nDamage, int nRun)
{
AILavaDudeLimb ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void BuildLava(DExhumedActor* pActor, int x, int y, int, short nSector, short nAngle, int nChannel)
{
@ -464,10 +459,4 @@ void AILavaDude::Tick(RunListEvent* ev)
pSprite->pal = 1;
}
void FuncLava(int nObject, int nMessage, int nDamage, int nRun)
{
AILavaDude ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -555,12 +555,4 @@ void AILion::Tick(RunListEvent* ev)
}
}
void FuncLion(int nObject, int nMessage, int nDamage, int nRun)
{
AILion ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -1555,13 +1555,6 @@ void AICreatureChunk::Tick(RunListEvent* ev)
pSprite->lotag = 0;
}
void FuncCreatureChunk(int nObject, int nMessage, int nDamage, int nRun)
{
AICreatureChunk ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
DExhumedActor* UpdateEnemy(DExhumedActor** ppEnemy)
{
if (*ppEnemy)

View file

@ -475,10 +475,4 @@ void AIMummy::Damage(RunListEvent* ev)
return;
}
void FuncMummy(int nObject, int nMessage, int nDamage, int nRun)
{
AIMummy ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -902,12 +902,6 @@ void AIElev::Tick(RunListEvent* ev)
}
void FuncElev(int nObject, int nMessage, int nDamage, int nRun)
{
AIElev ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
// done
void InitWallFace()
{
@ -956,12 +950,6 @@ void AIWallFace::ProcessChannel(RunListEvent* ev)
}
}
void FuncWallFace(int nObject, int nMessage, int nDamage, int nRun)
{
AIWallFace ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
// done
void InitPoint()
{
@ -1265,12 +1253,6 @@ void AISlide::Tick(RunListEvent* ev)
}
}
void FuncSlide(int nObject, int nMessage, int nDamage, int nRun)
{
AISlide ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
int BuildTrap(DExhumedActor* pActor, int edx, int ebx, int ecx)
{
auto pSprite = &pActor->s();
@ -1433,12 +1415,6 @@ void AITrap::Tick(RunListEvent* ev)
}
}
void FuncTrap(int nObject, int nMessage, int nDamage, int nRun)
{
AITrap ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
int BuildArrow(DExhumedActor* nSprite, int nVal)
{
return BuildTrap(nSprite, 0, -1, nVal);
@ -1566,12 +1542,6 @@ void AISpark::Tick(RunListEvent* ev)
}
void FuncSpark(int nObject, int nMessage, int nDamage, int nRun)
{
AISpark ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void DimLights()
{
static short word_96786 = 0;
@ -1917,13 +1887,6 @@ void AIEnergyBlock::RadialDamage(RunListEvent* ev)
}
void FuncEnergyBlock(int nObject, int nMessage, int nDamage, int nRun)
{
AIEnergyBlock ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
DExhumedActor* BuildObject(DExhumedActor* pActor, int nOjectType, int nHitag)
{
auto spr = &pActor->s();
@ -2230,13 +2193,6 @@ void AIObject::RadialDamage(RunListEvent* ev)
}
}
void FuncObject(int nObject, int nMessage, int nDamage, int nRun)
{
AIObject ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void BuildDrip(DExhumedActor* pActor)
{
auto pSprite = &pActor->s();

View file

@ -2621,14 +2621,6 @@ sectdone:
}
void FuncPlayer(int nObject, int nMessage, int nDamage, int nRun)
{
AIPlayer ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
FSerializer& Serialize(FSerializer& arc, const char* keyname, Player& w, Player* def)
{
if (arc.BeginObject(keyname))

View file

@ -690,13 +690,6 @@ void AIQueenEgg::Draw(RunListEvent* ev)
seq_PlotSequence(ev->nParam, SeqOffsets[kSeqQueenEgg] + EggSeq[pEgg->nAction].a, pEgg->nFrame, EggSeq[pEgg->nAction].b);
}
void FuncQueenEgg(int nObject, int nMessage, int nDamage, int nRun)
{
AIQueenEgg ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void BuildQueenHead(short nQueen)
{
auto pActor = QueenList[nQueen].pActor;
@ -1109,13 +1102,6 @@ void AIQueenHead::Draw(RunListEvent* ev)
seq_PlotSequence(ev->nParam, nSeq, QueenHead.nFrame, edx);
}
void FuncQueenHead(int nObject, int nMessage, int nDamage, int nRun)
{
AIQueenHead ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void BuildQueen(DExhumedActor* pActor, int x, int y, int z, int nSector, int nAngle, int nChannel)
{
QueenCount--;
@ -1531,10 +1517,4 @@ void AIQueen::Draw(RunListEvent* ev)
seq_PlotSequence(ev->nParam, SeqOffsets[kSeqQueen] + QueenSeq[nAction].a, QueenList[nQueen].nFrame, QueenSeq[nAction].b);
}
void FuncQueen(int nObject, int nMessage, int nDamage, int nRun)
{
AIQueen ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -298,11 +298,5 @@ void AIRa::Draw(RunListEvent* ev)
ev->pTSprite->owner = -1;
}
void FuncRa(int nObject, int nMessage, int nDamage, int nRun)
{
AIRa ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -372,11 +372,4 @@ void AIRat::Tick(RunListEvent* ev)
}
}
void FuncRat(int nObject, int nMessage, int nDamage, int nRun)
{
AIRat ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -455,9 +455,4 @@ void AIRex::Tick(RunListEvent* ev)
}
void FuncRex(int nObject, int nMessage, int nDamage, int nRun)
{
AIRex ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -391,10 +391,4 @@ void AIRoach::Tick(RunListEvent* ev)
}
}
void FuncRoach(int nObject, int nMessage, int nDamage, int nRun)
{
AIRoach ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -81,49 +81,91 @@ void SerializeRunList(FSerializer& arc)
}
}
AiFunc aiFunctions[kFuncMax] = {
FuncElev,
FuncSwReady,
FuncSwPause,
FuncSwStepOn,
FuncSwNotOnPause,
FuncSwPressSector,
FuncSwPressWall,
FuncWallFace,
FuncSlide,
FuncAnubis,
FuncPlayer,
FuncBullet,
FuncSpider,
FuncCreatureChunk,
FuncMummy,
FuncGrenade,
FuncAnim,
FuncSnake,
FuncFish,
FuncLion,
FuncBubble,
FuncLava,
FuncLavaLimb,
FuncObject,
FuncRex,
FuncSet,
FuncQueen,
FuncQueenHead,
FuncRoach,
FuncQueenEgg,
FuncWasp,
FuncTrap,
FuncFishLimb,
FuncRa,
FuncScorp,
FuncSoul,
FuncRat,
FuncEnergyBlock,
FuncSpark,
};
AIElev aiElev;
AISWReady aiSwReady;
AISWPause aiSwPause;
AISWStepOn aiSwStepOn;
AISWNotOnPause aiSwNotOnPause;
AISWPressSector aiSwPressSector;
AISWPressWall aiSwPressWall;
AIWallFace aiWallFace;
AISlide aiSlide;
AIAnubis aiAnubis;
AIPlayer aiPlayer;
AIBullet aiBullet;
AISpider aiSpider;
AICreatureChunk aiCreatureChunk;
AIMummy aiMummy;
AIGrenade aiGrenade;
AIAnim aiAnim;
AISnake aiSnake;
AIFish aiFish;
AILion aiLion;
AIBubble aiBubble;
AILavaDude aiLava;
AILavaDudeLimb aiLavaLimb;
AIObject aiObject;
AIRex aiRex;
AISet aiSet;
AIQueen aiQueen;
AIQueenHead aiQueenHead;
AIRoach aiRoach;
AIQueenEgg aiQueenEgg;
AIWasp aiWasp;
AITrap aiTrap;
AIFishLimb aiFishLimb;
AIRa aiRa;
AIScorp aiScorp;
AISoul aiSoul;
AIRat aiRat;
AIEnergyBlock aiEnergyBlock;
AISpark aiSpark;
ExhumedAI* ais[kFuncMax] =
{
&aiElev,
&aiSwReady,
&aiSwPause,
&aiSwStepOn,
&aiSwNotOnPause,
&aiSwPressSector,
&aiSwPressWall,
&aiWallFace,
&aiSlide,
&aiAnubis,
&aiPlayer,
&aiBullet,
&aiSpider,
&aiCreatureChunk,
&aiMummy,
&aiGrenade,
&aiAnim,
&aiSnake,
&aiFish,
&aiLion,
&aiBubble,
&aiLava,
&aiLavaLimb,
&aiObject,
&aiRex,
&aiSet,
&aiQueen,
&aiQueenHead,
&aiRoach,
&aiQueenEgg,
&aiWasp,
&aiTrap,
&aiFishLimb,
&aiRa,
&aiScorp,
&aiSoul,
&aiRat,
&aiEnergyBlock,
&aiSpark,
};
extern AiFunc aiFunctions[kFuncMax];
int runlist_GrabRun()
{
return RunData.Get();
@ -1722,65 +1764,4 @@ void runlist_DamageEnemy(DExhumedActor* pActor, DExhumedActor* pActor2, short nD
}
}
// This is only temporary so that the event system can be refactored in smaller steps.
void runlist_DispatchEvent(ExhumedAI* ai, int nObject, int nMessage, int nDamage, int nRun)
{
RunListEvent ev{};
ev.nMessage = (EMessageType)(nMessage >> 16);
ev.nObjIndex = RunData[nRun].nObjIndex;
ev.pObjActor = RunData[nRun].pObjActor;
ev.nParam = nObject;
ev.nDamage = nDamage;
ev.nRun = nRun;
switch (ev.nMessage)
{
case EMessageType::ProcessChannel:
ai->ProcessChannel(&ev);
break;
case EMessageType::Tick:
ai->Tick(&ev);
break;
case EMessageType::Process:
ai->Process(&ev);
break;
case EMessageType::Use:
ai->Use(&ev);
break;
case EMessageType::TouchFloor:
ai->TouchFloor(&ev);
break;
case EMessageType::LeaveSector:
ai->LeaveSector(&ev);
break;
case EMessageType::EnterSector:
ai->EnterSector(&ev);
break;
case EMessageType::Damage:
ev.pOtherActor = &exhumedActors[nObject];
ai->Damage(&ev);
break;
case EMessageType::Draw:
ev.pTSprite = &mytsprite[nObject];
ai->Draw(&ev);
break;
case EMessageType::RadialDamage:
ev.nRadialDamage = nRadialDamage;
ev.nDamageRadius = nDamageRadius;
ev.pOtherActor = nullptr; // &exhumedActors[nObject]; nObject is always 0 here, this was setting some random invalid target
ev.pRadialActor = pRadialActor;
ai->RadialDamage(&ev);
break;
}
}
END_PS_NS

View file

@ -482,9 +482,4 @@ void AIScorp::Effect(RunListEvent* ev, DExhumedActor* pTarget, int mode)
}
void FuncScorp(int nObject, int nMessage, int nDamage, int nRun)
{
AIScorp ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -173,13 +173,6 @@ void AISoul::Tick(RunListEvent* ev)
}
void FuncSoul(int nObject, int nMessage, int nDamage, int nRun)
{
AISoul ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
void AISet::RadialDamage(RunListEvent* ev)
{
auto pActor = ev->pObjActor;
@ -643,9 +636,4 @@ void AISet::Tick(RunListEvent* ev)
return;
}
void FuncSet(int nObject, int nMessage, int nDamage, int nRun)
{
AISet ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -423,10 +423,4 @@ void AISnake::Draw(RunListEvent* ev)
ev->pTSprite->owner = -1;
}
void FuncSnake(int nObject, int nMessage, int nDamage, int nRun)
{
AISnake ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -408,9 +408,4 @@ void AISpider::Damage(RunListEvent* ev)
}
}
void FuncSpider(int nObject, int nMessage, int nDamage, int nRun)
{
AISpider ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS

View file

@ -150,12 +150,6 @@ void AISWReady::Process(RunListEvent* ev)
}
}
void FuncSwReady(int nObject, int nMessage, int, int nRun)
{
AISWReady ai;
runlist_DispatchEvent(&ai, nObject, nMessage, 0, nRun);
}
std::pair<int, int> BuildSwPause(int nChannel, int nLink, int ebx)
{
for (int i = kMaxSwitches - 1; i >= SwitchCount; i--)
@ -239,12 +233,6 @@ void AISWPause::Process(RunListEvent* ev)
SwitchData[nSwitch].nWaitTimer = eax;
}
void FuncSwPause(int nObject, int nMessage, int, int nRun)
{
AISWPause ai;
runlist_DispatchEvent(&ai, nObject, nMessage, 0, nRun);
}
std::pair<int, int> BuildSwStepOn(int nChannel, int nLink, int nSector)
{
if (SwitchCount <= 0 || nLink < 0 || nSector < 0)
@ -309,12 +297,6 @@ void AISWStepOn::TouchFloor(RunListEvent* ev)
}
}
void FuncSwStepOn(int nObject, int nMessage, int, int nRun)
{
AISWStepOn ai;
runlist_DispatchEvent(&ai, nObject, nMessage, 0, nRun);
}
std::pair<int, int> BuildSwNotOnPause(int nChannel, int nLink, int nSector, int ecx)
{
if (SwitchCount <= 0 || nLink < 0 || nSector < 0)
@ -401,12 +383,6 @@ void AISWNotOnPause::TouchFloor(RunListEvent* ev)
return;
}
void FuncSwNotOnPause(int nObject, int nMessage, int, int nRun)
{
AISWNotOnPause ai;
runlist_DispatchEvent(&ai, nObject, nMessage, 0, nRun);
}
std::pair<int, int> BuildSwPressSector(int nChannel, int nLink, int nSector, int keyMask)
{
if (SwitchCount <= 0 || nLink < 0 || nSector < 0)
@ -474,12 +450,6 @@ void AISWPressSector::Use(RunListEvent* ev)
}
void FuncSwPressSector(int nObject, int nMessage, int, int nRun)
{
AISWPressSector ai;
runlist_DispatchEvent(&ai, nObject, nMessage, 0, nRun);
}
std::pair<int, int> BuildSwPressWall(short nChannel, short nLink, short nWall)
{
if (SwitchCount <= 0 || nLink < 0 || nWall < 0) {
@ -541,9 +511,4 @@ void AISWPressWall::Use(RunListEvent* ev)
PlayFXAtXYZ(StaticSound[nSwitchSound], wall[nWall].x, wall[nWall].y, 0, nSector, CHANF_LISTENERZ);
}
void FuncSwPressWall(int nObject, int nMessage, int, int nRun)
{
AISWPressWall ai;
runlist_DispatchEvent(&ai, nObject, nMessage, 0, nRun);
}
END_PS_NS

View file

@ -364,10 +364,4 @@ void AIWasp::Tick(RunListEvent* ev)
}
}
void FuncWasp(int nObject, int nMessage, int nDamage, int nRun)
{
AIWasp ai;
runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun);
}
END_PS_NS