diff options
author | Paul Gilbert | 2010-06-03 09:34:32 +0000 |
---|---|---|
committer | Paul Gilbert | 2010-06-03 09:34:32 +0000 |
commit | 86dcc28342021933f04ff3542932fc8823ff2360 (patch) | |
tree | 88b43c3e0a4938078ad782609b5141cd96bd47c2 /engines/m4/mads_scene.h | |
parent | 90649938d2d70115967c45cdd1cbb8dab1635794 (diff) | |
download | scummvm-rg350-86dcc28342021933f04ff3542932fc8823ff2360.tar.gz scummvm-rg350-86dcc28342021933f04ff3542932fc8823ff2360.tar.bz2 scummvm-rg350-86dcc28342021933f04ff3542932fc8823ff2360.zip |
Moved the MADS interface view into mads_scene.cpp and did a major cleanup of scene loading code
svn-id: r49405
Diffstat (limited to 'engines/m4/mads_scene.h')
-rw-r--r-- | engines/m4/mads_scene.h | 67 |
1 files changed, 57 insertions, 10 deletions
diff --git a/engines/m4/mads_scene.h b/engines/m4/mads_scene.h index c8a0da3aea..e3e4c3c084 100644 --- a/engines/m4/mads_scene.h +++ b/engines/m4/mads_scene.h @@ -33,27 +33,24 @@ namespace M4 { #define INTERFACE_HEIGHT 106 - +class MadsInterfaceView; class MadsSceneResources: public SceneResources { public: int sceneId; int artFileNum; - int field_4; + int dialogStyle; int width; int height; - - int objectCount; - MadsObject objects[32]; + Common::Array<MadsObject> objects; + Common::Array<Common::String> setNames; - int walkSize; - byte *walkData; Common::Point playerPos; int playerDir; - MadsSceneResources() { walkSize = 0; walkData = NULL; playerDir = 0; } - ~MadsSceneResources() { delete walkData; } - void load(int sceneId); + MadsSceneResources() { playerDir = 0; } + ~MadsSceneResources() {} + void load(int sceneId, const char *resName, int v0, M4Surface *depthSurface, M4Surface *surface); }; enum MadsActionMode {ACTMODE_NONE = 0, ACTMODE_VERB = 1, ACTMODE_OBJECT = 3, ACTMODE_TALK = 6}; @@ -137,6 +134,56 @@ public: void setStatusText(const char *text) {}//***DEPRECATED*** }; +#define CHEAT_SEQUENCE_MAX 8 + +class IntegerList : public Common::Array<int> { +public: + int indexOf(int v) { + for (uint i = 0; i < size(); ++i) + if (operator [](i) == v) + return i; + return -1; + } +}; + +enum InterfaceFontMode {ITEM_NORMAL, ITEM_HIGHLIGHTED, ITEM_SELECTED}; + +enum InterfaceObjects {ACTIONS_START = 0, SCROLL_UP = 10, SCROLL_SCROLLER = 11, SCROLL_DOWN = 12, + INVLIST_START = 13, VOCAB_START = 18}; + +class MadsInterfaceView : public GameInterfaceView { +private: + IntegerList _inventoryList; + RectList _screenObjects; + int _highlightedElement; + int _topIndex; + uint32 _nextScrollerTicks; + int _cheatKeyCtr; + + // Object display fields + int _selectedObject; + SpriteAsset *_objectSprites; + RGBList *_objectPalData; + int _objectFrameNumber; + + void setFontMode(InterfaceFontMode newMode); + bool handleCheatKey(int32 keycode); + bool handleKeypress(int32 keycode); + void leaveScene(); +public: + MadsInterfaceView(MadsM4Engine *vm); + ~MadsInterfaceView(); + + virtual void initialise(); + virtual void setSelectedObject(int objectNumber); + virtual void addObjectToInventory(int objectNumber); + int getSelectedObject() { return _selectedObject; } + int getInventoryObject(int objectIndex) { return _inventoryList[objectIndex]; } + + void onRefresh(RectList *rects, M4Surface *destSurface); + bool onEvent(M4EventType eventType, int32 param1, int x, int y, bool &captureEvents); +}; + } // End of namespace M4 #endif |