diff options
author | Alyssa Milburn | 2011-07-17 23:03:51 +0200 |
---|---|---|
committer | Alyssa Milburn | 2011-07-17 23:03:51 +0200 |
commit | 1608d5a2afbb288a8c3a77b5b252eea402f8ad19 (patch) | |
tree | 02e987bd9d2fbf72c02321fefca225dec439fbb0 /engines/composer/composer.h | |
parent | 85df146ad42c79644d1916a9f2660603a8294d4a (diff) | |
download | scummvm-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.h | 53 |
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 §ion, const Common::String &key); Common::String getFilename(const Common::String §ion, 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); |