aboutsummaryrefslogtreecommitdiff
path: root/engines/pink/objects
diff options
context:
space:
mode:
Diffstat (limited to 'engines/pink/objects')
-rw-r--r--engines/pink/objects/actions/action_sound.cpp19
-rw-r--r--engines/pink/objects/actions/action_sound.h2
-rw-r--r--engines/pink/objects/actors/actor.h2
-rw-r--r--engines/pink/objects/actors/lead_actor.cpp11
-rw-r--r--engines/pink/objects/actors/lead_actor.h3
-rw-r--r--engines/pink/objects/module.cpp3
-rw-r--r--engines/pink/objects/sequences/sequence_context.cpp8
-rw-r--r--engines/pink/objects/sequences/sequence_context.h2
-rw-r--r--engines/pink/objects/sequences/sequencer.cpp5
-rw-r--r--engines/pink/objects/sequences/sequencer.h1
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;