diff options
Diffstat (limited to 'engines/tsage/core.cpp')
-rw-r--r-- | engines/tsage/core.cpp | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index 8d332c46af..1fa037ee94 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -537,7 +537,7 @@ void PlayerMover::setDest(const Common::Point &destPos) { #define REGION_LIST_SIZE 20 void PlayerMover::pathfind(Common::Point *routeList, Common::Point srcPos, Common::Point destPos, RouteEnds routeEnds) { - List<int> regionIndexes; + Common::List<int> regionIndexes; RouteEnds tempRouteEnds; int routeRegions[REGION_LIST_SIZE]; Common::Point objPos; @@ -687,7 +687,7 @@ int PlayerMover::regionIndexOf(const Common::Point &pt) { return 0; } -int PlayerMover::findClosestRegion(Common::Point &pt, List<int> &indexList) { +int PlayerMover::findClosestRegion(Common::Point &pt, const Common::List<int> &indexList) { int newY = pt.y; int result = 0; @@ -695,35 +695,35 @@ int PlayerMover::findClosestRegion(Common::Point &pt, List<int> &indexList) { int newX = pt.x + idx; result = regionIndexOf(newX, pt.y); - if ((result == 0) || indexList.contains(result)) { + if ((result == 0) || contains(indexList, result)) { newY = pt.y + idx; result = regionIndexOf(newX, newY); - if ((result == 0) || indexList.contains(result)) { + if ((result == 0) || contains(indexList, result)) { newX -= idx; result = regionIndexOf(newX, newY); - if ((result == 0) || indexList.contains(result)) { + if ((result == 0) || contains(indexList, result)) { newX -= idx; result = regionIndexOf(newX, newY); - if ((result == 0) || indexList.contains(result)) { + if ((result == 0) || contains(indexList, result)) { newY -= idx; result = regionIndexOf(newX, newY); - if ((result == 0) || indexList.contains(result)) { + if ((result == 0) || contains(indexList, result)) { newY -= idx; result = regionIndexOf(newX, newY); - if ((result == 0) || indexList.contains(result)) { + if ((result == 0) || contains(indexList, result)) { newX += idx; result = regionIndexOf(newX, newY); - if ((result == 0) || indexList.contains(result)) { + if ((result == 0) || contains(indexList, result)) { newX += idx; result = regionIndexOf(newX, newY); - if ((result == 0) || indexList.contains(result)) { + if ((result == 0) || contains(indexList, result)) { continue; } } @@ -1132,8 +1132,7 @@ void PaletteRotation::remove() { Action *action = _action; g_system->getPaletteManager()->setPalette((const byte *)&_palette[_start], _start, _end - _start); - if (_scenePalette->_listeners.contains(this)) - _scenePalette->_listeners.remove(this); + _scenePalette->_listeners.remove(this); delete this; if (action) @@ -1213,8 +1212,7 @@ void PaletteUnknown::remove() { for (int i = 0; i < 256; i++) _scenePalette->_palette[i] = _palette[i]; _scenePalette->refresh(); - if (_scenePalette->_listeners.contains(this)) - _scenePalette->_listeners.remove(this); + _scenePalette->_listeners.remove(this); delete this; } @@ -1312,13 +1310,13 @@ void ScenePalette::getPalette(int start, int count) { } void ScenePalette::signalListeners() { - for (List<PaletteModifier *>::iterator i = _listeners.begin(); i != _listeners.end(); ++i) { + for (SynchronisedList<PaletteModifier *>::iterator i = _listeners.begin(); i != _listeners.end(); ++i) { (*i)->signal(); } } void ScenePalette::clearListeners() { - List<PaletteModifier *>::iterator i = _listeners.begin(); + SynchronisedList<PaletteModifier *>::iterator i = _listeners.begin(); while (i != _listeners.end()) { PaletteModifier *obj = *i; ++i; @@ -1377,6 +1375,7 @@ PaletteUnknown *ScenePalette::addUnkPal(RGB8 *arrBufferRGB, int unkNumb, bool di void ScenePalette::changeBackground(const Rect &bounds, FadeMode fadeMode) { ScenePalette tempPalette; + if (_globals->_sceneManager._hasPalette) { if ((fadeMode == FADEMODE_GRADUAL) || (fadeMode == FADEMODE_IMMEDIATE)) { // Fade out any active palette @@ -1397,7 +1396,10 @@ void ScenePalette::changeBackground(const Rect &bounds, FadeMode fadeMode) { _globals->_screenSurface.copyFrom(_globals->_sceneManager._scene->_backSurface, bounds, Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), NULL); - tempPalette._listeners.clear2(); + + for (SynchronisedList<PaletteModifier *>::iterator i = tempPalette._listeners.begin(); i != tempPalette._listeners.end(); ++i) + delete *i; + tempPalette._listeners.clear(); } void ScenePalette::synchronise(Serialiser &s) { @@ -1941,7 +1943,7 @@ int SceneObject::checkRegion(const Common::Point &pt) { } newY -= _yDiff; - List<SceneObject *>::iterator i; + SynchronisedList<SceneObject *>::iterator i; for (i = _globals->_sceneObjects->begin(); (regionIndex == 0) && (i != _globals->_sceneObjects->end()); ++i) { if ((*i) && ((*i)->_flags & OBJFLAG_CHECK_REGION)) { int objYDiff = (*i)->_position.y - _yDiff; @@ -2229,11 +2231,8 @@ void SceneObject::calcAngle(const Common::Point &pt) { } void SceneObject::removeObject() { - if (_globals->_sceneItems.contains(this)) - _globals->_sceneItems.remove(this); - - if (_globals->_sceneObjects->contains(this)) - _globals->_sceneObjects->remove(this); + _globals->_sceneItems.remove(this); + _globals->_sceneObjects->remove(this); if (_visage) { _vm->_memoryManager.deallocate(_visage); @@ -2369,7 +2368,7 @@ void SceneObjectList::draw() { uint32 flagMask = (paneNum == 0) ? OBJFLAG_PANE_0 : OBJFLAG_PANE_1; // Initial loop to set up object list and update object position, priority, and flags - for (List<SceneObject *>::iterator i = _globals->_sceneObjects->begin(); + for (SynchronisedList<SceneObject *>::iterator i = _globals->_sceneObjects->begin(); i != _globals->_sceneObjects->end(); ++i) { SceneObject *obj = *i; objList.push_back(obj); @@ -2523,7 +2522,7 @@ void SceneObjectList::activate() { _globals->_sceneObjects_queue.push_front(this); // Flag all the objects as modified - List<SceneObject *>::iterator i; + SynchronisedList<SceneObject *>::iterator i; for (i = begin(); i != end(); ++i) { (*i)->_flags |= OBJFLAG_PANES; } @@ -2544,7 +2543,7 @@ void SceneObjectList::deactivate() { _globals->_sceneObjects_queue.pop_front(); _globals->_sceneObjects = *_globals->_sceneObjects_queue.begin(); - List<SceneObject *>::iterator i; + SynchronisedList<SceneObject *>::iterator i; for (i = objectList->begin(); i != objectList->end(); ++i) { if (!((*i)->_flags & OBJFLAG_CLONED)) { SceneObject *sceneObj = (*i)->clone(); @@ -3283,9 +3282,9 @@ void WalkRegions::load(int sceneNum) { * @param pt Point to locate * @param indexList List of region indexes that should be ignored */ -int WalkRegions::indexOf(const Common::Point &pt, List<int> *indexList) { +int WalkRegions::indexOf(const Common::Point &pt, const Common::List<int> *indexList) { for (uint idx = 0; idx < _regionList.size(); ++idx) { - if ((!indexList || !indexList->contains(idx + 1)) && _regionList[idx].contains(pt)) + if ((!indexList || contains(*indexList, int(idx + 1))) && _regionList[idx].contains(pt)) return idx + 1; } @@ -3511,7 +3510,7 @@ void SceneHandler::process(Event &event) { if (_globals->_player._uiEnabled && (event.eventType == EVENT_BUTTON_DOWN) && !_globals->_sceneItems.empty()) { // Scan the item list to find one the mouse is within - List<SceneItem *>::iterator i = _globals->_sceneItems.begin(); + SynchronisedList<SceneItem *>::iterator i = _globals->_sceneItems.begin(); while ((i != _globals->_sceneItems.end()) && !(*i)->contains(event.mousePos)) ++i; @@ -3598,7 +3597,7 @@ void Game::execute() { do { // Process all currently atcive game handlers activeFlag = false; - for (List<GameHandler *>::iterator i = _handlers.begin(); i != _handlers.end(); ++i) { + for (SynchronisedList<GameHandler *>::iterator i = _handlers.begin(); i != _handlers.end(); ++i) { GameHandler *gh = *i; if (gh->_lockCtr.getCtr() == 0) { gh->execute(); |