aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorEugene Sandulenko2013-06-02 23:51:33 +0300
committerEugene Sandulenko2013-09-06 14:48:07 +0300
commit146e5a92249e3b0ea7f4057d3a620b2ff837a57e (patch)
treea27d6e17145bfae4070715d44803682b07ae9b35 /engines
parent82cbf508b57f1b01ef06f0cd8dea9d53874203a4 (diff)
downloadscummvm-rg350-146e5a92249e3b0ea7f4057d3a620b2ff837a57e.tar.gz
scummvm-rg350-146e5a92249e3b0ea7f4057d3a620b2ff837a57e.tar.bz2
scummvm-rg350-146e5a92249e3b0ea7f4057d3a620b2ff837a57e.zip
FULLPIPE: Read SceneTags from fullpipe.gam
Diffstat (limited to 'engines')
-rw-r--r--engines/fullpipe/objects.h27
-rw-r--r--engines/fullpipe/stateloader.cpp24
2 files changed, 37 insertions, 14 deletions
diff --git a/engines/fullpipe/objects.h b/engines/fullpipe/objects.h
index dbeb7bc07b..69b12d00ff 100644
--- a/engines/fullpipe/objects.h
+++ b/engines/fullpipe/objects.h
@@ -47,24 +47,23 @@ class CObArray {
int m_nGrowBy;
};
-class CNode {
- int pNext;
- CNode *pPrev;
- void *data;
-};
+class SceneTag {
+ CObject _obj;
+ int _field_4;
+ char *_tag;
+ int _scene;
+ int16 _sceneId;
+ int16 _field_12;
-class CPtrList {
- CObject obj;
- CNode *m_pNodeHead;
- int m_pNodeTail;
- int m_nCount;
- int m_pNodeFree;
- int m_pBlocks;
- int m_nBlockSize;
+ public:
+ SceneTag(CFile &file);
+ ~SceneTag();
};
+typedef Common::List<SceneTag> SceneTagList_;
+
class SceneTagList {
- CPtrList list;
+ SceneTagList_ list;
public:
SceneTagList(CFile &file);
diff --git a/engines/fullpipe/stateloader.cpp b/engines/fullpipe/stateloader.cpp
index 60b83a04db..e50bbb2399 100644
--- a/engines/fullpipe/stateloader.cpp
+++ b/engines/fullpipe/stateloader.cpp
@@ -23,6 +23,7 @@
#include "fullpipe/fullpipe.h"
#include "common/file.h"
+#include "common/list.h"
#include "fullpipe/utils.h"
#include "fullpipe/objects.h"
@@ -90,6 +91,29 @@ GameProject::~GameProject() {
}
SceneTagList::SceneTagList(CFile &file) {
+ int numEntries = file.readUint16LE();
+
+ debug(0, "numEntries: %d", numEntries);
+
+ for (int i = 0; i < numEntries; i++) {
+ SceneTag *t = new SceneTag(file);
+ list.push_back(*t);
+ }
+}
+
+SceneTag::SceneTag(CFile &file) {
+ _field_4 = 0;
+ _scene = 0;
+
+ _sceneId = file.readUint16LE();
+
+ _tag = file.readPascalString();
+
+ debug(0, "sceneId: %d tag: %s", _sceneId, _tag);
+}
+
+SceneTag::~SceneTag() {
+ free(_tag);
}
} // End of namespace Fullpipe