[Scummvm-git-logs] scummvm master -> 3b691de5cafa1a71b11f4f0f12fc6e45125b607e
a-yyg
76591232+a-yyg at users.noreply.github.com
Fri Aug 6 09:46:04 UTC 2021
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
8347351b13 SAGA2: Use CHUNK macros in saveBands
c8bd76084d SAGA2: Fix leader initialization on loadActors
3b691de5ca SAGA2: Fix Actor loading debug messages
Commit: 8347351b136c7f5b04dcd16dba7c41cd8202ac20
https://github.com/scummvm/scummvm/commit/8347351b136c7f5b04dcd16dba7c41cd8202ac20
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-08-06T18:44:57+09:00
Commit Message:
SAGA2: Use CHUNK macros in saveBands
Changed paths:
engines/saga2/band.cpp
engines/saga2/band.h
diff --git a/engines/saga2/band.cpp b/engines/saga2/band.cpp
index d8868f8d0e..21d0b3fce4 100644
--- a/engines/saga2/band.cpp
+++ b/engines/saga2/band.cpp
@@ -77,7 +77,7 @@ int32 BandList::archiveSize(void) {
return size;
}
-void BandList::write(Common::OutSaveFile *out) {
+void BandList::write(Common::MemoryWriteStreamDynamic *out) {
int16 bandCount = 0;
// Count the active bands
@@ -199,17 +199,14 @@ Band *getBandAddress(BandID id) {
void initBands(void) {
}
-void saveBands(Common::OutSaveFile *out) {
+void saveBands(Common::OutSaveFile *outS) {
debugC(2, kDebugSaveload, "Saving Bands");
- int32 archiveBufSize;
-
- archiveBufSize = g_vm->_bandList->archiveSize();
-
- out->write("BAND", 4);
- out->writeUint32LE(archiveBufSize);
+ outS->write("BAND", 4);
+ CHUNK_BEGIN;
g_vm->_bandList->write(out);
+ CHUNK_END;
}
void loadBands(Common::InSaveFile *in, int32 chunkSize) {
@@ -301,7 +298,7 @@ int32 Band::archiveSize(void) {
+ sizeof(ObjectID) * memberCount; // members' ID's
}
-void Band::write(Common::OutSaveFile *out) {
+void Band::write(Common::MemoryWriteStreamDynamic *out) {
// Store the leader's ID
out->writeUint16LE(leader->thisID());
diff --git a/engines/saga2/band.h b/engines/saga2/band.h
index fd3a3e4e77..8a0fbdef50 100644
--- a/engines/saga2/band.h
+++ b/engines/saga2/band.h
@@ -51,7 +51,7 @@ Band *getBandAddress(BandID id);
// Initialize the band list
void initBands(void);
-void saveBands(Common::OutSaveFile *out);
+void saveBands(Common::OutSaveFile *outS);
void loadBands(Common::InSaveFile *in, int32 chunkSize);
// Cleanup the band list
void cleanupBands(void);
@@ -82,7 +82,7 @@ public:
// in a buffer
int32 archiveSize(void);
- void write(Common::OutSaveFile *out);
+ void write(Common::MemoryWriteStreamDynamic *out);
// Place a Band from the inactive list into the active
// list.
@@ -133,7 +133,7 @@ public:
// buffer
int32 archiveSize(void);
- void write(Common::OutSaveFile *out);
+ void write(Common::MemoryWriteStreamDynamic *out);
Actor *getLeader(void) {
return leader;
Commit: c8bd76084dd36892d368fcbf2ca84184ae088e3f
https://github.com/scummvm/scummvm/commit/c8bd76084dd36892d368fcbf2ca84184ae088e3f
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-08-06T18:44:57+09:00
Commit Message:
SAGA2: Fix leader initialization on loadActors
Changed paths:
engines/saga2/actor.cpp
engines/saga2/actor.h
diff --git a/engines/saga2/actor.cpp b/engines/saga2/actor.cpp
index 1daccdbc53..5895e6c954 100644
--- a/engines/saga2/actor.cpp
+++ b/engines/saga2/actor.cpp
@@ -1100,11 +1100,13 @@ Actor::Actor(void) {
recPointsPerUpdate = BASE_REC_RATE;
currentRecoveryPoints = 0;
leader = nullptr;
+ _leaderID = Nothing;
followers = nullptr;
_followersID = NoBand;
for (int i = 0; i < ARMOR_COUNT; i++)
armorObjects[i] = Nothing;
currentTarget = nullptr;
+ _currentTargetID = Nothing;
for (int i = 0; i < actorScriptVars; i++)
scriptVar[i] = 0;
}
@@ -1169,11 +1171,13 @@ Actor::Actor(const ResourceActor &res) : GameObject(res) {
recPointsPerUpdate = BASE_REC_RATE;
currentRecoveryPoints = 0;
leader = NULL;
+ _leaderID = Nothing;
followers = NULL;
_followersID = NoBand;
for (i = 0; i < ARMOR_COUNT; i++)
armorObjects[i] = Nothing;
currentTarget = NULL;
+ _currentTargetID = Nothing;
for (i = 0; i < actorScriptVars; i++)
scriptVar[i] = 0;
@@ -1228,26 +1232,14 @@ Actor::Actor(Common::InSaveFile *in) : GameObject(in) {
recPointsPerUpdate = in->readSint16LE();
currentRecoveryPoints = in->readUint16LE();
- int leaderID = in->readUint16LE();
-
- leader = leaderID != Nothing
- ? (Actor *)GameObject::objectAddress(leaderID)
- : nullptr;
+ _leaderID = in->readUint16LE();
_followersID = in->readSint16LE();
- followers = _followersID != NoBand
- ? getBandAddress(_followersID)
- : nullptr;
-
for (int i = 0; i < ARRAYSIZE(armorObjects); ++i)
armorObjects[i] = in->readUint16LE();
- int currentTargetID = in->readUint16LE();
-
- currentTarget = currentTargetID != Nothing
- ? GameObject::objectAddress(currentTargetID)
- : nullptr;
+ _currentTargetID = in->readUint16LE();
for (int i = 0; i < ARRAYSIZE(scriptVar); ++i)
scriptVar[i] = in->readSint16LE();
@@ -1293,10 +1285,10 @@ Actor::Actor(Common::InSaveFile *in) : GameObject(in) {
debugC(4, kDebugSaveload, "... effectiveImmunity = %d", effectiveImmunity);
debugC(4, kDebugSaveload, "... recPointsPerUpdate = %d", recPointsPerUpdate);
debugC(4, kDebugSaveload, "... currentRecoveryPoints = %d", currentRecoveryPoints);
- debugC(4, kDebugSaveload, "... leaderID = %d", leaderID);
+ debugC(4, kDebugSaveload, "... leaderID = %d", _leaderID);
debugC(4, kDebugSaveload, "... followersID = %d", _followersID);
// debugC(4, kDebugSaveload, "... armorObjects = %d", armorObjects);
- debugC(4, kDebugSaveload, "... currentTargetID = %d", currentTargetID);
+ debugC(4, kDebugSaveload, "... currentTargetID = %d", _currentTargetID);
// debugC(4, kDebugSaveload, "... scriptVar = %d", scriptVar);
}
@@ -3552,6 +3544,22 @@ void loadActors(Common::InSaveFile *in) {
g_vm->_actorList.push_back(a);
}
+
+ for (int i = 0; i < kActorCount; ++i) {
+ Actor *a = g_vm->_actorList[i];
+
+ a->leader = a->_leaderID != Nothing
+ ? (Actor *)GameObject::objectAddress(a->_leaderID)
+ : nullptr;
+
+ a->followers = a->_followersID != NoBand
+ ? getBandAddress(a->_followersID)
+ : nullptr;
+
+ a->currentTarget = a->_currentTargetID != Nothing
+ ? GameObject::objectAddress(a->_currentTargetID)
+ : nullptr;
+ }
}
//-------------------------------------------------------------------
diff --git a/engines/saga2/actor.h b/engines/saga2/actor.h
index 5ead65e415..31a423885e 100644
--- a/engines/saga2/actor.h
+++ b/engines/saga2/actor.h
@@ -699,12 +699,14 @@ public:
Actor *leader; // This actor's leader
+ ObjectID _leaderID;
Band *followers; // This actor's band of followers
BandID _followersID;
ObjectID armorObjects[ARMOR_COUNT]; // armor objects being worn
GameObject *currentTarget;
+ ObjectID _currentTargetID;
int16 scriptVar[actorScriptVars]; // scratch variables for scripter use
Commit: 3b691de5cafa1a71b11f4f0f12fc6e45125b607e
https://github.com/scummvm/scummvm/commit/3b691de5cafa1a71b11f4f0f12fc6e45125b607e
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-08-06T18:44:57+09:00
Commit Message:
SAGA2: Fix Actor loading debug messages
Changed paths:
engines/saga2/actor.cpp
engines/saga2/objects.cpp
diff --git a/engines/saga2/actor.cpp b/engines/saga2/actor.cpp
index 5895e6c954..ea8a3491ce 100644
--- a/engines/saga2/actor.cpp
+++ b/engines/saga2/actor.cpp
@@ -1185,8 +1185,6 @@ Actor::Actor(const ResourceActor &res) : GameObject(res) {
}
Actor::Actor(Common::InSaveFile *in) : GameObject(in) {
- debugC(3, kDebugSaveload, "Loading actor %d", thisID());
-
// Fixup the prototype pointer to point to an actor prototype
prototype = prototype != nullptr
? (ProtoObj *)g_vm->_actorProtos[getProtoNum()]
@@ -3537,6 +3535,8 @@ void loadActors(Common::InSaveFile *in) {
debugC(3, kDebugSaveload, "... kActorCount = %d", kActorCount);
for (int i = 0; i < kActorCount; i++) {
+ debugC(3, kDebugSaveload, "Loading actor %d", i + ActorBaseID);
+
// Initilize actors with archive data
Actor *a = new Actor(in);
diff --git a/engines/saga2/objects.cpp b/engines/saga2/objects.cpp
index 826318b964..b141ea20d0 100644
--- a/engines/saga2/objects.cpp
+++ b/engines/saga2/objects.cpp
@@ -232,16 +232,12 @@ GameObject::GameObject(const ResourceGameObject &res) {
}
GameObject::GameObject(Common::InSaveFile *in) {
- debugC(3, kDebugSaveload, "Loading object %d", thisID());
-
read(in, false);
_index = 0;
_godmode = false;
}
void GameObject::read(Common::InSaveFile *in, bool expandProto) {
- debugC(3, kDebugSaveload, "Loading object %d", thisID());
-
int16 pInd = in->readSint16LE();
if (expandProto)
in->readSint16LE();
@@ -2439,7 +2435,6 @@ GameWorld::GameWorld(Common::SeekableReadStream *stream) {
size.u = size.v = stream->readSint16LE();
mapNum = stream->readSint16LE();
- debugC(3, kDebugSaveload, "World %d", thisID());
debugC(3, kDebugSaveload, "... size.u = size.v = %d", size.u);
debugC(3, kDebugSaveload, "... mapNum = %d", mapNum);
@@ -2889,6 +2884,8 @@ void loadWorlds(Common::InSaveFile *in) {
debugC(3, kDebugSaveload, "... currentWorldID = %d", currentWorldID);
for (int i = 0; i < worldCount; ++i) {
+ debugC(3, kDebugSaveload, "Loading World %d", i);
+
new (&worldList[i]) GameWorld(in);
worldList[i]._index = i + WorldBaseID;
@@ -3072,6 +3069,8 @@ void loadObjects(Common::InSaveFile *in) {
error("Unable to load Objects");
for (int i = 0; i < objectCount; i++) {
+ debugC(3, kDebugSaveload, "Loading object %d", i);
+
objectList[i].read(in, true);
in->readUint16LE();
objectList[i]._index = i;
More information about the Scummvm-git-logs
mailing list