aboutsummaryrefslogtreecommitdiff
path: root/engines/m4/mads_scene.h
diff options
context:
space:
mode:
authorPaul Gilbert2010-06-03 09:34:32 +0000
committerPaul Gilbert2010-06-03 09:34:32 +0000
commit86dcc28342021933f04ff3542932fc8823ff2360 (patch)
tree88b43c3e0a4938078ad782609b5141cd96bd47c2 /engines/m4/mads_scene.h
parent90649938d2d70115967c45cdd1cbb8dab1635794 (diff)
downloadscummvm-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.h67
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