diff options
author | Nipun Garg | 2019-06-22 07:41:58 +0530 |
---|---|---|
committer | Eugene Sandulenko | 2019-09-03 17:16:55 +0200 |
commit | a39b9f373ca42c1ff25d2d479fee7efc071da498 (patch) | |
tree | d6aeef26dc149e9da44efe29b95f1e0c71bd3551 /engines/hdb | |
parent | 653960f58aa623d6155cda6a03632a718f47a2c5 (diff) | |
download | scummvm-rg350-a39b9f373ca42c1ff25d2d479fee7efc071da498.tar.gz scummvm-rg350-a39b9f373ca42c1ff25d2d479fee7efc071da498.tar.bz2 scummvm-rg350-a39b9f373ca42c1ff25d2d479fee7efc071da498.zip |
HDB: Modify AI pointer arrays to be struct arrays
Diffstat (limited to 'engines/hdb')
-rw-r--r-- | engines/hdb/ai-cinematic.cpp | 4 | ||||
-rw-r--r-- | engines/hdb/ai-funcs.cpp | 36 | ||||
-rw-r--r-- | engines/hdb/ai-init.cpp | 13 | ||||
-rw-r--r-- | engines/hdb/ai-inventory.cpp | 10 | ||||
-rw-r--r-- | engines/hdb/ai-lists.cpp | 36 | ||||
-rw-r--r-- | engines/hdb/ai.h | 8 |
6 files changed, 48 insertions, 59 deletions
diff --git a/engines/hdb/ai-cinematic.cpp b/engines/hdb/ai-cinematic.cpp index b9a55a51f9..eb4b14c879 100644 --- a/engines/hdb/ai-cinematic.cpp +++ b/engines/hdb/ai-cinematic.cpp @@ -216,8 +216,8 @@ void AI::processCines() { } warning("STUB: PROCESSCINES: USEENTITY: CheckActionList required;"); for (int i = 0;i < kMaxAutoActions;i++) { - if (Common::matchString(_autoActions[i]->entityName, _cine[i]->string) && !_autoActions[i]->activated) - checkAutoList(&_dummyPlayer, _autoActions[i]->x, _autoActions[i]->y); + if (Common::matchString(_autoActions[i].entityName, _cine[i]->string) && !_autoActions[i].activated) + checkAutoList(&_dummyPlayer, _autoActions[i].x, _autoActions[i].y); } complete = true; break; diff --git a/engines/hdb/ai-funcs.cpp b/engines/hdb/ai-funcs.cpp index eab65387c1..6eadc92942 100644 --- a/engines/hdb/ai-funcs.cpp +++ b/engines/hdb/ai-funcs.cpp @@ -569,7 +569,7 @@ void AI::initAllEnts() { } for (int i = 0; i < _numInventory; i++) { - AIEntity *temp = _inventory[i]->ent; + AIEntity *temp = _inventory[i].ent; // Clear out all ptrs in entity before writing for (int j = 0; i < kMaxAnimFrames; i++) { @@ -1116,11 +1116,11 @@ void AI::drawEnts(int x, int y, int w, int h) { if (e->type == AI_LASER || e->type == AI_DIVERTER) { if (e->aiDraw) { if (e->level == 2 && _numLevel2Ents < kMaxLevel2Ents) { - _entsLevel2[_numLevel2Ents]->aiDraw = e->aiDraw; - _entsLevel2[_numLevel2Ents]->x = x; - _entsLevel2[_numLevel2Ents]->y = y; - _entsLevel2[_numLevel2Ents]->e = e; - _entsLevel2[_numLevel2Ents]->stunnedWait = 0; + _entsLevel2[_numLevel2Ents].aiDraw = e->aiDraw; + _entsLevel2[_numLevel2Ents].x = x; + _entsLevel2[_numLevel2Ents].y = y; + _entsLevel2[_numLevel2Ents].e = e; + _entsLevel2[_numLevel2Ents].stunnedWait = 0; _numLevel2Ents++; } else { e->aiDraw(e, x, y); @@ -1132,12 +1132,12 @@ void AI::drawEnts(int x, int y, int w, int h) { // If extra drawing func is present, call it if (e->aiDraw && e->type != AI_LASER && e->type != AI_DIVERTER) { if (e->level == 2 && _numLevel2Ents < kMaxLevel2Ents) { - _entsLevel2[_numLevel2Ents]->aiDraw = e->aiDraw; - _entsLevel2[_numLevel2Ents]->draw = e->draw; - _entsLevel2[_numLevel2Ents]->x = x; - _entsLevel2[_numLevel2Ents]->y = y; - _entsLevel2[_numLevel2Ents]->e = e; - _entsLevel2[_numLevel2Ents]->stunnedWait = 0; + _entsLevel2[_numLevel2Ents].aiDraw = e->aiDraw; + _entsLevel2[_numLevel2Ents].draw = e->draw; + _entsLevel2[_numLevel2Ents].x = x; + _entsLevel2[_numLevel2Ents].y = y; + _entsLevel2[_numLevel2Ents].e = e; + _entsLevel2[_numLevel2Ents].stunnedWait = 0; _numLevel2Ents++; } else e->aiDraw(e, x, y); @@ -1153,12 +1153,12 @@ void AI::drawEnts(int x, int y, int w, int h) { break; default: if (e->level == 2 && _numLevel2Ents < kMaxLevel2Ents) { - _entsLevel2[_numLevel2Ents]->aiDraw = NULL; - _entsLevel2[_numLevel2Ents]->draw = e->draw; - _entsLevel2[_numLevel2Ents]->x = e->x - x + e->drawXOff; - _entsLevel2[_numLevel2Ents]->y = e->y - y + e->drawYOff; - _entsLevel2[_numLevel2Ents]->e = NULL; - _entsLevel2[_numLevel2Ents]->stunnedWait = e->stunnedWait; + _entsLevel2[_numLevel2Ents].aiDraw = NULL; + _entsLevel2[_numLevel2Ents].draw = e->draw; + _entsLevel2[_numLevel2Ents].x = e->x - x + e->drawXOff; + _entsLevel2[_numLevel2Ents].y = e->y - y + e->drawYOff; + _entsLevel2[_numLevel2Ents].e = NULL; + _entsLevel2[_numLevel2Ents].stunnedWait = e->stunnedWait; _numLevel2Ents++; } else { if (e->draw) diff --git a/engines/hdb/ai-init.cpp b/engines/hdb/ai-init.cpp index 05e939f821..7a7d47ddc6 100644 --- a/engines/hdb/ai-init.cpp +++ b/engines/hdb/ai-init.cpp @@ -671,16 +671,6 @@ AI::AI() { _floats = new Common::Array<AIEntity *>; _animTargets = new Common::Array<AnimTarget *>; - for (int i = 0; i < kMaxLevel2Ents; i++) { - _entsLevel2[i] = new AIEntLevel2; - } - for (int i = 0; i < kMaxActions; i++) { - _actions[i] = new ActionInfo; - } - for (int i = 0; i < kMaxAutoActions; i++) { - _autoActions[i] = new AutoAction; - } - // REMOVE: Remove for final. Used here due to lack of a MENU _numGems = _numGooCups = _numMonkeystones = _numInventory = 0; } @@ -689,9 +679,6 @@ AI::~AI() { delete _ents; delete _floats; delete _animTargets; - for (int i = 0; i < kMaxLevel2Ents;i++) { - delete _entsLevel2[i]; - } } bool AI::init() { diff --git a/engines/hdb/ai-inventory.cpp b/engines/hdb/ai-inventory.cpp index 7505aef3df..25376bf513 100644 --- a/engines/hdb/ai-inventory.cpp +++ b/engines/hdb/ai-inventory.cpp @@ -61,7 +61,7 @@ bool AI::addToInventory(AIEntity *e) { return false; } - _inventory[_numInventory]->ent = e; + _inventory[_numInventory].ent = e; _numInventory++; // If weapon, ready it @@ -84,12 +84,14 @@ bool AI::addToInventory(AIEntity *e) { void AI::clearInventory() { int keepslot = 0; for (int i = 0; i < _numInventory; i++) { - if (!_inventory[i]->keep) { - _inventory[i] = NULL; + if (!_inventory[i].keep) { + memset(&_inventory[i], 0, sizeof(InvEnt)); } else { if (i != keepslot) { _inventory[keepslot] = _inventory[i]; - _inventory[i] = NULL; + _inventory[keepslot].ent = _inventory[i].ent; + _inventory[keepslot].keep = _inventory[i].keep; + memset(&_inventory[i], 0, sizeof(InvEnt)); } keepslot++; } diff --git a/engines/hdb/ai-lists.cpp b/engines/hdb/ai-lists.cpp index 1ef2e41edd..5165313252 100644 --- a/engines/hdb/ai-lists.cpp +++ b/engines/hdb/ai-lists.cpp @@ -139,25 +139,25 @@ void AI::addToAutoList(int x, int y, const char *luaFuncInit, const char *luaFun const char *get; for (int i = 0;i < kMaxAutoActions;i++) { - if (!_autoActions[i]->x) { - _autoActions[i]->x = x; - _autoActions[i]->y = y; - _autoActions[i]->activated = false; + if (!_autoActions[i].x) { + _autoActions[i].x = x; + _autoActions[i].y = y; + _autoActions[i].activated = false; if (luaFuncInit[0] != '*') - strcpy(&_autoActions[i]->luaFuncInit[0], luaFuncInit); + strcpy(&_autoActions[i].luaFuncInit[0], luaFuncInit); if (luaFuncUse[0] != '*') - strcpy(&_autoActions[i]->luaFuncUse[0], luaFuncUse); + strcpy(&_autoActions[i].luaFuncUse[0], luaFuncUse); - if (_autoActions[i]->luaFuncInit[0]) { - g_hdb->_lua->callFunction(_autoActions[i]->luaFuncInit, 2); + if (_autoActions[i].luaFuncInit[0]) { + g_hdb->_lua->callFunction(_autoActions[i].luaFuncInit, 2); get = g_hdb->_lua->getStringOffStack(); if (!get) return; - strcpy(&_autoActions[i]->entityName[0], get); + strcpy(&_autoActions[i].entityName[0], get); get = g_hdb->_lua->getStringOffStack(); if (!get) return; - strcpy(&_autoActions[i]->entityName[0], get); + strcpy(&_autoActions[i].entityName[0], get); } return; } @@ -166,8 +166,8 @@ void AI::addToAutoList(int x, int y, const char *luaFuncInit, const char *luaFun void AI::autoDeactivate(int x, int y) { for (int i = 0; i < kMaxAutoActions;i++) { - if (_autoActions[i]->x == x && _autoActions[i]->y == y) { - _autoActions[i]->activated = false; + if (_autoActions[i].x == x && _autoActions[i].y == y) { + _autoActions[i].activated = false; return; } } @@ -299,12 +299,12 @@ bool AI::activateAction(AIEntity *e, int x, int y, int targetX, int targetY) { bool AI::checkAutoList(AIEntity *e, int x, int y) { for (int i = 0;i < kMaxAutoActions;i++) { - if (_autoActions[i]->x == x && _autoActions[i]->y == y && !_autoActions[i]->activated) { + if (_autoActions[i].x == x && _autoActions[i].y == y && !_autoActions[i].activated) { bool success = activateAction(e, x, y, 0, 0); - _autoActions[i]->activated = true; + _autoActions[i].activated = true; - if (success && _autoActions[i]->luaFuncUse[0]) - g_hdb->_lua->callFunction(_autoActions[i]->luaFuncUse, 0); + if (success && _autoActions[i].luaFuncUse[0]) + g_hdb->_lua->callFunction(_autoActions[i].luaFuncUse, 0); if (e == _player) { lookAtXY(x, y); @@ -319,8 +319,8 @@ bool AI::checkAutoList(AIEntity *e, int x, int y) { bool AI::autoActive(int x, int y) { for (int i = 0;i < kMaxAutoActions;i++) { - if (_autoActions[i]->x == x && _autoActions[i]->y == y) { - if (!_autoActions[i]->activated) + if (_autoActions[i].x == x && _autoActions[i].y == y) { + if (!_autoActions[i].activated) return false; return true; } diff --git a/engines/hdb/ai.h b/engines/hdb/ai.h index d11442bc07..df700722e7 100644 --- a/engines/hdb/ai.h +++ b/engines/hdb/ai.h @@ -876,19 +876,19 @@ public: int _kcHolderBlackOff; int _kcHolderBlackOn; - AIEntLevel2 *_entsLevel2[kMaxLevel2Ents]; + AIEntLevel2 _entsLevel2[kMaxLevel2Ents]; int _numLevel2Ents; - InvEnt *_inventory[kMaxInventory]; + InvEnt _inventory[kMaxInventory]; int _numInventory; Waypoint _waypoints[kMaxWaypoints]; int _numWaypoints; Tile *_waypointGfx[4]; // Animating waypoint gfx - ActionInfo *_actions[kMaxActions]; + ActionInfo _actions[kMaxActions]; - AutoAction *_autoActions[kMaxAutoActions]; + AutoAction _autoActions[kMaxAutoActions]; // Virtual Player AIEntity _dummyPlayer; |