diff options
Diffstat (limited to 'engines/fullpipe/modal.h')
-rw-r--r-- | engines/fullpipe/modal.h | 87 |
1 files changed, 77 insertions, 10 deletions
diff --git a/engines/fullpipe/modal.h b/engines/fullpipe/modal.h index 7ed433b125..e2962ab595 100644 --- a/engines/fullpipe/modal.h +++ b/engines/fullpipe/modal.h @@ -27,6 +27,7 @@ namespace Fullpipe { class PictureObject; class Picture; +class Sound; class BaseModalObject { public: @@ -147,19 +148,47 @@ class ModalCredits : public BaseModalObject { virtual void saveload() {} }; +struct MenuArea { + int picIdL; + PictureObject *picObjD; + PictureObject *picObjL; +}; + class ModalMainMenu : public BaseModalObject { public: - int _field_34; + Scene *_scene; + int _hoverAreaId; + Common::Array<MenuArea *> _areas; + int _menuSliderIdx; + int _musicSliderIdx; + MenuArea *_lastArea; + int _sliderOffset; + int _mfield_34; + Common::Rect _screct; + int _bgX; + int _bgY; + int _debugKeyCount; public: ModalMainMenu(); virtual ~ModalMainMenu() {} virtual bool pollEvent() { return true; } - virtual bool handleMessage(ExCommand *message) { return false; } - virtual bool init(int counterdiff) { return true; } - virtual void update() {} + virtual bool handleMessage(ExCommand *message); + virtual bool init(int counterdiff); + virtual void update(); virtual void saveload() {} + +private: + bool isSaveAllowed(); + void enableDebugMenuButton(); + void setSliderPos(); + void enableDebugMenu(char c); + int checkHover(Common::Point &point); + void updateVolume(); + void updateSoundVolume(Sound *snd); + void updateSliderPos(); + bool isOverArea(PictureObject *obj, Common::Point *point); }; class ModalHelp : public BaseModalObject { @@ -187,25 +216,63 @@ public: class ModalQuery : public BaseModalObject { public: ModalQuery(); - virtual ~ModalQuery() {} + virtual ~ModalQuery(); virtual bool pollEvent() { return true; } - virtual bool handleMessage(ExCommand *message) { return false; } - virtual bool init(int counterdiff) { return true; } - virtual void update() {} + virtual bool handleMessage(ExCommand *message); + virtual bool init(int counterdiff); + virtual void update(); virtual void saveload() {} + + bool create(Scene *sc, PictureObject *picObjList, int picId); + int getQueryResult() { return _queryResult; } + + +private: + PictureObject *_picObjList; + PictureObject *_bg; + PictureObject *_okBtn; + PictureObject *_cancelBtn; + int _queryResult; + }; class ModalSaveGame : public BaseModalObject { public: ModalSaveGame(); - virtual ~ModalSaveGame() {} + virtual ~ModalSaveGame(); virtual bool pollEvent() { return true; } virtual bool handleMessage(ExCommand *message) { return false; } - virtual bool init(int counterdiff) { return true; } + virtual bool init(int counterdiff); virtual void update() {} virtual void saveload() {} + + void setScene(Scene *sc); + void setup(Scene *sc, int mode); + void processKey(int key); + + char *getSaveName(); + + Common::Rect _rect; + int _oldBgX; + int _oldBgY; + PictureObject *_bgr; + PictureObject *_okD; + PictureObject *_okL; + PictureObject *_cancelD; + PictureObject *_cancelL; + PictureObject *_emptyD; + PictureObject *_emptyL; + PictureObject *_fullD; + PictureObject *_fullL; + Scene *_menuScene; + int _mode; + ModalQuery *_queryDlg; + Common::Array <char *> _filenames; + Common::Array <PictureObject *> _arrayL; + Common::Array <PictureObject *> _arrayD; + int _queryRes; }; |