[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