aboutsummaryrefslogtreecommitdiff
path: root/engines/m4/mads_views.h
diff options
context:
space:
mode:
authorPaul Gilbert2010-03-25 12:46:06 +0000
committerPaul Gilbert2010-03-25 12:46:06 +0000
commitae8853d80bc9e4d6a7f952a76271ad06dd9a3970 (patch)
treed8361a9f6bfd42736f8e81b3ef19490572ae81e6 /engines/m4/mads_views.h
parent1eda07f5242189e1d2be2869c118fce7833a7c4f (diff)
downloadscummvm-rg350-ae8853d80bc9e4d6a7f952a76271ad06dd9a3970.tar.gz
scummvm-rg350-ae8853d80bc9e4d6a7f952a76271ad06dd9a3970.tar.bz2
scummvm-rg350-ae8853d80bc9e4d6a7f952a76271ad06dd9a3970.zip
Added preliminary logic for showing loaded sprite frames
svn-id: r48401
Diffstat (limited to 'engines/m4/mads_views.h')
-rw-r--r--engines/m4/mads_views.h43
1 files changed, 35 insertions, 8 deletions
diff --git a/engines/m4/mads_views.h b/engines/m4/mads_views.h
index 98219e04bb..d2aba31c88 100644
--- a/engines/m4/mads_views.h
+++ b/engines/m4/mads_views.h
@@ -34,14 +34,19 @@
namespace M4 {
+#define MADS_SURFACE_HEIGHT 156
+#define MADS_SCREEN_HEIGHT 200
+#define MADS_Y_OFFSET ((MADS_SCREEN_HEIGHT - MADS_SURFACE_HEIGHT) / 2)
+
+
class MadsSpriteSlot {
public:
int spriteId;
int timerIndex;
int spriteListIndex;
int frameNumber;
- int width;
- int height;
+ int xp;
+ int yp;
int depth;
int scale;
@@ -50,6 +55,32 @@ public:
#define SPRITE_SLOTS_SIZE 50
+typedef public Common::Array<Common::SharedPtr<SpriteAsset>> SpriteList;
+
+class MadsSpriteSlots {
+private:
+ MadsSpriteSlot _entries[SPRITE_SLOTS_SIZE];
+ SpriteList _sprites;
+public:
+ int startIndex;
+
+ MadsSpriteSlots() { startIndex = 0; }
+
+ MadsSpriteSlot &operator[](int idx) {
+ assert(idx < SPRITE_SLOTS_SIZE);
+ return _entries[idx];
+ }
+ SpriteAsset &getSprite(int idx) {
+ assert(idx < (int)_sprites.size());
+ return *_sprites[idx].get();
+ }
+
+ int getIndex();
+ void addSprites(const char *resName);
+
+ void draw(View *view);
+};
+
class MadsTextDisplayEntry {
public:
bool active;
@@ -97,8 +128,6 @@ public:
ScreenObjectEntry() { active = false; }
};
-#define SCREEN_OBJECTS_SIZE
-
class ScreenObjects {
private:
Common::Array<ScreenObjectEntry> _entries;
@@ -119,14 +148,12 @@ public:
};
+
class MadsView: public View {
protected:
- MadsSpriteSlot _spriteSlots[SPRITE_SLOTS_SIZE];
+ MadsSpriteSlots _spriteSlots;
MadsTextDisplay _textDisplay;
- int _spriteSlotsStart;
ScreenObjects _screenObjects;
-
- int getSpriteSlotsIndex();
public:
MadsView(MadsM4Engine *vm, const Common::Rect &viewBounds, bool transparent = false);
MadsView(MadsM4Engine *vm, int x = 0, int y = 0, bool transparent = false);