aboutsummaryrefslogtreecommitdiff
path: root/engines/mads/scene_data.h
diff options
context:
space:
mode:
authorPaul Gilbert2014-03-02 23:09:17 -0500
committerPaul Gilbert2014-03-02 23:09:17 -0500
commit3a842a079c668e9dfc52a6056119d4932e8ef56d (patch)
tree5f74efaaf79b8c20c1494b1494493d6c39b0511c /engines/mads/scene_data.h
parenta0996b7384e5c3321af97347613120d2f90ab64e (diff)
downloadscummvm-rg350-3a842a079c668e9dfc52a6056119d4932e8ef56d.tar.gz
scummvm-rg350-3a842a079c668e9dfc52a6056119d4932e8ef56d.tar.bz2
scummvm-rg350-3a842a079c668e9dfc52a6056119d4932e8ef56d.zip
MADS: Bulk of implementation of ScreenObjects::check
Diffstat (limited to 'engines/mads/scene_data.h')
-rw-r--r--engines/mads/scene_data.h97
1 files changed, 90 insertions, 7 deletions
diff --git a/engines/mads/scene_data.h b/engines/mads/scene_data.h
index 6be54cf3e1..8b874a144f 100644
--- a/engines/mads/scene_data.h
+++ b/engines/mads/scene_data.h
@@ -43,6 +43,21 @@ class Scene;
#define DEPTH_BANDS_SIZE 15
#define MAX_ROUTE_NODES 22
+enum ScrCategory {
+ CAT_NONE = 0, CAT_ACTION = 1, CAT_INV_LIST = 2, CAT_INV_VOCAB = 3,
+ CAT_HOTSPOT = 4, CAT_INV_ANIM = 5, CAT_6 = 6, CAT_INV_SCROLLER = 7,
+ CAT_12 = 12
+};
+
+enum Layer {
+ LAYER_GUI = 19
+};
+
+enum SpriteType {
+ ST_NONE = 0, ST_FOREGROUND = 1, ST_BACKGROUND = -4,
+ ST_FULL_SCREEN_REFRESH = -2, ST_EXPIRED = -1
+};
+
class VerbInit {
public:
int _id;
@@ -53,16 +68,48 @@ public:
VerbInit(int id, int action1, int action2): _id(id), _action1(action1), _action2(action2) {}
};
-class ScreenObjects {
+class ScreenObject {
+public:
+ Common::Rect _bounds;
+ ScrCategory _category;
+ int _descId;
+ int _layer;
+
+ ScreenObject();
+};
+
+class ScreenObjects: public Common::Array<ScreenObject> {
+private:
+ MADSEngine *_vm;
+
+ int scanBackwards(const Common::Point &pt, int layer);
+
+ void proc1();
public:
- int _v8333C;
int _v832EC;
+ int _v7FECA;
+ int _v7FED6;
+ int _v8332A;
int _yp;
-};
+ int _v8333C;
+ int _selectedObject;
+ ScrCategory _category;
+ int _objectIndex;
+ bool _released;
-enum SpriteType {
- ST_NONE = 0, ST_FOREGROUND = 1, ST_BACKGROUND = -4,
- ST_FULL_SCREEN_REFRESH = -2, ST_EXPIRED = -1
+ /*
+ * Constructor
+ */
+ ScreenObjects(MADSEngine *vm);
+
+ /**
+ * Add a new item to the list
+ */
+ void add(const Common::Rect &bounds, ScrCategory category, int descId);
+
+ /**
+ */
+ void check(bool scanFlag);
};
class SpriteSlotSubset {
@@ -143,6 +190,28 @@ public:
DynamicHotspot();
};
+class DynamicHotspots : public Common::Array<DynamicHotspot> {
+private:
+ MADSEngine *_vm;
+public:
+ bool _changed;
+
+ /**
+ * Constructor
+ */
+ DynamicHotspots(MADSEngine *vm);
+
+ /**
+ * Clear the list
+ */
+ void clear();
+
+ /**
+ * Refresh the list
+ */
+ void refresh();
+};
+
class SequenceEntry {
public:
int _spritesIndex;
@@ -283,8 +352,22 @@ public:
typedef Common::Array<SceneNode> SceneNodeList;
class InterfaceSurface : public MSurface {
+private:
+ MADSEngine *_vm;
+public:
+ ScrCategory _category;
public:
- void load(MADSEngine *vm, const Common::String &resName);
+ /**
+ * Constructor
+ */
+ InterfaceSurface(MADSEngine *vm);
+
+ /**
+ * Loads an interface from a specified resource
+ */
+ void load(const Common::String &resName);
+
+ void elementHighlighted();
};
/**