aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorEinar Johan Trøan Sømåen2012-12-09 01:03:36 +0100
committerEinar Johan Trøan Sømåen2012-12-09 01:03:36 +0100
commite489b693245ea18efdad688f6b585bc7aa748f34 (patch)
tree90f931f152383de993297b6db930a88a94e4cf21 /engines
parent0d52e27be2c20405da29f82039cdb3d96b7cf7c9 (diff)
downloadscummvm-rg350-e489b693245ea18efdad688f6b585bc7aa748f34.tar.gz
scummvm-rg350-e489b693245ea18efdad688f6b585bc7aa748f34.tar.bz2
scummvm-rg350-e489b693245ea18efdad688f6b585bc7aa748f34.zip
WINTERMUTE: Fix Object-sorting in scenes.
Diffstat (limited to 'engines')
-rw-r--r--engines/wintermute/ad/ad_scene.cpp19
-rw-r--r--engines/wintermute/ad/ad_scene.h2
-rw-r--r--engines/wintermute/base/base_object.h4
3 files changed, 10 insertions, 15 deletions
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<AdObject *> objects;
+ Common::Array<AdObject *> 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;