mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-19 15:31:57 +00:00
- 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:
parent
3842936012
commit
7a65cc46d0
25 changed files with 437 additions and 339 deletions
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue