[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