aboutsummaryrefslogtreecommitdiff
path: root/engines/composer/composer.h
diff options
context:
space:
mode:
authorAlyssa Milburn2011-07-17 23:03:51 +0200
committerAlyssa Milburn2011-07-17 23:03:51 +0200
commit1608d5a2afbb288a8c3a77b5b252eea402f8ad19 (patch)
tree02e987bd9d2fbf72c02321fefca225dec439fbb0 /engines/composer/composer.h
parent85df146ad42c79644d1916a9f2660603a8294d4a (diff)
downloadscummvm-rg350-1608d5a2afbb288a8c3a77b5b252eea402f8ad19.tar.gz
scummvm-rg350-1608d5a2afbb288a8c3a77b5b252eea402f8ad19.tar.bz2
scummvm-rg350-1608d5a2afbb288a8c3a77b5b252eea402f8ad19.zip
COMPOSER: Various additions/improvements to sprite/mouse code.
Diffstat (limited to 'engines/composer/composer.h')
-rw-r--r--engines/composer/composer.h53
1 files changed, 47 insertions, 6 deletions
diff --git a/engines/composer/composer.h b/engines/composer/composer.h
index 8f22174592..4c87a6e6df 100644
--- a/engines/composer/composer.h
+++ b/engines/composer/composer.h
@@ -60,11 +60,13 @@ class Archive;
class ComposerEngine;
struct Sprite {
- uint16 id;
- uint16 animId;
- uint16 zorder;
- Common::Point pos;
- Graphics::Surface surface;
+ uint16 _id;
+ uint16 _animId;
+ uint16 _zorder;
+ Common::Point _pos;
+ Graphics::Surface _surface;
+
+ bool contains(const Common::Point &pos) const;
};
struct AnimationEntry {
@@ -122,9 +124,29 @@ protected:
uint32 _offset;
};
+enum {
+ kButtonRect = 0,
+ kButtonEllipse = 1,
+ kButtonSprites = 4
+};
+
class Button {
public:
- Button(ComposerEngine *vm, uint16 id);
+ Button() { }
+ Button(Common::SeekableReadStream *stream, uint16 id);
+
+ bool contains(const Common::Point &pos) const;
+
+ uint16 _id;
+ uint16 _type;
+ uint16 _zorder;
+ uint16 _scriptId;
+ uint16 _scriptIdRollOn;
+ uint16 _scriptIdRollOff;
+ bool _active;
+
+ Common::Rect _rect;
+ Common::Array<uint16> _spriteIds;
};
struct Library {
@@ -170,7 +192,9 @@ private:
Audio::SoundHandle _soundHandle;
Audio::QueuingAudioStream *_audioStream;
+ bool _needsUpdate;
Graphics::Surface _surface;
+ Common::List<Button> _buttons;
Common::List<Sprite> _sprites;
uint _directoriesToStrip;
@@ -185,6 +209,19 @@ private:
Common::List<Animation *> _anims;
Common::List<Pipe *> _pipes;
+ void onMouseDown(const Common::Point &pos);
+ void onMouseMove(const Common::Point &pos);
+ void onKeyDown(uint16 keyCode);
+ void setCursor(uint16 id, const Common::Point &offset);
+ void setCursorVisible(bool visible);
+
+ bool _mouseEnabled;
+ bool _mouseVisible;
+ Common::Point _lastMousePos;
+ const Button *_lastButton;
+ uint16 _mouseSpriteId;
+ Common::Point _mouseOffset;
+
Common::String getStringFromConfig(const Common::String &section, const Common::String &key);
Common::String getFilename(const Common::String &section, uint id);
void loadLibrary(uint id);
@@ -206,9 +243,13 @@ private:
void playWaveForAnim(uint16 id, bool bufferingOnly);
void processAnimFrame();
+ bool spriteVisible(uint16 id, uint16 animId);
void addSprite(uint16 id, uint16 animId, uint16 zorder, const Common::Point &pos);
void removeSprite(uint16 id, uint16 animId);
+ const Sprite *getSpriteAtPos(const Common::Point &pos);
+ const Button *getButtonFor(const Sprite *sprite, const Common::Point &pos);
+ void redraw();
void loadCTBL(uint id, uint fadePercent);
void decompressBitmap(uint16 type, Common::SeekableReadStream *stream, byte *buffer, uint32 size, uint width, uint height);
bool initSprite(Sprite &sprite);