[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