From 728745767294ecc3abf7fcb730370ff8951999ed Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Sat, 11 Apr 2009 09:54:55 +0000 Subject: Got rid of SortedList svn-id: r39928 --- engines/saga/actor.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'engines/saga/actor.cpp') diff --git a/engines/saga/actor.cpp b/engines/saga/actor.cpp index 17834aec35..feef8595b9 100644 --- a/engines/saga/actor.cpp +++ b/engines/saga/actor.cpp @@ -960,11 +960,24 @@ uint16 Actor::hitTest(const Point &testPoint, bool skipProtagonist) { return result; // in IHNM, return the last result found (read above) } +void Actor::drawOrderListAdd(const CommonObjectDataPointer& element, CompareFunction compareFunction) { + int res; + + for (CommonObjectOrderList::iterator i = _drawOrderList.begin(); i !=_drawOrderList.end(); ++i) { + res = compareFunction(element, *i); + if (res < 0) { + _drawOrderList.insert(i, element); + return; + } + } + _drawOrderList.push_back(element); +} + void Actor::createDrawOrderList() { int i; ActorData *actor; ObjectData *obj; - CommonObjectOrderList::CompareFunction compareFunction = 0; + CompareFunction compareFunction = 0; if (_vm->_scene->getFlags() & kSceneFlagISO) { compareFunction = &tileCommonObjectCompare; @@ -985,7 +998,7 @@ void Actor::createDrawOrderList() { continue; if (calcScreenPosition(actor)) { - _drawOrderList.insert(actor, compareFunction); + drawOrderListAdd(actor, compareFunction); } } @@ -1005,7 +1018,7 @@ void Actor::createDrawOrderList() { continue; if (calcScreenPosition(obj)) { - _drawOrderList.insert(obj, compareFunction); + drawOrderListAdd(obj, compareFunction); } } } -- cgit v1.2.3