[Scummvm-git-logs] scummvm master -> 699f38b5fd8ea9a96624840f8c65dc96f1b54f27
whiterandrek
whiterandrek at gmail.com
Sat Jun 30 10:09:13 CEST 2018
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
4938a33fbb PINK: added pre-loading of global pda page sprites
4d7bed9675 PINK: removed unnecessary field from PDAPage
f75bb43f91 PINK: fixed loading of GLOBAL pda page
699f38b5fd PINK: implemented Peril's PDA init
Commit: 4938a33fbbdfd4d78571700792fb56e08dde62b9
https://github.com/scummvm/scummvm/commit/4938a33fbbdfd4d78571700792fb56e08dde62b9
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2018-06-30T08:56:05+03:00
Commit Message:
PINK: added pre-loading of global pda page sprites
Changed paths:
engines/pink/objects/actions/action_cel.h
engines/pink/objects/actors/actor.cpp
engines/pink/objects/actors/actor.h
engines/pink/objects/pages/pda_page.cpp
diff --git a/engines/pink/objects/actions/action_cel.h b/engines/pink/objects/actions/action_cel.h
index 62a4c45..b1fa1b6 100644
--- a/engines/pink/objects/actions/action_cel.h
+++ b/engines/pink/objects/actions/action_cel.h
@@ -38,6 +38,8 @@ public:
bool initPalette(Director *director) override;
+ void loadDecoder();
+
void start() override;
void end() override;
@@ -57,7 +59,6 @@ public:
protected:
virtual void onStart() = 0;
- void loadDecoder();
void closeDecoder();
void setFrame(uint frame);
diff --git a/engines/pink/objects/actors/actor.cpp b/engines/pink/objects/actors/actor.cpp
index 2725338..0c327ae 100644
--- a/engines/pink/objects/actors/actor.cpp
+++ b/engines/pink/objects/actors/actor.cpp
@@ -22,7 +22,7 @@
#include "pink/constants.h"
#include "pink/cursor_mgr.h"
-#include "pink/objects/actions/action.h"
+#include "pink/objects/actions/action_cel.h"
#include "pink/objects/actors/actor.h"
#include "pink/objects/actors/lead_actor.h"
#include "pink/objects/pages/game_page.h"
@@ -79,6 +79,14 @@ bool Actor::initPalette(Director *director) {
return false;
}
+void Actor::preloadSprites() {
+ for (uint i = 0; i < _actions.size(); ++i) {
+ ActionCEL *cel = dynamic_cast<ActionCEL*>(_actions[i]);
+ if (cel)
+ cel->loadDecoder();
+ }
+}
+
void Actor::toConsole() {
debug("Actor: _name = %s", _name.c_str());
for (uint i = 0; i < _actions.size(); ++i) {
diff --git a/engines/pink/objects/actors/actor.h b/engines/pink/objects/actors/actor.h
index 294beb9..47f5bc5 100644
--- a/engines/pink/objects/actors/actor.h
+++ b/engines/pink/objects/actors/actor.h
@@ -50,6 +50,8 @@ public:
virtual void init(bool paused);
bool initPalette(Director *director);
+ void preloadSprites();
+
void toConsole() override;
bool isPlaying() { return !_isActionEnded; }
diff --git a/engines/pink/objects/pages/pda_page.cpp b/engines/pink/objects/pages/pda_page.cpp
index f8d7e17..a6fa9b1 100644
--- a/engines/pink/objects/pages/pda_page.cpp
+++ b/engines/pink/objects/pages/pda_page.cpp
@@ -36,8 +36,10 @@ PDAPage PDAPage::create(const Common::String &pageName, PDAMgr &pdaMgr) {
}
Array<Actor *> PDAPage::takeActors() {
+ for (uint i = 0; i < _actors.size(); ++i) {
+ _actors[i]->preloadSprites();
+ }
Array<Actor *> actorsCopy = _actors;
- _actors.clear();
return actorsCopy;
}
Commit: 4d7bed967586e5d537c17b80a6aaf945a540d257
https://github.com/scummvm/scummvm/commit/4d7bed967586e5d537c17b80a6aaf945a540d257
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2018-06-30T09:01:09+03:00
Commit Message:
PINK: removed unnecessary field from PDAPage
Changed paths:
engines/pink/objects/pages/pda_page.cpp
engines/pink/objects/pages/pda_page.h
diff --git a/engines/pink/objects/pages/pda_page.cpp b/engines/pink/objects/pages/pda_page.cpp
index a6fa9b1..d60b4d0 100644
--- a/engines/pink/objects/pages/pda_page.cpp
+++ b/engines/pink/objects/pages/pda_page.cpp
@@ -27,9 +27,8 @@
namespace Pink {
-
PDAPage PDAPage::create(const Common::String &pageName, PDAMgr &pdaMgr) {
- PDAPage page(pageName, pdaMgr);
+ PDAPage page(pageName);
page._name = pageName;
page._resMgr.init(pdaMgr.getGame(), &page);
return page;
@@ -43,9 +42,4 @@ Array<Actor *> PDAPage::takeActors() {
return actorsCopy;
}
-PDAPage::PDAPage(const Common::String &name, PDAMgr &pdaMgr)
- : _pdaMgr(pdaMgr) {
- _name = name;
-}
-
} // End of namespace Pink
diff --git a/engines/pink/objects/pages/pda_page.h b/engines/pink/objects/pages/pda_page.h
index fe0443b..79da57c 100644
--- a/engines/pink/objects/pages/pda_page.h
+++ b/engines/pink/objects/pages/pda_page.h
@@ -35,8 +35,7 @@ public:
Array<Actor *> takeActors();
private:
- PDAPage(const Common::String &name, PDAMgr &pdaMgr);
- PDAMgr &_pdaMgr;
+ PDAPage(const Common::String &name) { _name = name; }
};
} // End of namespace Pink
Commit: f75bb43f91f70b99227ef86e930962b6cfeecfc1
https://github.com/scummvm/scummvm/commit/f75bb43f91f70b99227ef86e930962b6cfeecfc1
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2018-06-30T10:33:50+03:00
Commit Message:
PINK: fixed loading of GLOBAL pda page
Changed paths:
engines/pink/objects/actions/action_cel.cpp
engines/pink/objects/actions/action_cel.h
engines/pink/objects/pages/pda_page.cpp
diff --git a/engines/pink/objects/actions/action_cel.cpp b/engines/pink/objects/actions/action_cel.cpp
index f31db4c..600eb88 100644
--- a/engines/pink/objects/actions/action_cel.cpp
+++ b/engines/pink/objects/actions/action_cel.cpp
@@ -64,9 +64,7 @@ void ActionCEL::start() {
}
void ActionCEL::end() {
- if (!_decoder.isVideoLoaded())
- return;
- closeDecoder();
+ _actor->getPage()->getGame()->getDirector()->removeSprite(this);
}
void ActionCEL::pause(bool paused) {
@@ -88,11 +86,6 @@ void ActionCEL::loadDecoder() {
_decoder.loadStream(_actor->getPage()->getResourceStream(_fileName));
}
-void ActionCEL::closeDecoder() {
- _actor->getPage()->getGame()->getDirector()->removeSprite(this);
- _decoder.close();
-}
-
void ActionCEL::setFrame(uint frame) {
_decoder.rewind();
diff --git a/engines/pink/objects/actions/action_cel.h b/engines/pink/objects/actions/action_cel.h
index b1fa1b6..07e16e7 100644
--- a/engines/pink/objects/actions/action_cel.h
+++ b/engines/pink/objects/actions/action_cel.h
@@ -59,8 +59,6 @@ public:
protected:
virtual void onStart() = 0;
- void closeDecoder();
-
void setFrame(uint frame);
void decodeNext();
diff --git a/engines/pink/objects/pages/pda_page.cpp b/engines/pink/objects/pages/pda_page.cpp
index d60b4d0..e8d4ae9 100644
--- a/engines/pink/objects/pages/pda_page.cpp
+++ b/engines/pink/objects/pages/pda_page.cpp
@@ -39,6 +39,7 @@ Array<Actor *> PDAPage::takeActors() {
_actors[i]->preloadSprites();
}
Array<Actor *> actorsCopy = _actors;
+ _actors.clear();
return actorsCopy;
}
Commit: 699f38b5fd8ea9a96624840f8c65dc96f1b54f27
https://github.com/scummvm/scummvm/commit/699f38b5fd8ea9a96624840f8c65dc96f1b54f27
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2018-06-30T11:08:42+03:00
Commit Message:
PINK: implemented Peril's PDA init
Changed paths:
engines/pink/constants.h
engines/pink/pda_mgr.cpp
engines/pink/pda_mgr.h
diff --git a/engines/pink/constants.h b/engines/pink/constants.h
index 1855174..abf7ba8 100644
--- a/engines/pink/constants.h
+++ b/engines/pink/constants.h
@@ -162,6 +162,7 @@ static const char * const kIdleAction = "Idle";
static const char * const kOpenAction = "Open";
static const char * const kShowAction = "Show";
static const char * const kHideAction = "Hide";
+static const char * const kInactiveAction = "Inactive";
static const char * const kInventoryWindowActor = "InventoryWindow";
static const char * const kInventoryItemActor = "InventoryItem";
@@ -194,6 +195,15 @@ static const char * const kBoyBlocked = "BoyBlocked";
static const char * const kUndefinedValue = "UNDEFINED";
static const char * const kTrueValue = "TRUE";
+static const char * const kCountryWheel = "CountryWheel";
+static const char * const kDomainWheel = "DomainWheel";
+
+static const char * const kPreviousPageButton = "PreviousPageButton";
+static const char * const kDomainButton = "DomainButton";
+static const char * const kNavigatorButton = "NavigatorButton";
+
+static const char * const kNavigatePage = "NAVIGATE";
+
} // End of namespace Pink
#endif
diff --git a/engines/pink/pda_mgr.cpp b/engines/pink/pda_mgr.cpp
index f3ea51a..ddf5eb0 100644
--- a/engines/pink/pda_mgr.cpp
+++ b/engines/pink/pda_mgr.cpp
@@ -25,11 +25,16 @@
#include "pink/objects/actors/pda_button_actor.h"
#include "pink/objects/actors/lead_actor.h"
#include "pink/objects/pages/pda_page.h"
+#include "pink/objects/actions/action_cel.h"
namespace Pink {
+static const char * const g_countries[] = {"BRI", "EGY", "BHU", "AUS", "IND", "CHI"};
+static const char * const g_domains[] = {"NAT", "CLO", "HIS", "REL", "PLA", "ART", "FOO", "PEO"};
+
PDAMgr::PDAMgr(Pink::PinkEngine *game)
- : _game(game), _page(nullptr), _cursorMgr(game, nullptr) {}
+ : _game(game), _page(nullptr), _cursorMgr(game, nullptr),
+ _countryIndex(0), _domainIndex(0) {}
PDAMgr::~PDAMgr() {
for (uint i = 0; i < _globalActors.size(); ++i) {
@@ -86,9 +91,13 @@ void PDAMgr::goToPage(const Common::String &pageName) {
_globalActors[i]->setPage(_page);
}
+ _previousPages.push(_page->getName());
+
+ if (_game->isPeril())
+ initPerilButtons();
+
_cursorMgr.setPage(_page);
- _previousPages.push(_page->getName());
}
void PDAMgr::onLeftButtonClick(Common::Point point) {
@@ -128,4 +137,48 @@ void PDAMgr::loadGlobal() {
}
}
+void PDAMgr::initPerilButtons() {
+ Actor *prevPageButton = findGlobalActor(kPreviousPageButton);
+ if (_previousPages.size() < 2)
+ prevPageButton->setAction(kInactiveAction);
+ else
+ prevPageButton->setAction(kIdleAction);
+
+ Actor *navigatorButton = findGlobalActor(kNavigatorButton);
+ Actor *domainButton = findGlobalActor(kDomainButton);
+ if (isNavigate(_page->getName())) {
+ navigatorButton->setAction(kInactiveAction);
+ domainButton->setAction(kInactiveAction);
+ updateWheels();
+ } else {
+ navigatorButton->setAction(kIdleAction);
+ if (isDomain(_page->getName()))
+ domainButton->setAction(kInactiveAction);
+ else
+ domainButton->setAction(kIdleAction);
+ }
+
+}
+
+Actor *PDAMgr::findGlobalActor(const Common::String &actorName) {
+ for (uint i = 0; i < _globalActors.size(); ++i) {
+ if (_globalActors[i]->getName() == actorName)
+ return _globalActors[i];
+ }
+ return nullptr;
+}
+
+void PDAMgr::updateWheels() {
+ _page->findActor(kCountryWheel)->setAction(g_countries[_countryIndex]);
+ _page->findActor(kDomainWheel)->setAction(g_domains[_domainIndex]);
+}
+
+bool PDAMgr::isNavigate(const Common::String &name) {
+ return !name.compareToIgnoreCase(kNavigatePage);
+}
+
+bool PDAMgr::isDomain(const Common::String &name) {
+ return name.size() == 6;
+}
+
} // End of namespace Pink
diff --git a/engines/pink/pda_mgr.h b/engines/pink/pda_mgr.h
index 246679d..0ae16e8 100644
--- a/engines/pink/pda_mgr.h
+++ b/engines/pink/pda_mgr.h
@@ -62,6 +62,16 @@ private:
void close();
void loadGlobal();
+ void initPerilButtons();
+
+ void updateWheels();
+
+ Actor *findGlobalActor(const Common::String &actorName);
+
+ static bool isNavigate(const Common::String &name);
+ static bool isDomain(const Common::String &name);
+
+private:
PinkEngine *_game;
LeadActor *_lead;
PDAPage *_page;
@@ -69,6 +79,8 @@ private:
Array<Actor *> _globalActors;
Common::String _savedPage;
Common::Stack<Common::String> _previousPages;
+ uint _countryIndex;
+ uint _domainIndex;
};
} // End of namespace Pink
More information about the Scummvm-git-logs
mailing list