diff options
-rw-r--r-- | engines/hopkins/globals.cpp | 9 | ||||
-rw-r--r-- | engines/hopkins/globals.h | 12 | ||||
-rw-r--r-- | engines/hopkins/objects.cpp | 117 | ||||
-rw-r--r-- | engines/hopkins/objects.h | 12 | ||||
-rw-r--r-- | engines/hopkins/script.cpp | 2 |
5 files changed, 77 insertions, 75 deletions
diff --git a/engines/hopkins/globals.cpp b/engines/hopkins/globals.cpp index 459bf565f8..8f69ef141c 100644 --- a/engines/hopkins/globals.cpp +++ b/engines/hopkins/globals.cpp @@ -70,10 +70,6 @@ Globals::Globals(HopkinsEngine *vm) { strcpy((char *)g_PTRNUL, "POINTERNULL"); // Initialize array properties - for (int i = 0; i < 6; ++i) - Common::fill((byte *)&Liste[i], (byte *)&Liste[i] + sizeof(ListeItem), 0); - for (int i = 0; i < 35; ++i) - Common::fill((byte *)&Liste2[i], (byte *)&Liste2[i] + sizeof(ListeItem), 0); for (int i = 0; i < 500; ++i) _spriteSize[i] = 0; for (int i = 0; i < 70; ++i) @@ -221,9 +217,4 @@ byte *Globals::freeMemory(byte *p) { return g_PTRNUL; } -void Globals::B_CACHE_OFF(int idx) { - assert(idx < 36); - _vm->_objectsManager->_bob[idx].field34 = true; -} - } // End of namespace Hopkins diff --git a/engines/hopkins/globals.h b/engines/hopkins/globals.h index 76439fcf23..476ce5c62d 100644 --- a/engines/hopkins/globals.h +++ b/engines/hopkins/globals.h @@ -29,14 +29,6 @@ namespace Hopkins { -struct ListeItem { - bool _visibleFl; - int _posX; - int _posY; - int _width; - int _height; -}; - struct HopkinsItem { int _speedX; int _speedY; @@ -210,8 +202,6 @@ public: byte *_levelSpriteBuf; int iRegul; - ListeItem Liste[6]; - ListeItem Liste2[35]; Globals(HopkinsEngine *vm); ~Globals(); @@ -220,8 +210,6 @@ public: void setConfig(); void clearAll(); void loadCharacterData(); - - void B_CACHE_OFF(int idx); }; // Global null pointer diff --git a/engines/hopkins/objects.cpp b/engines/hopkins/objects.cpp index 531c32c831..c686895cc4 100644 --- a/engines/hopkins/objects.cpp +++ b/engines/hopkins/objects.cpp @@ -62,6 +62,12 @@ ObjectsManager::ObjectsManager(HopkinsEngine *vm) { for (int i = 0; i < 6; ++i) _hidingItemData[i] = g_PTRNUL; + for (int i = 0; i < 6; ++i) + Common::fill((byte *)&Liste[i], (byte *)&Liste[i] + sizeof(ListeItem), 0); + + for (int i = 0; i < 35; ++i) + Common::fill((byte *)&Liste2[i], (byte *)&Liste2[i] + sizeof(ListeItem), 0); + _helicopterFl = false; _priorityFl = false; _oldBorderPos = Common::Point(0, 0); @@ -396,19 +402,19 @@ void ObjectsManager::displaySprite() { if (!PERSO_ON) { for (int idx = 0; idx < MAX_SPRITE; ++idx) { - if (_vm->_globals->Liste[idx]._visibleFl) { - clipX = _vm->_globals->Liste[idx]._posX - 2; + if (Liste[idx]._visibleFl) { + clipX = Liste[idx]._posX - 2; if (clipX < _vm->_graphicsManager->_minX) clipX = _vm->_graphicsManager->_minX; - clipY = _vm->_globals->Liste[idx]._posY - 2; + clipY = Liste[idx]._posY - 2; if (clipY < _vm->_graphicsManager->_minY) clipY = _vm->_graphicsManager->_minY; _vm->_graphicsManager->copySurface(_vm->_graphicsManager->_vesaScreen, clipX, clipY, - _vm->_globals->Liste[idx]._width + 4, _vm->_globals->Liste[idx]._height + 4, + Liste[idx]._width + 4, Liste[idx]._height + 4, _vm->_graphicsManager->_vesaBuffer, clipX, clipY); - _vm->_globals->Liste[idx]._visibleFl = false; + Liste[idx]._visibleFl = false; } } } @@ -419,7 +425,7 @@ void ObjectsManager::displaySprite() { if (!PERSO_ON) { // Handle drawing characters on the screen for (int idx = 0; idx < MAX_SPRITE; ++idx) { - _vm->_globals->Liste[idx]._visibleFl = false; + Liste[idx]._visibleFl = false; if (_sprite[idx]._animationType == 1) { computeSprite(idx); if (_sprite[idx]._activeFl) @@ -569,7 +575,7 @@ void ObjectsManager::initBob() { void ObjectsManager::resetBob(int idx) { BobItem &bob = _bob[idx]; - ListeItem &item = _vm->_globals->Liste2[idx]; + ListeItem &item = Liste2[idx]; bob._bobMode = 0; bob._spriteData = g_PTRNUL; @@ -613,38 +619,38 @@ void ObjectsManager::setBobInfo(int idx) { _bob[idx]._zoomOutFactor, _bob[idx]._zooInmFactor, _bob[idx]._flipFl); - _vm->_globals->Liste2[idx]._visibleFl = true; - _vm->_globals->Liste2[idx]._posX = xp; - _vm->_globals->Liste2[idx]._posY = yp; + Liste2[idx]._visibleFl = true; + Liste2[idx]._posX = xp; + Liste2[idx]._posY = yp; - _vm->_globals->Liste2[idx]._width = _bob[idx]._oldWidth; - _vm->_globals->Liste2[idx]._height = _bob[idx]._oldHeight; + Liste2[idx]._width = _bob[idx]._oldWidth; + Liste2[idx]._height = _bob[idx]._oldHeight; - if (_vm->_globals->Liste2[idx]._posX < _vm->_graphicsManager->_minX) { - _vm->_globals->Liste2[idx]._width -= _vm->_graphicsManager->_minX - _vm->_globals->Liste2[idx]._posX; - _vm->_globals->Liste2[idx]._posX = _vm->_graphicsManager->_minX; + if (Liste2[idx]._posX < _vm->_graphicsManager->_minX) { + Liste2[idx]._width -= _vm->_graphicsManager->_minX - Liste2[idx]._posX; + Liste2[idx]._posX = _vm->_graphicsManager->_minX; } - if (_vm->_globals->Liste2[idx]._posY < _vm->_graphicsManager->_minY) { - _vm->_globals->Liste2[idx]._height -= _vm->_graphicsManager->_minY - _vm->_globals->Liste2[idx]._posY; - _vm->_globals->Liste2[idx]._posY = _vm->_graphicsManager->_minY; + if (Liste2[idx]._posY < _vm->_graphicsManager->_minY) { + Liste2[idx]._height -= _vm->_graphicsManager->_minY - Liste2[idx]._posY; + Liste2[idx]._posY = _vm->_graphicsManager->_minY; } - if (_vm->_globals->Liste2[idx]._width + _vm->_globals->Liste2[idx]._posX > _vm->_graphicsManager->_maxX) - _vm->_globals->Liste2[idx]._width = _vm->_graphicsManager->_maxX - _vm->_globals->Liste2[idx]._posX; + if (Liste2[idx]._width + Liste2[idx]._posX > _vm->_graphicsManager->_maxX) + Liste2[idx]._width = _vm->_graphicsManager->_maxX - Liste2[idx]._posX; - if (_vm->_globals->Liste2[idx]._height + _vm->_globals->Liste2[idx]._posY > _vm->_graphicsManager->_maxY) - _vm->_globals->Liste2[idx]._height = _vm->_graphicsManager->_maxY - _vm->_globals->Liste2[idx]._posY; + if (Liste2[idx]._height + Liste2[idx]._posY > _vm->_graphicsManager->_maxY) + Liste2[idx]._height = _vm->_graphicsManager->_maxY - Liste2[idx]._posY; - if (_vm->_globals->Liste2[idx]._width <= 0 || _vm->_globals->Liste2[idx]._height <= 0) - _vm->_globals->Liste2[idx]._visibleFl = false; + if (Liste2[idx]._width <= 0 || Liste2[idx]._height <= 0) + Liste2[idx]._visibleFl = false; - if (_vm->_globals->Liste2[idx]._visibleFl) + if (Liste2[idx]._visibleFl) _vm->_graphicsManager->addDirtyRect( - _vm->_globals->Liste2[idx]._posX, - _vm->_globals->Liste2[idx]._posY, - _vm->_globals->Liste2[idx]._posX + _vm->_globals->Liste2[idx]._width, - _vm->_globals->Liste2[idx]._posY + _vm->_globals->Liste2[idx]._height); + Liste2[idx]._posX, + Liste2[idx]._posY, + Liste2[idx]._posX + Liste2[idx]._width, + Liste2[idx]._posY + Liste2[idx]._height); } void ObjectsManager::displayBob(int idx) { @@ -783,9 +789,9 @@ void ObjectsManager::CALCUL_BOB(int idx) { _bob[idx]._zooInmFactor = posZoom; _bob[idx]._zoomOutFactor = negZoom; - _vm->_globals->Liste2[idx]._visibleFl = true; - _vm->_globals->Liste2[idx]._posX = newX; - _vm->_globals->Liste2[idx]._posY = newY; + Liste2[idx]._visibleFl = true; + Liste2[idx]._posX = newX; + Liste2[idx]._posY = newY; int width = getWidth(_bob[idx]._spriteData, _bob[idx]._frameIndex); int height = getHeight(_bob[idx]._spriteData, _bob[idx]._frameIndex); @@ -799,8 +805,8 @@ void ObjectsManager::CALCUL_BOB(int idx) { width = _vm->_graphicsManager->zoomOut(width, negZoom); } - _vm->_globals->Liste2[idx]._width = width; - _vm->_globals->Liste2[idx]._height = height; + Liste2[idx]._width = width; + Liste2[idx]._height = height; _bob[idx]._oldWidth = width; _bob[idx]._oldHeight = height; } @@ -859,7 +865,7 @@ void ObjectsManager::DEF_SPRITE(int idx) { _vm->_graphicsManager->Affiche_Perfect(_vm->_graphicsManager->_vesaBuffer, spr->_spriteData, spr->_destX + 300, spr->_destY + 300, spr->_spriteIndex, spr->_reducePct, spr->_zoomPct, spr->_flipFl); - ListeItem *list = &_vm->_globals->Liste[idx]; + ListeItem *list = &Liste[idx]; list->_width = spr->_width; list->_height = spr->_height; @@ -961,9 +967,9 @@ void ObjectsManager::computeSprite(int idx) { spr->_zoomPct = zoomPercent; spr->_reducePct = reducePercent; - _vm->_globals->Liste[idx]._visibleFl = true; - _vm->_globals->Liste[idx]._posX = newPosX; - _vm->_globals->Liste[idx]._posY = newPosY; + Liste[idx]._visibleFl = true; + Liste[idx]._posX = newPosX; + Liste[idx]._posY = newPosY; int width = getWidth(spr->_spriteData, spr->_spriteIndex); int height = getHeight(spr->_spriteData, spr->_spriteIndex); @@ -1096,25 +1102,25 @@ void ObjectsManager::displayBobAnim() { if (i > 20 || !PERSO_ON) { if ((_bob[i]._bobMode == 10) && (_bob[i]._bobMode10)) { if ((_bob[i]._bobModeChange != 2) && (_bob[i]._bobModeChange != 4)) { - if (_vm->_globals->Liste2[i]._visibleFl) { + if (Liste2[i]._visibleFl) { _vm->_graphicsManager->copySurface(_vm->_graphicsManager->_vesaScreen, - _vm->_globals->Liste2[i]._posX, _vm->_globals->Liste2[i]._posY, - _vm->_globals->Liste2[i]._width, _vm->_globals->Liste2[i]._height, - _vm->_graphicsManager->_vesaBuffer, _vm->_globals->Liste2[i]._posX, - _vm->_globals->Liste2[i]._posY); - _vm->_globals->Liste2[i]._visibleFl = false; + Liste2[i]._posX, Liste2[i]._posY, + Liste2[i]._width, Liste2[i]._height, + _vm->_graphicsManager->_vesaBuffer, Liste2[i]._posX, + Liste2[i]._posY); + Liste2[i]._visibleFl = false; } } } if (_bob[i]._bobMode == 11) { - if (_vm->_globals->Liste2[i]._visibleFl) { + if (Liste2[i]._visibleFl) { _vm->_graphicsManager->copySurface(_vm->_graphicsManager->_vesaScreen, - _vm->_globals->Liste2[i]._posX, _vm->_globals->Liste2[i]._posY, - _vm->_globals->Liste2[i]._width, _vm->_globals->Liste2[i]._height, + Liste2[i]._posX, Liste2[i]._posY, + Liste2[i]._width, Liste2[i]._height, _vm->_graphicsManager->_vesaBuffer, - _vm->_globals->Liste2[i]._posX, _vm->_globals->Liste2[i]._posY); - _vm->_globals->Liste2[i]._visibleFl = false; + Liste2[i]._posX, Liste2[i]._posY); + Liste2[i]._visibleFl = false; } _bob[i]._bobMode = 0; @@ -1247,7 +1253,7 @@ void ObjectsManager::clearSprite() { } for (int idx = 0; idx < MAX_SPRITE; idx++) { - ListeItem *list = &_vm->_globals->Liste[idx]; + ListeItem *list = &Liste[idx]; list->_visibleFl = false; list->_posX = 0; list->_posY = 0; @@ -1811,9 +1817,9 @@ void ObjectsManager::handleCityMap() { _vm->_graphicsManager->displayAllBob(); _vm->_graphicsManager->initScreen("PLAN", 2, false); for (int i = 0; i <= 15; i++) - _vm->_globals->B_CACHE_OFF(i); - _vm->_globals->B_CACHE_OFF(19); - _vm->_globals->B_CACHE_OFF(20); + B_CACHE_OFF(i); + B_CACHE_OFF(19); + B_CACHE_OFF(20); enableHiding(); if (!_mapCarPosX && !_mapCarPosY) { @@ -4034,6 +4040,11 @@ void ObjectsManager::clearVBob() { } } +void ObjectsManager::B_CACHE_OFF(int idx) { + assert(idx < 36); + _bob[idx].field34 = true; +} + void ObjectsManager::enableHiding() { _hidingActiveFl = true; } diff --git a/engines/hopkins/objects.h b/engines/hopkins/objects.h index c1bfaddb96..9dcf6a6968 100644 --- a/engines/hopkins/objects.h +++ b/engines/hopkins/objects.h @@ -121,6 +121,14 @@ struct VBobItem { byte *_oldSpriteData; }; +struct ListeItem { + bool _visibleFl; + int _posX; + int _posY; + int _width; + int _height; +}; + /** * Mode for SortItem records */ @@ -164,7 +172,10 @@ private: ObjectAuthIcon _objectAuthIcons[300]; int _curObjectFileNum; byte *_objectDataBuf; + VBobItem VBob[30]; + ListeItem Liste[6]; + ListeItem Liste2[35]; void initVBob(); void clearVBob(); @@ -325,6 +336,7 @@ public: void OPTI_BOBON(int idx1, int idx2, int idx3, int anim1Idx, int anim2Idx, int anim3Idx); void SPACTION1(byte *spriteData, const Common::String &animString, int speed); void PARADISE(); + void B_CACHE_OFF(int idx); }; } // End of namespace Hopkins diff --git a/engines/hopkins/script.cpp b/engines/hopkins/script.cpp index dbb6edb479..d79ec5286e 100644 --- a/engines/hopkins/script.cpp +++ b/engines/hopkins/script.cpp @@ -498,7 +498,7 @@ int ScriptManager::handleOpcode(byte *dataP) { opcodeType = 5; break; case MKTAG24('B', 'C', 'A'): - _vm->_globals->B_CACHE_OFF(READ_LE_INT16(dataP + 5)); + _vm->_objectsManager->B_CACHE_OFF(READ_LE_INT16(dataP + 5)); opcodeType = 1; break; case MKTAG24('A', 'N', 'I'): { |