From 62f84eae96625e778aae63e75b399a50b16363e8 Mon Sep 17 00:00:00 2001 From: whitertandrek Date: Mon, 19 Mar 2018 07:47:22 +0200 Subject: PINK: Implemented SideEffectExit --- engines/pink/actors/actor.h | 2 +- engines/pink/actors/lead_actor.cpp | 7 +++++++ engines/pink/actors/lead_actor.h | 2 +- engines/pink/page.cpp | 6 ++++++ engines/pink/page.h | 2 +- engines/pink/side_effects/side_effect.h | 5 ++++- engines/pink/side_effects/side_effect_exit.cpp | 5 +++++ engines/pink/side_effects/side_effect_exit.h | 2 ++ 8 files changed, 27 insertions(+), 4 deletions(-) (limited to 'engines/pink') diff --git a/engines/pink/actors/actor.h b/engines/pink/actors/actor.h index 8daccc88b9..f13cfe2659 100644 --- a/engines/pink/actors/actor.h +++ b/engines/pink/actors/actor.h @@ -36,7 +36,7 @@ public: Actor() {}; virtual void deserialize(Archive &archive); -private: +protected: GamePage *_page; //int possibly_isActionNotExist; Action *_action; diff --git a/engines/pink/actors/lead_actor.cpp b/engines/pink/actors/lead_actor.cpp index 80a9281598..23c94eddc9 100644 --- a/engines/pink/actors/lead_actor.cpp +++ b/engines/pink/actors/lead_actor.cpp @@ -25,6 +25,8 @@ #include "../cursor_mgr.h" #include "engines/pink/sequences/sequencer.h" #include "../archive.h" +#include "../page.h" +#include "../pink.h" namespace Pink { @@ -35,4 +37,9 @@ void LeadActor::deserialize(Archive &archive) { _sequencer = static_cast(archive.readObject()); } +void LeadActor::setNextExecutors(Common::String &nextModule, Common::String &nextPage) { + //TODO check for lead actor state + _page->getGame()->setNextExecutors(nextModule, nextPage); +} + } // End of namespace Pink diff --git a/engines/pink/actors/lead_actor.h b/engines/pink/actors/lead_actor.h index a859de8fd5..762896c03c 100644 --- a/engines/pink/actors/lead_actor.h +++ b/engines/pink/actors/lead_actor.h @@ -34,7 +34,7 @@ class Sequencer; class LeadActor : public Actor { public: virtual void deserialize(Archive &archive); - + void setNextExecutors(Common::String &nextModule, Common::String &nextPage); private: CursorMgr *_cursorMgr; WalkMgr *_walkMgr; diff --git a/engines/pink/page.cpp b/engines/pink/page.cpp index a1d025f4ff..cfc78c8974 100644 --- a/engines/pink/page.cpp +++ b/engines/pink/page.cpp @@ -35,6 +35,7 @@ void Page::load(Archive &archive) { archive >> _actors; } + void GamePage::deserialize(Archive &archive) { Page::deserialize(archive); _module = static_cast(archive.readObject()); @@ -82,4 +83,9 @@ void GamePage::loadFields() { } +PinkEngine *GamePage::getGame() { + return _module->getGame(); +} + + } // End of namespace Pink diff --git a/engines/pink/page.h b/engines/pink/page.h index 10dcd4e2ad..a408ba81bd 100644 --- a/engines/pink/page.h +++ b/engines/pink/page.h @@ -38,7 +38,6 @@ class Page : public NamedObject { public: void load(Archive &archive); - protected: ResourceMgr _resMgr; LeadActor *_leadActor; @@ -64,6 +63,7 @@ public: void init(bool isLoadingSave); + PinkEngine *getGame(); private: int perhapsIsLoaded; diff --git a/engines/pink/side_effects/side_effect.h b/engines/pink/side_effects/side_effect.h index 628fe1e883..f3d4eec06d 100644 --- a/engines/pink/side_effects/side_effect.h +++ b/engines/pink/side_effects/side_effect.h @@ -27,9 +27,12 @@ namespace Pink { +class LeadActor; + class SideEffect : public Object { public: - + virtual ~SideEffect() {}; + virtual void init(LeadActor &_actor) {}; }; diff --git a/engines/pink/side_effects/side_effect_exit.cpp b/engines/pink/side_effects/side_effect_exit.cpp index 0a14e1c3c4..31efc35271 100644 --- a/engines/pink/side_effects/side_effect_exit.cpp +++ b/engines/pink/side_effects/side_effect_exit.cpp @@ -23,6 +23,7 @@ #include #include "side_effect_exit.h" #include "../archive.h" +#include "../actors/lead_actor.h" namespace Pink { @@ -32,4 +33,8 @@ void SideEffectExit::deserialize(Archive &archive) { _nextModule.c_str(), _nextPage.c_str()); } +void SideEffectExit::init(LeadActor &_actor) { + _actor.setNextExecutors(_nextPage, _nextModule); +} + } // End of namespace Pink \ No newline at end of file diff --git a/engines/pink/side_effects/side_effect_exit.h b/engines/pink/side_effects/side_effect_exit.h index fdcd7cd538..5d2076d9bd 100644 --- a/engines/pink/side_effects/side_effect_exit.h +++ b/engines/pink/side_effects/side_effect_exit.h @@ -31,6 +31,8 @@ class SideEffectExit : public SideEffect { public: virtual void deserialize(Archive &archive); + virtual void init(LeadActor &_actor); + private: Common::String _nextModule; Common::String _nextPage; -- cgit v1.2.3