[Scummvm-git-logs] scummvm master -> d6bd7b2f22cd50ddec316575eff1a1d6a0e1013c

a-yyg 76591232+a-yyg at users.noreply.github.com
Sat Jul 17 02:33:22 UTC 2021


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
500916b5ca SAGA2: Move playerList to Saga2Engine
582952b6a0 SAGA2: Move backPort to Saga2Engine
d6bd7b2f22 SAGA2: Fix global constructor warning in playmode.cpp


Commit: 500916b5ca401a10866c7076c6eae463af0b16a2
    https://github.com/scummvm/scummvm/commit/500916b5ca401a10866c7076c6eae463af0b16a2
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-07-17T11:23:24+09:00

Commit Message:
SAGA2: Move playerList to Saga2Engine

Changed paths:
    engines/saga2/actor.cpp
    engines/saga2/contain.cpp
    engines/saga2/intrface.cpp
    engines/saga2/objects.cpp
    engines/saga2/objproto.cpp
    engines/saga2/player.cpp
    engines/saga2/playmode.cpp
    engines/saga2/saga2.h


diff --git a/engines/saga2/actor.cpp b/engines/saga2/actor.cpp
index b83fdb2d4b..65fcc0e49e 100644
--- a/engines/saga2/actor.cpp
+++ b/engines/saga2/actor.cpp
@@ -74,8 +74,6 @@ extern int32        actorListSize;
 
 extern int16        actorLimboCount;
 
-extern PlayerActor  playerList[];   //  Master list of all PlayerActors
-
 bool unstickObject(GameObject *obj);
 
 extern ObjectSoundFXs   *objectSoundFXTable;    // the global object sound effects table
