diff options
Diffstat (limited to 'engines/mads/screen.h')
-rw-r--r-- | engines/mads/screen.h | 54 |
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: /** |