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 +- engines/wintermute/base/base_object.h | 4 ++-- 3 files changed, 10 insertions(+), 15 deletions(-) (limited to 'engines') 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); diff --git a/engines/wintermute/base/base_object.h b/engines/wintermute/base/base_object.h index d7d91a25f6..96fed2b847 100644 --- a/engines/wintermute/base/base_object.h +++ b/engines/wintermute/base/base_object.h @@ -110,8 +110,8 @@ public: bool _movable; bool _zoomable; bool _shadowable; - int _posY; - int _posX; + int32 _posY; + int32 _posX; bool _registrable; char *_caption[7]; bool _saveState; -- cgit v1.2.3