[Scummvm-git-logs] scummvm master -> 43945dfe39c0cb7e9df1e3b248367ba40c14e451

a-yyg 76591232+a-yyg at users.noreply.github.com
Mon Aug 23 17:47:09 UTC 2021


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

Summary:
ebba60f8eb SAGA2: Move currentMapNum to Saga2Engine
323a345cc7 SAGA2: Remove globals in actor.cpp
c123a4914c SAGA2: Move _actorList from Saga2Engine to ActorManager
e14937dd9c SAGA2: Rename constant in assign.cpp
43945dfe39 SAGA2: Remove some globals in audio.cpp


Commit: ebba60f8eb8dd294cdef8044e5bd87fbdffca5e6
    https://github.com/scummvm/scummvm/commit/ebba60f8eb8dd294cdef8044e5bd87fbdffca5e6
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-08-24T02:43:15+09:00

Commit Message:
SAGA2: Move currentMapNum to Saga2Engine

Changed paths:
    engines/saga2/automap.cpp
    engines/saga2/beegee.cpp
    engines/saga2/console.cpp
    engines/saga2/dispnode.cpp
    engines/saga2/saga2.cpp
    engines/saga2/saga2.h
    engines/saga2/tile.cpp
    engines/saga2/tileload.cpp
    engines/saga2/transit.cpp


