aboutsummaryrefslogtreecommitdiff
path: root/engines/pink/objects/sequences/seq_timer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/pink/objects/sequences/seq_timer.cpp')
-rw-r--r--engines/pink/objects/sequences/seq_timer.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/engines/pink/objects/sequences/seq_timer.cpp b/engines/pink/objects/sequences/seq_timer.cpp
index d2b761cfed..d5029e60fb 100644
--- a/engines/pink/objects/sequences/seq_timer.cpp
+++ b/engines/pink/objects/sequences/seq_timer.cpp
@@ -24,11 +24,14 @@
#include <engines/pink/archive.h>
#include "./sequencer.h"
#include <common/debug.h>
+#include <engines/pink/objects/actors/supporting_actor.h>
+#include "pink/objects/pages/game_page.h"
+#include "pink/pink.h"
namespace Pink {
SeqTimer::SeqTimer()
- : _unk(0) {
+ : _updatesToMessage(0) {
}
@@ -43,4 +46,21 @@ void SeqTimer::toConsole() {
debug("\tSeqTimer: _actor=%s _period=%u _range=%u", _actor.c_str(), _period, _range);
}
+void SeqTimer::update() {
+ Common::RandomSource &random =_sequencer->_page->getGame()->getRnd();
+ if (_updatesToMessage--)
+ return;
+
+ calculateUpdatesCount();
+ SupportingActor *actor = static_cast<SupportingActor*>(_sequencer->_page->findActor(_actor));
+ if (!_sequencer->findSequenceActorState(actor->getName())){
+ actor->onTimerMessage();
+ }
+}
+
+void SeqTimer::calculateUpdatesCount() {
+ Common::RandomSource &random =_sequencer->_page->getGame()->getRnd();
+ _updatesToMessage = _range ? _period + random.getRandomNumber(_range) : _period;
+}
+
} // End of namespace Pink \ No newline at end of file