aboutsummaryrefslogtreecommitdiff
path: root/engines/mads/scene_data.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mads/scene_data.h')
-rw-r--r--engines/mads/scene_data.h39
1 files changed, 31 insertions, 8 deletions
diff --git a/engines/mads/scene_data.h b/engines/mads/scene_data.h
index bcdd50a9d0..1b98b9d165 100644
--- a/engines/mads/scene_data.h
+++ b/engines/mads/scene_data.h
@@ -272,16 +272,18 @@ class SceneInfo {
void load(Common::SeekableReadStream *f);
};
-private:
+protected:
MADSEngine *_vm;
- SceneInfo(MADSEngine *vm, int sceneId, int v1, const Common::String &resName,
- int v3, MSurface &depthSurface, MSurface &bgSurface);
-
+ /**
+ * Constructor
+ */
+ SceneInfo(MADSEngine *vm) : _vm(vm) {}
+
/**
* Loads the given surface with depth information of a given scene
*/
- void loadCodes(MSurface &depthSurface);
+ virtual void loadCodes(MSurface &depthSurface);
public:
int _sceneId;
int _artFileNum;
@@ -302,10 +304,31 @@ public:
Common::Array<RGB4> _palette;
public:
/**
- * Instantiates the class and loads the data
+ * Destructor
*/
- static SceneInfo *load(MADSEngine *vm, int sceneId, int flags,
- const Common::String &resName, int v3, MSurface &depthSurface, MSurface &bgSurface);
+ virtual ~SceneInfo() {}
+
+ /**
+ * Instantiates the class
+ */
+ static SceneInfo *init(MADSEngine *vm);
+
+ /**
+ loads the data
+ */
+ void load(int sceneId, int flags, const Common::String &resName, int v3,
+ MSurface &depthSurface, MSurface &bgSurface);
+};
+
+class SceneInfoNebular : public SceneInfo {
+ friend class SceneInfo;
+protected:
+ virtual void loadCodes(MSurface &depthSurface);
+
+ /**
+ * Constructor
+ */
+ SceneInfoNebular(MADSEngine *vm) : SceneInfo(vm) {}
};
} // End of namespace MADS