diff options
Diffstat (limited to 'engines/pink/objects/sequences/seq_timer.cpp')
-rw-r--r-- | engines/pink/objects/sequences/seq_timer.cpp | 22 |
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 |