diff options
author | Nipun Garg | 2019-07-08 21:42:35 +0530 |
---|---|---|
committer | Eugene Sandulenko | 2019-09-03 17:17:15 +0200 |
commit | ebbee5cef40a8ce7152df717cd804dbf89a22198 (patch) | |
tree | a02da2e040a6e5eeb5dd7af154af09f6ebafedcb | |
parent | fffa7bd1a23b6d0695c5055cd580d0603ff9640d (diff) | |
download | scummvm-rg350-ebbee5cef40a8ce7152df717cd804dbf89a22198.tar.gz scummvm-rg350-ebbee5cef40a8ce7152df717cd804dbf89a22198.tar.bz2 scummvm-rg350-ebbee5cef40a8ce7152df717cd804dbf89a22198.zip |
HDB: Add FuncLookUp structs and functions
-rw-r--r-- | engines/hdb/ai-init.cpp | 253 | ||||
-rw-r--r-- | engines/hdb/ai.h | 12 |
2 files changed, 265 insertions, 0 deletions
diff --git a/engines/hdb/ai-init.cpp b/engines/hdb/ai-init.cpp index 47e8a11520..b7869e144f 100644 --- a/engines/hdb/ai-init.cpp +++ b/engines/hdb/ai-init.cpp @@ -671,6 +671,233 @@ AIEntTypeInfo aiEntList[] = { { END_AI_TYPES, NULL, NULL, NULL, NULL } }; +FuncLookUp aiFuncList[] = { + {aiPlayerInit, "aiPlayerInit"}, + {aiPlayerInit2, "aiPlayerInit2"}, + {aiPlayerAction, "aiPlayerAction"}, + {(FuncPtr)aiPlayerDraw, "aiPlayerDraw"}, + {aiGemAttackInit, "aiGemAttackInit"}, + {aiGemAttackAction, "aiGemAttackAction"}, + {aiDollyInit, "aiDollyInit"}, + {aiDollyInit2, "aiDollyInit2"}, + {aiSergeantInit, "aiSergeantInit"}, + {aiSergeantInit2, "aiSergeantInit2"}, + {aiSergeantAction, "aiSergeantAction"}, + {aiSpacedudeInit, "aiSpacedudeInit"}, + {aiSpacedudeInit2, "aiSpacedudeInit2"}, + {aiChickenInit, "aiChickenInit"}, + {aiChickenInit2, "aiChickenInit2"}, + {aiChickenAction, "aiChickenAction"}, + {aiChickenUse, "aiChickenUse"}, + {aiCrateInit, "aiCrateInit"}, + {aiCrateInit2, "aiCrateInit2"}, + {aiCrateAction, "aiCrateAction"}, + {aiBarrelLightInit, "aiBarrelLightInit"}, + {aiBarrelLightInit2, "aiBarrelLightInit2"}, + {aiBarrelLightAction, "aiBarrelLightAction"}, + {aiBarrelHeavyInit, "aiBarrelHeavyInit"}, + {aiBarrelHeavyInit2, "aiBarrelHeavyInit2"}, + {aiBarrelHeavyAction, "aiBarrelHeavyAction"}, + {aiBarrelExplode, "aiBarrelExplode"}, + {aiBarrelExplodeInit, "aiBarrelExplodeInit"}, + {aiBarrelExplodeInit2, "aiBarrelExplodeInit2"}, + {aiBarrelExplodeSpread, "aiBarrelExplodeSpread"}, + {aiBarrelExplodeAction, "aiBarrelExplodeAction"}, + {aiCellInit, "aiCellInit"}, + {aiCellInit2, "aiCellInit2"}, + {aiMaintBotInit, "aiMaintBotInit"}, + {aiMaintBotInit2, "aiMaintBotInit2"}, + {aiMaintBotAction, "aiMaintBotAction"}, + {aiPdaInit, "aiPdaInit"}, + {aiPdaInit2, "aiPdaInit2"}, + {aiCabKeyInit, "aiCabKeyInit"}, + {aiCabKeyInit2, "aiCabKeyInit2"}, + {aiItemChickenInit, "aiItemChickenInit"}, + {aiItemChickenInit2, "aiItemChickenInit2"}, + {aiEnvelopeWhiteInit, "aiEnvelopeWhiteInit"}, + {aiEnvelopeWhiteInit2, "aiEnvelopeWhiteInit2"}, + {aiEnvelopeBlueInit, "aiEnvelopeBlueInit"}, + {aiEnvelopeBlueInit2, "aiEnvelopeBlueInit2"}, + {aiEnvelopeRedInit, "aiEnvelopeRedInit"}, + {aiEnvelopeRedInit2, "aiEnvelopeRedInit2"}, + {aiTransceiverInit, "aiTransceiverInit"}, + {aiTransceiverInit2, "aiTransceiverInit2"}, + {aiTransceiverAction, "aiTransceiverAction"}, + {aiMonkeystoneInit, "aiMonkeystoneInit"}, + {aiMonkeystoneInit2, "aiMonkeystoneInit2"}, + {aiMonkeystoneUse, "aiMonkeystoneUse"}, + {aiMonkeystoneAction, "aiMonkeystoneAction"}, + {aiGemAction, "aiGemAction"}, + {aiGemWhiteInit, "aiGemWhiteInit"}, + {aiGemWhiteInit2, "aiGemWhiteInit2"}, + {aiGooCupInit, "aiGooCupInit"}, + {aiGooCupInit2, "aiGooCupInit2"}, + {aiGooCupUse, "aiGooCupUse"}, + {aiVortexianInit, "aiVortexianInit"}, + {aiVortexianInit2, "aiVortexianInit2"}, + {aiVortexianAction, "aiVortexianAction"}, + {aiVortexianUse, "aiVortexianUse"}, + {aiNoneInit, "aiNoneInit"}, + {aiGenericAction, "aiGenericAction"}, + {aiGetItemAction, "aiGetItemAction"}, + {aiScientistInit, "aiScientistInit"}, + {aiScientistInit2, "aiScientistInit2"}, + {aiFourFirerInit, "aiFourFirerInit"}, + {aiFourFirerInit2, "aiFourFirerInit2"}, + {aiFourFirerAction, "aiFourFirerAction"}, + {aiRailRiderInit, "aiRailRiderInit"}, + {aiRailRiderInit2, "aiRailRiderInit2"}, + {aiRailRiderAction, "aiRailRiderAction"}, + {aiRailRiderUse, "aiRailRiderUse"}, + {aiRailRiderOnUse, "aiRailRiderOnUse"}, + {aiRailRiderOnAction, "aiRailRiderOnAction"}, + {aiShockBotInit, "aiShockBotInit"}, + {aiShockBotInit2, "aiShockBotInit2"}, + {aiShockBotAction, "aiShockBotAction"}, + {(FuncPtr)aiShockBotShock, "aiShockBotShock"}, + {aiOmniBotMissileInit, "aiOmniBotMissileInit"}, + {aiOmniBotMissileInit2, "aiOmniBotMissileInit2"}, + {aiOmniBotMissileAction, "aiOmniBotMissileAction"}, + {aiSlugAttackInit, "aiSlugAttackInit"}, + {aiSlugAttackInit2, "aiSlugAttackInit2"}, + {aiSlugAttackAction, "aiSlugAttackAction"}, + {(FuncPtr)aiSlugAttackDraw, "aiSlugAttackDraw"}, + {aiDeadWorkerInit, "aiDeadWorkerInit"}, + {aiDeadWorkerInit2, "aiDeadWorkerInit2"}, + {aiWorkerInit, "aiWorkerInit"}, + {aiWorkerInit2, "aiWorkerInit2"}, + {aiAccountantInit, "aiAccountantInit"}, + {aiAccountantInit2, "aiAccountantInit2"}, + {aiFrogStatueInit, "aiFrogStatueInit"}, + {aiFrogStatueInit2, "aiFrogStatueInit2"}, + {aiFrogStatueAction, "aiFrogStatueAction"}, + {aiClubInit, "aiClubInit"}, + {aiClubInit2, "aiClubInit2"}, + {aiRoboStunnerInit, "aiRoboStunnerInit"}, + {aiRoboStunnerInit2, "aiRoboStunnerInit2"}, + {aiRoboStunnerAction, "aiRoboStunnerAction"}, + {aiSlugSlingerInit2, "aiSlugSlingerInit2"}, + {aiSlugSlingerInit, "aiSlugSlingerInit"}, + {aiTurnBotAction, "aiTurnBotAction"}, + {aiTurnBotInit, "aiTurnBotInit"}, + {aiTurnBotInit2, "aiTurnBotInit2"}, + {aiPushBotInit, "aiPushBotInit"}, + {aiPushBotInit2, "aiPushBotInit2"}, + {aiPushBotAction, "aiPushBotAction"}, + {aiOmniBotInit, "aiOmniBotInit"}, + {aiOmniBotInit2, "aiOmniBotInit2"}, + {aiOmniBotAction, "aiOmniBotAction"}, + {aiOmniBotMove, "aiOmniBotMove"}, + {aiLaserAction, "aiLaserAction"}, + {(FuncPtr)aiLaserDraw, "aiLaserDraw"}, + {aiLaserInit, "aiLaserInit"}, + {aiLaserInit2, "aiLaserInit2"}, + {aiDiverterInit, "aiDiverterInit"}, + {aiDiverterInit2, "aiDiverterInit2"}, + {aiDiverterAction, "aiDiverterAction"}, + {(FuncPtr)aiDiverterDraw, "aiDiverterDraw"}, + {aiRightBotInit, "aiRightBotInit"}, + {aiRightBotInit2, "aiRightBotInit2"}, + {aiRightBotAction, "aiRightBotAction"}, + {aiPushBotInit, "aiPushBotInit"}, + {aiPushBotInit2, "aiPushBotInit2"}, + {aiPushBotAction, "aiPushBotAction"}, + {aiDeadEyeWalkInPlace, "aiDeadEyeWalkInPlace" }, + {aiDeadEyeInit, "aiDeadEyeInit"}, + {aiDeadEyeInit2, "aiDeadEyeInit2"}, + {aiDeadEyeAction, "aiDeadEyeAction"}, + {aiMeerkatLookAround, "aiMeerkatLookAround" }, + {aiMeerkatInit, "aiMeerkatInit"}, + {aiMeerkatInit2, "aiMeerkatInit2"}, + {(FuncPtr)aiMeerkatDraw, "aiMeerkatDraw"}, + {aiMeerkatAction, "aiMeerkatAction"}, + {aiFatFrogInit, "aiFatFrogInit"}, + {aiFatFrogInit2, "aiFatFrogInit2"}, + {aiFatFrogAction, "aiFatFrogAction"}, + {(FuncPtr)aiFatFrogTongueDraw, "aiFatFrogTongueDraw"}, + {aiGoodFairyInit, "aiGoodFairyInit"}, + {aiGoodFairyInit2, "aiGoodFairyInit2"}, + {aiGoodFairyAction, "aiGoodFairyAction"}, + {aiBadFairyInit, "aiBadFairyInit"}, + {aiBadFairyInit2, "aiBadFairyInit2"}, + {aiBadFairyAction, "aiBadFairyAction"}, + {aiGatePuddleInit, "aiGatePuddleInit"}, + {aiGatePuddleInit2, "aiGatePuddleInit2"}, + {aiGatePuddleAction, "aiGatePuddleAction"}, + {aiIcePuffSnowballAction, "aiIcePuffSnowballAction" }, + {(FuncPtr)aiIcePuffSnowballDraw, "aiIcePuffSnowballDraw"}, + {aiIcePuffInit, "aiIcePuffInit"}, + {aiIcePuffInit2, "aiIcePuffInit2"}, + {aiIcePuffAction, "aiIcePuffAction"}, + {aiBuzzflyInit, "aiBuzzflyInit"}, + {aiBuzzflyInit2, "aiBuzzflyInit2"}, + {aiBuzzflyAction, "aiBuzzflyAction"}, + {aiDragonInit, "aiDragonInit"}, + {aiDragonInit2, "aiDragonInit2"}, + {aiDragonAction, "aiDragonAction"}, + {aiDragonUse, "aiDragonUse" }, + {aiDragonWake, "aiDragonWake"}, + {(FuncPtr)aiDragonDraw, "aiDragonDraw"}, + {aiEnvelopeGreenInit, "aiEnvelopeGreenInit"}, + {aiEnvelopeGreenInit2, "aiEnvelopeGreenInit2"}, + {aiGemBlueInit, "aiGemBlueInit"}, + {aiGemBlueInit2, "aiGemBlueInit2"}, + {aiGemRedInit, "aiGemRedInit"}, + {aiGemRedInit2, "aiGemRedInit2"}, + {aiGemGreenInit, "aiGemGreenInit"}, + {aiGemGreenInit2, "aiGemGreenInit2"}, + {aiTeaCupInit, "aiTeaCupInit"}, + {aiTeaCupInit2, "aiTeaCupInit2"}, + {aiCookieInit, "aiCookieInit"}, + {aiCookieInit2, "aiCookieInit2"}, + {aiBurgerInit, "aiBurgerInit"}, + {aiBurgerInit2, "aiBurgerInit2"}, + {aiBookInit, "aiBookInit"}, + {aiBookInit2, "aiBookInit2"}, + {aiClipboardInit, "aiClipboardInit"}, + {aiClipboardInit2, "aiClipboardInit2"}, + {aiNoteInit, "aiNoteInit"}, + {aiNoteInit2, "aiNoteInit2"}, + {aiKeycardWhiteInit, "aiKeycardWhiteInit"}, + {aiKeycardWhiteInit2, "aiKeycardWhiteInit2"}, + {aiKeycardBlueInit, "aiKeycardBlueInit"}, + {aiKeycardBlueInit2, "aiKeycardBlueInit2"}, + {aiKeycardRedInit, "aiKeycardRedInit"}, + {aiKeycardRedInit2, "aiKeycardRedInit2"}, + {aiKeycardGreenInit, "aiKeycardGreenInit"}, + {aiKeycardGreenInit2, "aiKeycardGreenInit2"}, + {aiKeycardPurpleInit, "aiKeycardPurpleInit"}, + {aiKeycardPurpleInit2, "aiKeycardPurpleInit2"}, + {aiKeycardBlackInit, "aiKeycardBlackInit"}, + {aiKeycardBlackInit2, "aiKeycardBlackInit2"}, + {aiSeedInit, "aiSeedInit"}, + {aiSeedInit2, "aiSeedInit2"}, + {aiSodaInit, "aiSodaInit"}, + {aiSodaInit2, "aiSodaInit2"}, + {aiDollyTool1Init, "aiDollyTool1Init"}, + {aiDollyTool1Init2, "aiDollyTool1Init2"}, + {aiDollyTool2Init, "aiDollyTool2Init"}, + {aiDollyTool2Init2, "aiDollyTool2Init2"}, + {aiDollyTool3Init, "aiDollyTool3Init"}, + {aiDollyTool3Init2, "aiDollyTool3Init2"}, + {aiDollyTool4Init, "aiDollyTool4Init"}, + {aiDollyTool4Init2, "aiDollyTool4Init2"}, + {aiRouterInit, "aiRouterInit"}, + {aiRouterInit2, "aiRouterInit2"}, + {aiSlicerInit, "aiSlicerInit"}, + {aiSlicerInit2, "aiSlicerInit2"}, + {aiPackageInit, "aiPackageInit"}, + {aiPackageInit2, "aiPackageInit2"}, + {aiMagicEggInit, "aiMagicEggInit"}, + {aiMagicEggInit2, "aiMagicEggInit2"}, + {aiMagicEggAction, "aiMagicEggAction"}, + {aiMagicEggUse, "aiMagicEggUse"}, + {aiIceBlockInit, "aiIceBlockInit"}, + {aiIceBlockInit2, "aiIceBlockInit2"}, + {aiIceBlockAction, "aiIceBlockAction"}, + {NULL, NULL} +}; + AI::AI() { _ents = new Common::Array<AIEntity *>; _floats = new Common::Array<AIEntity *>; @@ -807,6 +1034,32 @@ void AI::clearPersistent() { _numGems = _numGooCups = _numMonkeystones = 0; } +const char *AI::funcLookUp(void(*function)(AIEntity *e)) { + if (!function) + return NULL; + + int i = 0; + while (aiFuncList[i].funcName) { + if (aiFuncList[i].function == function) + return aiFuncList[i].funcName; + i++; + } + return NULL; +} + +FuncPtr AI::funcLookUp(const char *function) { + if (!function) + return NULL; + + int i = 0; + while (aiFuncList[i].funcName) { + if (!scumm_stricmp(aiFuncList[i].funcName, function)) + return aiFuncList[i].function; + i++; + } + return NULL; +} + void AI::restartSystem() { warning("STUB: AI::restartSystem incomplete"); diff --git a/engines/hdb/ai.h b/engines/hdb/ai.h index 7328c11730..3cb0cc0610 100644 --- a/engines/hdb/ai.h +++ b/engines/hdb/ai.h @@ -541,6 +541,10 @@ struct AIEntity { } }; +// Structs for Function Table Lookup for SaveGames +typedef void(*FuncPtr)(AIEntity *); +typedef void(*EntFuncPtr)(AIEntity *, int, int); + struct AIEntTypeInfo { AIType type; const char *luaName; @@ -549,7 +553,13 @@ struct AIEntTypeInfo { void (*initFunc2)(AIEntity *e); }; +struct FuncLookUp { + void(*function)(AIEntity *e); + const char *funcName; +}; + extern AIEntTypeInfo aiEntList[]; +extern FuncLookUp aiFuncList[]; struct AIEntLevel2 { uint16 x; @@ -783,6 +793,8 @@ public: bool init(); void clearPersistent(); void restartSystem(); + const char *funcLookUp(void(*function)(AIEntity *e)); + FuncPtr funcLookUp(const char *function); void save(Common::OutSaveFile *out); void loadSaveFile(Common::InSaveFile *in); void initAnimInfo(); |