mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-01 15:55:45 +00:00
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.
This commit is contained in:
parent
27fd68cf20
commit
cb949044db
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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}
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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) {}
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user