diff options
author | Nipun Garg | 2019-06-30 03:39:40 +0530 |
---|---|---|
committer | Eugene Sandulenko | 2019-09-03 17:17:05 +0200 |
commit | bebb2e39567f24d35a12e875ad7a935e894bfca5 (patch) | |
tree | 0e6bf6a361a58bc794b6c5bde0e35d1a3510ff15 /engines | |
parent | 2f67167c272bb25891334de9ee0376dbd37b2763 (diff) | |
download | scummvm-rg350-bebb2e39567f24d35a12e875ad7a935e894bfca5.tar.gz scummvm-rg350-bebb2e39567f24d35a12e875ad7a935e894bfca5.tar.bz2 scummvm-rg350-bebb2e39567f24d35a12e875ad7a935e894bfca5.zip |
HDB: Add utility functions
aiAnimateStanddown, aiGenericAction, aiGetItemAction
Diffstat (limited to 'engines')
-rw-r--r-- | engines/hdb/ai-player.cpp | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/engines/hdb/ai-player.cpp b/engines/hdb/ai-player.cpp index 8ff503c10c..100f186fef 100644 --- a/engines/hdb/ai-player.cpp +++ b/engines/hdb/ai-player.cpp @@ -1274,15 +1274,40 @@ void callbackDoorOpenClose(int x, int y) { // Utility Functions void aiAnimateStanddown(AIEntity *e, int speed) { - warning("STUB: AI: aiAnimateStanddown required"); + if (e->value2-- > 0) + return; + e->value2 = speed; + + if (e->type == AI_GUY && e->animFrame > 0) + e->value2 = 0; + e->draw = e->standdownGfx[e->animFrame]; + e->animFrame++; + if (e->animFrame >= e->standdownFrames) + e->animFrame = 0; } void aiGenericAction(AIEntity *e) { - warning("STUB: AI: aiGenericAction required"); + if (!e->goalX) + g_hdb->_ai->findPath(e); + else if (onEvenTile(e->x, e->y)) + debug(9, "STUB: Play SND_FOOTSTEPS"); + g_hdb->_ai->animateEntity(e); } void aiGetItemAction(AIEntity *e) { - warning("STUB: AI: aiGetItemAction required"); + 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); + if (e->luaFuncUse[0]) + g_hdb->_lua->callFunction(e->luaFuncUse, 0); + + g_hdb->_ai->getItemSound(e->type); + g_hdb->_ai->addToInventory(e); + } } } // End of Namespace |