[Scummvm-git-logs] scummvm master -> 6edd735c6ce47d3a76178d3ff42898be09df94f6

rvanlaar noreply at scummvm.org
Fri Jan 3 16:43:06 UTC 2025


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

Summary:
6edd735c6c DIRECTOR: Implement RTECastMember duplication


Commit: 6edd735c6ce47d3a76178d3ff42898be09df94f6
    https://github.com/scummvm/scummvm/commit/6edd735c6ce47d3a76178d3ff42898be09df94f6
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2025-01-03T17:42:32+01:00

Commit Message:
DIRECTOR: Implement RTECastMember duplication

Implement support for `RTECastMember` in `duplicateCastMember`.
Adds a constructor on `RTECastMember` for duplication.

Resolves a crash in the Safecracker menu where the error was:

	Uncaught Lingo error: No match found for cast member

Changed paths:
    engines/director/cast.cpp
    engines/director/castmember/text.cpp
    engines/director/castmember/text.h


diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index 15b36205436..9434cebf8b3 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -277,6 +277,9 @@ bool Cast::duplicateCastMember(CastMember *source, CastMemberInfo *info, int tar
 	case kCastText:
 		target = (CastMember *)(new TextCastMember(this, targetId, *(TextCastMember *)source));
 		break;
+	case kCastRTE:
+		target = (CastMember *)(new RTECastMember(this, targetId, *(RTECastMember *)source));
+		break;
 	case kCastTransition:
 		target = (CastMember *)(new TransitionCastMember(this, targetId, *(TransitionCastMember *)source));
 		break;
diff --git a/engines/director/castmember/text.cpp b/engines/director/castmember/text.cpp
index c145fdac921..13f9277830f 100644
--- a/engines/director/castmember/text.cpp
+++ b/engines/director/castmember/text.cpp
@@ -742,6 +742,12 @@ RTECastMember::RTECastMember(Cast *cast, uint16 castId, Common::SeekableReadStre
 	_type = kCastRTE;
 }
 
+RTECastMember::RTECastMember(Cast *cast, uint16 castId,  RTECastMember &source)
+		: TextCastMember(cast, castId, source) {
+
+	_type = kCastRTE;
+}
+
 void RTECastMember::load() {
 	if (_loaded)
 		return;
diff --git a/engines/director/castmember/text.h b/engines/director/castmember/text.h
index 4a8e4a94d1c..21600fef73d 100644
--- a/engines/director/castmember/text.h
+++ b/engines/director/castmember/text.h
@@ -102,6 +102,7 @@ private:
 class RTECastMember : public TextCastMember {
 public:
 	RTECastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version);
+	RTECastMember(Cast *cast, uint16 castId, RTECastMember &source);
 
 	void loadChunks();
 	void load() override;




More information about the Scummvm-git-logs mailing list