diff --git a/engines/saga2/automap.cpp b/engines/saga2/automap.cpp
index fa1762d465..80cc357a43 100644
--- a/engines/saga2/automap.cpp
+++ b/engines/saga2/automap.cpp
@@ -553,15 +553,13 @@ int16 openAutoMap() {
 	uint16          closeButtonResID        = 0;
 	uint16          scrollButtonResID       = 2;
 
-	extern int16    currentMapNum;
-
-	updateMapFeatures(currentMapNum);
+	updateMapFeatures(g_vm->_currentMapNum);
 
 	// init the resource context handle
 	decRes = resFile->newContext(MKTAG('A', 'M', 'A', 'P'), "Automap Resources");
 
 	// debug
-	_summaryData = LoadResource(decRes, MKTAG('S', 'U', 'M', currentMapNum), "summary data");
+	_summaryData = LoadResource(decRes, MKTAG('S', 'U', 'M', g_vm->_currentMapNum), "summary data");
 
 	// get the graphics associated with the buttons
 	closeBtnImage = loadButtonRes(decRes, closeButtonResID, numBtnImages);
diff --git a/engines/saga2/beegee.cpp b/engines/saga2/beegee.cpp
index de49342528..9c9d706e12 100644
--- a/engines/saga2/beegee.cpp
+++ b/engines/saga2/beegee.cpp
@@ -130,7 +130,6 @@ const static StaticTilePoint AudibilityVector = { 1, 1, 0 };
 
 extern volatile int32           gameTime;
 
-extern int16                currentMapNum;          // which map is in use
 extern uint16               rippedRoofID;
 
 extern GameObject *getViewCenterObject(void);
@@ -266,7 +265,7 @@ void setAreaSound(const TilePoint &) {
 				TilePoint AudVec = TilePoint(AudibilityVector);
 				regn.max = baseCoords + ((AudVec * r) << kPlatShift) ; ///kTileUVSize;
 				regn.min = baseCoords - ((AudVec * r) << kPlatShift); ///kTileUVSize;
-				MetaTileIterator    mIter(currentMapNum, regn);
+				MetaTileIterator    mIter(g_vm->_currentMapNum, regn);
 				int i = 0;
 				int j = 0;
 
diff --git a/engines/saga2/console.cpp b/engines/saga2/console.cpp
index 497d1849e6..d89436f360 100644
--- a/engines/saga2/console.cpp
+++ b/engines/saga2/console.cpp
@@ -37,7 +37,6 @@ namespace Saga2 {
 
 extern GameObject *objectList;
 extern WorldMapData *mapList;
-extern int16 currentMapNum;
 
 Console::Console(Saga2Engine *vm) : GUI::Debugger() {
 	_vm = vm;
@@ -394,8 +393,6 @@ bool Console::cmdDumpMap(int argc, const char **argv) {
 	else {
 		gPixelMap drawMap;
 		drawMap.size = _vm->_tileDrawMap.size * atoi(argv[1]);
-		//drawMap.size.x = mapList[currentMapNum].mapHeight;
-		//drawMap.size.y = mapList[currentMapNum].mapHeight;
 		drawMap.data = new uint8[drawMap.bytes()]();
 		drawMetaTiles(drawMap);
 
diff --git a/engines/saga2/dispnode.cpp b/engines/saga2/dispnode.cpp
index 01028bd78a..b09545aef8 100644
--- a/engines/saga2/dispnode.cpp
+++ b/engines/saga2/dispnode.cpp
@@ -43,7 +43,6 @@ bool                            centerActorIndicatorEnabled;
    Imports
  * ===================================================================== */
 
-extern int16        currentMapNum;
 extern WorldMapData *mapList;
 
 extern StaticPoint16 fineScroll;
@@ -382,8 +381,8 @@ void DisplayNode::drawObject(void) {
 	mCoords.z = 0;
 
 	//  Do not display objects that are on a ripped roof
-	if ((mt = mapList[currentMapNum].lookupMeta(mCoords)) != NULL) {
-		if ((rt = mt->ripTable(currentMapNum)) != NULL) {
+	if ((mt = mapList[g_vm->_currentMapNum].lookupMeta(mCoords)) != NULL) {
+		if ((rt = mt->ripTable(g_vm->_currentMapNum)) != NULL) {
 			if (objCoords.z >= rt->zTable[tCoords.u][tCoords.v]) {
 				//  Disable hit-test on the object's box
 				hitBox.width = -1;
diff --git a/engines/saga2/saga2.cpp b/engines/saga2/saga2.cpp
index df3bf9f03e..4e3d4a2c16 100644
--- a/engines/saga2/saga2.cpp
+++ b/engines/saga2/saga2.cpp
@@ -90,6 +90,7 @@ Saga2Engine::Saga2Engine(OSystem *syst)
 	_indivControlsFlag = false;
 	_userControlsSetup = false;
 	_fadeDepth = 1;
+	_currentMapNum = 0;
 
 	SearchMan.addSubDirectoryMatching(gameDataDir, "res");
 	SearchMan.addSubDirectoryMatching(gameDataDir, "dos/drivers"); // For Miles Sound files
diff --git a/engines/saga2/saga2.h b/engines/saga2/saga2.h
index d852285aec..64a55693b4 100644
--- a/engines/saga2/saga2.h
+++ b/engines/saga2/saga2.h
@@ -195,6 +195,7 @@ public:
 	bool _indivControlsFlag;
 	bool _userControlsSetup;
 	int _fadeDepth;
+	int _currentMapNum;
 
 
 private:
diff --git a/engines/saga2/tile.cpp b/engines/saga2/tile.cpp
index bf1afda18a..30a13c664a 100644
--- a/engines/saga2/tile.cpp
+++ b/engines/saga2/tile.cpp
@@ -197,7 +197,6 @@ StaticTilePoint viewCenter = {0, 0, 0};             // coordinates of view on ma
 
 //  These two variables define which sectors overlap the view rect.
 
-int16               currentMapNum;          // which map is in use
 int16               lastMapNum;
 
 int32               lastUpdateTime;         // time of last display update
@@ -1513,9 +1512,9 @@ void cleanupMaps(void) {
 //	Set a new current map
 
 void setCurrentMap(int mapNum) {
-	currentMapNum = mapNum;
-	if (lastMapNum != currentMapNum) {
-		lastMapNum = currentMapNum;
+	g_vm->_currentMapNum = mapNum;
+	if (lastMapNum != g_vm->_currentMapNum) {
+		lastMapNum = g_vm->_currentMapNum;
 		freeAllTileBanks();
 		audioEnvironmentSetWorld(mapNum);
 	}
@@ -1681,7 +1680,7 @@ void initPlatformCache(void) {
  * ===================================================================== */
 
 TilePoint XYToUV(const Point32 &pt) {
-	int32       mapHeight = mapList[currentMapNum].mapHeight;
+	int32       mapHeight = mapList[g_vm->_currentMapNum].mapHeight;
 	TilePoint   coords;
 
 	//  coordinates of the view in U,V
@@ -1698,7 +1697,7 @@ TilePoint XYToUV(const Point32 &pt) {
  * ===================================================================== */
 
 void TileToScreenCoords(const TilePoint &tp, Point16 &p) {
-	int32       mapHeight = mapList[currentMapNum].mapHeight;
+	int32       mapHeight = mapList[g_vm->_currentMapNum].mapHeight;
 
 	//  screen coords of the point
 	p.x = (((int32)tp.u - (int32)tp.v) << 1) - tileScroll.x + mapHeight;
@@ -1706,7 +1705,7 @@ void TileToScreenCoords(const TilePoint &tp, Point16 &p) {
 }
 
 void TileToScreenCoords(const TilePoint &tp, StaticPoint16 &p) {
-	int32       mapHeight = mapList[currentMapNum].mapHeight;
+	int32       mapHeight = mapList[g_vm->_currentMapNum].mapHeight;
 
 	//  screen coords of the point
 	p.x = (((int32)tp.u - (int32)tp.v) << 1) - tileScroll.x + mapHeight;
@@ -2495,7 +2494,7 @@ TileInfo *TileIterator::next(TilePoint *loc, StandingTileInfo *stiResult) {
  * ============================================================================ */
 
 inline void drawMetaRow(gPixelMap &drawMap, TilePoint coords, Point16 pos) {
-	WorldMapData    *curMap = &mapList[currentMapNum];
+	WorldMapData    *curMap = &mapList[g_vm->_currentMapNum];
 
 	int16           uOrg = coords.u * kPlatformWidth,
 	                vOrg = coords.v * kPlatformWidth;
@@ -2565,7 +2564,7 @@ inline void drawMetaRow(gPixelMap &drawMap, TilePoint coords, Point16 pos) {
 		for (int i = 0; i < layerLimit; i++) {
 			Platform    *p;
 
-			p = metaPtr->fetchPlatform(currentMapNum, i);
+			p = metaPtr->fetchPlatform(g_vm->_currentMapNum, i);
 
 			if (!p)
 				continue;
@@ -2606,8 +2605,8 @@ void buildRipTable(
 	int32   *initPtr = (int32 *)ripTable->zTable;
 
 	//  Initialize table
-	mt->ripTableID(currentMapNum) = ripTable->thisID();
-	ripTable->metaID = mt->thisID(currentMapNum);
+	mt->ripTableID(g_vm->_currentMapNum) = ripTable->thisID();
+	ripTable->metaID = mt->thisID(g_vm->_currentMapNum);
 	ripTable->ripID = ripID;
 
 	for (uint i = 0;
@@ -2625,12 +2624,12 @@ void buildRipTable(
 	for (uint i = 0; i < maxPlatforms; i++) {
 		Platform    *p;
 
-		if ((p = mt->fetchPlatform(currentMapNum, i)) == nullptr) continue;
+		if ((p = mt->fetchPlatform(g_vm->_currentMapNum, i)) == nullptr) continue;
 
 		if (p->roofRipID() != ripID) continue;
 
 		for (; i < maxPlatforms && tilesToGo > 0; i++) {
-			if ((p = mt->fetchPlatform(currentMapNum, i)) == nullptr)
+			if ((p = mt->fetchPlatform(g_vm->_currentMapNum, i)) == nullptr)
 				continue;
 
 			uint16      platHeight = p->height << 3;
@@ -2683,7 +2682,7 @@ void buildRipTables(void) {
 	ripTableReg.max.v =
 	    (actorCoords.v + regionRadius + kTileUVMask) >> kTileUVShift;
 
-	MetaTileIterator    mIter(currentMapNum, ripTableReg);
+	MetaTileIterator    mIter(g_vm->_currentMapNum, ripTableReg);
 
 	//  Build meta tile pointer array
 	mt = mIter.first();
@@ -2703,7 +2702,7 @@ void buildRipTables(void) {
 	for (int i = 0; i < mtTableSize; i++) {
 		mt = mtTable[i];
 
-		RipTable    *mtRipTable = mt->ripTable(currentMapNum);
+		RipTable    *mtRipTable = mt->ripTable(g_vm->_currentMapNum);
 
 		//  If meta tile aready has a valid object ripping table, simply
 		//  recycle it
@@ -2779,9 +2778,9 @@ void drawMetaTiles(gPixelMap &drawMap) {
 	//  coordinates of the view window on the map in X,Y (in 16 pixel units)
 
 	viewPos.x = (tileScroll.x >> kTileDXShift)
-	            - (kPlatformWidth * mapList[currentMapNum].mapSize),
+	            - (kPlatformWidth * mapList[g_vm->_currentMapNum].mapSize),
 	viewPos.y = (kPlatformWidth
-	             *   mapList[currentMapNum].mapSize
+	             *   mapList[g_vm->_currentMapNum].mapSize
 	             *   kTileDX)
 	             -   tileScroll.y;
 
@@ -3020,7 +3019,7 @@ void maskPlatform(
 					int16       trFlags;
 
 					ti =    p.fetchTile(
-					            currentMapNum,
+					            g_vm->_currentMapNum,
 					            pCoords,
 					            origin,
 					            &imageData,
@@ -3072,7 +3071,7 @@ void maskMetaRow(
     TilePoint       relLoc,
     Point16         pos,
     uint16          roofID) {
-	WorldMapData    *curMap = &mapList[currentMapNum];
+	WorldMapData    *curMap = &mapList[g_vm->_currentMapNum];
 
 	int16           uOrg = coords.u * kPlatformWidth,
 	                vOrg = coords.v * kPlatformWidth;
@@ -3146,7 +3145,7 @@ void maskMetaRow(
 		for (int i = 0; i < layerLimit; i++) {
 			Platform    *p;
 
-			if ((p = metaPtr->fetchPlatform(currentMapNum, i)) == nullptr)
+			if ((p = metaPtr->fetchPlatform(g_vm->_currentMapNum, i)) == nullptr)
 				continue;
 
 			if (p->roofRipID() == roofID && roofID > 0) break;
@@ -3191,9 +3190,9 @@ void drawTileMask(
 	//  coordinates of the view window on the map in X,Y (in 16 pixel units)
 
 	viewPos.x = (aPos.x >> kTileDXShift)
-	            - (kPlatformWidth * mapList[currentMapNum].mapSize),
+	            - (kPlatformWidth * mapList[g_vm->_currentMapNum].mapSize),
 	            viewPos.y = (kPlatformWidth
-	                         *   mapList[currentMapNum].mapSize << kTileDXShift)
+	                         *   mapList[g_vm->_currentMapNum].mapSize << kTileDXShift)
 	                        -   aPos.y;
 
 	//  coordinates of the view window upper left corner in U,V
@@ -3777,7 +3776,7 @@ bool pointOnHiddenSurface(
     SurfaceType     surfaceType) {
 	assert(surfaceType == surfaceVertU || surfaceType == surfaceVertV);
 
-	WorldMapData    *curMap = &mapList[currentMapNum];
+	WorldMapData    *curMap = &mapList[g_vm->_currentMapNum];
 
 	TilePoint       testCoords,
 	                mCoords,
@@ -3829,14 +3828,14 @@ bool pointOnHiddenSurface(
 		int16       h,
 		            trFlags;
 
-		if ((p = mt->fetchPlatform(currentMapNum, i)) == nullptr)
+		if ((p = mt->fetchPlatform(g_vm->_currentMapNum, i)) == nullptr)
 			continue;
 
 		if (!(p->flags & plVisible) || platformRipped(p)) continue;
 
 		//  Fetch the tile at this location
 		adjTile =   p->fetchTile(
-		                currentMapNum,
+		                g_vm->_currentMapNum,
 		                tCoords,
 		                origin,
 		                h,
@@ -3870,7 +3869,7 @@ StaticTilePoint pickTile(Point32 pos,
                    const TilePoint &protagPos,
                    StaticTilePoint *floorResult,
                    ActiveItemPtr *pickTAI) {
-	WorldMapData    *curMap = &mapList[currentMapNum];
+	WorldMapData    *curMap = &mapList[g_vm->_currentMapNum];
 	StaticTilePoint result = {0, 0, 0};
 
 	TilePoint       pickCoords,
@@ -3963,7 +3962,7 @@ StaticTilePoint pickTile(Point32 pos,
 				Platform            *p;
 				StandingTileInfo    sti;
 
-				if ((p = mt->fetchPlatform(currentMapNum, i)) == nullptr)
+				if ((p = mt->fetchPlatform(g_vm->_currentMapNum, i)) == nullptr)
 					continue;
 
 				if (platformRipped(p)) break;
@@ -3972,7 +3971,7 @@ StaticTilePoint pickTile(Point32 pos,
 				//  Fetch the tile at this location
 
 				ti =    p->fetchTAGInstance(
-				            currentMapNum,
+				            g_vm->_currentMapNum,
 				            tCoords,
 				            origin,
 				            &imageData,
@@ -4318,7 +4317,7 @@ void updateMainDisplay(void) {
 		setCurrentMap(currentWorld->mapNum);
 	}
 
-	WorldMapData    *curMap = &mapList[currentMapNum];
+	WorldMapData    *curMap = &mapList[g_vm->_currentMapNum];
 
 	StaticPoint32   scrollCenter,
 	                scrollDelta;
@@ -4473,7 +4472,7 @@ const int           mappingRadius = 2;
 void markMetaAsVisited(const TilePoint &pt) {
 	//  If (they have cartography)
 	{
-		WorldMapData    *curMap = &mapList[currentMapNum];
+		WorldMapData    *curMap = &mapList[g_vm->_currentMapNum];
 		uint16          *mapData = curMap->map->mapData;
 
 		TilePoint       metaCoords = pt >> (kTileUVShift + kPlatShift);
diff --git a/engines/saga2/tileload.cpp b/engines/saga2/tileload.cpp
index 827320cbd4..e9498b1994 100644
--- a/engines/saga2/tileload.cpp
+++ b/engines/saga2/tileload.cpp
@@ -40,7 +40,6 @@ const uint16 tileBankCount = 64;
 const uint32 tileImageID = MKTAG('T', 'I', 'L',  0);
 
 
-extern int16                currentMapNum;
 extern hResource           *objResFile;
 extern hResContext          *tileRes;       // tile resource handle
 
@@ -121,7 +120,7 @@ void drawPlatform(
 					uint8 *imageData;
 					int16 trFlags;
 
-					TileInfo *ti = p.fetchTile(currentMapNum, pCoords, origin, &imageData, h, trFlags);
+					TileInfo *ti = p.fetchTile(g_vm->_currentMapNum, pCoords, origin, &imageData, h, trFlags);
 					if (ti == NULL)
 						continue;
 
diff --git a/engines/saga2/transit.cpp b/engines/saga2/transit.cpp
index b556b038a1..24439f67b1 100644
--- a/engines/saga2/transit.cpp
+++ b/engines/saga2/transit.cpp
@@ -35,8 +35,6 @@
 
 namespace Saga2 {
 
-extern  int16               currentMapNum;          // which map is in use
-
 /* ===================================================================== *
    Prototypes
  * ===================================================================== */
@@ -78,7 +76,7 @@ void dayNightUpdate(void) {
 		    lightLevel,
 		    MAX_LIGHT);
 
-		if (currentMapNum == 0)
+		if (g_vm->_currentMapNum == 0)
 			g_vm->_pal->beginFade(&g_vm->_pal->_newPalette, 100);
 	}
 
@@ -86,7 +84,7 @@ void dayNightUpdate(void) {
 		gPalettePtr     neededPalette;
 		gPalette        currentPalette;
 
-		neededPalette = currentMapNum == 0 ? &g_vm->_pal->_newPalette : g_vm->_pal->_noonPalette;
+		neededPalette = g_vm->_currentMapNum == 0 ? &g_vm->_pal->_newPalette : g_vm->_pal->_noonPalette;
 		g_vm->_pal->getCurrentPalette(&currentPalette);
 		if (memcmp(&currentPalette, neededPalette, sizeof(gPalette)) != 0)
 			g_vm->_pal->setCurrentPalette(neededPalette);
@@ -129,7 +127,7 @@ void fadeUp(void) {
 		drawMainDisplay();
 		reDrawScreen();
 		enablePaletteChanges();
-		g_vm->_pal->beginFade(currentMapNum != 0 ? g_vm->_pal->_noonPalette : &g_vm->_pal->_newPalette, 20);
+		g_vm->_pal->beginFade(g_vm->_currentMapNum != 0 ? g_vm->_pal->_noonPalette : &g_vm->_pal->_newPalette, 20);
 		while (g_vm->_pal->updatePalette()) ;
 	}
 }


Commit: 323a345cc7a182b5f1542f8940151f3fbc92272e
    https://github.com/scummvm/scummvm/commit/323a345cc7a182b5f1542f8940151f3fbc92272e
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-08-24T02:43:15+09:00

Commit Message:
SAGA2: Remove globals in actor.cpp

Changed paths:
    engines/saga2/actor.cpp
    engines/saga2/actor.h
    engines/saga2/idtypes.h
    engines/saga2/main.cpp
    engines/saga2/saga2.cpp
    engines/saga2/saga2.h


diff --git a/engines/saga2/actor.cpp b/engines/saga2/actor.cpp
index 193c5d2585..4e1e946713 100644
--- a/engines/saga2/actor.cpp
+++ b/engines/saga2/actor.cpp
@@ -48,15 +48,6 @@
 
 namespace Saga2 {
 
-/* ===================================================================== *
-   Constants
- * ===================================================================== */
-
-// this is currently set to an arbitrary value for testing purposes.
-const uint16 defaultReach = 24;
-
-const uint32 actorListID = MKTAG('A', 'C', 'T', 'O');
-
 /* ===================================================================== *
    Externals
  * ===================================================================== */
@@ -75,18 +66,6 @@ extern ObjectSoundFXs   *objectSoundFXTable;    // the global object sound effec
 extern bool     massAndBulkCount;
 #endif
 
-/* ===================================================================== *
-   Globals -- might as well stick it here as anywhere.
- * ===================================================================== */
-
-int16 factionTable[maxFactions][factionNumColumns];
-
-//  Indicates wether actor states should be paused
-bool actorStatesPaused;
-
-//  Indicates wether player actors should have combat behavior
-bool combatBehaviorEnabled;
-
 /* ===================================================================== *
    ActorProto member functions
  * ===================================================================== */
@@ -1789,7 +1768,7 @@ uint16 Actor::getBaseRecovery(void) {
 //  Determine if specified point is within actor's reach
 
 bool Actor::inReach(const TilePoint &tp) {
-	return inRange(tp, defaultReach);
+	return inRange(tp, kDefaultReach);
 }
 
 //-----------------------------------------------------------------------
@@ -1798,7 +1777,7 @@ bool Actor::inReach(const TilePoint &tp) {
 bool Actor::inUseRange(const TilePoint &tp, GameObject *obj) {
 	uint16  range = obj->proto()->maximumRange;
 
-	return inRange(tp, MAX(range, defaultReach));
+	return inRange(tp, MAX(range, (uint16)kDefaultReach));
 }
 
 //-----------------------------------------------------------------------
@@ -1934,7 +1913,7 @@ bool Actor::inAttackRange(const TilePoint &tp) {
 	GameObject  *weapon = offensiveObject();
 	uint16      range = weapon != NULL ? weapon->proto()->maximumRange : 0;
 
-	return inRange(tp, MAX(range, defaultReach));
+	return inRange(tp, MAX(range, (uint16)kDefaultReach));
 }
 
 //-----------------------------------------------------------------------
@@ -2432,7 +2411,7 @@ void Actor::evaluateNeeds(void) {
 	        &&  isActivated()
 	        &&  !(_flags & lobotomized)) {
 		if (_disposition >= dispositionPlayer) {
-			if (combatBehaviorEnabled) {
+			if (g_vm->_act->_combatBehaviorEnabled) {
 				SenseInfo       info;
 
 				if (canSenseActorProperty(
@@ -2514,11 +2493,6 @@ void Actor::evaluateNeeds(void) {
 	}
 }
 
-//-----------------------------------------------------------------------
-//	Update the state of this actor.
-
-static int32 updatesViaScript = 0;
-
 void Actor::updateState(void) {
 	//  The actor should not be set permanently uninterruptable when
 	//  the actor does not have a motion task
@@ -2581,7 +2555,7 @@ void Actor::updateState(void) {
 			//  Iterate until there is no assignment, or the current
 			//  assignment is valid
 			while (assign != NULL && !assign->isValid()) {
-				updatesViaScript++;
+				g_vm->_act->_updatesViaScript++;
 				scriptCallFrame scf;
 				ObjectID        dObj = thisID();
 
@@ -2608,7 +2582,7 @@ void Actor::updateState(void) {
 			//  If there is no assignment at this point, call the
 			//  schedule to setup a new assignment.
 			if (assign == NULL && _schedule != 0) {
-				updatesViaScript++;
+				g_vm->_act->_updatesViaScript++;
 				assert(_curTask == NULL);
 
 				scriptCallFrame scf;
@@ -2852,7 +2826,7 @@ void Actor::handleSuccessfulKill(Actor *target) {
 	PlayerActorID       playerID;
 
 	if (this != target && actorToPlayerID(this, playerID)) {
-		static const char vowels[] = "AEIOU";
+		const char vowels[] = "AEIOU";
 
 		PlayerActor     *player = getPlayerActorAddress(playerID);
 		int16           ratio;
@@ -2887,7 +2861,7 @@ bool Actor::canBlockWith(GameObject *defenseObj, Direction relativeDir) {
 	//  Assuming that the actor may increment or decrement their facing
 	//  to block, these masks represent the possible relative facings
 	//  based upon the current relative facing
-	static uint8    dirMaskArray[8] = {
+	const uint8 dirMaskArray[8] = {
 		0x83,       //  10000011
 		0x07,       //  00000111
 		0x0E,       //  00001110
@@ -3396,48 +3370,39 @@ int16 GetRandomBetween(int start, int end) {
 }
 
 void updateActorStates(void) {
-	if (actorStatesPaused) return;
-
-	static const int32  evalRate = 8;
-	static const int32  evalRateMask = evalRate - 1;
-	static int32        baseActorIndex = evalRateMask;
+	if (g_vm->_act->_actorStatesPaused) return;
 
-	int32               actorIndex;
+	int32 actorIndex;
 
-	actorIndex = baseActorIndex = (baseActorIndex + 1) & evalRateMask;
+	actorIndex = g_vm->_act->_baseActorIndex = (g_vm->_act->_baseActorIndex + 1) & ActorManager::kEvalRateMask;
 	while (actorIndex < kActorCount) {
 		Actor   *a = g_vm->_actorList[actorIndex];
 
 		if (isWorld(a->IDParent()))
 			a->evaluateNeeds();
 
-		actorIndex += evalRate;
+		actorIndex += ActorManager::kEvalRate;
 	}
 
-	updatesViaScript = 0;
+	g_vm->_act->_updatesViaScript = 0;
 	for (actorIndex = 0; actorIndex < kActorCount; actorIndex++) {
 		Actor   *a = g_vm->_actorList[actorIndex];
 
 		if (isWorld(a->IDParent()) && a->isActivated())
 			a->updateState();
 	}
-
-
-	//WriteStatusF((useLine%10)+10,"%d actor updates by script",updatesViaScript);
-	//WriteStatusF(((useLine+1)%10)+10,"                          ");
-	//useLine++;
 }
 
 //-------------------------------------------------------------------
 
 void pauseActorStates(void) {
-	actorStatesPaused = true;
+	g_vm->_act->_actorStatesPaused = true;
 }
 
 //-------------------------------------------------------------------
 
 void resumeActorStates(void) {
-	actorStatesPaused = false;
+	g_vm->_act->_actorStatesPaused = false;
 }
 
 //-------------------------------------------------------------------
@@ -3446,7 +3411,7 @@ void setCombatBehavior(bool enabled) {
 	PlayerActor *player = nullptr;
 	LivingPlayerActorIterator iter;
 
-	combatBehaviorEnabled = enabled;
+	g_vm->_act->_combatBehaviorEnabled = enabled;
 
 	for (player = iter.first(); player != NULL; player = iter.next())
 		player->getActor()->evaluateNeeds();
@@ -3484,13 +3449,13 @@ void initActors(void) {
 	Common::SeekableReadStream *stream;
 	const int resourceActorSize = 91; // size of the packed struct
 
-	resourceActorCount = listRes->size(actorListID)
+	resourceActorCount = listRes->size(kActorListID)
 	                     / resourceActorSize;
 
 	if (resourceActorCount < 1)
 		error("Unable to load Actors");
 
-	if ((stream = loadResourceToStream(listRes, actorListID, "res actor list")) == nullptr)
+	if ((stream = loadResourceToStream(listRes, kActorListID, "res actor list")) == nullptr)
 		error("Unable to load Actors");
 
 	//  Read the resource actors
@@ -3601,23 +3566,23 @@ int16 AddFactionTally(int faction, enum factionTallyTypes act, int amt) {
 	/*
 	        //  If faction attitude counts get to big then down-scale all of them
 	        //  in proportion.
-	    if ( factionTable[faction][act] + amt > maxint16 )
+	    if ( g_vm->_act->_factionTable[faction][act] + amt > maxint16 )
 	    {
 	        for (int i = 0; i < factionNumColumns; i++)
-	            factionTable[faction][i] >>= 1;
+	            g_vm->_act->_factionTable[faction][i] >>= 1;
 	    }
 
 	        //  Otherwise, if it doesn;t underflow, then add it in.
-	    if ( factionTable[faction][act] + amt > minint16 )
+	    if ( g_vm->_act->_factionTable[faction][act] + amt > minint16 )
 	    {
-	        factionTable[faction][act] += amt;
+	        g_vm->_act->_factionTable[faction][act] += amt;
 	    }
 	*/
-	factionTable[faction][act] = clamp(minint16,
-	                                       factionTable[faction][act] + amt,
+	g_vm->_act->_factionTable[faction][act] = clamp(minint16,
+	                                       g_vm->_act->_factionTable[faction][act] + amt,
 	                                       maxint16);
 
-	return factionTable[faction][act];
+	return g_vm->_act->_factionTable[faction][act];
 }
 
 //  Get the attitude a particular faction has for a char.
@@ -3630,14 +3595,14 @@ int16 GetFactionTally(int faction, enum factionTallyTypes act) {
 	assert(act < factionNumColumns);
 #endif
 
-	return factionTable[faction][act];
+	return g_vm->_act->_factionTable[faction][act];
 }
 
 //-------------------------------------------------------------------
 //	Initialize the faction tally table
 
 void initFactionTallies(void) {
-	memset(&factionTable, 0, sizeof(factionTable));
+	memset(&g_vm->_act->_factionTable, 0, sizeof(g_vm->_act->_factionTable));
 }
 
 void saveFactionTallies(Common::OutSaveFile *outS) {
@@ -3647,7 +3612,7 @@ void saveFactionTallies(Common::OutSaveFile *outS) {
 	CHUNK_BEGIN;
 	for (int i = 0; i < maxFactions; ++i) {
 		for (int j = 0; j < factionNumColumns; ++j)
-			out->writeSint16LE(factionTable[i][j]);
+			out->writeSint16LE(g_vm->_act->_factionTable[i][j]);
 	}
 	CHUNK_END;
 }
@@ -3657,7 +3622,7 @@ void loadFactionTallies(Common::InSaveFile *in) {
 
 	for (int i = 0; i < maxFactions; ++i) {
 		for (int j = 0; j < factionNumColumns; ++j)
-			factionTable[i][j] = in->readSint16LE();
+			g_vm->_act->_factionTable[i][j] = in->readSint16LE();
 	}
 }
 
diff --git a/engines/saga2/actor.h b/engines/saga2/actor.h
index a9524a37d5..667ae04b69 100644
--- a/engines/saga2/actor.h
+++ b/engines/saga2/actor.h
@@ -1130,6 +1130,31 @@ void loadFactionTallies(Common::InSaveFile *in);
 //  Cleanup the faction tally table
 inline void cleanupFactionTallies(void) { /* Nothing to do */ }
 
+class ActorManager {
+public:
+
+	enum {
+		kEvalRate = 8,
+		kEvalRateMask = kEvalRate - 1
+	};
+
+	int32 _updatesViaScript;
+	int32 _baseActorIndex;
+	int16 _factionTable[maxFactions][factionNumColumns];
+	bool _actorStatesPaused;
+	bool _combatBehaviorEnabled;
+
+	ActorManager() {
+		_updatesViaScript = 0;
+		_baseActorIndex = kEvalRateMask;
+
+		memset(_factionTable, 0, sizeof(_factionTable));
+
+		_actorStatesPaused = false;
+		_combatBehaviorEnabled = false;
+	}
+};
+
 } // end of namespace Saga2
 
 #endif
diff --git a/engines/saga2/idtypes.h b/engines/saga2/idtypes.h
index c93067eeef..8acb9ecef3 100644
--- a/engines/saga2/idtypes.h
+++ b/engines/saga2/idtypes.h
@@ -245,6 +245,9 @@ typedef uint8       ColorTable[256];
 #define maxuint16 0xffff
 #define maxint32 0x7fffffff
 
+enum {
+	kActorListID = MKTAG('A', 'C', 'T', 'O');
+};
 
 // number of containers
 const int   kNumViews    = 3;
@@ -461,6 +464,10 @@ enum {
 	kObjectVolumeArraySize = 128
 };
 
+enum {
+	kDefaultReach = 24
+};
+
 } // end of namespace Saga2
 
 #endif
diff --git a/engines/saga2/main.cpp b/engines/saga2/main.cpp
index a74c07be47..ff64ca2389 100644
--- a/engines/saga2/main.cpp
+++ b/engines/saga2/main.cpp
@@ -623,9 +623,7 @@ extern bool         brotherBandingEnabled,
        centerActorIndicatorEnabled,
        interruptableMotionsPaused,
        objectStatesPaused,
-       actorStatesPaused,
        actorTasksPaused,
-       combatBehaviorEnabled,
        backgroundSimulationPaused;
 
 //-----------------------------------------------------------------------
@@ -638,9 +636,9 @@ void initGlobals(void) {
 	centerActorIndicatorEnabled = false;
 	interruptableMotionsPaused = false;
 	objectStatesPaused = false;
-	actorStatesPaused = false;
+	g_vm->_act->_actorStatesPaused = false;
 	actorTasksPaused = false;
-	combatBehaviorEnabled = false;
+	g_vm->_act->_combatBehaviorEnabled = false;
 	backgroundSimulationPaused = false;
 }
 
@@ -655,9 +653,9 @@ void saveGlobals(Common::OutSaveFile *outS) {
 	out->writeUint16LE(centerActorIndicatorEnabled);
 	out->writeUint16LE(interruptableMotionsPaused);
 	out->writeUint16LE(objectStatesPaused);
-	out->writeUint16LE(actorStatesPaused);
+	out->writeUint16LE(g_vm->_act->_actorStatesPaused);
 	out->writeUint16LE(actorTasksPaused);
-	out->writeUint16LE(combatBehaviorEnabled);
+	out->writeUint16LE(g_vm->_act->_combatBehaviorEnabled);
 	out->writeUint16LE(backgroundSimulationPaused);
 	CHUNK_END;
 
@@ -667,9 +665,9 @@ void saveGlobals(Common::OutSaveFile *outS) {
 	debugC(3, kDebugSaveload, "... centerActorIndicatorEnabled = %d", centerActorIndicatorEnabled);
 	debugC(3, kDebugSaveload, "... interruptableMotionsPaused = %d", interruptableMotionsPaused);
 	debugC(3, kDebugSaveload, "... objectStatesPaused = %d", objectStatesPaused);
-	debugC(3, kDebugSaveload, "... actorStatesPaused = %d", actorStatesPaused);
+	debugC(3, kDebugSaveload, "... g_vm->_act->_actorStatesPaused = %d", g_vm->_act->_actorStatesPaused);
 	debugC(3, kDebugSaveload, "... actorTasksPaused = %d", actorTasksPaused);
-	debugC(3, kDebugSaveload, "... combatBehaviorEnabled = %d", combatBehaviorEnabled);
+	debugC(3, kDebugSaveload, "... g_vm->_act->_combatBehaviorEnabled = %d", g_vm->_act->_combatBehaviorEnabled);
 	debugC(3, kDebugSaveload, "... backgroundSimulationPaused = %d", backgroundSimulationPaused);
 }
 
@@ -682,9 +680,9 @@ void loadGlobals(Common::InSaveFile *in) {
 	centerActorIndicatorEnabled = in->readUint16LE();
 	interruptableMotionsPaused = in->readUint16LE();
 	objectStatesPaused = in->readUint16LE();
-	actorStatesPaused = in->readUint16LE();
+	g_vm->_act->_actorStatesPaused = in->readUint16LE();
 	actorTasksPaused = in->readUint16LE();
-	combatBehaviorEnabled = in->readUint16LE();
+	g_vm->_act->_combatBehaviorEnabled = in->readUint16LE();
 	backgroundSimulationPaused = in->readUint16LE();
 
 	debugC(3, kDebugSaveload, "... objectIndex = %d", objectIndex);
@@ -693,9 +691,9 @@ void loadGlobals(Common::InSaveFile *in) {
 	debugC(3, kDebugSaveload, "... centerActorIndicatorEnabled = %d", centerActorIndicatorEnabled);
 	debugC(3, kDebugSaveload, "... interruptableMotionsPaused = %d", interruptableMotionsPaused);
 	debugC(3, kDebugSaveload, "... objectStatesPaused = %d", objectStatesPaused);
-	debugC(3, kDebugSaveload, "... actorStatesPaused = %d", actorStatesPaused);
+	debugC(3, kDebugSaveload, "... g_vm->_act->_actorStatesPaused = %d", g_vm->_act->_actorStatesPaused);
 	debugC(3, kDebugSaveload, "... actorTasksPaused = %d", actorTasksPaused);
-	debugC(3, kDebugSaveload, "... combatBehaviorEnabled = %d", combatBehaviorEnabled);
+	debugC(3, kDebugSaveload, "... g_vm->_act->_combatBehaviorEnabled = %d", g_vm->_act->_combatBehaviorEnabled);
 	debugC(3, kDebugSaveload, "... backgroundSimulationPaused = %d", backgroundSimulationPaused);
 }
 
diff --git a/engines/saga2/saga2.cpp b/engines/saga2/saga2.cpp
index 4e3d4a2c16..6150c5fa1f 100644
--- a/engines/saga2/saga2.cpp
+++ b/engines/saga2/saga2.cpp
@@ -35,6 +35,7 @@
 #include "saga2/saga2.h"
 #include "saga2/fta.h"
 
+#include "saga2/actor.h"
 #include "saga2/audio.h"
 #include "saga2/band.h"
 #include "saga2/beegee.h"
@@ -68,6 +69,7 @@ Saga2Engine::Saga2Engine(OSystem *syst)
 	_renderer = nullptr;
 	_audio = nullptr;
 	_pal = nullptr;
+	_act = nullptr;
 
 	_bandList = nullptr;
 	_mouseInfo = nullptr;
@@ -129,6 +131,7 @@ Saga2Engine::~Saga2Engine() {
 	delete _rnd;
 	delete _renderer;
 	delete _pal;
+	delete _act;
 
 	delete _imageCache;
 	delete _mTaskList;
@@ -156,6 +159,7 @@ Common::Error Saga2Engine::run() {
 	_renderer = new Renderer();
 
 	_pal = new PaletteManager;
+	_act = new ActorManager;
 
 	readConfig();
 
diff --git a/engines/saga2/saga2.h b/engines/saga2/saga2.h
index 64a55693b4..46b8cbe07e 100644
--- a/engines/saga2/saga2.h
+++ b/engines/saga2/saga2.h
@@ -80,6 +80,7 @@ class frameCounter;
 class CMapFeature;
 class AudioInterface;
 class PaletteManager;
+class ActorManager;
 
 enum {
 	kDebugResources = 1 << 0,
@@ -138,6 +139,7 @@ public:
 	Renderer *_renderer;
 	AudioInterface *_audio;
 	PaletteManager *_pal;
+	ActorManager *_act;
 
 	WeaponStuff _weaponRack[kMaxWeapons];
 	weaponID _loadedWeapons;


Commit: c123a4914cf0bb58dc25b3e4e6991881a5c3e527
    https://github.com/scummvm/scummvm/commit/c123a4914cf0bb58dc25b3e4e6991881a5c3e527
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-08-24T02:43:15+09:00

Commit Message:
SAGA2: Move _actorList from Saga2Engine to ActorManager

Changed paths:
    engines/saga2/actor.cpp
    engines/saga2/actor.h
    engines/saga2/band.cpp
    engines/saga2/idtypes.h
    engines/saga2/objects.cpp
    engines/saga2/saga2.h


diff --git a/engines/saga2/actor.cpp b/engines/saga2/actor.cpp
index 4e1e946713..bad9d40ce3 100644
--- a/engines/saga2/actor.cpp
+++ b/engines/saga2/actor.cpp
@@ -1426,7 +1426,7 @@ Actor *Actor::newActor(
 
 		//  Search actor list for first scavangable actor
 		for (i = kPlayerActors; i < kActorCount; i++) {
-			a = g_vm->_actorList[i];
+			a = g_vm->_act->_actorList[i];
 
 			if ((a->_flags & temporary)
 			        &&  !a->isActivated()
@@ -3362,7 +3362,7 @@ bool Actor::makeSavingThrow(void) {
 //	Determine if the actors are currently initialized
 
 bool areActorsInitialized(void) {
-	return g_vm->_actorList.size() > 0;
+	return g_vm->_act->_actorList.size() > 0;
 }
 
 int16 GetRandomBetween(int start, int end) {
@@ -3376,7 +3376,7 @@ void updateActorStates(void) {
 
 	actorIndex = g_vm->_act->_baseActorIndex = (g_vm->_act->_baseActorIndex + 1) & ActorManager::kEvalRateMask;
 	while (actorIndex < kActorCount) {
-		Actor   *a = g_vm->_actorList[actorIndex];
+		Actor   *a = g_vm->_act->_actorList[actorIndex];
 
 		if (isWorld(a->IDParent()))
 			a->evaluateNeeds();
@@ -3386,7 +3386,7 @@ void updateActorStates(void) {
 
 	g_vm->_act->_updatesViaScript = 0;
 	for (actorIndex = 0; actorIndex < kActorCount; actorIndex++) {
-		Actor   *a = g_vm->_actorList[actorIndex];
+		Actor   *a = g_vm->_act->_actorList[actorIndex];
 
 		if (isWorld(a->IDParent()) && a->isActivated())
 			a->updateState();
@@ -3472,7 +3472,7 @@ void initActors(void) {
 
 		a->_index = i + ActorBaseID;
 
-		g_vm->_actorList.push_back(a);
+		g_vm->_act->_actorList.push_back(a);
 	}
 
 	//  Place all of the extra actors in actor limbo
@@ -3481,12 +3481,12 @@ void initActors(void) {
 
 		a->_index = i + ActorBaseID;
 
-		g_vm->_actorList.push_back(a);
+		g_vm->_act->_actorList.push_back(a);
 	}
 
-	g_vm->_actorList[0]->_disposition = dispositionPlayer + 0;
-	g_vm->_actorList[1]->_disposition = dispositionPlayer + 1;
-	g_vm->_actorList[2]->_disposition = dispositionPlayer + 2;
+	g_vm->_act->_actorList[0]->_disposition = dispositionPlayer + 0;
+	g_vm->_act->_actorList[1]->_disposition = dispositionPlayer + 1;
+	g_vm->_act->_actorList[2]->_disposition = dispositionPlayer + 2;
 }
 
 void saveActors(Common::OutSaveFile *outS) {
@@ -3499,7 +3499,7 @@ void saveActors(Common::OutSaveFile *outS) {
 	debugC(3, kDebugSaveload, "... kActorCount = %d", kActorCount);
 
 	for (int i = 0; i < kActorCount; ++i)
-		g_vm->_actorList[i]->write(out);
+		g_vm->_act->_actorList[i]->write(out);
 	CHUNK_END;
 }
 
@@ -3519,11 +3519,11 @@ void loadActors(Common::InSaveFile *in) {
 
 		a->_index = i + ActorBaseID;
 
-		g_vm->_actorList.push_back(a);
+		g_vm->_act->_actorList.push_back(a);
 	}
 
 	for (int i = 0; i < kActorCount; ++i) {
-		Actor *a = g_vm->_actorList[i];
+		Actor *a = g_vm->_act->_actorList[i];
 
 		a->_leader = a->_leaderID != Nothing
 					? (Actor *)GameObject::objectAddress(a->_leaderID)
@@ -3543,11 +3543,11 @@ void loadActors(Common::InSaveFile *in) {
 //	Cleanup the actor list
 
 void cleanupActors(void) {
-	if (g_vm->_actorList.size() > 0) {
+	if (g_vm->_act->_actorList.size() > 0) {
 		for (int i = 0; i < kActorCount; i++)
-			delete g_vm->_actorList[i];
+			delete g_vm->_act->_actorList[i];
 
-		g_vm->_actorList.clear();
+		g_vm->_act->_actorList.clear();
 	}
 }
 
diff --git a/engines/saga2/actor.h b/engines/saga2/actor.h
index 667ae04b69..de641972e1 100644
--- a/engines/saga2/actor.h
+++ b/engines/saga2/actor.h
@@ -1138,6 +1138,8 @@ public:
 		kEvalRateMask = kEvalRate - 1
 	};
 
+	Common::Array<Actor *> _actorList;
+
 	int32 _updatesViaScript;
 	int32 _baseActorIndex;
 	int16 _factionTable[maxFactions][factionNumColumns];
diff --git a/engines/saga2/band.cpp b/engines/saga2/band.cpp
index 21d22b7366..80ef5c1cc8 100644
--- a/engines/saga2/band.cpp
+++ b/engines/saga2/band.cpp
@@ -232,8 +232,8 @@ void loadBands(Common::InSaveFile *in, int32 chunkSize) {
 
 	// Reconstruct followers for actors
 	for (int i = 0; i < kActorCount; ++i) {
-		BandID id = g_vm->_actorList[i]->_followersID;
-		g_vm->_actorList[i]->_followers = id != NoBand
+		BandID id = g_vm->_act->_actorList[i]->_followersID;
+		g_vm->_act->_actorList[i]->_followers = id != NoBand
 	                             ?   getBandAddress(id)
 	                             :   nullptr;
 	}
diff --git a/engines/saga2/idtypes.h b/engines/saga2/idtypes.h
index 8acb9ecef3..08b6d1dd27 100644
--- a/engines/saga2/idtypes.h
+++ b/engines/saga2/idtypes.h
@@ -246,7 +246,7 @@ typedef uint8       ColorTable[256];
 #define maxint32 0x7fffffff
 
 enum {
-	kActorListID = MKTAG('A', 'C', 'T', 'O');
+	kActorListID = MKTAG('A', 'C', 'T', 'O')
 };
 
 // number of containers
diff --git a/engines/saga2/objects.cpp b/engines/saga2/objects.cpp
index 46d25627e5..758fe1988b 100644
--- a/engines/saga2/objects.cpp
+++ b/engines/saga2/objects.cpp
@@ -346,7 +346,7 @@ bool isActor(GameObject *obj) {
 	if (obj->_index >= kActorCount + ActorBaseID || obj->_index < ActorBaseID)
 		return false;
 
-	return (g_vm->_actorList[obj->_index - ActorBaseID] == obj);
+	return (g_vm->_act->_actorList[obj->_index - ActorBaseID] == obj);
 }
 
 bool isWorld(GameObject *obj) {
@@ -380,7 +380,7 @@ GameObject *GameObject::objectAddress(ObjectID id) {
 	if (id - ActorBaseID >= kActorCount)
 		error("Invalid object ID: %d!", id);
 
-	return (int)g_vm->_actorList.size() > id - ActorBaseID ? g_vm->_actorList[id - ActorBaseID] : nullptr;
+	return (int)g_vm->_act->_actorList.size() > id - ActorBaseID ? g_vm->_act->_actorList[id - ActorBaseID] : nullptr;
 }
 
 ProtoObj *GameObject::protoAddress(ObjectID id) {
@@ -399,11 +399,11 @@ int32 GameObject::nameIndexToID(uint16 ind) {
 	}
 
 	for (int i = 0; i < kActorCount; ++i) {
-		if (g_vm->_actorList[i]->_data.nameIndex == ind)
-			return g_vm->_actorList[i]->thisID();
+		if (g_vm->_act->_actorList[i]->_data.nameIndex == ind)
+			return g_vm->_act->_actorList[i]->thisID();
 
-		if (g_vm->_actorList[i]->prototype && g_vm->_actorList[i]->prototype->nameIndex == ind)
-			return g_vm->_actorList[i]->thisID();
+		if (g_vm->_act->_actorList[i]->prototype && g_vm->_act->_actorList[i]->prototype->nameIndex == ind)
+			return g_vm->_act->_actorList[i]->thisID();
 	}
 
 	for (int i = 0; i < worldCount; ++i) {
@@ -429,10 +429,10 @@ Common::Array<ObjectID> GameObject::nameToID(Common::String name) {
 	}
 
 	for (int i = 0; i < kActorCount; ++i) {
-		Common::String objName = g_vm->_actorList[i]->objName();
+		Common::String objName = g_vm->_act->_actorList[i]->objName();
 		objName.toLowercase();
 		if (objName.contains(name))
-			array.push_back(g_vm->_actorList[i]->thisID());
+			array.push_back(g_vm->_act->_actorList[i]->thisID());
 	}
 
 	for (int i = 0; i < worldCount; ++i) {
@@ -3028,7 +3028,7 @@ void initObjects(void) {
 	//  Make a pass over the actor list appending each actor to their
 	//  parent's child list
 	for (i = 0; i < kActorCount; i++) {
-		Actor       *a = g_vm->_actorList[i];
+		Actor       *a = g_vm->_act->_actorList[i];
 
 		if (a->_data.parentID == Nothing) {
 			a->append(ActorLimbo);
@@ -4603,7 +4603,7 @@ void doBackgroundSimulation(void) {
 	while (actorUpdateCount--) {
 		Actor           *a;
 
-		a = g_vm->_actorList[actorIndex++];
+		a = g_vm->_act->_actorList[actorIndex++];
 
 		//  Wrap the counter around to the beginning if needed
 		if (actorIndex >= kActorCount) actorIndex = 0;
diff --git a/engines/saga2/saga2.h b/engines/saga2/saga2.h
index 46b8cbe07e..16c6d87b52 100644
--- a/engines/saga2/saga2.h
+++ b/engines/saga2/saga2.h
@@ -144,7 +144,6 @@ public:
 	WeaponStuff _weaponRack[kMaxWeapons];
 	weaponID _loadedWeapons;
 	Common::Array<char *> _nameList;
-	Common::Array<Actor *> _actorList;
 	Common::Array<PlayerActor *> _playerList;
 	Common::Array<ProtoObj *> _objectProtos;
 	Common::Array<ActorProto *> _actorProtos;


Commit: e14937dd9c5968091cf4aaeee8865cb690cd4095
    https://github.com/scummvm/scummvm/commit/e14937dd9c5968091cf4aaeee8865cb690cd4095
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-08-24T02:43:15+09:00

Commit Message:
SAGA2: Rename constant in assign.cpp

Changed paths:
    engines/saga2/assign.cpp


diff --git a/engines/saga2/assign.cpp b/engines/saga2/assign.cpp
index eaf0391c4e..e6d2040a7b 100644
--- a/engines/saga2/assign.cpp
+++ b/engines/saga2/assign.cpp
@@ -33,7 +33,7 @@
 
 namespace Saga2 {
 
-const uint16 indefinitely = CalenderTime::kFramesPerDay;
+const uint16 kIndefiniteTime = CalenderTime::kFramesPerDay;
 
 /* ===================================================================== *
    ActorAssignment member functions
@@ -304,13 +304,13 @@ Task *PatrolRouteAssignment::getTask(TaskStack *ts) {
  * ===================================================================== */
 
 HuntToBeNearLocationAssignment::HuntToBeNearLocationAssignment(Actor *a, const TilePoint &tp, uint16 r) :
-	ActorAssignment(a, indefinitely) {
+	ActorAssignment(a, kIndefiniteTime) {
 	initialize(LocationTarget(tp), r);
 }
 
 //  Construct with no time limit and an abstract target
 HuntToBeNearLocationAssignment::HuntToBeNearLocationAssignment(Actor *a, const Target &targ, uint16 r) :
-	ActorAssignment(a, indefinitely) {
+	ActorAssignment(a, kIndefiniteTime) {
 	initialize(targ, r);
 }
 
@@ -396,7 +396,7 @@ HuntToBeNearActorAssignment::HuntToBeNearActorAssignment(
 	Actor               *a,
 	uint16              r,
 	bool                trackFlag) :
-	ActorAssignment(a, indefinitely) {
+	ActorAssignment(a, kIndefiniteTime) {
 	assert(isActor(a) && a != getActor());
 	initialize(SpecificActorTarget(a), r, trackFlag);
 }
@@ -407,7 +407,7 @@ HuntToBeNearActorAssignment::HuntToBeNearActorAssignment(
 	const ActorTarget   &at,
 	uint16              r,
 	bool                trackFlag) :
-	ActorAssignment(a, indefinitely) {
+	ActorAssignment(a, kIndefiniteTime) {
 	initialize(at, r, trackFlag);
 }
 
@@ -505,7 +505,7 @@ Task *HuntToBeNearActorAssignment::getTask(TaskStack *ts) {
 
 //  Construct with no time limit and specific actor
 HuntToKillAssignment::HuntToKillAssignment(Actor *a, bool trackFlag) :
-	ActorAssignment(a, indefinitely) {
+	ActorAssignment(a, kIndefiniteTime) {
 	assert(isActor(a) && a != getActor());
 	initialize(SpecificActorTarget(a), trackFlag, true);
 }
@@ -515,7 +515,7 @@ HuntToKillAssignment::HuntToKillAssignment(
 	Actor *a,
 	const ActorTarget   &at,
 	bool                trackFlag) :
-	ActorAssignment(a, indefinitely) {
+	ActorAssignment(a, kIndefiniteTime) {
 	initialize(at, trackFlag, false);
 }
 


Commit: 43945dfe39c0cb7e9df1e3b248367ba40c14e451
    https://github.com/scummvm/scummvm/commit/43945dfe39c0cb7e9df1e3b248367ba40c14e451
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-08-24T02:43:16+09:00

Commit Message:
SAGA2: Remove some globals in audio.cpp

Changed paths:
    engines/saga2/audio.cpp
    engines/saga2/audio.h
    engines/saga2/intrface.cpp


diff --git a/engines/saga2/audio.cpp b/engines/saga2/audio.cpp
index 2ee9953a7d..09a3b06406 100644
--- a/engines/saga2/audio.cpp
+++ b/engines/saga2/audio.cpp
@@ -54,14 +54,8 @@ const uint32        baseMusicID     = MKTAG('M', 'I', 'L', 'O'),
 extern hResource *soundResFile;          // script resources
 extern hResource *voiceResFile;          // script resources
 
-extern int32 clickSizes[];
-extern uint8 *clickData[];
-
-uint32 currentLoop;
-
 hResContext *voiceRes, *musicRes, *soundRes, *loopRes, *longRes;
 
-
 bool haveKillerSoundCard(void);
 void writeConfig(void);
 void disableBGLoop(bool s = true);
@@ -130,12 +124,12 @@ void startAudio(void) {
 	g_vm->_audio->initAudioInterface(musicRes);
 
 	// kludgy in memory click sounds
-	clickSizes[0] = 0;
-	clickSizes[1] = soundRes->size(MKTAG('C', 'L', 'K', 1));
-	clickSizes[2] = soundRes->size(MKTAG('C', 'L', 'K', 2));
-	clickData[0] = NULL;
-	clickData[1] = (uint8 *)LoadResource(soundRes, MKTAG('C', 'L', 'K', 1), "Click 1");
-	clickData[2] = (uint8 *)LoadResource(soundRes, MKTAG('C', 'L', 'K', 2), "Click 2");
+	g_vm->_audio->_clickSizes[0] = 0;
+	g_vm->_audio->_clickSizes[1] = soundRes->size(MKTAG('C', 'L', 'K', 1));
+	g_vm->_audio->_clickSizes[2] = soundRes->size(MKTAG('C', 'L', 'K', 2));
+	g_vm->_audio->_clickData[0] = NULL;
+	g_vm->_audio->_clickData[1] = (uint8 *)LoadResource(soundRes, MKTAG('C', 'L', 'K', 1), "Click 1");
+	g_vm->_audio->_clickData[2] = (uint8 *)LoadResource(soundRes, MKTAG('C', 'L', 'K', 2), "Click 2");
 }
 
 void cleanupAudio() {
@@ -143,12 +137,6 @@ void cleanupAudio() {
 		delete g_vm->_audio;
 		g_vm->_audio = nullptr;
 
-		free(clickData[1]);
-		clickData[1] = nullptr;
-
-		free(clickData[2]);
-		clickData[2] = nullptr;
-
 		delete musicRes;
 		musicRes = nullptr;
 
@@ -307,7 +295,7 @@ void playMusic(uint32 s) {
 void playMemSound(uint32 s) {
 	debugC(1, kDebugSound, "playMemSound(%s)", tag2strP(s));
 
-	Audio::AudioStream *aud = Audio::makeRawStream(clickData[s], clickSizes[s], 22050, Audio::FLAG_16BITS | Audio::FLAG_LITTLE_ENDIAN, DisposeAfterUse::NO);
+	Audio::AudioStream *aud = Audio::makeRawStream(g_vm->_audio->_clickData[s], g_vm->_audio->_clickSizes[s], 22050, Audio::FLAG_16BITS | Audio::FLAG_LITTLE_ENDIAN, DisposeAfterUse::NO);
 
 	g_system->getMixer()->playStream(Audio::Mixer::kSFXSoundType, &g_vm->_audio->_clickSoundHandle, aud);
 }
@@ -374,8 +362,7 @@ bool sayVoice(uint32 s[]) {
 // main loop playback
 
 void _playLoop(uint32 s) {
-	currentLoop = s;
-	if (currentLoop == g_vm->_audio->currentLoop())
+	if (s == g_vm->_audio->currentLoop())
 		return;
 
 	g_vm->_audio->stopLoop();
@@ -578,10 +565,15 @@ bool initAudio() {
 AudioInterface::AudioInterface() {
 	_music = nullptr;
 	_mixer = g_system->getMixer();
+
+	memset(_clickSizes, 0, sizeof(_clickSizes));
+	memset(_clickData, 0, sizeof(_clickData));
 }
 
 AudioInterface::~AudioInterface() {
 	delete _music;
+	free(_clickData[1]);
+	free(_clickData[2]);
 }
 
 void AudioInterface::initAudioInterface(hResContext *musicContext) {
diff --git a/engines/saga2/audio.h b/engines/saga2/audio.h
index bc1b787c65..3824c9234b 100644
--- a/engines/saga2/audio.h
+++ b/engines/saga2/audio.h
@@ -50,6 +50,10 @@ struct SoundInstance {
 
 class AudioInterface {
 private:
+	enum {
+		kClickSounds = 3
+	};
+
 	SoundInstance _currentSpeech;
 	SoundInstance _currentLoop;
 	SoundInstance _currentMusic;
@@ -67,6 +71,9 @@ public:
 	Audio::Mixer *_mixer;
 	Music *_music;
 
+	int32 _clickSizes[kClickSounds];
+	uint8 *_clickData[kClickSounds];
+
 public:
 	// ctor, dtor, initialization
 	AudioInterface();
diff --git a/engines/saga2/intrface.cpp b/engines/saga2/intrface.cpp
index 0e232ff706..a690cc9c3a 100644
--- a/engines/saga2/intrface.cpp
+++ b/engines/saga2/intrface.cpp
@@ -401,18 +401,6 @@ CMassWeightIndicator    *MassWeightIndicator = nullptr;
 CHealthIndicator        *HealthIndicator     = nullptr;
 CManaIndicator          *ManaIndicator       = nullptr;
 
-/* ===================================================================== *
-   Clicks
- * ===================================================================== */
-
-const int clickSounds = 3;
-
-uint32 maxClicks = clickSounds;
-int32 clickSizes[clickSounds];
-uint8 *clickData[clickSounds];
-
-void playMemSound(uint32 s); // play click # s
-
 /* ===================================================================== *
    Plaq writing class
  * ===================================================================== */




More information about the Scummvm-git-logs mailing list