[Scummvm-git-logs] scummvm master -> cb949044dbb197dc45dcd039213d7fcf6c04c7fd
digitall
noreply at scummvm.org
Sat Jul 23 16:02:17 UTC 2022
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
cb949044db HDB: Refactor AI Functions to Avoid Incompatible Function Pointer Casts
Commit: cb949044dbb197dc45dcd039213d7fcf6c04c7fd
https://github.com/scummvm/scummvm/commit/cb949044dbb197dc45dcd039213d7fcf6c04c7fd
Author: D G Turner (digitall at scummvm.org)
Date: 2022-07-23T17:00:23+01:00
Commit Message:
HDB: Refactor AI Functions to Avoid Incompatible Function Pointer Casts
These warnings were emitted by GCC when -Wcast-function-type was passed.
This fixes these by refactoring so the engine only uses a single function
pointer type with the "extra" parameters always present.
Changed paths:
engines/hdb/ai-bots.cpp
engines/hdb/ai-funcs.cpp
engines/hdb/ai-init.cpp
engines/hdb/ai-lists.cpp
engines/hdb/ai-player.cpp
engines/hdb/ai-player.h
engines/hdb/ai.h
engines/hdb/hdb.cpp
engines/hdb/saveload.cpp
diff --git a/engines/hdb/ai-bots.cpp b/engines/hdb/ai-bots.cpp
index 20fadb0d90c..4dce905996b 100644
--- a/engines/hdb/ai-bots.cpp
+++ b/engines/hdb/ai-bots.cpp
@@ -40,14 +40,14 @@ namespace HDB {
//
//-------------------------------------------------------------------
-void aiOmniBotInit(AIEntity *e) {
+void aiOmniBotInit(AIEntity *e, int mx, int my) {
if (e->value1 == 1)
e->aiAction = aiOmniBotMove;
else if (g_hdb->_ai->findPath(e))
e->aiAction = aiOmniBotAction;
}
-void aiOmniBotInit2(AIEntity *e) {
+void aiOmniBotInit2(AIEntity *e, int mx, int my) {
e->standdownGfx[0] = e->movedownGfx[0];
e->standupGfx[0] = e->movedownGfx[0];
e->standleftGfx[0] = e->moveleftGfx[0];
@@ -56,14 +56,14 @@ void aiOmniBotInit2(AIEntity *e) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiOmniBotMove(AIEntity *e) {
+void aiOmniBotMove(AIEntity *e, int mx, int my) {
if (e->goalX)
g_hdb->_ai->animateEntity(e);
else
g_hdb->_ai->animEntFrames(e);
}
-void aiOmniBotAction(AIEntity *e) {
+void aiOmniBotAction(AIEntity *e, int mx, int my) {
AIEntity *p = g_hdb->_ai->getPlayer();
if (e->goalX) {
if (!e->sequence) {
@@ -152,12 +152,12 @@ void aiOmniBotAction(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiOmniBotMissileInit(AIEntity *e) {
+void aiOmniBotMissileInit(AIEntity *e, int mx, int my) {
e->state = STATE_MOVEDOWN;
e->aiAction = aiOmniBotMissileAction;
}
-void aiOmniBotMissileInit2(AIEntity *e) {
+void aiOmniBotMissileInit2(AIEntity *e, int mx, int my) {
for (int i = 0; i < e->movedownFrames; i++)
e->moveleftGfx[i] = e->moverightGfx[i] = e->moveupGfx[i] = e->movedownGfx[i];
@@ -165,7 +165,7 @@ void aiOmniBotMissileInit2(AIEntity *e) {
e->draw = e->movedownGfx[0];
}
-void aiOmniBotMissileAction(AIEntity *e) {
+void aiOmniBotMissileAction(AIEntity *e, int mx, int my) {
AIEntity *p = g_hdb->_ai->getPlayer();
g_hdb->_ai->animEntFrames(e);
@@ -199,15 +199,15 @@ void aiOmniBotMissileAction(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiTurnBotInit(AIEntity *e) {
+void aiTurnBotInit(AIEntity *e, int mx, int my) {
e->aiAction = aiTurnBotAction;
}
-void aiTurnBotInit2(AIEntity *e) {
+void aiTurnBotInit2(AIEntity *e, int mx, int my) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiTurnBotChoose(AIEntity *e) {
+void aiTurnBotChoose(AIEntity *e, int mx, int my) {
static const int xvAhead[5] = { 9, 0, 0, -1, 1 };
static const int yvAhead[5] = { 9, -1, 1, 0, 0 };
static const AIDir turnRight[5] = { DIR_NONE, DIR_RIGHT, DIR_LEFT, DIR_UP, DIR_DOWN };
@@ -236,11 +236,11 @@ void aiTurnBotChoose(AIEntity *e) {
}
}
-void aiTurnBotAction(AIEntity *e) {
+void aiTurnBotAction(AIEntity *e, int mx, int my) {
if (e->goalX)
g_hdb->_ai->animateEntity(e);
else {
- aiTurnBotChoose(e);
+ aiTurnBotChoose(e, 0, 0);
g_hdb->_ai->animateEntity(e);
if (e->onScreen)
g_hdb->_sound->playSound(SND_TURNBOT_TURN);
@@ -257,7 +257,7 @@ void aiTurnBotAction(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiShockBotInit(AIEntity *e) {
+void aiShockBotInit(AIEntity *e, int mx, int my) {
g_hdb->_ai->findPath(e);
e->aiAction = aiShockBotAction;
e->animCycle = 0;
@@ -265,7 +265,7 @@ void aiShockBotInit(AIEntity *e) {
e->aiDraw = aiShockBotShock;
}
-void aiShockBotInit2(AIEntity *e) {
+void aiShockBotInit2(AIEntity *e, int mx, int my) {
e->standupFrames = e->standdownFrames = e->standleftFrames = e->standrightFrames =
e->moveupFrames = e->moverightFrames = e->moveleftFrames = e->movedownFrames;
@@ -275,7 +275,7 @@ void aiShockBotInit2(AIEntity *e) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiShockBotAction(AIEntity *e) {
+void aiShockBotAction(AIEntity *e, int mx, int my) {
if (e->goalX) {
if (!e->sequence) {
if (hitPlayer(e->x, e->y))
@@ -320,7 +320,7 @@ void aiShockBotShock(AIEntity *e, int mx, int my) {
}
if (!e->animFrame && g_hdb->_map->boomBarrelExist(e->tileX + offX[i], e->tileY + offY[i])) {
AIEntity *e2 = g_hdb->_ai->findEntityType(AI_BOOMBARREL, e->tileX + offX[i], e->tileY + offY[i]);
- aiBarrelExplode(e2);
+ aiBarrelExplode(e2, 0, 0);
}
}
}
@@ -335,14 +335,14 @@ void aiShockBotShock(AIEntity *e, int mx, int my) {
//
//-------------------------------------------------------------------
-void aiRightBotInit(AIEntity *e) {
+void aiRightBotInit(AIEntity *e, int mx, int my) {
e->moveSpeed = kPlayerMoveSpeed;
if (!g_hdb->getActionMode())
e->moveSpeed >>= 1;
e->aiAction = aiRightBotAction;
}
-void aiRightBotInit2(AIEntity *e) {
+void aiRightBotInit2(AIEntity *e, int mx, int my) {
switch (e->dir) {
case DIR_UP:
e->draw = e->moveupGfx[0];
@@ -366,7 +366,7 @@ void aiRightBotInit2(AIEntity *e) {
}
}
-void aiRightBotFindGoal(AIEntity *e) {
+void aiRightBotFindGoal(AIEntity *e, int mx, int my) {
static const int xvAhead[5] = { 9, 0, 0,-1, 1 };
static const int yvAhead[5] = { 9,-1, 1, 0, 0 };
static const int xvAToR[5] = { 9, 1,-1,-1, 1 };
@@ -538,7 +538,7 @@ void aiRightBotFindGoal(AIEntity *e) {
g_hdb->_sound->playSound(SND_RIGHTBOT_TURN);
}
-void aiRightBotAction(AIEntity *e) {
+void aiRightBotAction(AIEntity *e, int mx, int my) {
AIEntity *p = g_hdb->_ai->getPlayer();
if (e->goalX) {
@@ -546,7 +546,7 @@ void aiRightBotAction(AIEntity *e) {
g_hdb->_ai->killPlayer(DEATH_NORMAL);
g_hdb->_ai->animateEntity(e);
} else {
- aiRightBotFindGoal(e);
+ aiRightBotFindGoal(e, 0, 0);
g_hdb->_ai->animEntFrames(e);
}
}
@@ -560,16 +560,16 @@ void aiRightBotAction(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiPushBotInit(AIEntity *e) {
+void aiPushBotInit(AIEntity *e, int mx, int my) {
if (e->value1 != 1)
e->aiAction = aiPushBotAction;
}
-void aiPushBotInit2(AIEntity *e) {
+void aiPushBotInit2(AIEntity *e, int mx, int my) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiPushBotAction(AIEntity *e) {
+void aiPushBotAction(AIEntity *e, int mx, int my) {
static const AIState moveState[5] = { STATE_NONE, STATE_MOVEUP, STATE_MOVEDOWN, STATE_MOVELEFT, STATE_MOVERIGHT };
static const int xvAhead[5] = { 9, 0, 0,-1, 1 };
static const int yvAhead[5] = { 9,-1, 1, 0, 0 };
@@ -673,7 +673,7 @@ void aiPushBotAction(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiRailRiderInit(AIEntity *e) {
+void aiRailRiderInit(AIEntity *e, int mx, int my) {
if (e->type == AI_RAILRIDER_ON) {
// On the tracks already - spawn RED arrow
g_hdb->_ai->addToPathList(e->tileX, e->tileY, 0, e->dir);
@@ -689,16 +689,16 @@ void aiRailRiderInit(AIEntity *e) {
e->moveSpeed = kPlayerMoveSpeed;
}
-void aiRailRiderInit2(AIEntity *e) {
+void aiRailRiderInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
// Talking to RailRider off track
-void aiRailRiderUse(AIEntity *e) {
+void aiRailRiderUse(AIEntity *e, int mx, int my) {
e->sequence = 1;
}
-void aiRailRiderAction(AIEntity *e) {
+void aiRailRiderAction(AIEntity *e, int mx, int my) {
switch (e->sequence) {
// Waiting for Dialog to goaway
case 1:
@@ -766,7 +766,7 @@ void aiRailRiderAction(AIEntity *e) {
}
// Talking to RailRider on track
-void aiRailRiderOnUse(AIEntity *e) {
+void aiRailRiderOnUse(AIEntity *e, int mx, int my) {
AIEntity *p = g_hdb->_ai->getPlayer();
if (p->tileX == e->tileX) {
@@ -782,7 +782,7 @@ void aiRailRiderOnUse(AIEntity *e) {
e->sequence = -1; // Waiting for player to board
}
-void aiRailRiderOnAction(AIEntity *e) {
+void aiRailRiderOnAction(AIEntity *e, int mx, int my) {
static const int xv[5] = { 9, 0, 0, -1, 1 };
static const int yv[5] = { 9, -1, 1, 0, 0 };
@@ -951,7 +951,7 @@ void aiRailRiderOnAction(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiMaintBotInit(AIEntity *e) {
+void aiMaintBotInit(AIEntity *e, int mx, int my) {
// value1 field determines whether the "MMM!" sound plays
// 1 means NO
e->int1 = e->value1;
@@ -960,11 +960,11 @@ void aiMaintBotInit(AIEntity *e) {
g_hdb->_ai->findPath(e);
}
-void aiMaintBotInit2(AIEntity *e) {
+void aiMaintBotInit2(AIEntity *e, int mx, int my) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiMaintBotAction(AIEntity *e) {
+void aiMaintBotAction(AIEntity *e, int mx, int my) {
static const AIState useState[5] = {STATE_NONE, STATE_USEUP, STATE_USEDOWN, STATE_USELEFT, STATE_USERIGHT};
static const AIState standState[5] = {STATE_NONE, STATE_STANDUP, STATE_STANDDOWN, STATE_STANDLEFT, STATE_STANDRIGHT};
static const int xvAhead[5] = {9, 0, 0,-1, 1};
@@ -1124,16 +1124,16 @@ void aiMaintBotAction(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiFourFirerInit(AIEntity *e) {
+void aiFourFirerInit(AIEntity *e, int mx, int my) {
e->value1 = 0;
e->aiAction = aiFourFirerAction;
}
-void aiFourFirerInit2(AIEntity *e) {
+void aiFourFirerInit2(AIEntity *e, int mx, int my) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiFourFirerAction(AIEntity *e) {
+void aiFourFirerAction(AIEntity *e, int mx, int my) {
static const AIState state[5] = {STATE_NONE, STATE_STANDUP, STATE_STANDDOWN, STATE_STANDLEFT, STATE_STANDRIGHT};
static const AIDir turn[5] = {DIR_NONE, DIR_RIGHT, DIR_LEFT, DIR_UP, DIR_DOWN};
@@ -1226,7 +1226,7 @@ void aiFourFirerAction(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiDeadEyeInit(AIEntity *e) {
+void aiDeadEyeInit(AIEntity *e, int mx, int my) {
e->sequence = 64;
e->blinkFrames = e->goalX = 0;
if (e->value1 == 1)
@@ -1235,11 +1235,11 @@ void aiDeadEyeInit(AIEntity *e) {
e->aiAction = aiDeadEyeAction;
}
-void aiDeadEyeInit2(AIEntity *e) {
+void aiDeadEyeInit2(AIEntity *e, int mx, int my) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiDeadEyeWalkInPlace(AIEntity *e) {
+void aiDeadEyeWalkInPlace(AIEntity *e, int mx, int my) {
static const AIState state[5] = {STATE_NONE, STATE_MOVEUP, STATE_MOVEDOWN, STATE_MOVELEFT, STATE_MOVERIGHT};
e->sequence--;
@@ -1271,7 +1271,7 @@ void aiDeadEyeWalkInPlace(AIEntity *e) {
g_hdb->_ai->animEntFrames(e);
}
-void aiDeadEyeAction(AIEntity *e) {
+void aiDeadEyeAction(AIEntity *e, int mx, int my) {
static const AIState state[5] = {STATE_NONE, STATE_MOVEUP, STATE_MOVEDOWN, STATE_MOVELEFT, STATE_MOVERIGHT};
static const int xvAhead[5] = {9, 0, 0, -1, 1};
static const int yvAhead[5] = {9, -1, 1, 0, 0};
@@ -1442,13 +1442,13 @@ void aiDeadEyeAction(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiLaserInit(AIEntity *e) {
+void aiLaserInit(AIEntity *e, int mx, int my) {
e->aiDraw = aiLaserDraw;
// start & end of laser beam
e->value1 = e->value2 = 0;
}
-void aiLaserInit2(AIEntity *e) {
+void aiLaserInit2(AIEntity *e, int mx, int my) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
if (!g_hdb->_ai->_gfxLaserbeamUD[0]) {
char name[64];
@@ -1469,7 +1469,7 @@ void aiLaserInit2(AIEntity *e) {
}
}
-void aiLaserAction(AIEntity *e) {
+void aiLaserAction(AIEntity *e, int mx, int my) {
static const int xva[] = {9, 0, 0,-1, 1};
static const int yva[] = {9,-1, 1, 0, 0};
@@ -1552,7 +1552,7 @@ void aiLaserAction(AIEntity *e) {
g_hdb->_ai->killPlayer(DEATH_FRIED);
else if (hit->type == AI_BOOMBARREL && hit->state != STATE_EXPLODING && onEvenTile(hit->x, hit->y)) {
// hit BOOM BARREL = explodes
- aiBarrelExplode(hit);
+ aiBarrelExplode(hit, 0, 0);
aiBarrelBlowup(hit, nx, ny);
} else if (hit->type == AI_LIGHTBARREL || hit->type == AI_HEAVYBARREL || hit->type == AI_CRATE) {
// hit LIGHT/HEAVY BARREL = blocking
@@ -1686,14 +1686,14 @@ void aiLaserDraw(AIEntity *e, int mx, int my) {
//
//-------------------------------------------------------------------
-void aiDiverterInit(AIEntity *e) {
+void aiDiverterInit(AIEntity *e, int mx, int my) {
e->aiDraw = aiDiverterDraw;
e->aiAction = aiDiverterAction;
e->moveSpeed = kPlayerMoveSpeed << 1;
e->dir2 = e->dir;
}
-void aiDiverterInit2(AIEntity *e) {
+void aiDiverterInit2(AIEntity *e, int mx, int my) {
e->movedownGfx[0] = e->standdownGfx[0];
e->moveupGfx[0] = e->standupGfx[0];
e->moveleftGfx[0] = e->standleftGfx[0];
@@ -1732,7 +1732,7 @@ void aiDiverterInit2(AIEntity *e) {
g_hdb->_ai->_laserRescan = true;
}
-void aiDiverterAction(AIEntity *e) {
+void aiDiverterAction(AIEntity *e, int mx, int my) {
if (e->goalX) {
g_hdb->_ai->animateEntity(e);
g_hdb->_ai->_laserRescan = true;
@@ -1860,7 +1860,7 @@ void aiDiverterDraw(AIEntity *e, int mx, int my) {
//
//-------------------------------------------------------------------
-void aiMeerkatInit(AIEntity *e) {
+void aiMeerkatInit(AIEntity *e, int mx, int my) {
e->state = STATE_NONE;
e->sequence = 0;
if (e->value1 == 1) {
@@ -1870,7 +1870,7 @@ void aiMeerkatInit(AIEntity *e) {
e->aiAction = aiMeerkatAction;
}
-void aiMeerkatInit2(AIEntity *e) {
+void aiMeerkatInit2(AIEntity *e, int mx, int my) {
// hidden at the start!
e->draw = nullptr;
@@ -1894,7 +1894,7 @@ void aiMeerkatDraw(AIEntity *e, int mx, int my) {
g_hdb->_gfx->drawText(word);
}
-void aiMeerkatAction(AIEntity *e) {
+void aiMeerkatAction(AIEntity *e, int mx, int my) {
static const int gem_xv[] = { 0, 0,-2,-3,-4,-4,-3,-2,-2,-2,-2,-1,-1, 100};
static const int gem_yv[] = {-6,-5,-4,-3,-2,-1, 0, 0, 1, 2, 3, 4, 5, 100};
@@ -2040,7 +2040,7 @@ void aiMeerkatAction(AIEntity *e) {
}
}
-void aiMeerkatLookAround(AIEntity *e) {
+void aiMeerkatLookAround(AIEntity *e, int mx, int my) {
g_hdb->_ai->animEntFrames(e);
}
@@ -2051,11 +2051,11 @@ void aiMeerkatLookAround(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiFatFrogInit(AIEntity *e) {
+void aiFatFrogInit(AIEntity *e, int mx, int my) {
e->aiAction = aiFatFrogAction;
}
-void aiFatFrogInit2(AIEntity *e) {
+void aiFatFrogInit2(AIEntity *e, int mx, int my) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
// load tongue tiles
switch (e->dir) {
@@ -2095,7 +2095,7 @@ void aiFatFrogInit2(AIEntity *e) {
}
}
-void aiFatFrogAction(AIEntity *e) {
+void aiFatFrogAction(AIEntity *e, int mx, int my) {
AIEntity *p = g_hdb->_ai->getPlayer();
switch (e->state) {
@@ -2397,17 +2397,17 @@ void aiFatFrogTongueDraw(AIEntity *e, int mx, int my) {
//
//-------------------------------------------------------------------
-void aiGoodFairyInit(AIEntity *e) {
+void aiGoodFairyInit(AIEntity *e, int mx, int my) {
e->aiAction = aiGoodFairyAction;
e->sequence = 20;
e->blinkFrames = e->goalX = 0;
}
-void aiGoodFairyInit2(AIEntity *e) {
+void aiGoodFairyInit2(AIEntity *e, int mx, int my) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiGoodFairyAction(AIEntity *e) {
+void aiGoodFairyAction(AIEntity *e, int mx, int my) {
static const AIState state[5] = {STATE_NONE, STATE_MOVEUP, STATE_MOVEDOWN, STATE_MOVELEFT, STATE_MOVERIGHT};
static const int xvAhead[5] = {9, 0, 0,-1, 1};
static const int yvAhead[5] = {9,-1, 1, 0, 0};
@@ -2598,17 +2598,17 @@ void aiGoodFairyAction(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiBadFairyInit(AIEntity *e) {
+void aiBadFairyInit(AIEntity *e, int mx, int my) {
e->aiAction = aiBadFairyAction;
e->sequence = 20;
e->blinkFrames = e->goalX = 0;
}
-void aiBadFairyInit2(AIEntity *e) {
+void aiBadFairyInit2(AIEntity *e, int mx, int my) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiBadFairyAction(AIEntity *e) {
+void aiBadFairyAction(AIEntity *e, int mx, int my) {
static const AIState state[5] = {STATE_NONE, STATE_MOVEUP, STATE_MOVEDOWN, STATE_MOVELEFT, STATE_MOVERIGHT};
static const AIDir opposite[5] = {DIR_NONE, DIR_DOWN, DIR_UP, DIR_RIGHT, DIR_LEFT};
static const int xvAhead[5] = {9, 0, 0,-1, 1};
@@ -2733,15 +2733,15 @@ void aiBadFairyAction(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiGatePuddleInit(AIEntity *e) {
+void aiGatePuddleInit(AIEntity *e, int mx, int my) {
e->aiAction = aiGatePuddleAction;
e->value1 = 50;
}
-void aiGatePuddleInit2(AIEntity *e) {
+void aiGatePuddleInit2(AIEntity *e, int mx, int my) {
}
-void aiGatePuddleAction(AIEntity *e) {
+void aiGatePuddleAction(AIEntity *e, int mx, int my) {
static const int xva[5] = {9, 0, 0,-1, 1};
static const int yva[5] = {9,-1, 1, 0, 0};
@@ -2873,7 +2873,7 @@ void aiGatePuddleAction(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiIcePuffSnowballInit(AIEntity *e) {
+void aiIcePuffSnowballInit(AIEntity *e, int mx, int my) {
// which direction are we throwing in? Load the graphic if we need to
switch (e->dir) {
case DIR_DOWN:
@@ -2894,7 +2894,7 @@ void aiIcePuffSnowballInit(AIEntity *e) {
e->aiDraw = aiIcePuffSnowballDraw;
}
-void aiIcePuffSnowballAction(AIEntity *e) {
+void aiIcePuffSnowballAction(AIEntity *e, int mx, int my) {
// check for hit BEFORE moving so snowball is closer to object
// NOTE: Need to do logic in this draw routine just in case the ICEPUFF gets stunned!
int result;
@@ -2934,7 +2934,7 @@ void aiIcePuffSnowballAction(AIEntity *e) {
void aiIcePuffSnowballDraw(AIEntity *e, int mx, int my) {
// did we throw a snowball? make it move!
if (e->dir2 != DIR_NONE)
- aiIcePuffSnowballAction(e);
+ aiIcePuffSnowballAction(e, 0, 0);
switch (e->dir2) {
case DIR_DOWN:
@@ -2957,7 +2957,7 @@ void aiIcePuffSnowballDraw(AIEntity *e, int mx, int my) {
}
}
-void aiIcePuffInit(AIEntity *e) {
+void aiIcePuffInit(AIEntity *e, int mx, int my) {
// PEEK - but no head up yet
e->sequence = 30; // timed sequence for peeking
e->state = STATE_ICEP_PEEK; // start in PEEK mode
@@ -2965,12 +2965,12 @@ void aiIcePuffInit(AIEntity *e) {
e->aiAction = aiIcePuffAction;
}
-void aiIcePuffInit2(AIEntity *e) {
+void aiIcePuffInit2(AIEntity *e, int mx, int my) {
// empty frame
e->draw = e->blinkGfx[3];
}
-void aiIcePuffAction(AIEntity *e) {
+void aiIcePuffAction(AIEntity *e, int mx, int my) {
AIEntity *p = g_hdb->_ai->getPlayer();
switch (e->state) {
@@ -3066,7 +3066,7 @@ void aiIcePuffAction(AIEntity *e) {
// dir2 = direction snowball is moving
e->dir2 = e->dir;
// throw it!
- aiIcePuffSnowballInit(e);
+ aiIcePuffSnowballInit(e, 0, 0);
e->animFrame = 0;
e->state = STATE_ICEP_DISAPPEAR;
} else if (e->animFrame == e->special1Frames) {
@@ -3089,7 +3089,7 @@ void aiIcePuffAction(AIEntity *e) {
// dir2 = direction snowball is moving
e->dir2 = e->dir;
// throw it!
- aiIcePuffSnowballInit(e);
+ aiIcePuffSnowballInit(e, 0, 0);
e->animFrame = 0;
e->state = STATE_ICEP_DISAPPEAR;
} else if (e->animFrame == e->special1Frames) {
@@ -3112,7 +3112,7 @@ void aiIcePuffAction(AIEntity *e) {
// dir2 = direction snowball is moving
e->dir2 = e->dir;
// throw it!
- aiIcePuffSnowballInit(e);
+ aiIcePuffSnowballInit(e, 0, 0);
e->animFrame = 0;
e->state = STATE_ICEP_DISAPPEAR;
} else if (e->animFrame == e->special1Frames) {
@@ -3136,14 +3136,14 @@ void aiIcePuffAction(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiBuzzflyInit(AIEntity *e) {
+void aiBuzzflyInit(AIEntity *e, int mx, int my) {
e->aiAction = aiBuzzflyAction;
e->sequence = 0;
g_hdb->_ai->findPath(e);
}
-void aiBuzzflyInit2(AIEntity *e) {
+void aiBuzzflyInit2(AIEntity *e, int mx, int my) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
for (int i = 0; i < e->movedownFrames; i++) {
e->standdownGfx[i] = e->movedownGfx[i];
@@ -3157,7 +3157,7 @@ void aiBuzzflyInit2(AIEntity *e) {
e->standrightFrames = e->moverightFrames;
}
-void aiBuzzflyAction(AIEntity *e) {
+void aiBuzzflyAction(AIEntity *e, int mx, int my) {
if (!e->goalX) {
switch (e->sequence) {
case 0:
@@ -3205,7 +3205,7 @@ void aiBuzzflyAction(AIEntity *e) {
//
//-------------------------------------------------------------------
-void aiDragonInit(AIEntity *e) {
+void aiDragonInit(AIEntity *e, int mx, int my) {
e->state = STATE_STANDDOWN;
e->sequence = 0; // 0 = sleeping
e->aiAction = aiDragonAction;
@@ -3233,7 +3233,7 @@ void aiDragonInit(AIEntity *e) {
sprintf(block->luaFuncUse, "%03d%03d", e->tileX, e->tileY);
}
-void aiDragonInit2(AIEntity *e) {
+void aiDragonInit2(AIEntity *e, int mx, int my) {
e->draw = nullptr;
if (!g_hdb->_ai->_gfxDragonAsleep) {
g_hdb->_ai->_gfxDragonAsleep = g_hdb->_gfx->loadPic(DRAGON_ASLEEP);
@@ -3245,18 +3245,18 @@ void aiDragonInit2(AIEntity *e) {
}
}
-void aiDragonWake(AIEntity *e) {
+void aiDragonWake(AIEntity *e, int mx, int my) {
// woke up, start flapping and breathing!
e->sequence = 1;
e->animFrame = 0;
e->animDelay = e->animCycle;
}
-void aiDragonUse(AIEntity *e) {
- aiDragonWake(e);
+void aiDragonUse(AIEntity *e, int mx, int my) {
+ aiDragonWake(e, 0, 0);
}
-void aiDragonAction(AIEntity *e) {
+void aiDragonAction(AIEntity *e, int mx, int my) {
AIEntity *p = g_hdb->_ai->getPlayer();
switch (e->sequence) {
@@ -3269,7 +3269,7 @@ void aiDragonAction(AIEntity *e) {
p->tileY >= e->tileY - 3) {
if ((p->state >= STATE_ATK_CLUB_UP &&
p->state <= STATE_ATK_SLUG_RIGHT) || g_hdb->_window->inPanicZone()) {
- aiDragonWake(e);
+ aiDragonWake(e, 0, 0);
if (e->onScreen)
g_hdb->_sound->playSound(SND_DRAGON_WAKE);
}
@@ -3331,11 +3331,11 @@ void aiDragonAction(AIEntity *e) {
break;
case AI_MAGIC_EGG:
case AI_ICE_BLOCK:
- aiMagicEggUse(hit);
+ aiMagicEggUse(hit, 0, 0);
break;
default:
if (hit->aiUse)
- hit->aiUse(hit);
+ hit->aiUse(hit, 0, 0);
if (hit->luaFuncUse[0])
g_hdb->_lua->callFunction(hit->luaFuncUse, 0);
}
diff --git a/engines/hdb/ai-funcs.cpp b/engines/hdb/ai-funcs.cpp
index 84bf752e833..73a2938c947 100644
--- a/engines/hdb/ai-funcs.cpp
+++ b/engines/hdb/ai-funcs.cpp
@@ -427,9 +427,9 @@ bool AI::cacheEntGfx(AIEntity *e, bool initFlag) {
e->aiInit = aiEntList[i].initFunc;
e->aiInit2 = aiEntList[i].initFunc2;
if (initFlag) {
- e->aiInit(e);
+ e->aiInit(e, 0, 0);
if (e->aiInit2)
- e->aiInit2(e);
+ e->aiInit2(e, 0, 0);
if (e->luaFuncInit[0]) {
g_hdb->_lua->callFunction(e->luaFuncInit, 2);
@@ -443,7 +443,7 @@ bool AI::cacheEntGfx(AIEntity *e, bool initFlag) {
Common::strlcpy(e->printedName, str2, 32);
}
} else if (e->aiInit2)
- e->aiInit2(e);
+ e->aiInit2(e, 0, 0);
break; // Entity Initiated
}
@@ -610,7 +610,7 @@ bool AI::useLuaEntity(const char *initName) {
for (Common::Array<AIEntity *>::iterator it = _ents->begin(); it != _ents->end(); ++it) {
AIEntity *e = *it;
if (!scumm_stricmp(initName, e->entityName)) {
- e->aiUse(e);
+ e->aiUse(e, 0, 0);
checkActionList(e, e->tileX, e->tileY, true);
if (e->luaFuncUse[0])
g_hdb->_lua->callFunction(e->luaFuncUse, 0);
@@ -719,7 +719,7 @@ void AI::setEntityGoal(AIEntity *e, int x, int y) {
// Initializes each entity after map is loaded
void AI::initAllEnts() {
for (Common::Array<AIEntity *>::iterator it = _ents->begin(); it != _ents->end(); ++it) {
- (*it)->aiInit((*it));
+ (*it)->aiInit((*it), 0, 0);
if ((*it)->luaFuncInit[0]) {
if (g_hdb->_lua->callFunction((*it)->luaFuncInit, 2)) {
Common::strlcpy((*it)->entityName, g_hdb->_lua->getStringOffStack(), 32);
@@ -1244,7 +1244,7 @@ void AI::animateEntity(AIEntity *e) {
g_hdb->_sound->playSound(SND_SPLASH);
} else if (!checkFloating(e->tileX, e->tileY)) {
if (e->type == AI_BOOMBARREL) {
- aiBarrelExplode(e);
+ aiBarrelExplode(e, 0, 0);
aiBarrelBlowup(e, e->tileX, e->tileY);
return;
} else {
@@ -1570,7 +1570,7 @@ void AI::animEntFrames(AIEntity *e) {
max = e->special1Frames;
if (e->type == AI_BOOMBARREL) {
// while exploding, call this function
- aiBarrelExplodeSpread(e);
+ aiBarrelExplodeSpread(e, 0, 0);
if (e->animFrame == max - 1) {
removeEntity(e);
return;
@@ -1919,7 +1919,7 @@ void AI::moveEnts() {
// Call aiAction for Floating Entities
for (Common::Array<AIEntity *>::iterator it = _floats->begin(); it != _floats->end(); ++it) {
if ((*it)->aiAction)
- (*it)->aiAction((*it));
+ (*it)->aiAction((*it), 0, 0);
}
// Call aiAction for all other Entities
@@ -1941,7 +1941,7 @@ void AI::moveEnts() {
}
// Stunned Entity Timer
if (!e->stunnedWait)
- e->aiAction(e);
+ e->aiAction(e, 0, 0);
else if (e->stunnedWait < (int32)g_hdb->getTimeSlice())
e->stunnedWait = 0;
}
@@ -2136,7 +2136,7 @@ void AI::laserScan() {
for (uint i = 0; i < _ents->size(); i++) {
AIEntity *e = _ents->operator[](i);
if (e->type == AI_LASER)
- aiLaserAction(e);
+ aiLaserAction(e, 0, 0);
}
}
diff --git a/engines/hdb/ai-init.cpp b/engines/hdb/ai-init.cpp
index 601b56f9332..553612fd1e7 100644
--- a/engines/hdb/ai-init.cpp
+++ b/engines/hdb/ai-init.cpp
@@ -646,6 +646,7 @@ AIEntTypeInfo aiEntList[] = {
{ ITEM_ROBOSTUNNER, "ITEM_ROBOSTUNNER", &roboStunner[0], aiRoboStunnerInit, aiRoboStunnerInit2 },
{ ITEM_SLUGSLINGER, "ITEM_SLUGSLINGER", &slugSlinger[0], aiSlugSlingerInit, aiSlugSlingerInit2 },
+
{ ITEM_ENV_GREEN, "ITEM_ENV_GREEN", &envelopeGreen[0], aiEnvelopeGreenInit, aiEnvelopeGreenInit2 },
{ ITEM_GEM_BLUE, "ITEM_GEM_BLUE", &gemBlue[0], aiGemBlueInit, aiGemBlueInit2 },
{ ITEM_GEM_RED, "ITEM_GEM_RED", &gemRed[0], aiGemRedInit, aiGemRedInit2 },
@@ -894,22 +895,16 @@ static struct {
{aiIceBlockInit, "aiIceBlockInit"},
{aiIceBlockInit2, "aiIceBlockInit2"},
{aiIceBlockAction, "aiIceBlockAction"},
- {nullptr, nullptr}
-};
+ {aiPlayerDraw, "aiPlayerDraw"},
+ {aiShockBotShock, "aiShockBotShock"},
+ {aiSlugAttackDraw, "aiSlugAttackDraw"},
+ {aiLaserDraw, "aiLaserDraw"},
+ {aiDiverterDraw, "aiDiverterDraw"},
+ {aiMeerkatDraw, "aiMeerkatDraw"},
+ {aiFatFrogTongueDraw, "aiFatFrogTongueDraw"},
+ {aiIcePuffSnowballDraw, "aiIcePuffSnowballDraw"},
+ {aiDragonDraw, "aiDragonDraw"},
-static struct {
- EntFuncPtr function;
- const char *funcName;
-} aiEntFuncList[] = {
- {aiPlayerDraw, "aiPlayerDraw"},
- {aiShockBotShock, "aiShockBotShock"},
- {aiSlugAttackDraw, "aiSlugAttackDraw"},
- {aiLaserDraw, "aiLaserDraw"},
- {aiDiverterDraw, "aiDiverterDraw"},
- {aiMeerkatDraw, "aiMeerkatDraw"},
- {aiFatFrogTongueDraw, "aiFatFrogTongueDraw"},
- {aiIcePuffSnowballDraw, "aiIcePuffSnowballDraw"},
- {aiDragonDraw, "aiDragonDraw"},
{nullptr, nullptr}
};
@@ -1265,12 +1260,6 @@ const char *AI::funcLookUp(FuncPtr function) {
return aiFuncList[i].funcName;
i++;
}
- i = 0;
- while (aiEntFuncList[i].funcName) {
- if ((FuncPtr)aiEntFuncList[i].function == function)
- return aiEntFuncList[i].funcName;
- i++;
- }
return nullptr;
}
@@ -1284,12 +1273,6 @@ FuncPtr AI::funcLookUp(const char *function) {
return aiFuncList[i].function;
i++;
}
- i = 0;
- while (aiEntFuncList[i].funcName) {
- if (!scumm_stricmp(aiEntFuncList[i].funcName, function))
- return (FuncPtr)aiEntFuncList[i].function;
- i++;
- }
return nullptr;
}
diff --git a/engines/hdb/ai-lists.cpp b/engines/hdb/ai-lists.cpp
index 8ddf30de5f0..6252840e091 100644
--- a/engines/hdb/ai-lists.cpp
+++ b/engines/hdb/ai-lists.cpp
@@ -525,7 +525,7 @@ bool AI::autoActive(int x, int y) {
CallbackDef allCallbacks[] = {
{NO_FUNCTION, nullptr},
- {AI_BARREL_EXPLOSION_END, aiBarrelExplosionEnd},
+ {AI_BARREL_EXPLOSION_END, callbackAiBarrelExplosionEnd},
{CALLBACK_DOOR_OPEN_CLOSE, callbackDoorOpenClose},
{CALLBACK_AUTODOOR_OPEN_CLOSE, callbackAutoDoorOpenClose},
{CALLBACK_END, nullptr}
diff --git a/engines/hdb/ai-player.cpp b/engines/hdb/ai-player.cpp
index eb1bc48e6f5..29ed9afd7b2 100644
--- a/engines/hdb/ai-player.cpp
+++ b/engines/hdb/ai-player.cpp
@@ -35,7 +35,7 @@
namespace HDB {
-void aiPlayerInit(AIEntity *e) {
+void aiPlayerInit(AIEntity *e, int mx, int my) {
g_hdb->_ai->clearInventory();
e->aiAction = aiPlayerAction;
e->draw = g_hdb->_ai->getStandFrameDir(e);
@@ -63,7 +63,7 @@ void aiPlayerInit(AIEntity *e) {
g_hdb->_ai->assignPlayer(e);
}
-void aiPlayerInit2(AIEntity *e) {
+void aiPlayerInit2(AIEntity *e, int mx, int my) {
if (!g_hdb->_ai->_clubUpGfx[0]) {
g_hdb->_ai->_weaponSelGfx = g_hdb->_gfx->loadTile(TILE_WEAPON_EQUIPPED);
g_hdb->_ai->_clubUpGfx[0] = g_hdb->_gfx->getPicGfx(CLUBUP1, -1);
@@ -116,7 +116,7 @@ void aiPlayerInit2(AIEntity *e) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiPlayerAction(AIEntity *e) {
+void aiPlayerAction(AIEntity *e, int mx, int my) {
static const AIState stand[5] = {STATE_NONE, STATE_STANDUP, STATE_STANDDOWN, STATE_STANDLEFT, STATE_STANDRIGHT};
static const int xvAhead[5] = {9, 0, 0, -1, 1};
static const int yvAhead[5] = {9, -1, 1, 0, 0};
@@ -501,7 +501,7 @@ void aiPlayerDraw(AIEntity *e, int mx, int my) {
}
}
-void aiGemAttackInit(AIEntity *e) {
+void aiGemAttackInit(AIEntity *e, int mx, int my) {
static const int xv[5] = {9, 0, 0, -1, 1};
static const int yv[5] = {9, -1, 1, 0, 0};
@@ -514,7 +514,7 @@ void aiGemAttackInit(AIEntity *e) {
g_hdb->_sound->playSound(SND_GEM_THROW);
}
-void aiGemAttackAction(AIEntity *e) {
+void aiGemAttackAction(AIEntity *e, int mx, int my) {
static const int xv[5] = {9, 0, 0, -1, 1};
static const int yv[5] = {9, -1, 1, 0, 0};
@@ -554,14 +554,14 @@ void aiGemAttackAction(AIEntity *e) {
g_hdb->_sound->playSound(SND_CLUB_HIT_FLESH);
AIEntity *found = g_hdb->_ai->findEntity(atoi(num1), atoi(num2));
if (found)
- aiDragonWake(found);
+ aiDragonWake(found, 0, 0);
}
g_hdb->_ai->addAnimateTarget(e->x, e->y, 0, 3, ANIM_NORMAL, false, false, GEM_FLASH);
g_hdb->_sound->playSound(SND_INV_SELECT);
break;
case AI_DRAGON:
g_hdb->_sound->playSound(SND_CLUB_HIT_FLESH);
- aiDragonWake(hit);
+ aiDragonWake(hit, 0, 0);
// fallthrough
default:
g_hdb->_ai->addAnimateTarget(e->x, e->y, 0, 3, ANIM_NORMAL, false, false, GEM_FLASH);
@@ -618,13 +618,13 @@ void aiGemAttackAction(AIEntity *e) {
}
}
-void aiChickenAction(AIEntity *e) {
+void aiChickenAction(AIEntity *e, int mx, int my) {
static int delay = 64;
if (g_hdb->_map->checkEntOnScreen(e) && !delay) {
g_hdb->_sound->playSound(SND_CHICKEN_AMBIENT);
delay = g_hdb->_rnd->getRandomNumber(127) + 160;
- aiChickenUse(e);
+ aiChickenUse(e, 0, 0);
}
if (delay)
@@ -636,39 +636,39 @@ void aiChickenAction(AIEntity *e) {
g_hdb->_ai->animEntFrames(e);
}
-void aiChickenUse(AIEntity *e) {
+void aiChickenUse(AIEntity *e, int mx, int my) {
g_hdb->_sound->playSound(SND_CHICKEN_BAGAWK);
}
-void aiChickenInit(AIEntity *e) {
+void aiChickenInit(AIEntity *e, int mx, int my) {
e->aiUse = aiChickenUse;
e->aiAction = aiChickenAction;
}
-void aiChickenInit2(AIEntity *e) {
+void aiChickenInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiDollyInit(AIEntity *e) {
+void aiDollyInit(AIEntity *e, int mx, int my) {
e->moveSpeed = kPlayerMoveSpeed >> 1;
e->aiAction = aiGenericAction;
}
-void aiDollyInit2(AIEntity *e) {
+void aiDollyInit2(AIEntity *e, int mx, int my) {
e->draw = e->movedownGfx[0];
}
-void aiSergeantInit(AIEntity *e) {
+void aiSergeantInit(AIEntity *e, int mx, int my) {
e->moveSpeed = kPlayerMoveSpeed >> 1;
if (e->value1)
e->aiAction = aiSergeantAction;
}
-void aiSergeantInit2(AIEntity *e) {
+void aiSergeantInit2(AIEntity *e, int mx, int my) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiSergeantAction(AIEntity *e) {
+void aiSergeantAction(AIEntity *e, int mx, int my) {
if (e->goalX) {
g_hdb->_sound->playSound(SND_FOOTSTEPS);
g_hdb->_ai->animateEntity(e);
@@ -676,13 +676,13 @@ void aiSergeantAction(AIEntity *e) {
g_hdb->_ai->animEntFrames(e);
}
-void aiSpacedudeInit(AIEntity *e) {
+void aiSpacedudeInit(AIEntity *e, int mx, int my) {
e->moveSpeed = kPlayerMoveSpeed >> 1;
if (e->value1)
e->aiAction = aiGenericAction;
}
-void aiSpacedudeInit2(AIEntity *e) {
+void aiSpacedudeInit2(AIEntity *e, int mx, int my) {
e->standdownFrames = 1;
e->standdownGfx[0] = e->movedownGfx[0];
e->standupFrames = 1;
@@ -694,7 +694,7 @@ void aiSpacedudeInit2(AIEntity *e) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiCrateAction(AIEntity *e) {
+void aiCrateAction(AIEntity *e, int mx, int my) {
// if crate isn't moving somewhere, don't move it
if (!e->goalX) {
// crate is stopped in the water... should it continue downstream?
@@ -716,7 +716,7 @@ void aiCrateAction(AIEntity *e) {
g_hdb->_ai->animateEntity(e);
}
-void aiCrateInit2(AIEntity *e) {
+void aiCrateInit2(AIEntity *e, int mx, int my) {
// point all crate move frames to the standing one
e->movedownFrames =
e->moveleftFrames =
@@ -731,13 +731,13 @@ void aiCrateInit2(AIEntity *e) {
e->draw = e->standdownGfx[0]; // standing frame - doesn't move
}
-void aiCrateInit(AIEntity *e) {
+void aiCrateInit(AIEntity *e, int mx, int my) {
e->moveSpeed = kPushMoveSpeed;
e->aiAction = aiCrateAction;
e->value1 = 0;
}
-void aiBarrelLightAction(AIEntity *e) {
+void aiBarrelLightAction(AIEntity *e, int mx, int my) {
if (!e->goalX) {
if (e->state == STATE_FLOATING)
g_hdb->_ai->animEntFrames(e);
@@ -747,7 +747,7 @@ void aiBarrelLightAction(AIEntity *e) {
g_hdb->_ai->animateEntity(e);
}
-void aiBarrelLightInit2(AIEntity *e) {
+void aiBarrelLightInit2(AIEntity *e, int mx, int my) {
// point all light barrel move frames to the standing one
e->movedownFrames =
e->moveleftFrames =
@@ -762,12 +762,12 @@ void aiBarrelLightInit2(AIEntity *e) {
e->draw = e->standdownGfx[0]; // standing frame - doesn't move
}
-void aiBarrelLightInit(AIEntity *e) {
+void aiBarrelLightInit(AIEntity *e, int mx, int my) {
e->moveSpeed = kPushMoveSpeed;
e->aiAction = aiBarrelLightAction;
}
-void aiBarrelHeavyAction(AIEntity *e) {
+void aiBarrelHeavyAction(AIEntity *e, int mx, int my) {
if (!e->goalX) {
if (e->state == STATE_FLOATING)
g_hdb->_ai->animEntFrames(e);
@@ -777,7 +777,7 @@ void aiBarrelHeavyAction(AIEntity *e) {
g_hdb->_ai->animateEntity(e);
}
-void aiBarrelHeavyInit2(AIEntity *e) {
+void aiBarrelHeavyInit2(AIEntity *e, int mx, int my) {
// point all heavy barrel move frames to the standing one
e->movedownFrames =
e->moveleftFrames =
@@ -792,12 +792,12 @@ void aiBarrelHeavyInit2(AIEntity *e) {
e->draw = e->standdownGfx[0]; // standing frame - doesn't move
}
-void aiBarrelHeavyInit(AIEntity *e) {
+void aiBarrelHeavyInit(AIEntity *e, int mx, int my) {
e->moveSpeed = kPushMoveSpeed;
e->aiAction = aiBarrelHeavyAction;
}
-void aiBarrelExplode(AIEntity *e) {
+void aiBarrelExplode(AIEntity *e, int mx, int my) {
e->state = STATE_EXPLODING;
e->animDelay = e->animCycle;
e->animFrame = 0;
@@ -808,13 +808,13 @@ void aiBarrelExplode(AIEntity *e) {
g_hdb->_map->setBoomBarrel(e->tileX, e->tileY, 0);
}
-void aiBarrelExplodeInit(AIEntity *e) {
+void aiBarrelExplodeInit(AIEntity *e, int mx, int my) {
e->moveSpeed = kPushMoveSpeed;
e->aiAction = aiBarrelExplodeAction;
g_hdb->_map->setBoomBarrel(e->tileX, e->tileY, 1);
}
-void aiBarrelExplodeInit2(AIEntity *e) {
+void aiBarrelExplodeInit2(AIEntity *e, int mx, int my) {
// point all exploding barrel MOVE frames to the standing one
e->blinkFrames =
e->movedownFrames =
@@ -831,14 +831,14 @@ void aiBarrelExplodeInit2(AIEntity *e) {
e->draw = e->standdownGfx[0]; // standing frame - doesn't move
}
-void aiBarrelExplodeAction(AIEntity *e) {
+void aiBarrelExplodeAction(AIEntity *e, int mx, int my) {
if (e->goalX)
g_hdb->_ai->animateEntity(e);
else if (e->state == STATE_EXPLODING)
g_hdb->_ai->animEntFrames(e);
}
-void aiBarrelExplodeSpread(AIEntity *e) {
+void aiBarrelExplodeSpread(AIEntity *e, int mx, int my) {
static const int xv1[4] = {-1, 1, -1, 0};
static const int yv1[4] = {-1, -1, 0, -1};
static const int xv2[4] = {1, 0, 1, -1};
@@ -868,7 +868,7 @@ void aiBarrelExplodeSpread(AIEntity *e) {
g_hdb->_ai->killPlayer(DEATH_FRIED);
break;
case AI_BOOMBARREL:
- aiBarrelExplode(e2);
+ aiBarrelExplode(e2, 0, 0);
break;
case AI_OMNIBOT:
case AI_TURNBOT:
@@ -912,7 +912,7 @@ void aiBarrelExplodeSpread(AIEntity *e) {
g_hdb->_ai->killPlayer(DEATH_FRIED);
break;
case AI_BOOMBARREL:
- aiBarrelExplode(e2);
+ aiBarrelExplode(e2, 0, 0);
break;
case AI_OMNIBOT:
case AI_TURNBOT:
@@ -941,7 +941,7 @@ void aiBarrelExplodeSpread(AIEntity *e) {
}
}
-void aiBarrelExplosionEnd(int x, int y) {
+void callbackAiBarrelExplosionEnd(int x, int y) {
g_hdb->_map->setExplosion(x, y, 0);
}
@@ -952,7 +952,7 @@ void aiBarrelBlowup(AIEntity *e, int x, int y) {
g_hdb->_ai->addCallback(AI_BARREL_EXPLOSION_END, x, y, e->animCycle * 4);
}
-void aiScientistInit(AIEntity *e) {
+void aiScientistInit(AIEntity *e, int x, int y) {
e->moveSpeed = kPlayerMoveSpeed >> 1;
if (g_hdb->_ai->findPath(e))
e->aiAction = aiGenericAction;
@@ -960,11 +960,11 @@ void aiScientistInit(AIEntity *e) {
e->aiAction = aiGenericAction;
}
-void aiScientistInit2(AIEntity *e) {
+void aiScientistInit2(AIEntity *e, int x, int y) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiSlugAttackAction(AIEntity *e) {
+void aiSlugAttackAction(AIEntity *e, int x, int y) {
static const int xv[5] = {9, 0, 0, -1, 1};
static const int yv[5] = {9, -1, 1, 0, 0};
@@ -1038,7 +1038,7 @@ void aiSlugAttackAction(AIEntity *e) {
break;
case AI_BOOMBARREL:
g_hdb->_sound->playSound(SND_CLUB_HIT_METAL);
- aiBarrelExplode(hit);
+ aiBarrelExplode(hit, 0, 0);
aiBarrelBlowup(hit, hit->tileX, hit->tileY);
break;
// ACTION MODE entities go away - except the FOURFIRER
@@ -1066,12 +1066,12 @@ void aiSlugAttackAction(AIEntity *e) {
g_hdb->_sound->playSound(SND_CLUB_HIT_FLESH);
AIEntity *found = g_hdb->_ai->findEntity(atoi(num1), atoi(num2));
if (found)
- aiDragonWake(found);
+ aiDragonWake(found, 0, 0);
g_hdb->_ai->addAnimateTarget(e->x, e->y, 0, 3, ANIM_NORMAL, false, false, GEM_FLASH);
}
break;
case AI_DRAGON:
- aiDragonWake(hit);
+ aiDragonWake(hit, 0, 0);
break;
default:
break;
@@ -1093,7 +1093,7 @@ void aiSlugAttackDraw(AIEntity *e, int mx, int my) {
g_hdb->_ai->_slugAttackGfx[e->animFrame]->drawMasked(e->x - mx + 8, e->y - my + 8);
}
-void aiSlugAttackInit(AIEntity *e) {
+void aiSlugAttackInit(AIEntity *e, int mx, int my) {
static const int xv[5] = {9, 0, 0, -1, 1};
static const int yv[5] = {9, -1, 1, 0, 0};
@@ -1109,40 +1109,40 @@ void aiSlugAttackInit(AIEntity *e) {
g_hdb->_sound->playSound(SND_SLUG_FIRE);
}
-void aiSlugAttackInit2(AIEntity *e) {
+void aiSlugAttackInit2(AIEntity *e, int mx, int my) {
e->movedownFrames = 4;
}
-void aiDeadWorkerInit(AIEntity *e) {
+void aiDeadWorkerInit(AIEntity *e, int mx, int my) {
}
-void aiDeadWorkerInit2(AIEntity *e) {
+void aiDeadWorkerInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiWorkerInit(AIEntity *e) {
+void aiWorkerInit(AIEntity *e, int mx, int my) {
if (e->value1)
e->aiAction = aiGenericAction;
e->moveSpeed = kPlayerMoveSpeed >> 1;
}
-void aiWorkerInit2(AIEntity *e) {
+void aiWorkerInit2(AIEntity *e, int mx, int my) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiAccountantInit(AIEntity *e) {
+void aiAccountantInit(AIEntity *e, int mx, int my) {
}
-void aiAccountantInit2(AIEntity *e) {
+void aiAccountantInit2(AIEntity *e, int mx, int my) {
e->draw = g_hdb->_ai->getStandFrameDir(e);
}
-void aiFrogStatueInit(AIEntity *e) {
+void aiFrogStatueInit(AIEntity *e, int mx, int my) {
e->moveSpeed = kPushMoveSpeed;
e->aiAction = aiFrogStatueAction;
}
-void aiFrogStatueInit2(AIEntity *e) {
+void aiFrogStatueInit2(AIEntity *e, int mx, int my) {
// point all frog statue MOVE frames to the standing one
e->blinkFrames =
e->movedownFrames =
@@ -1159,7 +1159,7 @@ void aiFrogStatueInit2(AIEntity *e) {
e->draw = e->standdownGfx[0]; // standing frame - doesn't move
}
-void aiFrogStatueAction(AIEntity *e) {
+void aiFrogStatueAction(AIEntity *e, int mx, int my) {
// if frog statue isn't moving somewhere, don't move it
if (!e->goalX)
return;
@@ -1167,261 +1167,261 @@ void aiFrogStatueAction(AIEntity *e) {
g_hdb->_ai->animateEntity(e);
}
-void aiRoboStunnerAction(AIEntity *e) {
+void aiRoboStunnerAction(AIEntity *e, int mx, int my) {
aiAnimateStanddown(e, 1);
- aiGetItemAction(e);
+ aiGetItemAction(e, 0, 0);
}
-void aiRoboStunnerInit(AIEntity *e) {
+void aiRoboStunnerInit(AIEntity *e, int mx, int my) {
e->aiAction = aiRoboStunnerAction;
Common::strlcpy(e->printedName, "Robostunner", 32);
}
-void aiRoboStunnerInit2(AIEntity *e) {
+void aiRoboStunnerInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiClubInit(AIEntity *e) {
+void aiClubInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "Creature Clubber", 32);
e->aiAction = aiGetItemAction;
}
-void aiClubInit2(AIEntity *e) {
+void aiClubInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiSlugSlingerInit(AIEntity *e) {
+void aiSlugSlingerInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "Slugslinger", 32);
e->aiAction = aiGetItemAction;
}
-void aiSlugSlingerInit2(AIEntity *e) {
+void aiSlugSlingerInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiEnvelopeGreenInit(AIEntity *e) {
+void aiEnvelopeGreenInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "Green envelope", 32);
e->aiAction = aiGetItemAction;
}
-void aiEnvelopeGreenInit2(AIEntity *e) {
+void aiEnvelopeGreenInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiGemBlueInit(AIEntity *e) {
+void aiGemBlueInit(AIEntity *e, int mx, int my) {
e->aiAction = aiGemAction;
}
-void aiGemBlueInit2(AIEntity *e) {
+void aiGemBlueInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiGemRedInit(AIEntity *e) {
+void aiGemRedInit(AIEntity *e, int mx, int my) {
e->aiAction = aiGemAction;
}
-void aiGemRedInit2(AIEntity *e) {
+void aiGemRedInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiGemGreenInit(AIEntity *e) {
+void aiGemGreenInit(AIEntity *e, int mx, int my) {
e->aiAction = aiGemAction;
}
-void aiGemGreenInit2(AIEntity *e) {
+void aiGemGreenInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiTeaCupInit(AIEntity *e) {
+void aiTeaCupInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Teacup", 32);
e->aiAction = aiGetItemAction;
}
-void aiTeaCupInit2(AIEntity *e) {
+void aiTeaCupInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiCookieInit(AIEntity *e) {
+void aiCookieInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Cookie", 32);
e->aiAction = aiGetItemAction;
}
-void aiCookieInit2(AIEntity *e) {
+void aiCookieInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiBurgerInit(AIEntity *e) {
+void aiBurgerInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Burger", 32);
e->aiAction = aiGetItemAction;
}
-void aiBurgerInit2(AIEntity *e) {
+void aiBurgerInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiBookInit(AIEntity *e) {
+void aiBookInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Book", 32);
e->aiAction = aiGetItemAction;
}
-void aiBookInit2(AIEntity *e) {
+void aiBookInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiClipboardInit(AIEntity *e) {
+void aiClipboardInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Clipboard", 32);
e->aiAction = aiGetItemAction;
}
-void aiClipboardInit2(AIEntity *e) {
+void aiClipboardInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiNoteInit(AIEntity *e) {
+void aiNoteInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Note", 32);
e->aiAction = aiGetItemAction;
}
-void aiNoteInit2(AIEntity *e) {
+void aiNoteInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiKeycardWhiteInit(AIEntity *e) {
+void aiKeycardWhiteInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a White keycard", 32);
e->aiAction = aiGetItemAction;
}
-void aiKeycardWhiteInit2(AIEntity *e) {
+void aiKeycardWhiteInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiKeycardBlueInit(AIEntity *e) {
+void aiKeycardBlueInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Blue keycard", 32);
e->aiAction = aiGetItemAction;
}
-void aiKeycardBlueInit2(AIEntity *e) {
+void aiKeycardBlueInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiKeycardRedInit(AIEntity *e) {
+void aiKeycardRedInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Red keycard", 32);
e->aiAction = aiGetItemAction;
}
-void aiKeycardRedInit2(AIEntity *e) {
+void aiKeycardRedInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiKeycardGreenInit(AIEntity *e) {
+void aiKeycardGreenInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Green keycard", 32);
e->aiAction = aiGetItemAction;
}
-void aiKeycardGreenInit2(AIEntity *e) {
+void aiKeycardGreenInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiKeycardPurpleInit(AIEntity *e) {
+void aiKeycardPurpleInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Purple keycard", 32);
e->aiAction = aiGetItemAction;
}
-void aiKeycardPurpleInit2(AIEntity *e) {
+void aiKeycardPurpleInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiKeycardBlackInit(AIEntity *e) {
+void aiKeycardBlackInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Black keycard", 32);
e->aiAction = aiGetItemAction;
}
-void aiKeycardBlackInit2(AIEntity *e) {
+void aiKeycardBlackInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiSeedInit(AIEntity *e) {
+void aiSeedInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "some Henscratch", 32);
e->aiAction = aiGetItemAction;
}
-void aiSeedInit2(AIEntity *e) {
+void aiSeedInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiSodaInit(AIEntity *e) {
+void aiSodaInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Dr. Frostee", 32);
e->aiAction = aiGetItemAction;
}
-void aiSodaInit2(AIEntity *e) {
+void aiSodaInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiDollyTool1Init(AIEntity *e) {
+void aiDollyTool1Init(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "Dolly's Wrench", 32);
e->aiAction = aiGetItemAction;
}
-void aiDollyTool1Init2(AIEntity *e) {
+void aiDollyTool1Init2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiDollyTool2Init(AIEntity *e) {
+void aiDollyTool2Init(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "Dolly's Torch", 32);
e->aiAction = aiGetItemAction;
}
-void aiDollyTool2Init2(AIEntity *e) {
+void aiDollyTool2Init2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiDollyTool3Init(AIEntity *e) {
+void aiDollyTool3Init(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "Dolly's EMF Resonator", 32);
e->aiAction = aiGetItemAction;
}
-void aiDollyTool3Init2(AIEntity *e) {
+void aiDollyTool3Init2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiDollyTool4Init(AIEntity *e) {
+void aiDollyTool4Init(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "Dolly's Toolbox", 32);
e->aiAction = aiGetItemAction;
}
-void aiDollyTool4Init2(AIEntity *e) {
+void aiDollyTool4Init2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiRouterInit(AIEntity *e) {
+void aiRouterInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Computer Router", 32);
e->aiAction = aiGetItemAction;
}
-void aiRouterInit2(AIEntity *e) {
+void aiRouterInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiSlicerInit(AIEntity *e) {
+void aiSlicerInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Pizza Slicer", 32);
e->aiAction = aiGetItemAction;
}
-void aiSlicerInit2(AIEntity *e) {
+void aiSlicerInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiPackageInit(AIEntity *e) {
+void aiPackageInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Package", 32);
e->aiAction = aiGetItemAction;
}
-void aiPackageInit2(AIEntity *e) {
+void aiPackageInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiMagicEggAction(AIEntity *e) {
+void aiMagicEggAction(AIEntity *e, int mx, int my) {
// if magic egg isn't moving somewhere, don't move it
if (!e->goalX)
return;
@@ -1429,12 +1429,12 @@ void aiMagicEggAction(AIEntity *e) {
g_hdb->_ai->animateEntity(e);
}
-void aiMagicEggInit(AIEntity *e) {
+void aiMagicEggInit(AIEntity *e, int mx, int my) {
e->moveSpeed = kPushMoveSpeed;
e->aiAction = aiMagicEggAction;
}
-void aiMagicEggInit2(AIEntity *e) {
+void aiMagicEggInit2(AIEntity *e, int mx, int my) {
// point all magic egg move frames to the standing one
e->movedownFrames =
e->moveleftFrames =
@@ -1449,7 +1449,7 @@ void aiMagicEggInit2(AIEntity *e) {
e->draw = e->standdownGfx[0]; // standing frame - doesn't move
}
-void aiMagicEggUse(AIEntity *e) {
+void aiMagicEggUse(AIEntity *e, int mx, int my) {
if (!scumm_strnicmp(e->luaFuncAction, "ai_", 3) || !scumm_strnicmp(e->luaFuncAction, "item_", 5)) {
AIEntity *spawned = nullptr;
for (int i = 0; aiEntList[i].type != END_AI_TYPES; ++i) {
@@ -1471,7 +1471,7 @@ void aiMagicEggUse(AIEntity *e) {
}
}
-void aiIceBlockAction(AIEntity *e) {
+void aiIceBlockAction(AIEntity *e, int mx, int my) {
// if ice block isn't moving somewhere, don't move it
if (!e->goalX)
return;
@@ -1479,12 +1479,12 @@ void aiIceBlockAction(AIEntity *e) {
g_hdb->_ai->animateEntity(e);
}
-void aiIceBlockInit(AIEntity *e) {
+void aiIceBlockInit(AIEntity *e, int mx, int my) {
e->moveSpeed = kPushMoveSpeed;
e->aiAction = aiIceBlockAction;
}
-void aiIceBlockInit2(AIEntity *e) {
+void aiIceBlockInit2(AIEntity *e, int mx, int my) {
// point all ice block move frames to the standing one
e->movedownFrames =
e->moveleftFrames =
@@ -1499,100 +1499,100 @@ void aiIceBlockInit2(AIEntity *e) {
e->draw = e->standdownGfx[0]; // standing frame - doesn't move
}
-void aiCabKeyInit(AIEntity *e) {
+void aiCabKeyInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a Cabinet key", 32);
}
-void aiCabKeyInit2(AIEntity *e) {
+void aiCabKeyInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiItemChickenInit(AIEntity *e) {
+void aiItemChickenInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "Cooper's chicken", 32);
}
-void aiItemChickenInit2(AIEntity *e) {
+void aiItemChickenInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiPdaInit(AIEntity *e) {
+void aiPdaInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "a P.D.A.", 32);
e->aiAction = aiGetItemAction;
}
-void aiPdaInit2(AIEntity *e) {
+void aiPdaInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
#if 0
-void aiCellUse(AIEntity *e) {
+void aiCellUse(AIEntity *e, int mx, int my) {
g_hdb->_window->openMessageBar("You got the Energy Cell!", kMsgDelay);
}
#endif
-void aiCellInit2(AIEntity *e) {
+void aiCellInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiCellInit(AIEntity *e) {
+void aiCellInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "Energy Cell", 32);
e->aiAction = aiGetItemAction;
}
-void aiEnvelopeWhiteInit(AIEntity *e) {
+void aiEnvelopeWhiteInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "White envelope", 32);
e->aiAction = aiGetItemAction;
}
-void aiEnvelopeWhiteInit2(AIEntity *e) {
+void aiEnvelopeWhiteInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiEnvelopeBlueInit(AIEntity *e) {
+void aiEnvelopeBlueInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "Blue envelope", 32);
e->aiAction = aiGetItemAction;
}
-void aiEnvelopeBlueInit2(AIEntity *e) {
+void aiEnvelopeBlueInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiEnvelopeRedInit(AIEntity *e) {
+void aiEnvelopeRedInit(AIEntity *e, int mx, int my) {
Common::strlcpy(e->printedName, "Red envelope", 32);
e->aiAction = aiGetItemAction;
}
-void aiEnvelopeRedInit2(AIEntity *e) {
+void aiEnvelopeRedInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiTransceiverInit(AIEntity *e) {
+void aiTransceiverInit(AIEntity *e, int mx, int my) {
e->aiAction = aiTransceiverAction;
Common::strlcpy(e->printedName, "Transceiver", 32);
}
-void aiTransceiverInit2(AIEntity *e) {
+void aiTransceiverInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiTransceiverAction(AIEntity *e) {
+void aiTransceiverAction(AIEntity *e, int mx, int my) {
aiAnimateStanddown(e, 5);
if (e->onScreen)
- aiGetItemAction(e);
+ aiGetItemAction(e, 0, 0);
}
#if 0
-void aiTransceiverUse(AIEntity *e) {
+void aiTransceiverUse(AIEntity *e, int mx, int my) {
g_hdb->_window->openMessageBar("You got the Transceiver!", kMsgDelay);
}
#endif
-void aiMonkeystoneInit(AIEntity *e) {
+void aiMonkeystoneInit(AIEntity *e, int mx, int my) {
e->aiUse = aiMonkeystoneUse;
e->aiAction = aiMonkeystoneAction;
}
-void aiMonkeystoneAction(AIEntity *e) {
+void aiMonkeystoneAction(AIEntity *e, int mx, int my) {
if (!e->onScreen)
return;
@@ -1602,15 +1602,15 @@ void aiMonkeystoneAction(AIEntity *e) {
g_hdb->_lua->callFunction(e->luaFuncUse, 0);
g_hdb->_ai->addToInventory(e);
- aiMonkeystoneUse(nullptr);
+ aiMonkeystoneUse(nullptr, 0, 0);
}
}
-void aiMonkeystoneInit2(AIEntity *e) {
+void aiMonkeystoneInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiMonkeystoneUse(AIEntity *e) {
+void aiMonkeystoneUse(AIEntity *e, int mx, int my) {
int val = g_hdb->_ai->getMonkeystoneAmount();
Common::String monkString = Common::String::format("You have %d Monkeystone%s!", val, (val > 1) ? "s" : "");
g_hdb->_sound->playSound(SND_GET_MONKEYSTONE);
@@ -1637,7 +1637,7 @@ void aiMonkeystoneUse(AIEntity *e) {
}
}
-void aiGemAction(AIEntity *e) {
+void aiGemAction(AIEntity *e, int mx, int my) {
e->animFrame++;
if (e->animFrame >= e->standdownFrames) {
e->animFrame = 0;
@@ -1659,28 +1659,28 @@ void aiGemAction(AIEntity *e) {
e->draw = e->standdownGfx[e->animFrame];
}
-void aiGemWhiteInit(AIEntity *e) {
+void aiGemWhiteInit(AIEntity *e, int mx, int my) {
e->aiAction = aiGemAction;
}
-void aiGemWhiteInit2(AIEntity *e) {
+void aiGemWhiteInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiGooCupUse(AIEntity *e) {
+void aiGooCupUse(AIEntity *e, int mx, int my) {
g_hdb->_window->openMessageBar("Got a... cup of goo.", kMsgDelay);
}
-void aiGooCupInit(AIEntity *e) {
+void aiGooCupInit(AIEntity *e, int mx, int my) {
e->aiUse = aiGooCupUse;
e->aiAction = aiGetItemAction;
}
-void aiGooCupInit2(AIEntity *e) {
+void aiGooCupInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiVortexianAction(AIEntity *e) {
+void aiVortexianAction(AIEntity *e, int mx, int my) {
// anim the alpha blending : down to 32, up to 180, back down...
e->value2 += e->value1;
if ((e->value2 & 0xff) > 128) {
@@ -1713,21 +1713,21 @@ void aiVortexianAction(AIEntity *e) {
e->draw = e->standdownGfx[e->animFrame];
}
-void aiVortexianUse(AIEntity *e) {
+void aiVortexianUse(AIEntity *e, int mx, int my) {
}
-void aiVortexianInit(AIEntity *e) {
+void aiVortexianInit(AIEntity *e, int mx, int my) {
e->aiUse = aiVortexianUse;
e->aiAction = aiVortexianAction;
e->value1 = 5;
e->value2 = 128;
}
-void aiVortexianInit2(AIEntity *e) {
+void aiVortexianInit2(AIEntity *e, int mx, int my) {
e->draw = e->standdownGfx[0];
}
-void aiNoneInit(AIEntity *e) {
+void aiNoneInit(AIEntity *e, int mx, int my) {
}
// Utility Functions
@@ -1744,7 +1744,7 @@ void aiAnimateStanddown(AIEntity *e, int speed) {
e->animFrame = 0;
}
-void aiGenericAction(AIEntity *e) {
+void aiGenericAction(AIEntity *e, int mx, int my) {
if (!e->goalX)
g_hdb->_ai->findPath(e);
else if (onEvenTile(e->x, e->y))
@@ -1752,14 +1752,14 @@ void aiGenericAction(AIEntity *e) {
g_hdb->_ai->animateEntity(e);
}
-void aiGetItemAction(AIEntity *e) {
+void aiGetItemAction(AIEntity *e, int mx, int my) {
if (!e->onScreen)
return;
AIEntity *p = g_hdb->_ai->getPlayer();
if (abs(p->x - e->x) < 16 && abs(p->y - e->y) < 16 && e->level == p->level) {
if (e->aiUse)
- e->aiUse(e);
+ e->aiUse(e, 0, 0);
if (e->luaFuncUse[0])
g_hdb->_lua->callFunction(e->luaFuncUse, 0);
diff --git a/engines/hdb/ai-player.h b/engines/hdb/ai-player.h
index 0294e4f5816..f1d086b980b 100644
--- a/engines/hdb/ai-player.h
+++ b/engines/hdb/ai-player.h
@@ -24,257 +24,253 @@
namespace HDB {
-void aiPlayerInit(AIEntity *e);
-void aiPlayerInit2(AIEntity *e);
-void aiPlayerAction(AIEntity *e);
+void aiPlayerInit(AIEntity *e, int mx, int my);
+void aiPlayerInit2(AIEntity *e, int mx, int my);
+void aiPlayerAction(AIEntity *e, int mx, int my);
void aiPlayerDraw(AIEntity *e, int mx, int my);
-void aiGemAttackInit(AIEntity *e);
-void aiGemAttackInit2(AIEntity *e);
-void aiGemAttackAction(AIEntity *e);
-void aiChickenAction(AIEntity *e);
-void aiChickenUse(AIEntity *e);
-void aiChickenInit(AIEntity *e);
-void aiChickenInit2(AIEntity *e);
-void aiDollyInit(AIEntity *e);
-void aiDollyInit2(AIEntity *e);
-void aiSergeantInit(AIEntity *e);
-void aiSergeantInit2(AIEntity *e);
-void aiSergeantAction(AIEntity *e);
-void aiSpacedudeInit(AIEntity *e);
-void aiSpacedudeInit2(AIEntity *e);
+void aiGemAttackInit(AIEntity *e, int mx, int my);
+void aiGemAttackInit2(AIEntity *e, int mx, int my);
+void aiGemAttackAction(AIEntity *e, int mx, int my);
+void aiChickenAction(AIEntity *e, int mx, int my);
+void aiChickenUse(AIEntity *e, int mx, int my);
+void aiChickenInit(AIEntity *e, int mx, int my);
+void aiChickenInit2(AIEntity *e, int mx, int my);
+void aiDollyInit(AIEntity *e, int mx, int my);
+void aiDollyInit2(AIEntity *e, int mx, int my);
+void aiSergeantInit(AIEntity *e, int mx, int my);
+void aiSergeantInit2(AIEntity *e, int mx, int my);
+void aiSergeantAction(AIEntity *e, int mx, int my);
+void aiSpacedudeInit(AIEntity *e, int mx, int my);
+void aiSpacedudeInit2(AIEntity *e, int mx, int my);
-void aiCrateAction(AIEntity *e);
-void aiCrateInit2(AIEntity *e);
-void aiCrateInit(AIEntity *e);
-void aiBarrelLightAction(AIEntity *e);
-void aiBarrelLightInit2(AIEntity *e);
-void aiBarrelLightInit(AIEntity *e);
-void aiBarrelHeavyAction(AIEntity *e);
-void aiBarrelHeavyInit(AIEntity *e);
-void aiBarrelHeavyInit2(AIEntity *e);
-void aiBarrelExplosionEnd(AIEntity *e);
-void aiBarrelExplosionAction(AIEntity *e);
-void aiBarrelExplode(AIEntity *e);
-void aiBarrelExplodeInit(AIEntity *e);
-void aiBarrelExplodeInit2(AIEntity *e);
-void aiBarrelExplodeAction(AIEntity *e);
-void aiBarrelExplodeSpread(AIEntity *e);
-void aiBarrelExplosionEnd(int x, int y);
+void aiCrateAction(AIEntity *e, int mx, int my);
+void aiCrateInit2(AIEntity *e, int mx, int my);
+void aiCrateInit(AIEntity *e, int mx, int my);
+void aiBarrelLightAction(AIEntity *e, int mx, int my);
+void aiBarrelLightInit2(AIEntity *e, int mx, int my);
+void aiBarrelLightInit(AIEntity *e, int mx, int my);
+void aiBarrelHeavyAction(AIEntity *e, int mx, int my);
+void aiBarrelHeavyInit(AIEntity *e, int mx, int my);
+void aiBarrelHeavyInit2(AIEntity *e, int mx, int my);
+void aiBarrelExplode(AIEntity *e, int mx, int my);
+void aiBarrelExplodeInit(AIEntity *e, int mx, int my);
+void aiBarrelExplodeInit2(AIEntity *e, int mx, int my);
+void aiBarrelExplodeAction(AIEntity *e, int mx, int my);
+void aiBarrelExplodeSpread(AIEntity *e, int mx, int my);
void aiBarrelBlowup(AIEntity *e, int x, int y);
-void aiMaintBotInit(AIEntity *e);
-void aiMaintBotInit2(AIEntity *e);
-void aiMaintBotAction(AIEntity *e);
-void aiShockBotAction(AIEntity *e);
+void aiMaintBotInit(AIEntity *e, int mx, int my);
+void aiMaintBotInit2(AIEntity *e, int mx, int my);
+void aiMaintBotAction(AIEntity *e, int mx, int my);
+void aiShockBotAction(AIEntity *e, int mx, int my);
void aiShockBotShock(AIEntity *e, int mx, int my);
-void aiShockBotInit(AIEntity *e);
-void aiShockBotInit2(AIEntity *e);
-void aiScientistInit(AIEntity *e);
-void aiScientistInit2(AIEntity *e);
-void aiFourFirerInit(AIEntity *e);
-void aiFourFirerInit2(AIEntity *e);
-void aiFourFirerAction(AIEntity *e);
-void aiRailRiderInit(AIEntity *e);
-void aiRailRiderInit2(AIEntity *e);
-void aiRailRiderAction(AIEntity *e);
-void aiRailRiderUse(AIEntity *e);
-void aiRailRiderOnUse(AIEntity *e);
-void aiRailRiderOnAction(AIEntity *e);
-void aiOmniBotMissileAction(AIEntity *e);
-void aiOmniBotMissileInit(AIEntity *e);
-void aiOmniBotMissileInit2(AIEntity *e);
+void aiShockBotInit(AIEntity *e, int mx, int my);
+void aiShockBotInit2(AIEntity *e, int mx, int my);
+void aiScientistInit(AIEntity *e, int mx, int my);
+void aiScientistInit2(AIEntity *e, int mx, int my);
+void aiFourFirerInit(AIEntity *e, int mx, int my);
+void aiFourFirerInit2(AIEntity *e, int mx, int my);
+void aiFourFirerAction(AIEntity *e, int mx, int my);
+void aiRailRiderInit(AIEntity *e, int mx, int my);
+void aiRailRiderInit2(AIEntity *e, int mx, int my);
+void aiRailRiderAction(AIEntity *e, int mx, int my);
+void aiRailRiderUse(AIEntity *e, int mx, int my);
+void aiRailRiderOnUse(AIEntity *e, int mx, int my);
+void aiRailRiderOnAction(AIEntity *e, int mx, int my);
+void aiOmniBotMissileAction(AIEntity *e, int mx, int my);
+void aiOmniBotMissileInit(AIEntity *e, int mx, int my);
+void aiOmniBotMissileInit2(AIEntity *e, int mx, int my);
-void aiSlugAttackAction(AIEntity *e);
+void aiSlugAttackAction(AIEntity *e, int mx, int my);
void aiSlugAttackDraw(AIEntity *e, int mx, int my);
-void aiSlugAttackInit(AIEntity *e);
-void aiSlugAttackInit2(AIEntity *e);
-void aiDeadWorkerInit(AIEntity *e);
-void aiDeadWorkerInit2(AIEntity *e);
-void aiWorkerInit(AIEntity *e);
-void aiWorkerInit2(AIEntity *e);
-void aiAccountantInit(AIEntity *e);
-void aiAccountantInit2(AIEntity *e);
-void aiFrogStatueInit(AIEntity *e);
-void aiFrogStatueInit2(AIEntity *e);
-void aiFrogStatueAction(AIEntity *e);
+void aiSlugAttackInit(AIEntity *e, int mx, int my);
+void aiSlugAttackInit2(AIEntity *e, int mx, int my);
+void aiDeadWorkerInit(AIEntity *e, int mx, int my);
+void aiDeadWorkerInit2(AIEntity *e, int mx, int my);
+void aiWorkerInit(AIEntity *e, int mx, int my);
+void aiWorkerInit2(AIEntity *e, int mx, int my);
+void aiAccountantInit(AIEntity *e, int mx, int my);
+void aiAccountantInit2(AIEntity *e, int mx, int my);
+void aiFrogStatueInit(AIEntity *e, int mx, int my);
+void aiFrogStatueInit2(AIEntity *e, int mx, int my);
+void aiFrogStatueAction(AIEntity *e, int mx, int my);
-void aiRoboStunnerAction(AIEntity *e);
-void aiRoboStunnerInit(AIEntity *e);
-void aiRoboStunnerInit2(AIEntity *e);
-void aiClubInit(AIEntity *e);
-void aiClubInit2(AIEntity *e);
-void aiSlugSlingerInit(AIEntity *e);
-void aiSlugSlingerInit2(AIEntity *e);
+void aiRoboStunnerAction(AIEntity *e, int mx, int my);
+void aiRoboStunnerInit(AIEntity *e, int mx, int my);
+void aiRoboStunnerInit2(AIEntity *e, int mx, int my);
+void aiClubInit(AIEntity *e, int mx, int my);
+void aiClubInit2(AIEntity *e, int mx, int my);
+void aiSlugSlingerInit(AIEntity *e, int mx, int my);
+void aiSlugSlingerInit2(AIEntity *e, int mx, int my);
-void aiTurnBotAction(AIEntity *e);
-void aiPushBotAction(AIEntity *e);
-void aiOmniBotAction(AIEntity *e);
-void aiOmniBotMove(AIEntity *e);
-void aiLaserAction(AIEntity *e);
+void aiTurnBotAction(AIEntity *e, int mx, int my);
+void aiPushBotAction(AIEntity *e, int mx, int my);
+void aiOmniBotAction(AIEntity *e, int mx, int my);
+void aiOmniBotMove(AIEntity *e, int mx, int my);
+void aiLaserAction(AIEntity *e, int mx, int my);
void aiLaserDraw(AIEntity *e, int mx, int my);
-void aiDiverterAction(AIEntity *e);
+void aiDiverterAction(AIEntity *e, int mx, int my);
void aiDiverterDraw(AIEntity *e, int mx, int my);
-void aiRightBotAction(AIEntity *e);
-void aiDeadEyeAction(AIEntity *e);
+void aiRightBotAction(AIEntity *e, int mx, int my);
+void aiDeadEyeAction(AIEntity *e, int mx, int my);
void aiMeerkatDraw(AIEntity *e, int mx, int my);
-void aiMeerkatAction(AIEntity *e);
-void aiMeerkatLookAround(AIEntity *e);
-void aiDeadEyeWalkInPlace(AIEntity *e);
-void aiFatFrogAction(AIEntity *e);
+void aiMeerkatAction(AIEntity *e, int mx, int my);
+void aiMeerkatLookAround(AIEntity *e, int mx, int my);
+void aiDeadEyeWalkInPlace(AIEntity *e, int mx, int my);
+void aiFatFrogAction(AIEntity *e, int mx, int my);
void aiFatFrogTongueDraw(AIEntity *e, int mx, int my);
-void aiGoodFairyAction(AIEntity *e);
-void aiBadFairyAction(AIEntity *e);
-void aiGatePuddleAction(AIEntity *e);
-void aiIcePuffSnowballAction(AIEntity *e);
+void aiGoodFairyAction(AIEntity *e, int mx, int my);
+void aiBadFairyAction(AIEntity *e, int mx, int my);
+void aiGatePuddleAction(AIEntity *e, int mx, int my);
+void aiIcePuffSnowballAction(AIEntity *e, int mx, int my);
void aiIcePuffSnowballDraw(AIEntity *e, int mx, int my);
-void aiIcePuffAction(AIEntity *e);
-void aiBuzzflyAction(AIEntity *e);
-void aiDragonAction(AIEntity *e);
+void aiIcePuffAction(AIEntity *e, int mx, int my);
+void aiBuzzflyAction(AIEntity *e, int mx, int my);
+void aiDragonAction(AIEntity *e, int mx, int my);
void aiDragonDraw(AIEntity *e, int mx, int my);
+void aiTurnBotInit(AIEntity *e, int mx, int my);
+void aiTurnBotInit2(AIEntity *e, int mx, int my);
+void aiOmniBotInit(AIEntity *e, int mx, int my);
+void aiOmniBotInit2(AIEntity *e, int mx, int my);
+void aiLaserInit(AIEntity *e, int mx, int my);
+void aiLaserInit2(AIEntity *e, int mx, int my);
+void aiDiverterInit(AIEntity *e, int mx, int my);
+void aiDiverterInit2(AIEntity *e, int mx, int my);
+void aiRightBotInit(AIEntity *e, int mx, int my);
+void aiRightBotInit2(AIEntity *e, int mx, int my);
+void aiPushBotInit(AIEntity *e, int mx, int my);
+void aiPushBotInit2(AIEntity *e, int mx, int my);
+void aiDeadEyeInit(AIEntity *e, int mx, int my);
+void aiDeadEyeInit2(AIEntity *e, int mx, int my);
+void aiMeerkatInit(AIEntity *e, int mx, int my);
+void aiMeerkatInit2(AIEntity *e, int mx, int my);
+void aiFatFrogInit(AIEntity *e, int mx, int my);
+void aiFatFrogInit2(AIEntity *e, int mx, int my);
+void aiGoodFairyInit(AIEntity *e, int mx, int my);
+void aiGoodFairyInit2(AIEntity *e, int mx, int my);
+void aiBadFairyInit(AIEntity *e, int mx, int my);
+void aiBadFairyInit2(AIEntity *e, int mx, int my);
+void aiGatePuddleInit(AIEntity *e, int mx, int my);
+void aiGatePuddleInit2(AIEntity *e, int mx, int my);
+void aiIcePuffInit(AIEntity *e, int mx, int my);
+void aiIcePuffInit2(AIEntity *e, int mx, int my);
+void aiBuzzflyInit(AIEntity *e, int mx, int my);
+void aiBuzzflyInit2(AIEntity *e, int mx, int my);
+void aiDragonInit(AIEntity *e, int mx, int my);
+void aiDragonInit2(AIEntity *e, int mx, int my);
+void aiDragonWake(AIEntity *e, int mx, int my);
+void aiDragonUse(AIEntity *e, int mx, int my);
-void aiTurnBotInit(AIEntity *e);
-void aiTurnBotInit2(AIEntity *e);
-void aiListenBotInit(AIEntity *e);
-void aiListenBotInit2(AIEntity *e);
-void aiOmniBotInit(AIEntity *e);
-void aiOmniBotInit2(AIEntity *e);
-void aiLaserInit(AIEntity *e);
-void aiLaserInit2(AIEntity *e);
-void aiDiverterInit(AIEntity *e);
-void aiDiverterInit2(AIEntity *e);
-void aiRightBotInit(AIEntity *e);
-void aiRightBotInit2(AIEntity *e);
-void aiPushBotInit(AIEntity *e);
-void aiPushBotInit2(AIEntity *e);
-void aiDeadEyeInit(AIEntity *e);
-void aiDeadEyeInit2(AIEntity *e);
-void aiMeerkatInit(AIEntity *e);
-void aiMeerkatInit2(AIEntity *e);
-void aiFatFrogInit(AIEntity *e);
-void aiFatFrogInit2(AIEntity *e);
-void aiGoodFairyInit(AIEntity *e);
-void aiGoodFairyInit2(AIEntity *e);
-void aiGoodFairyMoveaway(AIEntity *e);
-void aiBadFairyInit(AIEntity *e);
-void aiBadFairyInit2(AIEntity *e);
-void aiGatePuddleInit(AIEntity *e);
-void aiGatePuddleInit2(AIEntity *e);
-void aiIcePuffInit(AIEntity *e);
-void aiIcePuffInit2(AIEntity *e);
-void aiBuzzflyInit(AIEntity *e);
-void aiBuzzflyInit2(AIEntity *e);
-void aiDragonInit(AIEntity *e);
-void aiDragonInit2(AIEntity *e);
-void aiDragonWake(AIEntity *e);
-void aiDragonUse(AIEntity *e);
+void aiEnvelopeGreenInit(AIEntity *e, int mx, int my);
+void aiEnvelopeGreenInit2(AIEntity *e, int mx, int my);
+void aiGemBlueInit(AIEntity *e, int mx, int my);
+void aiGemBlueInit2(AIEntity *e, int mx, int my);
+void aiGemRedInit(AIEntity *e, int mx, int my);
+void aiGemRedInit2(AIEntity *e, int mx, int my);
+void aiGemGreenInit(AIEntity *e, int mx, int my);
+void aiGemGreenInit2(AIEntity *e, int mx, int my);
-void aiEnvelopeGreenInit(AIEntity *e);
-void aiEnvelopeGreenInit2(AIEntity *e);
-void aiGemBlueInit(AIEntity *e);
-void aiGemBlueInit2(AIEntity *e);
-void aiGemRedInit(AIEntity *e);
-void aiGemRedInit2(AIEntity *e);
-void aiGemGreenInit(AIEntity *e);
-void aiGemGreenInit2(AIEntity *e);
+void aiTeaCupInit(AIEntity *e, int mx, int my);
+void aiTeaCupInit2(AIEntity *e, int mx, int my);
+void aiCookieInit(AIEntity *e, int mx, int my);
+void aiCookieInit2(AIEntity *e, int mx, int my);
+void aiBurgerInit(AIEntity *e, int mx, int my);
+void aiBurgerInit2(AIEntity *e, int mx, int my);
+void aiBookInit(AIEntity *e, int mx, int my);
+void aiBookInit2(AIEntity *e, int mx, int my);
+void aiClipboardInit(AIEntity *e, int mx, int my);
+void aiClipboardInit2(AIEntity *e, int mx, int my);
+void aiNoteInit(AIEntity *e, int mx, int my);
+void aiNoteInit2(AIEntity *e, int mx, int my);
+void aiKeycardWhiteInit(AIEntity *e, int mx, int my);
+void aiKeycardWhiteInit2(AIEntity *e, int mx, int my);
+void aiKeycardBlueInit(AIEntity *e, int mx, int my);
+void aiKeycardBlueInit2(AIEntity *e, int mx, int my);
+void aiKeycardRedInit(AIEntity *e, int mx, int my);
+void aiKeycardRedInit2(AIEntity *e, int mx, int my);
+void aiKeycardGreenInit(AIEntity *e, int mx, int my);
+void aiKeycardGreenInit2(AIEntity *e, int mx, int my);
+void aiKeycardPurpleInit(AIEntity *e, int mx, int my);
+void aiKeycardPurpleInit2(AIEntity *e, int mx, int my);
+void aiKeycardBlackInit(AIEntity *e, int mx, int my);
+void aiKeycardBlackInit2(AIEntity *e, int mx, int my);
+void aiSeedInit(AIEntity *e, int mx, int my);
+void aiSeedInit2(AIEntity *e, int mx, int my);
+void aiSodaInit(AIEntity *e, int mx, int my);
+void aiSodaInit2(AIEntity *e, int mx, int my);
+void aiDollyTool1Init(AIEntity *e, int mx, int my);
+void aiDollyTool1Init2(AIEntity *e, int mx, int my);
+void aiDollyTool2Init(AIEntity *e, int mx, int my);
+void aiDollyTool2Init2(AIEntity *e, int mx, int my);
+void aiDollyTool3Init(AIEntity *e, int mx, int my);
+void aiDollyTool3Init2(AIEntity *e, int mx, int my);
+void aiDollyTool4Init(AIEntity *e, int mx, int my);
+void aiDollyTool4Init2(AIEntity *e, int mx, int my);
+void aiRouterInit(AIEntity *e, int mx, int my);
+void aiRouterInit2(AIEntity *e, int mx, int my);
+void aiSlicerInit(AIEntity *e, int mx, int my);
+void aiSlicerInit2(AIEntity *e, int mx, int my);
+void aiPackageInit(AIEntity *e, int mx, int my);
+void aiPackageInit2(AIEntity *e, int mx, int my);
+void aiMagicEggAction(AIEntity *e, int mx, int my);
+void aiMagicEggInit(AIEntity *e, int mx, int my);
+void aiMagicEggInit2(AIEntity *e, int mx, int my);
+void aiMagicEggUse(AIEntity *e, int mx, int my);
+void aiIceBlockAction(AIEntity *e, int mx, int my);
+void aiIceBlockInit(AIEntity *e, int mx, int my);
+void aiIceBlockInit2(AIEntity *e, int mx, int my);
-void aiTeaCupInit(AIEntity *e);
-void aiTeaCupInit2(AIEntity *e);
-void aiCookieInit(AIEntity *e);
-void aiCookieInit2(AIEntity *e);
-void aiBurgerInit(AIEntity *e);
-void aiBurgerInit2(AIEntity *e);
-void aiBookInit(AIEntity *e);
-void aiBookInit2(AIEntity *e);
-void aiClipboardInit(AIEntity *e);
-void aiClipboardInit2(AIEntity *e);
-void aiNoteInit(AIEntity *e);
-void aiNoteInit2(AIEntity *e);
-void aiKeycardWhiteInit(AIEntity *e);
-void aiKeycardWhiteInit2(AIEntity *e);
-void aiKeycardBlueInit(AIEntity *e);
-void aiKeycardBlueInit2(AIEntity *e);
-void aiKeycardRedInit(AIEntity *e);
-void aiKeycardRedInit2(AIEntity *e);
-void aiKeycardGreenInit(AIEntity *e);
-void aiKeycardGreenInit2(AIEntity *e);
-void aiKeycardPurpleInit(AIEntity *e);
-void aiKeycardPurpleInit2(AIEntity *e);
-void aiKeycardBlackInit(AIEntity *e);
-void aiKeycardBlackInit2(AIEntity *e);
-void aiSeedInit(AIEntity *e);
-void aiSeedInit2(AIEntity *e);
-void aiSodaInit(AIEntity *e);
-void aiSodaInit2(AIEntity *e);
-void aiDollyTool1Init(AIEntity *e);
-void aiDollyTool1Init2(AIEntity *e);
-void aiDollyTool2Init(AIEntity *e);
-void aiDollyTool2Init2(AIEntity *e);
-void aiDollyTool3Init(AIEntity *e);
-void aiDollyTool3Init2(AIEntity *e);
-void aiDollyTool4Init(AIEntity *e);
-void aiDollyTool4Init2(AIEntity *e);
-void aiRouterInit(AIEntity *e);
-void aiRouterInit2(AIEntity *e);
-void aiSlicerInit(AIEntity *e);
-void aiSlicerInit2(AIEntity *e);
-void aiPackageInit(AIEntity *e);
-void aiPackageInit2(AIEntity *e);
-void aiMagicEggAction(AIEntity *e);
-void aiMagicEggInit(AIEntity *e);
-void aiMagicEggInit2(AIEntity *e);
-void aiMagicEggUse(AIEntity *e);
-void aiIceBlockAction(AIEntity *e);
-void aiIceBlockInit(AIEntity *e);
-void aiIceBlockInit2(AIEntity *e);
+void aiCabKeyInit(AIEntity *e, int mx, int my);
+void aiCabKeyInit2(AIEntity *e, int mx, int my);
+void aiItemChickenInit(AIEntity *e, int mx, int my);
+void aiItemChickenInit2(AIEntity *e, int mx, int my);
-void aiCabKeyInit(AIEntity *e);
-void aiCabKeyInit2(AIEntity *e);
-void aiItemChickenInit(AIEntity *e);
-void aiItemChickenInit2(AIEntity *e);
+void aiPdaInit(AIEntity *e, int mx, int my);
+void aiPdaInit2(AIEntity *e, int mx, int my);
+#if 0
+void aiCellUse(AIEntity *e, int mx, int my);
+#endif
+void aiCellInit2(AIEntity *e, int mx, int my);
+void aiCellInit(AIEntity *e, int mx, int my);
+void aiEnvelopeWhiteInit(AIEntity *e, int mx, int my);
+void aiEnvelopeWhiteInit2(AIEntity *e, int mx, int my);
+void aiEnvelopeBlueInit(AIEntity *e, int mx, int my);
+void aiEnvelopeBlueInit2(AIEntity *e, int mx, int my);
+void aiEnvelopeRedInit(AIEntity *e, int mx, int my);
+void aiEnvelopeRedInit2(AIEntity *e, int mx, int my);
+void aiTransceiverInit(AIEntity *e, int mx, int my);
+void aiTransceiverInit2(AIEntity *e, int mx, int my);
+void aiTransceiverAction(AIEntity *e, int mx, int my);
+#if 0
+void aiTransceiverUse(AIEntity *e, int mx, int my);
+#endif
+void aiMonkeystoneInit(AIEntity *e, int mx, int my);
+void aiMonkeystoneAction(AIEntity *e, int mx, int my);
+void aiMonkeystoneInit2(AIEntity *e, int mx, int my);
+void aiMonkeystoneUse(AIEntity *e, int mx, int my);
+void aiGemAction(AIEntity *e, int mx, int my);
+void aiGemWhiteInit(AIEntity *e, int mx, int my);
+void aiGemWhiteInit2(AIEntity *e, int mx, int my);
+void aiGooCupUse(AIEntity *e, int mx, int my);
+void aiGooCupInit(AIEntity *e, int mx, int my);
+void aiGooCupInit2(AIEntity *e, int mx, int my);
-void aiPdaInit(AIEntity *e);
-void aiPdaInit2(AIEntity *e);
-void aiCellUse(AIEntity *e);
-void aiCellInit2(AIEntity *e);
-void aiCellInit(AIEntity *e);
-void aiEnvelopeWhiteInit(AIEntity *e);
-void aiEnvelopeWhiteInit2(AIEntity *e);
-void aiEnvelopeBlueInit(AIEntity *e);
-void aiEnvelopeBlueInit2(AIEntity *e);
-void aiEnvelopeRedInit(AIEntity *e);
-void aiEnvelopeRedInit2(AIEntity *e);
-void aiTransceiverInit(AIEntity *e);
-void aiTransceiverInit2(AIEntity *e);
-void aiTransceiverAction(AIEntity *e);
-void aiTransceiverUse(AIEntity *e);
-void aiMonkeystoneInit(AIEntity *e);
-void aiMonkeystoneAction(AIEntity *e);
-void aiMonkeystoneInit2(AIEntity *e);
-void aiMonkeystoneUse(AIEntity *e);
-void aiMonkeystoneUse2(AIEntity *e);
-void aiGemAction(AIEntity *e);
-void aiGemAction2(AIEntity *e);
-void aiGemWhiteInit(AIEntity *e);
-void aiGemWhiteInit2(AIEntity *e);
-void aiGooCupUse(AIEntity *e);
-void aiGooCupInit(AIEntity *e);
-void aiGooCupInit2(AIEntity *e);
+void aiVortexianAction(AIEntity *e, int mx, int my);
+void aiVortexianUse(AIEntity *e, int mx, int my);
+void aiVortexianInit(AIEntity *e, int mx, int my);
+void aiVortexianInit2(AIEntity *e, int mx, int my);
-void aiVortexianAction(AIEntity *e);
-void aiVortexianUse(AIEntity *e);
-void aiVortexianInit(AIEntity *e);
-void aiVortexianInit2(AIEntity *e);
-
-void aiNoneInit(AIEntity *e);
-void aiNoneInit2(AIEntity *e);
+void aiNoneInit(AIEntity *e, int mx, int my);
+void aiNoneInit2(AIEntity *e, int mx, int my);
void callbackDoorOpenClose(int x, int y);
void callbackAutoDoorOpenClose(int x, int y);
+void callbackAiBarrelExplosionEnd(int x, int y);
// Utility Functions
void aiAnimateStanddown(AIEntity *e, int speed);
-void aiGenericAction(AIEntity *e);
-void aiGetItemAction(AIEntity *e);
+void aiGenericAction(AIEntity *e, int mx, int my);
+void aiGetItemAction(AIEntity *e, int mx, int my);
} // End of Namespace
diff --git a/engines/hdb/ai.h b/engines/hdb/ai.h
index c645cfcb251..950bc449564 100644
--- a/engines/hdb/ai.h
+++ b/engines/hdb/ai.h
@@ -382,9 +382,8 @@ struct AIStateDef {
const char *name;
};
-// Structs for Function Table Lookup for SaveGames
-typedef void(*FuncPtr)(AIEntity *);
-typedef void(*EntFuncPtr)(AIEntity *, int, int);
+// Struct for Function Table Lookup for SaveGames
+typedef void(*FuncPtr)(AIEntity *, int, int);
struct AIEntity {
AIType type;
@@ -397,7 +396,7 @@ struct AIEntity {
FuncPtr aiInit2; // func ptr to init2 routine - graphic init only (this for LoadGame functionality)
FuncPtr aiAction; // func ptr to action routine
FuncPtr aiUse; // func ptr to use routine
- EntFuncPtr aiDraw; // func ptr to extra drawing routine (only for special stuff) - pass in mapx, mapy
+ FuncPtr aiDraw; // func ptr to extra drawing routine (only for special stuff) - pass in mapx, mapy
char luaFuncInit[32]; // Lua function for Init (always called after entity's init). These are ptrs into the map header.
char luaFuncAction[32]; // Lua function for Action
@@ -573,7 +572,7 @@ struct AIEntLevel2 {
uint16 y;
Tile *draw;
AIEntity *e;
- EntFuncPtr aiDraw;
+ FuncPtr aiDraw;
uint32 stunnedWait;
AIEntLevel2() : x(0), y(0), draw(nullptr), e(nullptr), aiDraw(nullptr), stunnedWait(0) {}
diff --git a/engines/hdb/hdb.cpp b/engines/hdb/hdb.cpp
index 8f3cae23d4f..2a381182832 100644
--- a/engines/hdb/hdb.cpp
+++ b/engines/hdb/hdb.cpp
@@ -598,7 +598,7 @@ void HDBGame::useEntity(AIEntity *e) {
e = &temp;
if (temp.aiUse)
- temp.aiUse(&temp);
+ temp.aiUse(&temp, 0, 0);
if (temp.luaFuncUse[0])
_lua->callFunction(temp.luaFuncUse, 0);
@@ -609,7 +609,7 @@ void HDBGame::useEntity(AIEntity *e) {
return;
if (e->aiUse)
- e->aiUse(e);
+ e->aiUse(e, 0, 0);
if (e->luaFuncUse[0])
_lua->callFunction(e->luaFuncUse, 0);
diff --git a/engines/hdb/saveload.cpp b/engines/hdb/saveload.cpp
index a28e64f148f..96976b74603 100644
--- a/engines/hdb/saveload.cpp
+++ b/engines/hdb/saveload.cpp
@@ -265,7 +265,7 @@ void AIEntity::save(Common::OutSaveFile *out) {
strncpy(funcString, lookUp, 31);
out->write(funcString, 32);
- lookUp = g_hdb->_ai->funcLookUp((FuncPtr)aiDraw);
+ lookUp = g_hdb->_ai->funcLookUp(aiDraw);
memset(&funcString, 0, 32);
if (!lookUp && aiDraw)
error("AIEntity::save: No matching DRAW function for func-string for %s entity", AIType2Str(type));
@@ -311,11 +311,9 @@ void AIEntity::save(Common::OutSaveFile *out) {
void AIEntity::load(Common::InSaveFile *in) {
char funcString[32];
- FuncPtr init, init2, use, action;
- EntFuncPtr drawf;
+ FuncPtr init, init2, use, action, drawf;
- action = init = init2 = use = nullptr;
- drawf = nullptr;
+ action = init = init2 = use = drawf = nullptr;
// Read 32-char names for the function ptrs we have in entity struct
in->read(funcString, 32);
@@ -336,7 +334,7 @@ void AIEntity::load(Common::InSaveFile *in) {
in->read(funcString, 32);
if (funcString[0])
- drawf = (EntFuncPtr)g_hdb->_ai->funcLookUp(funcString);
+ drawf = g_hdb->_ai->funcLookUp(funcString);
// Load AIEntity
type = (AIType)in->readSint32LE();
More information about the Scummvm-git-logs
mailing list