aboutsummaryrefslogtreecommitdiff
path: root/engines/pink/sequences
diff options
context:
space:
mode:
Diffstat (limited to 'engines/pink/sequences')
-rw-r--r--engines/pink/sequences/sequence.cpp32
-rw-r--r--engines/pink/sequences/sequence.h24
-rw-r--r--engines/pink/sequences/sequencer.cpp12
-rw-r--r--engines/pink/sequences/sequencer.h5
4 files changed, 70 insertions, 3 deletions
diff --git a/engines/pink/sequences/sequence.cpp b/engines/pink/sequences/sequence.cpp
index 54a293d391..73f1194c3c 100644
--- a/engines/pink/sequences/sequence.cpp
+++ b/engines/pink/sequences/sequence.cpp
@@ -24,6 +24,7 @@
#include "sequence.h"
#include "sequencer.h"
#include "../archive.h"
+#include "../items/sequence_item.h"
namespace Pink {
@@ -34,4 +35,35 @@ void Sequence::deserialize(Archive &archive) {
archive >> _items;
}
+Common::Array<SequenceItem*> &Sequence::getItems() {
+ return _items;
+}
+
+SequenceContext::SequenceContext(Sequence *sequence, Sequencer *sequencer)
+ : _sequence(sequence), _sequencer(sequencer)
+{
+ Common::Array<SequenceItem*> &items = sequence->getItems();
+ for (uint i = 0; i < items.size(); ++i) {
+ for (uint j = 0; j < _states.size(); ++j) {
+ if (items[i]->getActor() != _states[j].getActor()){
+ break;
+ }
+ else assert(0); // can it be ?
+ }
+ _states.push_back({items[i]->getActor()});
+ }
+}
+
+SequenceContext::~SequenceContext() {
+
+}
+
+SequenceActorState::SequenceActorState(const Common::String &name)
+ :_actor(name)
+{}
+
+const Common::String &SequenceActorState::getActor() const {
+ return _actor;
+}
+
} // End of namespace Pink \ No newline at end of file
diff --git a/engines/pink/sequences/sequence.h b/engines/pink/sequences/sequence.h
index 61714593db..0360f28147 100644
--- a/engines/pink/sequences/sequence.h
+++ b/engines/pink/sequences/sequence.h
@@ -30,10 +30,12 @@ namespace Pink {
class Sequencer;
class SequenceItem;
+class SequenceContext;
class Sequence : public NamedObject {
public:
virtual void deserialize(Archive &archive);
+ Common::Array<SequenceItem*> &getItems();
private:
Sequencer *_sequencer;
@@ -41,6 +43,28 @@ private:
//context
};
+class SequenceActorState {
+public:
+ SequenceActorState(const Common::String &name);
+
+ const Common::String &getActor() const;
+
+private:
+ Common::String _actor;
+ Common::String _unk; // ?state
+};
+
+
+class SequenceContext {
+public:
+ SequenceContext(Sequence *sequence, Sequencer* sequencer);
+ ~SequenceContext();
+private:
+ Sequence *_sequence;
+ Sequencer *_sequencer;
+ Common::Array<SequenceActorState> _states;
+};
+
} // End of namespace Pink
#endif
diff --git a/engines/pink/sequences/sequencer.cpp b/engines/pink/sequences/sequencer.cpp
index 5de9c8c709..4f7099fdfc 100644
--- a/engines/pink/sequences/sequencer.cpp
+++ b/engines/pink/sequences/sequencer.cpp
@@ -29,7 +29,7 @@
namespace Pink {
Sequencer::Sequencer(GamePage *page)
- : _page(page)
+ : _context(nullptr), _page(page)
{}
void Sequencer::deserialize(Archive &archive) {
@@ -47,4 +47,14 @@ Sequence *Sequencer::findSequence(const Common::String &name) {
});
}
+void Sequencer::authorSequence(Sequence *sequence, bool unk) {
+ if (_context){
+
+ }
+
+ if (sequence){
+ _context = new SequenceContext(sequence, this);
+ }
+}
+
} // End of namespace Pink \ No newline at end of file
diff --git a/engines/pink/sequences/sequencer.h b/engines/pink/sequences/sequencer.h
index 93a156fa54..255f2c63ed 100644
--- a/engines/pink/sequences/sequencer.h
+++ b/engines/pink/sequences/sequencer.h
@@ -30,6 +30,7 @@
namespace Pink {
class Sequence;
+class SequenceContext;
class GamePage;
class Sequencer : public Object {
@@ -38,10 +39,10 @@ public:
virtual void deserialize(Archive &archive);
Sequence* findSequence(const Common::String &name);
- void authorSequence(Sequence *sequence, bool isFromSave);
+ void authorSequence(Sequence *sequence, bool unk);
private:
- //context
+ SequenceContext *_context;
// unknown objects array
Common::Array<Sequence*> _sequences;
//timers