diff options
author | whiterandrek | 2018-03-27 19:20:09 +0300 |
---|---|---|
committer | Eugene Sandulenko | 2018-06-28 23:51:32 +0200 |
commit | 7168242832e8bd71e0e2a2617f6e8e6e56e6cd8e (patch) | |
tree | 7f59df4980101eb6df92e4b431b0c9093f1e20cb /engines/pink/objects | |
parent | dbc709a140fc2d01d35dcd3515c45ea9621fe18b (diff) | |
download | scummvm-rg350-7168242832e8bd71e0e2a2617f6e8e6e56e6cd8e.tar.gz scummvm-rg350-7168242832e8bd71e0e2a2617f6e8e6e56e6cd8e.tar.bz2 scummvm-rg350-7168242832e8bd71e0e2a2617f6e8e6e56e6cd8e.zip |
PINK: small fixes and implemented skipping of sequence by buttons
Diffstat (limited to 'engines/pink/objects')
-rw-r--r-- | engines/pink/objects/actions/action_sound.cpp | 19 | ||||
-rw-r--r-- | engines/pink/objects/actions/action_sound.h | 2 | ||||
-rw-r--r-- | engines/pink/objects/actors/actor.h | 2 | ||||
-rw-r--r-- | engines/pink/objects/actors/lead_actor.cpp | 11 | ||||
-rw-r--r-- | engines/pink/objects/actors/lead_actor.h | 3 | ||||
-rw-r--r-- | engines/pink/objects/module.cpp | 3 | ||||
-rw-r--r-- | engines/pink/objects/sequences/sequence_context.cpp | 8 | ||||
-rw-r--r-- | engines/pink/objects/sequences/sequence_context.h | 2 | ||||
-rw-r--r-- | engines/pink/objects/sequences/sequencer.cpp | 5 | ||||
-rw-r--r-- | engines/pink/objects/sequences/sequencer.h | 1 |
10 files changed, 49 insertions, 7 deletions
diff --git a/engines/pink/objects/actions/action_sound.cpp b/engines/pink/objects/actions/action_sound.cpp index 42d279553b..44dfda45c7 100644 --- a/engines/pink/objects/actions/action_sound.cpp +++ b/engines/pink/objects/actions/action_sound.cpp @@ -35,6 +35,10 @@ ActionSound::ActionSound() : _sound(nullptr), _isStopped(1) {} +ActionSound::~ActionSound(){ + end(); +} + void ActionSound::deserialize(Archive &archive) { Action::deserialize(archive); archive >> _fileName; @@ -66,14 +70,17 @@ void ActionSound::start(bool unk) { } void ActionSound::end() { - debug("ActionSound %s of Actor %s is ended", _name.c_str(), _actor->getName().c_str()); + if (_sound) { + debug("ActionSound %s of Actor %s is ended", _name.c_str(), _actor->getName().c_str()); - Director *director = _actor->getPage()->getGame()->getDirector(); - director->removeSound(this); + Director *director = _actor->getPage()->getGame()->getDirector(); + director->removeSound(this); + + _sound->stop(); - _sound->stop(); - delete _sound; - _sound = nullptr; + delete _sound; + _sound = nullptr; + } } void ActionSound::update() { diff --git a/engines/pink/objects/actions/action_sound.h b/engines/pink/objects/actions/action_sound.h index e4bb2f1822..3c71da454e 100644 --- a/engines/pink/objects/actions/action_sound.h +++ b/engines/pink/objects/actions/action_sound.h @@ -32,6 +32,8 @@ class Sound; class ActionSound : public Action { public: ActionSound(); + ~ActionSound(); + virtual void deserialize(Archive &archive); virtual void toConsole(); diff --git a/engines/pink/objects/actors/actor.h b/engines/pink/objects/actors/actor.h index 2dc9769275..1d6fdf4bd4 100644 --- a/engines/pink/objects/actors/actor.h +++ b/engines/pink/objects/actors/actor.h @@ -59,7 +59,7 @@ public: bool initPallete(Director *director); - void update() {}; + virtual void update() {}; protected: GamePage *_page; diff --git a/engines/pink/objects/actors/lead_actor.cpp b/engines/pink/objects/actors/lead_actor.cpp index 55861131d7..7f750e13ad 100644 --- a/engines/pink/objects/actors/lead_actor.cpp +++ b/engines/pink/objects/actors/lead_actor.cpp @@ -32,6 +32,7 @@ namespace Pink { void LeadActor::deserialize(Archive &archive) { + _state = kReady; Actor::deserialize(archive); _state = kReady; _cursorMgr = static_cast<CursorMgr*>(archive.readObject()); @@ -79,6 +80,16 @@ void LeadActor::update() { } } +void LeadActor::OnKeyboardButtonClick(Common::KeyCode code) { + switch (code) { + case Common::KEYCODE_SPACE: + case Common::KEYCODE_RIGHT: + _sequencer->skipSequence(); + + } + +} + void ParlSqPink::toConsole() { debug("ParlSqPink: _name = %s", _name.c_str()); for (int i = 0; i < _actions.size(); ++i) { diff --git a/engines/pink/objects/actors/lead_actor.h b/engines/pink/objects/actors/lead_actor.h index d7c45e02bd..b60e35c95d 100644 --- a/engines/pink/objects/actors/lead_actor.h +++ b/engines/pink/objects/actors/lead_actor.h @@ -23,6 +23,7 @@ #ifndef PINK_LEAD_ACTOR_H #define PINK_LEAD_ACTOR_H +#include <common/keyboard.h> #include "actor.h" namespace Pink { @@ -44,6 +45,7 @@ public: kUnk_Loading // ???? }; + virtual void deserialize(Archive &archive); virtual void toConsole(); @@ -56,6 +58,7 @@ public: void start(bool isHandler); void update(); + void OnKeyboardButtonClick(Common::KeyCode code); private: State _state; CursorMgr *_cursorMgr; diff --git a/engines/pink/objects/module.cpp b/engines/pink/objects/module.cpp index eb6d792c72..f78f290abe 100644 --- a/engines/pink/objects/module.cpp +++ b/engines/pink/objects/module.cpp @@ -64,7 +64,10 @@ void Module::changePage(const Common::String &pageName) { GamePage *page = nullptr; page = findPage(pageName); assert(_page != page); + //_page->clear + + page->init(kLoadingNewGame); } diff --git a/engines/pink/objects/sequences/sequence_context.cpp b/engines/pink/objects/sequences/sequence_context.cpp index 007213c537..62717d0595 100644 --- a/engines/pink/objects/sequences/sequence_context.cpp +++ b/engines/pink/objects/sequences/sequence_context.cpp @@ -71,4 +71,12 @@ SequenceContext::SequenceContext(Sequence *sequence, Sequencer *sequencer) } } +int SequenceContext::getNextItemIndex() const { + return _nextItemIndex; +} + +Sequence *SequenceContext::getSequence() const { + return _sequence; +} + } // End of namespace Pink
\ No newline at end of file diff --git a/engines/pink/objects/sequences/sequence_context.h b/engines/pink/objects/sequences/sequence_context.h index 0727127097..47b35ee977 100644 --- a/engines/pink/objects/sequences/sequence_context.h +++ b/engines/pink/objects/sequences/sequence_context.h @@ -49,6 +49,8 @@ class SequenceContext { public: SequenceContext(Sequence *sequence, Sequencer* sequencer); + int getNextItemIndex() const; + Sequence *getSequence() const; public: Sequence *_sequence; diff --git a/engines/pink/objects/sequences/sequencer.cpp b/engines/pink/objects/sequences/sequencer.cpp index fea28e5f52..272065b284 100644 --- a/engines/pink/objects/sequences/sequencer.cpp +++ b/engines/pink/objects/sequences/sequencer.cpp @@ -81,4 +81,9 @@ void Sequencer::removeContext(SequenceContext *context) { _context = 0; } +void Sequencer::skipSequence() { + if (_context && _context->getNextItemIndex() < _context->getSequence()->getItems().size()) + _context->getSequence()->start(0); +} + } // End of namespace Pink
\ No newline at end of file diff --git a/engines/pink/objects/sequences/sequencer.h b/engines/pink/objects/sequences/sequencer.h index 55e8529988..3ddf38762c 100644 --- a/engines/pink/objects/sequences/sequencer.h +++ b/engines/pink/objects/sequences/sequencer.h @@ -49,6 +49,7 @@ public: void update(); + void skipSequence(); public: SequenceContext *_context; |