aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2014-05-02 12:09:21 +0300
committerEugene Sandulenko2014-05-02 12:09:42 +0300
commit6b0d938737f99cd9388462bf7167619f609e116e (patch)
tree2c405f175410287d3d4d29c92df49da85f3044fc
parent2542f68e45f6fe4cfd60044b8df23efce40c352e (diff)
downloadscummvm-rg350-6b0d938737f99cd9388462bf7167619f609e116e.tar.gz
scummvm-rg350-6b0d938737f99cd9388462bf7167619f609e116e.tar.bz2
scummvm-rg350-6b0d938737f99cd9388462bf7167619f609e116e.zip
FULLPIPE: Removed couple of PtrList usages for code clarity
-rw-r--r--engines/fullpipe/gfx.cpp22
-rw-r--r--engines/fullpipe/gfx.h5
-rw-r--r--engines/fullpipe/scene.cpp73
-rw-r--r--engines/fullpipe/scene.h7
-rw-r--r--engines/fullpipe/scenes.cpp6
-rw-r--r--engines/fullpipe/stateloader.cpp5
6 files changed, 72 insertions, 46 deletions
diff --git a/engines/fullpipe/gfx.cpp b/engines/fullpipe/gfx.cpp
index 7c66a9a747..74f6b6c3e4 100644
--- a/engines/fullpipe/gfx.cpp
+++ b/engines/fullpipe/gfx.cpp
@@ -145,7 +145,7 @@ void Background::addPictureObject(PictureObject *pct) {
bool inserted = false;
for (uint i = 1; i < _picObjList.size(); i++) {
- if (((PictureObject *)_picObjList[i])->_priority <= pct->_priority) {
+ if (_picObjList[i]->_priority <= pct->_priority) {
_picObjList.insert_at(i, pct);
inserted = true;
break;
@@ -351,7 +351,25 @@ void GameObject::setOXY(int x, int y) {
_oy = y;
}
-void GameObject::renumPictures(PtrList *lst) {
+void GameObject::renumPictures(Common::Array<StaticANIObject *> *lst) {
+ int *buf = (int *)calloc(lst->size() + 2, sizeof(int));
+
+ for (uint i = 0; i < lst->size(); i++) {
+ if (_id == ((GameObject *)((*lst)[i]))->_id)
+ buf[((GameObject *)((*lst)[i]))->_okeyCode] = 1;
+ }
+
+ if (buf[_okeyCode]) {
+ uint count;
+ for (count = 1; buf[count] && count < lst->size() + 2; count++)
+ ;
+ _okeyCode = count;
+ }
+
+ free(buf);
+}
+
+void GameObject::renumPictures(Common::Array<PictureObject *> *lst) {
int *buf = (int *)calloc(lst->size() + 2, sizeof(int));
for (uint i = 0; i < lst->size(); i++) {
diff --git a/engines/fullpipe/gfx.h b/engines/fullpipe/gfx.h
index b3e22b610b..7e40d4be39 100644
--- a/engines/fullpipe/gfx.h
+++ b/engines/fullpipe/gfx.h
@@ -141,7 +141,8 @@ class GameObject : public CObject {
virtual bool load(MfcArchive &file);
void setOXY(int x, int y);
- void renumPictures(PtrList *lst);
+ void renumPictures(Common::Array<StaticANIObject *> *lst);
+ void renumPictures(Common::Array<PictureObject *> *lst);
void setFlags(int16 flags) { _flags = flags; }
void clearFlags() { _flags = 0; }
const char *getName() { return _objectName; }
@@ -178,7 +179,7 @@ class PictureObject : public GameObject {
class Background : public CObject {
public:
- PtrList _picObjList;
+ Common::Array<PictureObject *> _picObjList;
char *_bgname;
int _x;
diff --git a/engines/fullpipe/scene.cpp b/engines/fullpipe/scene.cpp
index a626b01974..b1af0350a0 100644
--- a/engines/fullpipe/scene.cpp
+++ b/engines/fullpipe/scene.cpp
@@ -145,7 +145,7 @@ Scene::~Scene() {
_messageQueueList.clear();
for (int i = 0; i < _staticANIObjectList1.size(); i++)
- delete (StaticANIObject *)_staticANIObjectList1[i];
+ delete _staticANIObjectList1[i];
_staticANIObjectList1.clear();
@@ -269,7 +269,7 @@ bool Scene::load(MfcArchive &file) {
void Scene::initStaticANIObjects() {
for (uint i = 0; i < _staticANIObjectList1.size(); i++)
- ((StaticANIObject *)_staticANIObjectList1[i])->initMovements();
+ _staticANIObjectList1[i]->initMovements();
}
void Scene::init() {
@@ -282,13 +282,13 @@ void Scene::init() {
((PictureObject *)_picObjList[i])->clearFlags();
for (uint i = 0; i < _staticANIObjectList1.size(); i++)
- ((StaticANIObject *)_staticANIObjectList1[i])->clearFlags();
+ _staticANIObjectList1[i]->clearFlags();
if (_staticANIObjectList2.size() != _staticANIObjectList1.size()) {
_staticANIObjectList2.clear();
- for (PtrList::iterator s = _staticANIObjectList1.begin(); s != _staticANIObjectList1.end(); ++s)
- _staticANIObjectList2.push_back(*s);
+ for (int i = 0; i < _staticANIObjectList1.size(); i++)
+ _staticANIObjectList2.push_back(_staticANIObjectList1[i]);
}
}
@@ -301,35 +301,33 @@ StaticANIObject *Scene::getAniMan() {
}
StaticANIObject *Scene::getStaticANIObject1ById(int obj, int a3) {
- for (PtrList::iterator s = _staticANIObjectList1.begin(); s != _staticANIObjectList1.end(); ++s) {
- StaticANIObject *o = (StaticANIObject *)*s;
- if (o->_id == obj && (a3 == -1 || o->_okeyCode == a3))
- return o;
+ for (uint i = 0; i < _staticANIObjectList1.size(); i++) {
+ if (_staticANIObjectList1[i]->_id == obj && (a3 == -1 || _staticANIObjectList1[i]->_okeyCode == a3))
+ return _staticANIObjectList1[i];
}
return 0;
}
StaticANIObject *Scene::getStaticANIObject1ByName(char *name, int a3) {
- for (uint n = 0; n < _staticANIObjectList1.size(); n++) {
- StaticANIObject *o = (StaticANIObject *)_staticANIObjectList1[n];
- if (!strcmp(o->_objectName, name) && (a3 == -1 || o->_okeyCode == a3))
- return o;
+ for (uint i = 0; i < _staticANIObjectList1.size(); i++) {
+ if (!strcmp(_staticANIObjectList1[i]->_objectName, name) && (a3 == -1 || _staticANIObjectList1[i]->_okeyCode == a3))
+ return _staticANIObjectList1[i];
}
return 0;
}
void Scene::deleteStaticANIObject(StaticANIObject *obj) {
- for (uint n = 0; n < _staticANIObjectList1.size(); n++)
- if ((StaticANIObject *)_staticANIObjectList1[n] == obj) {
- _staticANIObjectList1.remove_at(n);
+ for (uint i = 0; i < _staticANIObjectList1.size(); i++)
+ if (_staticANIObjectList1[i] == obj) {
+ _staticANIObjectList1.remove_at(i);
break;
}
- for (uint n = 0; n < _staticANIObjectList2.size(); n++)
- if ((StaticANIObject *)_staticANIObjectList2[n] == obj) {
- _staticANIObjectList2.remove_at(n);
+ for (uint i = 0; i < _staticANIObjectList2.size(); i++)
+ if (_staticANIObjectList2[i] == obj) {
+ _staticANIObjectList2.remove_at(i);
break;
}
}
@@ -468,15 +466,27 @@ void Scene::initObjectCursors(const char *varname) {
}
bool Scene::compareObjPriority(const void *p1, const void *p2) {
- if (((const StaticANIObject *)p1)->_priority > ((const StaticANIObject *)p2)->_priority)
+ if (((const GameObject *)p1)->_priority > ((const GameObject *)p2)->_priority)
return true;
return false;
}
-void Scene::objectList_sortByPriority(PtrList &list, bool skipFirst) {
+void Scene::objectList_sortByPriority(Common::Array<StaticANIObject *> &list, bool skipFirst) {
+ if (skipFirst) {
+ Common::Array<StaticANIObject *>::iterator s = list.begin();
+
+ ++s;
+
+ Common::sort(s, list.end(), Scene::compareObjPriority);
+ } else {
+ Common::sort(list.begin(), list.end(), Scene::compareObjPriority);
+ }
+}
+
+void Scene::objectList_sortByPriority(Common::Array<PictureObject *> &list, bool skipFirst) {
if (skipFirst) {
- PtrList::iterator s = list.begin();
+ Common::Array<PictureObject *>::iterator s = list.begin();
++s;
@@ -497,16 +507,15 @@ void Scene::draw() {
objectList_sortByPriority(_staticANIObjectList2);
- for (PtrList::iterator s = _staticANIObjectList2.begin(); s != _staticANIObjectList2.end(); ++s) {
- ((StaticANIObject *)*s)->draw2();
- }
+ for (int i = 0; i < _staticANIObjectList2.size(); i++)
+ _staticANIObjectList2[i]->draw2();
int priority = -1;
- for (PtrList::iterator s = _staticANIObjectList2.begin(); s != _staticANIObjectList2.end(); ++s) {
- drawContent(((StaticANIObject *)*s)->_priority, priority, false);
- ((StaticANIObject *)*s)->draw();
+ for (int i = 0; i < _staticANIObjectList2.size(); i++) {
+ drawContent(_staticANIObjectList2[i]->_priority, priority, false);
+ _staticANIObjectList2[i]->draw();
- priority = ((StaticANIObject *)*s)->_priority;
+ priority = _staticANIObjectList2[i]->_priority;
}
drawContent(-1, priority, false);
@@ -587,7 +596,7 @@ StaticANIObject *Scene::getStaticANIObjectAtPos(int x, int y) {
StaticANIObject *res = 0;
for (uint i = 0; i < _staticANIObjectList1.size(); i++) {
- StaticANIObject *p = (StaticANIObject *)_staticANIObjectList1[i];
+ StaticANIObject *p = _staticANIObjectList1[i];
int pixel;
if ((p->_field_8 & 0x100) && (p->_flags & 4) &&
@@ -633,8 +642,8 @@ int Scene::getPictureObjectIdAtPos(int x, int y) {
void Scene::update(int counterdiff) {
debug(6, "Scene::update(%d)", counterdiff);
- for (PtrList::iterator s = _staticANIObjectList2.begin(); s != _staticANIObjectList2.end(); ++s)
- ((StaticANIObject *)*s)->update(counterdiff);
+ for (int i = 0; i < _staticANIObjectList2.size(); i++)
+ _staticANIObjectList2[i]->update(counterdiff);
}
void Scene::drawContent(int minPri, int maxPri, bool drawBg) {
diff --git a/engines/fullpipe/scene.h b/engines/fullpipe/scene.h
index 8306974f7b..ef39bbf03f 100644
--- a/engines/fullpipe/scene.h
+++ b/engines/fullpipe/scene.h
@@ -31,8 +31,8 @@ class MessageQueue;
class Scene : public Background {
public:
- PtrList _staticANIObjectList1;
- PtrList _staticANIObjectList2;
+ Common::Array<StaticANIObject *> _staticANIObjectList1;
+ Common::Array<StaticANIObject *> _staticANIObjectList2;
PtrList _messageQueueList;
PtrList _faObjectList;
Shadows *_shadows;
@@ -82,7 +82,8 @@ class Scene : public Background {
private:
static bool compareObjPriority(const void *p1, const void *p2);
- void objectList_sortByPriority(PtrList &list, bool skipFirst = false);
+ void objectList_sortByPriority(Common::Array<StaticANIObject *> &list, bool skipFirst = false);
+ void objectList_sortByPriority(Common::Array<PictureObject *> &list, bool skipFirst = false);
};
class SceneTag : public CObject {
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 7420c1b1cf..72d73a9cf8 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -590,10 +590,8 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
scene->setPictureObjectsFlag4();
- for (PtrList::iterator s = scene->_staticANIObjectList1.begin(); s != scene->_staticANIObjectList1.end(); ++s) {
- StaticANIObject *o = (StaticANIObject *)*s;
- o->setFlags(o->_flags & 0xFE7F);
- }
+ for (uint i = 0; i < scene->_staticANIObjectList1.size(); i++)
+ scene->_staticANIObjectList1[i]->_flags &= 0xFE7F;
PictureObject *p = accessScene(SC_INV)->getPictureObjectById(PIC_INV_MENU, 0);
p->setFlags(p->_flags & 0xFFFB);
diff --git a/engines/fullpipe/stateloader.cpp b/engines/fullpipe/stateloader.cpp
index e36b196517..41641457d3 100644
--- a/engines/fullpipe/stateloader.cpp
+++ b/engines/fullpipe/stateloader.cpp
@@ -55,9 +55,8 @@ bool FullpipeEngine::loadGam(const char *fname, int scene) {
_inventory->rebuildItemRects();
- for (PtrList::iterator p = _inventory->getScene()->_picObjList.begin(); p != _inventory->getScene()->_picObjList.end(); ++p) {
- ((MemoryObject *)((PictureObject *)*p)->_picture)->load();
- }
+ for (uint i = 0; i < _inventory->getScene()->_picObjList.size(); i++)
+ ((MemoryObject *)_inventory->getScene()->_picObjList[i]->_picture)->load();
// _sceneSwitcher = sceneSwitcher; // substituted with direct call
_gameLoader->_preloadCallback = preloadCallback;