From e489b693245ea18efdad688f6b585bc7aa748f34 Mon Sep 17 00:00:00 2001 From: Einar Johan Trøan Sømåen Date: Sun, 9 Dec 2012 01:03:36 +0100 Subject: WINTERMUTE: Fix Object-sorting in scenes. --- engines/wintermute/ad/ad_scene.cpp | 19 +++++++------------ engines/wintermute/ad/ad_scene.h | 2 +- 2 files changed, 8 insertions(+), 13 deletions(-) (limited to 'engines/wintermute/ad') diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp index 8e9beca0c0..3791b7b0bc 100644 --- a/engines/wintermute/ad/ad_scene.cpp +++ b/engines/wintermute/ad/ad_scene.cpp @@ -1140,14 +1140,14 @@ bool AdScene::updateFreeObjects() { ////////////////////////////////////////////////////////////////////////// bool AdScene::displayRegionContent(AdRegion *region, bool display3DOnly) { AdGame *adGame = (AdGame *)_gameRef; - BaseArray objects; + Common::Array objects; AdObject *obj; // global objects for (uint32 i = 0; i < adGame->_objects.size(); i++) { obj = adGame->_objects[i]; if (obj->_active && !obj->_drawn && (obj->_stickRegion == region || region == NULL || (obj->_stickRegion == NULL && region->pointInRegion(obj->_posX, obj->_posY)))) { - objects.add(obj); + objects.push_back(obj); } } @@ -1155,7 +1155,7 @@ bool AdScene::displayRegionContent(AdRegion *region, bool display3DOnly) { for (uint32 i = 0; i < _objects.size(); i++) { obj = _objects[i]; if (obj->_active && !obj->_editorOnly && !obj->_drawn && (obj->_stickRegion == region || region == NULL || (obj->_stickRegion == NULL && region->pointInRegion(obj->_posX, obj->_posY)))) { - objects.add(obj); + objects.push_back(obj); } } @@ -1195,16 +1195,11 @@ bool AdScene::displayRegionContent(AdRegion *region, bool display3DOnly) { } ////////////////////////////////////////////////////////////////////////// -int AdScene::compareObjs(const void *obj1, const void *obj2) { - const AdObject *object1 = *(const AdObject *const *)obj1; - const AdObject *object2 = *(const AdObject *const *)obj2; - - if (object1->_posY < object2->_posY) { - return -1; - } else if (object1->_posY > object2->_posY) { - return 1; +bool AdScene::compareObjs(const AdObject *obj1, const AdObject *obj2) { + if (obj1->_posY < obj2->_posY) { + return true; } else { - return 0; + return false; } } diff --git a/engines/wintermute/ad/ad_scene.h b/engines/wintermute/ad/ad_scene.h index 3b482403b5..230cb77f5b 100644 --- a/engines/wintermute/ad/ad_scene.h +++ b/engines/wintermute/ad/ad_scene.h @@ -80,7 +80,7 @@ public: DECLARE_PERSISTENT(AdScene, BaseObject) bool displayRegionContent(AdRegion *region = NULL, bool display3DOnly = false); bool displayRegionContentOld(AdRegion *region = NULL); - static int compareObjs(const void *obj1, const void *obj2); + static bool compareObjs(const AdObject *obj1, const AdObject *obj2); bool updateFreeObjects(); bool traverseNodes(bool update = false); -- cgit v1.2.3