[Scummvm-git-logs] scummvm master -> fb699ca5862421ccca729cbac7ad637728a54296

sev- noreply at scummvm.org
Fri Sep 19 17:31:43 UTC 2025


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

Summary:
fb699ca586 DIRECTOR: Fix behavior instantiation logic


Commit: fb699ca5862421ccca729cbac7ad637728a54296
    https://github.com/scummvm/scummvm/commit/fb699ca5862421ccca729cbac7ad637728a54296
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-19T19:31:12+02:00

Commit Message:
DIRECTOR: Fix behavior instantiation logic

Changed paths:
    engines/director/channel.cpp
    engines/director/score.cpp
    engines/director/spriteinfo.h


diff --git a/engines/director/channel.cpp b/engines/director/channel.cpp
index 33198d0cef7..cbddbe15d06 100644
--- a/engines/director/channel.cpp
+++ b/engines/director/channel.cpp
@@ -63,8 +63,13 @@ Channel::Channel(Score *sc, Sprite *sp, int priority) {
 	_visible = true;
 	_dirty = true;
 
-	_startFrame = -1;
-	_endFrame = -1;
+	if (sp) {
+		_startFrame = sp->_spriteInfo.startFrame;
+		_endFrame = sp->_spriteInfo.endFrame;
+	} else {
+		_startFrame = -1;
+		_endFrame = -1;
+	}
 }
 
 Channel::Channel(const Channel &channel) {
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 29da9c9dd10..2e7ba8d72f8 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -2456,7 +2456,7 @@ void Score::killScriptInstances(int frameNum) {
 			channel->_scriptInstanceList.clear();
 			channel->_startFrame = channel->_endFrame = -1;
 
-			debugC(1, kDebugLingoExec, "Score::killBehaviors(): Killed behaviors for channel %d", i + 1);
+			debugC(1, kDebugLingoExec, "Score::killScriptInstances(): Killed script instances for channel %d", i + 1);
 		}
 	}
 }
@@ -2476,7 +2476,7 @@ void Score::createScriptInstances(int frameNum) {
 					for (uint j = 0; j < sprite->_behaviors.size(); j++) {
 						// TODO: Here we should do proper instantiation
 						channel->_scriptInstanceList.push_back(sprite->_behaviors[j]);
-						debugC(1, kDebugLingoExec, "Score::createBehaviors(): Created behavior %s for channel %d",
+						debugC(1, kDebugLingoExec, "Score::createScriptInstances(): Instantiating behavior %s for channel %d",
 							sprite->_behaviors[j].toString().c_str(), i + 1);
 					}
 				}
diff --git a/engines/director/spriteinfo.h b/engines/director/spriteinfo.h
index 0edff45960a..af351f85a64 100644
--- a/engines/director/spriteinfo.h
+++ b/engines/director/spriteinfo.h
@@ -25,11 +25,11 @@
 namespace Director {
 
 struct TweenInfo {
-	int32 curvature;
-	int32 flags;
-	int32 easeIn;
-	int32 easeOut;
-	int32 padding;
+	int32 curvature = 0;
+	int32 flags = 0;
+	int32 easeIn = 0;
+	int32 easeOut = 0;
+	int32 padding = 0;
 
 	void read(Common::ReadStreamEndian &stream) {
 		curvature = (int32)stream.readUint32();
@@ -41,11 +41,11 @@ struct TweenInfo {
 };
 
 struct SpriteInfo {
-	int32 startFrame;
-	int32 endFrame;
-	int32 xtraInfo;
-	int32 flags;
-	int32 channelNum;
+	int32 startFrame = -1;
+	int32 endFrame = -1;
+	int32 xtraInfo = 0;
+	int32 flags = 0;
+	int32 channelNum = 0;
 	TweenInfo tweenInfo;
 
     Common::Array<int32> keyFrames;




More information about the Scummvm-git-logs mailing list