@@ -798,15 +796,15 @@ void ActorProto::doBackgroundUpdate(GameObject *obj) {
 
 			switch (actorID) {
 			case ActorBaseID + FTA_JULIAN:
-				playerList[FTA_JULIAN].recoveryUpdate();
+				g_vm->_playerList[FTA_JULIAN]->recoveryUpdate();
 				break;
 
 			case ActorBaseID + FTA_PHILIP:
-				playerList[FTA_PHILIP].recoveryUpdate();
+				g_vm->_playerList[FTA_PHILIP]->recoveryUpdate();
 				break;
 
 			case ActorBaseID + FTA_KEVIN:
-				playerList[FTA_KEVIN].recoveryUpdate();
+				g_vm->_playerList[FTA_KEVIN]->recoveryUpdate();
 				break;
 
 			default:
@@ -1758,7 +1756,7 @@ ActorAttributes *Actor::getBaseStats(void) {
 	if (disposition < dispositionPlayer)
 		return &((ActorProto *)prototype)->baseStats;
 	else
-		return &playerList[disposition - dispositionPlayer].baseStats;
+		return &g_vm->_playerList[disposition - dispositionPlayer]->baseStats;
 }
 
 //-----------------------------------------------------------------------
diff --git a/engines/saga2/contain.cpp b/engines/saga2/contain.cpp
index 35678628c7..0fb8faf3fa 100644
--- a/engines/saga2/contain.cpp
+++ b/engines/saga2/contain.cpp
@@ -56,7 +56,6 @@ extern ReadyContainerView   *TrioCviews[kNumViews];
 extern ReadyContainerView   *indivCviewTop, *indivCviewBot;
 extern SpellStuff   spellBook[];
 extern SpriteSet    *objectSprites;        // object sprites
-extern PlayerActor  playerList[];   //  Master list of all PlayerActors
 extern Alarm        containerObjTextAlarm;
 extern bool         gameSetupComplete;
 
diff --git a/engines/saga2/intrface.cpp b/engines/saga2/intrface.cpp
index ad07700d5a..524c811f78 100644
--- a/engines/saga2/intrface.cpp
+++ b/engines/saga2/intrface.cpp
@@ -46,7 +46,6 @@ namespace Saga2 {
  * ===================================================================== */
 extern ReadyContainerView   *TrioCviews[kNumViews];
 extern ReadyContainerView   *indivCviewTop, *indivCviewBot;
-extern PlayerActor          playerList[];   //  Master list of all PlayerActors
 extern gPanelList           *trioControls, *indivControls;
 extern gPanelList           *playControls;
 extern const uint32         imageGroupID;
@@ -817,8 +816,8 @@ void CMassWeightIndicator::recalculate(void) {
 		setMassPie(retMass = getWeightRatio(containerObject, mass, false));
 		setBulkPie(retBulk = getBulkRatio(containerObject, bulk, false));
 	} else {
-		setMassPie(retMass = getWeightRatio(playerList[getCenterActorPlayerID()].getActor(), mass, false));
-		setBulkPie(retBulk = getBulkRatio(playerList[getCenterActorPlayerID()].getActor(), bulk, false));
+		setMassPie(retMass = getWeightRatio(g_vm->_playerList[getCenterActorPlayerID()]->getActor(), mass, false));
+		setBulkPie(retBulk = getBulkRatio(g_vm->_playerList[getCenterActorPlayerID()]->getActor(), bulk, false));
 	}
 }
 
@@ -984,7 +983,7 @@ void CManaIndicator::drawClipped(gPort &port,
 
 	// Do an update to the mana star info if needed,
 	// if not, do not draw stuff
-	calcDraw = update(&playerList[getCenterActorPlayerID()]);
+	calcDraw = update(g_vm->_playerList[getCenterActorPlayerID()]);
 
 	if (!calcDraw) {
 		if (!extent.overlap(clipRect)) return;
@@ -1353,16 +1352,16 @@ void CHealthIndicator::updateStar(gCompImage *starCtl, int32 bro, int32 baseVita
 void CHealthIndicator::update(void) {
 	if (indivControlsFlag) {
 		// get the stats for the selected brother
-		int16 baseVitality  = playerList[translatePanID(uiIndiv)].getBaseStats().vitality;
-		int16 currVitality  = playerList[translatePanID(uiIndiv)].getEffStats()->vitality;
+		int16 baseVitality  = g_vm->_playerList[translatePanID(uiIndiv)]->getBaseStats().vitality;
+		int16 currVitality  = g_vm->_playerList[translatePanID(uiIndiv)]->getEffStats()->vitality;
 
 		updateStar(indivStarBtn, uiIndiv, baseVitality, currVitality);
 	} else {
 
 		for (uint16 i = 0; i < numControls; i++) {
 			// get the stats for the selected brother
-			int16 baseVitality  = playerList[i].getBaseStats().vitality;
-			int16 currVitality  = playerList[i].getEffStats()->vitality;
+			int16 baseVitality  = g_vm->_playerList[i]->getBaseStats().vitality;
+			int16 currVitality  = g_vm->_playerList[i]->getEffStats()->vitality;
 
 			updateStar(starBtns[i], i, baseVitality, currVitality);
 		}
@@ -1769,7 +1768,7 @@ void updateIndicators(void) {
 
 	// mana indicator update check
 	if (isIndivMode()) {
-		if (ManaIndicator->needUpdate(&playerList[getCenterActorPlayerID()])) {
+		if (ManaIndicator->needUpdate(g_vm->_playerList[getCenterActorPlayerID()])) {
 			// redraw the region that is not covered by any other window
 			ManaIndicator->invalidate();
 		}
@@ -1897,7 +1896,7 @@ void setIndivBtns(uint16 brotherID) {    // top = 0, mid = 1, bot = 2
 	// now set the indicators for mass and bulk
 	uint16 pieWeightRatio   = MassWeightIndicator->getMassPieDiv();
 	uint16 pieBulkRatio     = MassWeightIndicator->getBulkPieDiv();
-	PlayerActor *brother    = &playerList[brotherID];
+	PlayerActor *brother    = g_vm->_playerList[brotherID];
 
 	MassWeightIndicator->setMassPie(getWeightRatio(brother->getActor(), pieWeightRatio, false));
 	MassWeightIndicator->setBulkPie(getBulkRatio(brother->getActor(), pieBulkRatio, false));
@@ -1944,7 +1943,7 @@ void setCenterBrother(uint16 whichBrother) {
 	g_vm->_mouseInfo->replaceObject();
 
 	// set the new center actor
-	setCenterActor(&playerList[whichBrother]);
+	setCenterActor(g_vm->_playerList[whichBrother]);
 }
 
 uint16 translatePanID(uint16 panID) {
@@ -2409,8 +2408,8 @@ APPFUNC(cmdHealthStar) {
 		}
 
 		// get the stats for the selected brother
-		int16 baseVitality = playerList[transBroID].getBaseStats().vitality;
-		int16 currVitality = playerList[transBroID].getEffStats()->vitality;
+		int16 baseVitality = g_vm->_playerList[transBroID]->getBaseStats().vitality;
+		int16 currVitality = g_vm->_playerList[transBroID]->getEffStats()->vitality;
 
 		char buf[40];
 
@@ -2438,7 +2437,7 @@ APPFUNC(cmdMassInd) {
 			if (ev.panel->id > 1) {
 				containerObject = (GameObject *)win->userData;
 			} else {
-				containerObject = (GameObject *)playerList[getCenterActorPlayerID()].getActor();
+				containerObject = (GameObject *)g_vm->_playerList[getCenterActorPlayerID()]->getActor();
 			}
 
 			assert(containerObject);
@@ -2476,7 +2475,7 @@ APPFUNC(cmdBulkInd) {
 			if (ev.panel->id > 1) {
 				containerObject = (GameObject *)win->userData;
 			} else {
-				containerObject = (GameObject *)playerList[getCenterActorPlayerID()].getActor();
+				containerObject = (GameObject *)g_vm->_playerList[getCenterActorPlayerID()]->getActor();
 			}
 
 			assert(containerObject);
@@ -2503,7 +2502,7 @@ APPFUNC(cmdManaInd) {
 			int     numManaRegions = ManaIndicator->getNumManaRegions();
 			int     i;
 			int     curMana = 0, baseMana = 0;
-			PlayerActor *player             = &playerList[getCenterActorPlayerID()];
+			PlayerActor *player             = g_vm->_playerList[getCenterActorPlayerID()];
 			ActorAttributes *stats          = player->getEffStats();
 			ActorAttributes baseStatsRef    = player->getBaseStats();
 			Point16 pos = ev.mouse;
@@ -2610,7 +2609,7 @@ void cleanupUIState(void) {
 }
 
 void gArmorIndicator::setValue(PlayerActorID brotherID) {
-	Actor *bro = playerList[brotherID].getActor();
+	Actor *bro = g_vm->_playerList[brotherID]->getActor();
 	bro->totalArmorAttributes(attr);
 	invalidate();
 }
@@ -2715,7 +2714,7 @@ void gEnchantmentDisplay::pointerMove(gPanelMessage &msg) {
 }
 
 void gEnchantmentDisplay::setValue(PlayerActorID pID) {
-	Actor           *a = playerList[pID].getActor();
+	Actor           *a = g_vm->_playerList[pID]->getActor();
 	uint8           newIconFlags[iconCount];
 	EnchantmentIterator iter(a);
 	ContainerIterator   cIter(a);
diff --git a/engines/saga2/objects.cpp b/engines/saga2/objects.cpp
index 3752f97c7f..384f1d71bd 100644
--- a/engines/saga2/objects.cpp
+++ b/engines/saga2/objects.cpp
@@ -135,7 +135,6 @@ bool                massAndBulkCount;
 extern BackWindow   *mainWindow;
 extern StaticPoint16 fineScroll;             // current scroll pos
 extern hResContext  *imageRes;              // image resource handle
-extern PlayerActor  playerList[];   //  Master list of all PlayerActors
 extern SpellStuff   spellBook[];
 extern ObjectID     pickedObject;
 
@@ -614,7 +613,7 @@ void GameObject::objCursorText(char nameBuf[], const int8 size, int16 count) {
 			        brotherID == ActorBaseID + FTA_PHILIP  ||
 			        brotherID == ActorBaseID + FTA_KEVIN) {
 				// get base 0 level
-				level = playerList[brotherID - ActorBaseID].getSkillLevel(sProto);
+				level = g_vm->_playerList[brotherID - ActorBaseID]->getSkillLevel(sProto);
 
 				// normalize and output
 				sprintf(nameBuf, "%s-%d", objName(), ++level);
@@ -4311,7 +4310,7 @@ void readyContainerSetup(void) {
 	indivReadyNode = CreateReadyContainerNode(0);
 
 	for (i = 0; i < kNumViews && i < kPlayerActors ; i++) {
-		playerList[i].readyNode = CreateReadyContainerNode(i);
+		g_vm->_playerList[i]->readyNode = CreateReadyContainerNode(i);
 
 		TrioCviews[i] = new ReadyContainerView(
 		                      *trioControls,
@@ -4319,7 +4318,7 @@ void readyContainerSetup(void) {
 		                             trioReadyContInfo[i].yPos + 8,
 		                             iconOriginX * 2 + iconWidth * trioReadyContInfo[i].cols + iconSpacingY * (trioReadyContInfo[i].cols - 1),
 		                             iconOriginY + (iconOriginY * trioReadyContInfo[i].rows) + (trioReadyContInfo[i].rows * iconHeight) - 23),
-		                      *playerList[i].readyNode,
+		                      *g_vm->_playerList[i]->readyNode,
 		                      backImages,
 		                      numReadyContRes,
 		                      trioReadyContInfo[i].rows,
@@ -4375,8 +4374,8 @@ void cleanupReadyContainers(void) {
 		delete TrioCviews[i];
 		TrioCviews[i] = nullptr;
 
-		delete playerList[i].readyNode;
-		playerList[i].readyNode = nullptr;
+		delete g_vm->_playerList[i]->readyNode;
+		g_vm->_playerList[i]->readyNode = nullptr;
 	}
 	delete indivReadyNode;
 
diff --git a/engines/saga2/objproto.cpp b/engines/saga2/objproto.cpp
index 5b5f61db1f..79b2b88989 100644
--- a/engines/saga2/objproto.cpp
+++ b/engines/saga2/objproto.cpp
@@ -51,7 +51,6 @@ extern uint8        identityColors[256];
 #pragma off (unreferenced);
 #endif
 
-extern PlayerActor playerList[];    //  Master list of all PlayerActors
 
 extern ObjectSoundFXs   *objectSoundFXTable;    // the global object sound effects table
 
diff --git a/engines/saga2/player.cpp b/engines/saga2/player.cpp
index 9668622de8..df35d9eda3 100644
--- a/engines/saga2/player.cpp
+++ b/engines/saga2/player.cpp
@@ -67,14 +67,6 @@ static PlayerActorID    centerActor;        //  Index of the current center
 
 bool                    brotherBandingEnabled;
 
-//  Master list of all playerActor structures
-PlayerActor playerList[kPlayerActors] = {
-	PlayerActor(ActorBaseID +  0),       //  Julian
-	PlayerActor(ActorBaseID +  1),       //  Philip
-	PlayerActor(ActorBaseID +  2),       //  Kevin
-};
-
-
 /* ===================================================================== *
    Methods
  * ===================================================================== */
@@ -507,30 +499,35 @@ void PlayerActor::handleAttacked(void) {
 //	Return a pointer to a PlayerActor given it's ID
 
 PlayerActor *getPlayerActorAddress(PlayerActorID id) {
-	assert(id >= 0 && id < ARRAYSIZE(playerList));
+	assert(id >= 0 && id < (int)g_vm->_playerList.size());
 
-	return &playerList[id];
+	return g_vm->_playerList[id];
 }
 
 //-----------------------------------------------------------------------
 //	Return a PlayerActor ID given it's address
 
 PlayerActorID getPlayerActorID(PlayerActor *p) {
-	return p - playerList;
+	for (int i = 0; i < (int)g_vm->_playerList.size(); ++i) {
+		if (g_vm->_playerList[i] == p)
+			return i;
+	}
+
+	return -1;
 }
 
 //-----------------------------------------------------------------------
 //	Return a pointer the center actor's Actor structure
 
 Actor *getCenterActor(void) {
-	return playerList[centerActor].getActor();
+	return g_vm->_playerList[centerActor]->getActor();
 }
 
 //-----------------------------------------------------------------------
 //  Return the center actor's object ID
 
 ObjectID getCenterActorID(void) {
-	return playerList[centerActor].getActorID();
+	return ActorBaseID + centerActor;
 }
 
 //-----------------------------------------------------------------------
@@ -548,7 +545,7 @@ void setCenterActor(PlayerActorID newCenter) {
 
 	assert(newCenter < kPlayerActors);
 
-	Actor                       *a = playerList[newCenter].getActor();
+	Actor                       *a = g_vm->_playerList[newCenter]->getActor();
 	PlayerActorIterator         iter;
 	PlayerActor                 *player;
 
@@ -564,7 +561,7 @@ void setCenterActor(PlayerActorID newCenter) {
 	}
 
 	centerActor = newCenter;
-	viewCenterObject = playerList[centerActor].getActorID();
+	viewCenterObject = g_vm->_playerList[centerActor]->getActorID();
 
 	indivReadyNode->changeOwner(newCenter);
 	g_vm->_containerList->setPlayerNum(newCenter);
@@ -577,7 +574,7 @@ void setCenterActor(PlayerActorID newCenter) {
 	}
 
 	//  Set the new centers fight stance based upon his aggression state
-	a->setFightStance(playerList[newCenter].isAggressive());
+	a->setFightStance(g_vm->_playerList[newCenter]->isAggressive());
 
 	// band actors to new center if banding button set
 	for (player = iter.first(); player != NULL; player = iter.next()) {
@@ -600,8 +597,8 @@ void setCenterActor(Actor *newCenter) {
 //	Set a new center actor based upon a PlayerActor address
 
 void setCenterActor(PlayerActor *newCenter) {
-	assert(newCenter >= playerList && newCenter < &playerList[kPlayerActors]);
-	setCenterActor(newCenter - playerList);
+	assert(getPlayerActorID(newCenter) >= 0);
+	setCenterActor(getPlayerActorID(newCenter));
 }
 
 //-----------------------------------------------------------------------
@@ -610,7 +607,7 @@ void setCenterActor(PlayerActor *newCenter) {
 TilePoint centerActorCoords(void) {
 	Actor           *a;
 
-	a = playerList[centerActor].getActor();
+	a = g_vm->_playerList[centerActor]->getActor();
 	return a->getLocation();
 }
 
@@ -621,14 +618,14 @@ TilePoint centerActorCoords(void) {
 void setAggression(PlayerActorID player, bool aggression) {
 	assert(player >= 0 && player < kPlayerActors);
 
-	Actor       *a = playerList[player].getActor();
+	Actor       *a = g_vm->_playerList[player]->getActor();
 
 	if (a->isDead()) return;
 
 	if (aggression)
-		playerList[player].setAggression();
+		g_vm->_playerList[player]->setAggression();
 	else
-		playerList[player].clearAggression();
+		g_vm->_playerList[player]->clearAggression();
 
 	if (player == centerActor)
 		a->setFightStance(aggression);
@@ -643,7 +640,7 @@ void setAggression(PlayerActorID player, bool aggression) {
 
 bool isAggressive(PlayerActorID player) {
 	assert(player >= 0 && player < kPlayerActors);
-	return playerList[player].isAggressive();
+	return g_vm->_playerList[player]->isAggressive();
 }
 
 //-----------------------------------------------------------------------
@@ -657,7 +654,7 @@ void autoAdjustAggression(void) {
 	for (i = 0; i < kPlayerActors; i++) {
 		if (i == centerActor || isBanded(i)) {
 			bool            enemiesPresent = false;
-			Actor           *actor = playerList[i].getActor();
+			Actor           *actor = g_vm->_playerList[i]->getActor();
 
 			if (actor->getStats()->vitality >= kMinAutoAggressionVitality) {
 				GameObject      *obj;
@@ -696,14 +693,14 @@ void autoAdjustAggression(void) {
 void setBanded(PlayerActorID player, bool banded) {
 	assert(player >= 0 && player < kPlayerActors);
 
-	if (playerList[player].getActor()->isDead()) return;
+	if (g_vm->_playerList[player]->getActor()->isDead()) return;
 
 	if (banded)
-		playerList[player].setBanded();
+		g_vm->_playerList[player]->setBanded();
 	else
-		playerList[player].clearBanded();
+		g_vm->_playerList[player]->clearBanded();
 
-	playerList[player].resolveBanding();
+	g_vm->_playerList[player]->resolveBanding();
 
 	updateBrotherBandingButton(player, banded);
 }
@@ -713,7 +710,7 @@ void setBanded(PlayerActorID player, bool banded) {
 
 bool isBanded(PlayerActorID player) {
 	assert(player >= 0 && player < kPlayerActors);
-	return playerList[player].isBanded();
+	return g_vm->_playerList[player]->isBanded();
 }
 
 //-----------------------------------------------------------------------
@@ -794,7 +791,7 @@ void handlePlayerActorDeath(PlayerActorID id) {
 			allPlayerActorsDead = true;
 	}
 
-	PlayerActor     *player = &playerList[id];
+	PlayerActor     *player = g_vm->_playerList[id];
 
 	player->clearAggression();
 	player->clearBanded();
@@ -872,7 +869,7 @@ void handleEndOfCombat(void) {
 
 	//  Iterate through all player actors
 	for (i = 0; i < kPlayerActors; i++)
-		playerList[i].resetAttackNotification();
+		g_vm->_playerList[i]->resetAttackNotification();
 }
 
 /* ======================================================================= *
@@ -898,10 +895,12 @@ struct PlayerActorArchive {
 //	Initialize the player list
 
 void initPlayerActors(void) {
-	PlayerActorID   i;
+	g_vm->_playerList.push_back(new PlayerActor(ActorBaseID + 0)); // Julian
+	g_vm->_playerList.push_back(new PlayerActor(ActorBaseID + 1)); // Philip
+	g_vm->_playerList.push_back(new PlayerActor(ActorBaseID + 2)); // Kevin
 
-	for (i = 0; i < kPlayerActors; i++) {
-		PlayerActor     *p = &playerList[i];
+	for (int i = 0; i < kPlayerActors; i++) {
+		PlayerActor     *p = g_vm->_playerList[i];
 		Actor           *a = p->getActor();
 		ActorProto      *proto = (ActorProto *)a->proto();
 
@@ -943,7 +942,7 @@ void savePlayerActors(Common::OutSaveFile *outS) {
 	for (int i = 0; i < kPlayerActors; i++) {
 		debugC(3, kDebugSaveload, "Saving PlayerActor %d", i);
 
-		PlayerActor *p = &playerList[i];
+		PlayerActor *p = g_vm->_playerList[i];
 
 		//  Store the portrait type
 		out->writeSint16LE(p->portraitType);
@@ -984,7 +983,7 @@ void loadPlayerActors(Common::InSaveFile *in) {
 	for (int i = 0; i < kPlayerActors; i++) {
 		debugC(3, kDebugSaveload, "Loading PlayerActor %d", i);
 
-		PlayerActor *p = &playerList[i];
+		PlayerActor *p = g_vm->_playerList[i];
 
 		//  Restore the portrait type
 		p->portraitType = in->readSint16LE();
@@ -1043,7 +1042,7 @@ struct CenterActorArchive {
 
 void initCenterActor(void) {
 	centerActor = FTA_JULIAN;
-	viewCenterObject = playerList[centerActor].getActorID();
+	viewCenterObject = g_vm->_playerList[centerActor]->getActorID();
 
 	// clear the last center actor's button state
 	updateBrotherRadioButtons(FTA_JULIAN);
@@ -1079,11 +1078,11 @@ void loadCenterActor(Common::InSaveFile *in) {
 
 PlayerActor *PlayerActorIterator::first(void) {
 	index = 0;
-	return &playerList[index++];
+	return g_vm->_playerList[index++];
 }
 
 PlayerActor *PlayerActorIterator::next(void) {
-	return (index < kPlayerActors) ? &playerList[index++] : NULL;
+	return (index < kPlayerActors) ? g_vm->_playerList[index++] : NULL;
 }
 
 //-----------------------------------------------------------------------
@@ -1098,15 +1097,15 @@ PlayerActor *LivingPlayerActorIterator::next(void) {
 	if (index >= kPlayerActors)
 		return nullptr;
 
-	Actor       *a = playerList[index].getActor();
+	Actor       *a = g_vm->_playerList[index]->getActor();
 
 	while (a == nullptr || a->isDead()) {
 		if (++index >= kPlayerActors)
 			break;
-		a = playerList[index].getActor();
+		a = g_vm->_playerList[index]->getActor();
 	}
 
-	return (index < kPlayerActors) ? &playerList[index++] : nullptr;
+	return (index < kPlayerActors) ? g_vm->_playerList[index++] : nullptr;
 }
 
 } // end of namespace Saga2
diff --git a/engines/saga2/playmode.cpp b/engines/saga2/playmode.cpp
index 8959670619..ebb400800c 100644
--- a/engines/saga2/playmode.cpp
+++ b/engines/saga2/playmode.cpp
@@ -51,7 +51,6 @@ extern BackWindow   *mainWindow;
 extern SpriteSet    *objectSprites;        // object sprites
 
 extern APPFUNC(cmdClickSpeech);
-extern PlayerActor  playerList[];           // a list of the players (brothers)
 extern StaticTextPallete genericTextPal;
 
 APPFUNC(cmdHealthStar);
diff --git a/engines/saga2/saga2.h b/engines/saga2/saga2.h
index 875da8b939..b853e1b3a2 100644
--- a/engines/saga2/saga2.h
+++ b/engines/saga2/saga2.h
@@ -65,6 +65,7 @@ class gMousePointer;
 class ActiveRegion;
 class gToolBase;
 class Properties;
+class PlayerActor;
 
 enum {
 	kDebugResources = 1 << 0,
@@ -122,6 +123,7 @@ public:
 	WeaponStuff _weaponRack[kMaxWeapons];
 	weaponID _loadedWeapons;
 	Common::Array<char *> _nameList;
+	Common::Array<PlayerActor *> _playerList;
 	Common::List<TimerList *> _timerLists;
 	Common::List<Timer *> _timers;
 	Common::List<ActorAppearance *> _appearanceLRU;


Commit: 582952b6a0a00933ff4864034fa7dc4dad03d520
    https://github.com/scummvm/scummvm/commit/582952b6a0a00933ff4864034fa7dc4dad03d520
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-07-17T11:29:23+09:00

Commit Message:
SAGA2: Move backPort to Saga2Engine

Changed paths:
    engines/saga2/dispnode.cpp
    engines/saga2/playmode.cpp
    engines/saga2/saga2.h
    engines/saga2/speech.cpp
    engines/saga2/speech.h
    engines/saga2/sprite.cpp
    engines/saga2/tile.cpp


diff --git a/engines/saga2/dispnode.cpp b/engines/saga2/dispnode.cpp
index 15a27e3e12..954ffa80e9 100644
--- a/engines/saga2/dispnode.cpp
+++ b/engines/saga2/dispnode.cpp
@@ -47,7 +47,6 @@ extern int16        currentMapNum;
 extern WorldMapData *mapList;
 
 extern StaticPoint16 fineScroll;
-extern gPort        backPort;
 
 extern SpriteSet    *objectSprites,        // object sprites
                     *spellSprites;        // spell effect sprites
@@ -771,7 +770,7 @@ void DisplayNode::drawObject(void) {
 	effectFlags |= sprFXTerrainMask;
 
 	DrawCompositeMaskedSprite(
-	    backPort,
+	    g_vm->_backPort,
 	    scList,
 	    partCount,
 	    drawPos,
@@ -802,7 +801,7 @@ void DisplayNode::drawObject(void) {
 		indicatorCoords.x = hitBox.x + fineScroll.x + (hitBox.width - indicator.size.x) / 2;
 		indicatorCoords.y = hitBox.y + fineScroll.y - indicator.size.y - 2;
 
-		TBlit(backPort.map, &indicator, indicatorCoords.x, indicatorCoords.y);
+		TBlit(g_vm->_backPort.map, &indicator, indicatorCoords.x, indicatorCoords.y);
 	}
 }
 
@@ -1000,7 +999,7 @@ void Effectron::drawEffect(void) {
 	                                  0) <= 5);
 
 	DrawCompositeMaskedSprite(
-	    backPort,
+	    g_vm->_backPort,
 	    scList,
 	    1,
 	    drawPos,
diff --git a/engines/saga2/playmode.cpp b/engines/saga2/playmode.cpp
index ebb400800c..f2bdef992a 100644
--- a/engines/saga2/playmode.cpp
+++ b/engines/saga2/playmode.cpp
@@ -110,12 +110,6 @@ GameMode            PlayMode = {
 
 Alarm               frameAlarm;             // 10 fps frame rate
 
-/* ===================================================================== *
-   Display setup (move to another file later)
- * ===================================================================== */
-
-gPort               backPort;               // background port
-
 /* ===================================================================== *
    User controls
  * ===================================================================== */
@@ -178,7 +172,7 @@ void PlayModeSetup(void) {
 	}
 
 	//  Setup the drawing port for the background map
-	backPort.setMap(&tileDrawMap);
+	g_vm->_backPort.setMap(&tileDrawMap);
 
 	//  Allocate bitmap for drag & drop mouse pointer
 	objPointerMap.size.x = objPointerMap.size.y = 32;
diff --git a/engines/saga2/saga2.h b/engines/saga2/saga2.h
index b853e1b3a2..4132f6b5d1 100644
--- a/engines/saga2/saga2.h
+++ b/engines/saga2/saga2.h
@@ -148,6 +148,7 @@ public:
 	Properties *_properties;
 
 	gDisplayPort _mainPort;
+	gPort _backPort;
 
 	bool _autoAggression;
 	bool _autoWeapon;
diff --git a/engines/saga2/speech.cpp b/engines/saga2/speech.cpp
index 6ccf743978..7503c8a263 100644
--- a/engines/saga2/speech.cpp
+++ b/engines/saga2/speech.cpp
@@ -494,8 +494,8 @@ bool Speech::displayText(void) {
 		return false;
 
 	//  Blit to the port
-	backPort.setMode(drawModeMatte);
-	backPort.bltPixels(speechImage,
+	g_vm->_backPort.setMode(drawModeMatte);
+	g_vm->_backPort.bltPixels(speechImage,
 	                   0, 0,
 	                   p.x + fineScroll.x,
 	                   p.y + fineScroll.y,
diff --git a/engines/saga2/speech.h b/engines/saga2/speech.h
index 4b8ab914e1..b873df3195 100644
--- a/engines/saga2/speech.h
+++ b/engines/saga2/speech.h
@@ -36,7 +36,6 @@ namespace Saga2 {
 #define CHARSPERSECOND  22
 #define SHORTEST_DURATION   TICKSPERSECOND
 
-extern  gPort       backPort;
 void    TileToScreenCoords(const TilePoint &tp, Point16 &p);
 void    TileToScreenCoords(const TilePoint &tp, StaticPoint16 &p);
 void    updateSpeech();
diff --git a/engines/saga2/sprite.cpp b/engines/saga2/sprite.cpp
index 54f13021bc..20466ff7cf 100644
--- a/engines/saga2/sprite.cpp
+++ b/engines/saga2/sprite.cpp
@@ -60,8 +60,6 @@ extern gPixelMap    tileDrawMap;
 //  Color map ranges
 extern uint8        *ColorMapRanges;
 
-extern gPort        backPort;
-
 /* ===================================================================== *
    Exports
  * ===================================================================== */
diff --git a/engines/saga2/tile.cpp b/engines/saga2/tile.cpp
index ed3c4c1cb4..9c5716ec6d 100644
--- a/engines/saga2/tile.cpp
+++ b/engines/saga2/tile.cpp
@@ -157,8 +157,6 @@ void drawFloatingWindows(gPort &, const Point16 &, const Rect16 &clip);
    Imports
  * ===================================================================== */
 
-extern gPort        backPort;
-
 extern int16        worldCount;     //  Used as map count as well
 
 extern ObjectID     viewCenterObject;       // ID of object that view tracks
@@ -4442,7 +4440,7 @@ void drawMainDisplay(void) {
 	Rect16 rect(kTileRectX, kTileRectY, kTileRectWidth, kTileRectHeight);
 
 	//  Render floating windows
-	drawFloatingWindows(backPort,
+	drawFloatingWindows(g_vm->_backPort,
 	                    Point16(kTileRectX - fineScroll.x, kTileRectY),
 	                    rect);
 	//  Blit it all onto the screen


Commit: d6bd7b2f22cd50ddec316575eff1a1d6a0e1013c
    https://github.com/scummvm/scummvm/commit/d6bd7b2f22cd50ddec316575eff1a1d6a0e1013c
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-07-17T11:32:46+09:00

Commit Message:
SAGA2: Fix global constructor warning in playmode.cpp

Changed paths:
    engines/saga2/gdraw.h
    engines/saga2/playmode.cpp


diff --git a/engines/saga2/gdraw.h b/engines/saga2/gdraw.h
index a5e0fccf74..a6f9715ade 100644
--- a/engines/saga2/gdraw.h
+++ b/engines/saga2/gdraw.h
@@ -45,6 +45,15 @@ typedef uint8       gPen;               // a pen index number
 
 //  A general purpose image
 
+struct StaticPixelMap {
+	StaticPoint16 size;
+	uint8 *data;
+
+	int32 bytes() {
+		return size.x * size.y;
+	}
+};
+
 class gPixelMap {
 public:
 	Extent16        size;                   // image size
@@ -52,6 +61,8 @@ public:
 
 	gPixelMap() : data(nullptr) {}
 
+	gPixelMap(StaticPixelMap m) : size(m.size), data(m.data) {}
+
 	//  Compute the number of bytes in the pixel map
 	int32 bytes(void) {
 		return size.x * size.y;
diff --git a/engines/saga2/playmode.cpp b/engines/saga2/playmode.cpp
index f2bdef992a..ee470a2e6c 100644
--- a/engines/saga2/playmode.cpp
+++ b/engines/saga2/playmode.cpp
@@ -127,7 +127,7 @@ ContainerView       *invContainer;          // TEST inventory container
 
 //  Drag and Drop variables
 
-gPixelMap           objPointerMap;          // bitmap for pointer
+static StaticPixelMap objPointerMap = {{0, 0}, nullptr};          // bitmap for pointer
 
 //  Resource handle for UI imagery
 




More information about the Scummvm-git-logs mailing list