[Scummvm-git-logs] scummvm master -> 662de4c696d0fb3420ee96d23d6d2b1b91599cc0

rvanlaar noreply at scummvm.org
Sat Oct 15 21:10:26 UTC 2022


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

Summary:
76e56f5b1f DIRECTOR: Remove and document broken cast copies
662de4c696 DIRECTOR: LINGO: Add comment regarding b_duplicate


Commit: 76e56f5b1f51a51d073ecf3970134d87964a4ea4
    https://github.com/scummvm/scummvm/commit/76e56f5b1f51a51d073ecf3970134d87964a4ea4
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2022-10-15T23:09:23+02:00

Commit Message:
DIRECTOR: Remove and document broken cast copies

Stubbed b_duplicate again.
    The implementation was broken, it copied the reference to the cast not the
    cast itself.
Adds warning to createOrReplaceCastMember.
    The function only handles replacing not creating.

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/movie.cpp


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 75217ef34c8..9675b80f7ce 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1811,34 +1811,8 @@ void LB::b_copyToClipBoard(int nargs) {
 }
 
 void LB::b_duplicate(int nargs) {
-	Datum to = g_lingo->pop();
-	Datum from = g_lingo->pop();
-
-	Movie *movie = g_director->getCurrentMovie();
-	Score *score = movie->getScore();
-
-	Frame *currentFrame = score->_frames[score->getCurrentFrame()];
-	CastMember *castMember = movie->getCastMember(from.asMemberID());
-	if (!castMember) {
-		warning("LB::b_duplicate: source cast member doesn't exist");
-		return;
-	}
-	auto channels = score->_channels;
-
-	castMember->setModified(true);
-	movie->createOrReplaceCastMember(to.asMemberID(), castMember);
-
-	for (uint16 i = 0; i < currentFrame->_sprites.size(); i++) {
-		if (currentFrame->_sprites[i]->_castId == to.asMemberID())
-			currentFrame->_sprites[i]->setCast(to.asMemberID());
-	}
-
-	for (uint i = 0; i < channels.size(); i++) {
-		if (channels[i]->_sprite->_castId == to.asMemberID()) {
-			channels[i]->_sprite->setCast(to.asMemberID());
-			channels[i]->_dirty = true;
-		}
-	}
+	g_lingo->printSTUBWithArglist("b_duplicate", nargs);
+	g_lingo->dropStack(nargs);
 }
 
 void LB::b_editableText(int nargs) {
@@ -2185,6 +2159,7 @@ void LB::b_move(int nargs) {
 	}
 
 	g_lingo->push(dest);
+	// Room for improvement, b_erase already marks the sprites as dirty
 	b_erase(1);
 	Score *score = movie->getScore();
 	uint16 frame = score->getCurrentFrame();
diff --git a/engines/director/movie.cpp b/engines/director/movie.cpp
index 9bf4ccef89b..8e82d17da48 100644
--- a/engines/director/movie.cpp
+++ b/engines/director/movie.cpp
@@ -332,6 +332,7 @@ CastMember *Movie::getCastMember(CastMemberID memberID) {
 }
 
 CastMember* Movie::createOrReplaceCastMember(CastMemberID memberID, CastMember* cast) {
+	warning("Movie::createOrReplaceCastMember: stubbed: functions only handles create");
 	CastMember *result = nullptr;
 
 	if (_casts.contains(memberID.castLib)) {


Commit: 662de4c696d0fb3420ee96d23d6d2b1b91599cc0
    https://github.com/scummvm/scummvm/commit/662de4c696d0fb3420ee96d23d6d2b1b91599cc0
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2022-10-15T23:10:09+02:00

Commit Message:
DIRECTOR: LINGO: Add comment regarding b_duplicate

b_duplicate is stubbed again. Show in which commit it was.

Changed paths:
    engines/director/lingo/lingo-builtins.cpp


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 9675b80f7ce..3080139da00 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1811,6 +1811,9 @@ void LB::b_copyToClipBoard(int nargs) {
 }
 
 void LB::b_duplicate(int nargs) {
+	// Removed previous implementation since it copied only the reference to the cast
+	// and didn't actually duplicate it.
+	// See commit: 76e56f5b1f51a51d073ecf3970134d87964a4ea4
 	g_lingo->printSTUBWithArglist("b_duplicate", nargs);
 	g_lingo->dropStack(nargs);
 }




More information about the Scummvm-git-logs mailing list