diff options
Diffstat (limited to 'engines/pink/objects/sequences')
-rw-r--r-- | engines/pink/objects/sequences/sequence.cpp | 9 | ||||
-rw-r--r-- | engines/pink/objects/sequences/sequence.h | 8 | ||||
-rw-r--r-- | engines/pink/objects/sequences/sequencer.cpp | 7 |
3 files changed, 20 insertions, 4 deletions
diff --git a/engines/pink/objects/sequences/sequence.cpp b/engines/pink/objects/sequences/sequence.cpp index 2071683681..098330bf03 100644 --- a/engines/pink/objects/sequences/sequence.cpp +++ b/engines/pink/objects/sequences/sequence.cpp @@ -134,6 +134,11 @@ void Sequence::skipItemsTo(int index) { } } +void Sequence::skipSubSequence() { + if (_context->getNextItemIndex() < _context->getSequence()->getItems().size()) + _context->getSequence()->start(0); +} + void SequenceAudio::deserialize(Archive &archive) { Sequence::deserialize(archive); archive >> _soundName; @@ -182,4 +187,8 @@ void SequenceAudio::restart() { Sequence::restart(); } +void SequenceAudio::skipToLastSubSequence() { + end(); +} + } // End of namespace Pink
\ No newline at end of file diff --git a/engines/pink/objects/sequences/sequence.h b/engines/pink/objects/sequences/sequence.h index e4695f2088..5db00b4920 100644 --- a/engines/pink/objects/sequences/sequence.h +++ b/engines/pink/objects/sequences/sequence.h @@ -49,9 +49,11 @@ public: virtual void update(); virtual void restart(); - void skipToLastSubSequence(); + virtual void skipSubSequence(); + virtual void skipToLastSubSequence(); void skipItemsTo(int index); + public: SequenceContext *_context; Sequencer *_sequencer; @@ -69,9 +71,13 @@ public: virtual void init(int unk); virtual void start(int unk); virtual void end(); + virtual void update(); virtual void restart(); + virtual void skipSubSequence() {}; + virtual void skipToLastSubSequence(); + private: Common::String _soundName; Sound *_sound; diff --git a/engines/pink/objects/sequences/sequencer.cpp b/engines/pink/objects/sequences/sequencer.cpp index 057603a790..871a2e2621 100644 --- a/engines/pink/objects/sequences/sequencer.cpp +++ b/engines/pink/objects/sequences/sequencer.cpp @@ -73,7 +73,8 @@ void Sequencer::toConsole() { } void Sequencer::update() { - _context->_sequence->update(); + if (_context) + _context->_sequence->update(); } void Sequencer::removeContext(SequenceContext *context) { @@ -82,8 +83,8 @@ void Sequencer::removeContext(SequenceContext *context) { } void Sequencer::skipSubSequence() { - if (_context && _context->getNextItemIndex() < _context->getSequence()->getItems().size()) - _context->getSequence()->start(0); + if (_context) + _context->getSequence()->skipSubSequence(); } void Sequencer::restartSequence() { |