Skip to content

Commit

Permalink
PINK: fix skipping sequence
Browse files Browse the repository at this point in the history
  • Loading branch information
voltya authored and sev- committed Jun 28, 2018
1 parent 0835b0f commit cfc5538
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 16 deletions.
2 changes: 1 addition & 1 deletion engines/pink/objects/actors/lead_actor.cpp
Expand Up @@ -191,7 +191,7 @@ void LeadActor::onKeyboardButtonClick(Common::KeyCode code) {
_sequencer->skipSubSequence();
break;
case Common::KEYCODE_ESCAPE:
_sequencer->skipToLastSubSequence();
_sequencer->skipSequence();
break;
case Common::KEYCODE_LEFT:
_sequencer->restartSequence();
Expand Down
23 changes: 13 additions & 10 deletions engines/pink/objects/sequences/sequence.cpp
Expand Up @@ -106,15 +106,18 @@ void Sequence::restart() {
start(0);
}

void Sequence::skipToLastSubSequence() {
if (_unk && _context->getNextItemIndex() < _items.size()) {
int i = _items.size() - 1;
while (i >= 0 && !_items[--i]->isLeader()) {};
assert(i >= 0);
_context->setNextItemIndex(i);
_context->clearActionsFromActorStates();
skipItemsTo(i);
start(0);
void Sequence::skip() {
if (_context->getNextItemIndex() >= _items.size())
return;

for (int i = _items.size() - 1; i >= 0; --i) {
if (_items[i]->isLeader()) {
_context->setNextItemIndex(i);
_context->clearActionsFromActorStates();
skipItemsTo(i);
start(0);
break;
}
}
}

Expand Down Expand Up @@ -174,7 +177,7 @@ void SequenceAudio::restart() {
Sequence::restart();
}

void SequenceAudio::skipToLastSubSequence() {
void SequenceAudio::skip() {
end();
}

Expand Down
4 changes: 2 additions & 2 deletions engines/pink/objects/sequences/sequence.h
Expand Up @@ -50,7 +50,7 @@ class Sequence : public NamedObject {
virtual void update();
virtual void restart();
virtual void skipSubSequence();
virtual void skipToLastSubSequence();
virtual void skip();
void skipItemsTo(int index);


Expand Down Expand Up @@ -79,7 +79,7 @@ class SequenceAudio : public Sequence {
virtual void restart();

virtual void skipSubSequence() {};
virtual void skipToLastSubSequence();
virtual void skip();

private:
Common::String _soundName;
Expand Down
5 changes: 3 additions & 2 deletions engines/pink/objects/sequences/sequencer.cpp
Expand Up @@ -159,8 +159,9 @@ void Sequencer::restartSequence() {
_context->getSequence()->restart();
}

void Sequencer::skipToLastSubSequence() {
_context->getSequence()->skipToLastSubSequence();
void Sequencer::skipSequence() {
if (_context->getSequence()->_unk)
_context->getSequence()->skip();
}

void Sequencer::updateTimers() {
Expand Down
2 changes: 1 addition & 1 deletion engines/pink/objects/sequences/sequencer.h
Expand Up @@ -54,7 +54,7 @@ class Sequencer : public Object {

void skipSubSequence();
void restartSequence();
void skipToLastSubSequence();
void skipSequence();

void loadState(Archive &archive);
void saveState(Archive &archive);
Expand Down

0 comments on commit cfc5538

Please sign in to comment.