[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(¤tPalette);
if (memcmp(¤tPalette, 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