[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