aboutsummaryrefslogtreecommitdiff
path: root/engines/mads/screen.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mads/screen.h')
-rw-r--r--engines/mads/screen.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/engines/mads/screen.h b/engines/mads/screen.h
index 06053e89dd..9033206852 100644
--- a/engines/mads/screen.h
+++ b/engines/mads/screen.h
@@ -32,6 +32,16 @@ namespace MADS {
#define MADS_SCREEN_WIDTH 320
#define MADS_SCREEN_HEIGHT 200
+enum ScrCategory {
+ CAT_NONE = 0, CAT_ACTION = 1, CAT_INV_LIST = 2, CAT_INV_VOCAB = 3,
+ CAT_HOTSPOT = 4, CAT_INV_ANIM = 5, CAT_TALK_ENTRY = 6, CAT_INV_SCROLLER = 7,
+ CAT_12 = 12
+};
+
+enum Layer {
+ LAYER_GUI = 19
+};
+
enum ScreenTransition {
kTransitionNone = 0,
kTransitionFadeIn, kTransitionFadeOutIn,
@@ -112,6 +122,50 @@ public:
void reset();
};
+
+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 _v832EC;
+ int _v7FECA;
+ int _v7FED6;
+ int _v8332A;
+ int _v8333C;
+ int _selectedObject;
+ ScrCategory _category;
+ int _objectIndex;
+ bool _released;
+
+ /*
+ * Constructor
+ */
+ ScreenObjects(MADSEngine *vm);
+
+ /**
+ * Add a new item to the list
+ */
+ void add(const Common::Rect &bounds, Layer layer, ScrCategory category, int descId);
+
+ /**
+ */
+ void check(bool scanFlag);
+};
+
class ScreenSurface : public MSurface {
private:
/**