[Scummvm-git-logs] scummvm master -> e279b10e3bdb959d7bab7e7ad9f2a34955257ed4
bluegr
noreply at scummvm.org
Thu May 21 01:45:14 UTC 2026
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
6d7e642afc NANCY: Clear record execution flag for each frame
5f8260e15b NANCY: Don't enable the mouse when it's not allowed in secondary movies
e279b10e3b NANCY: Take into account the width of checkmarks for word wrapping
Commit: 6d7e642afc4f42718000e436d66ae6559acb5ca1
https://github.com/scummvm/scummvm/commit/6d7e642afc4f42718000e436d66ae6559acb5ca1
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-05-21T04:45:05+03:00
Commit Message:
NANCY: Clear record execution flag for each frame
This fixes the actual issue that caused the default AR record not to
run, when other records were executed.
Revert the workaround done in 5799fbb2f6e22d2697f98218c317728a71100726.
Fix #16773.
Changed paths:
engines/nancy/action/actionmanager.cpp
diff --git a/engines/nancy/action/actionmanager.cpp b/engines/nancy/action/actionmanager.cpp
index 769d610b087..cb161d77ba7 100644
--- a/engines/nancy/action/actionmanager.cpp
+++ b/engines/nancy/action/actionmanager.cpp
@@ -240,7 +240,7 @@ ActionRecord *ActionManager::createAndLoadNewRecord(Common::SeekableReadStream &
}
void ActionManager::processActionRecords() {
- bool activeRecordsThisFrame = false;
+ _recordsWereExecuted = false;
_activatedRecordsThisFrame.clear();
for (auto record : _records) {
@@ -260,7 +260,6 @@ void ActionManager::processActionRecords() {
record->execute();
_recordsWereExecuted = true;
- activeRecordsThisFrame = true;
}
if (g_nancy->getGameType() >= kGameTypeNancy4 && NancySceneState.getState() == State::Scene::kLoad) {
@@ -270,17 +269,6 @@ void ActionManager::processActionRecords() {
}
}
- if (!activeRecordsThisFrame) {
- // No active records were found for this frame.
- // This will lead to an infinite loop without
- // anything happening, so we reset the
- // _recordsWereExecuted flag, to fall back to
- // the kDefaultAR dependency. This is needed for
- // some scenes in Nancy 8, where SetVolume() is
- // called, but no other action records are active.
- _recordsWereExecuted = false;
- }
-
synchronizeMovieWithSound();
debugDrawHotspots();
}
@@ -572,13 +560,7 @@ void ActionManager::processDependency(DependencyRecord &dep, ActionRecord &recor
break;
case DependencyType::kDefaultAR:
- // Only execute if no other AR has executed yet
- if (_recordsWereExecuted) {
- dep.satisfied = false;
- } else {
- dep.satisfied = true;
- }
-
+ dep.satisfied = !_recordsWereExecuted;
break;
default:
warning("Unimplemented Dependency type %i", (int)dep.type);
@@ -592,6 +574,7 @@ void ActionManager::clearActionRecords() {
delete r;
}
_records.clear();
+ _activatedRecordsThisFrame.clear();
_recordsWereExecuted = false;
}
Commit: 5f8260e15b0024abd267528c0b1bb088d381f001
https://github.com/scummvm/scummvm/commit/5f8260e15b0024abd267528c0b1bb088d381f001
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-05-21T04:45:05+03:00
Commit Message:
NANCY: Don't enable the mouse when it's not allowed in secondary movies
Fix #16728
Changed paths:
engines/nancy/action/secondarymovie.cpp
diff --git a/engines/nancy/action/secondarymovie.cpp b/engines/nancy/action/secondarymovie.cpp
index 6dcf803c4b7..d6421d8ef40 100644
--- a/engines/nancy/action/secondarymovie.cpp
+++ b/engines/nancy/action/secondarymovie.cpp
@@ -256,11 +256,6 @@ void PlaySecondaryMovie::execute() {
_triggerFlags.execute();
if (_videoSceneChange == kMovieSceneChange) {
NancySceneState.changeScene(_sceneChange);
- } else {
- // Not changing the scene so enable the mouse now
- if (_playerCursorAllowed == kNoPlayerCursorAllowed) {
- g_nancy->setMouseEnabled(true);
- }
}
NancySceneState.setActiveMovie(nullptr);
Commit: e279b10e3bdb959d7bab7e7ad9f2a34955257ed4
https://github.com/scummvm/scummvm/commit/e279b10e3bdb959d7bab7e7ad9f2a34955257ed4
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-05-21T04:45:06+03:00
Commit Message:
NANCY: Take into account the width of checkmarks for word wrapping
Fix #16777
Changed paths:
engines/nancy/misc/hypertext.cpp
diff --git a/engines/nancy/misc/hypertext.cpp b/engines/nancy/misc/hypertext.cpp
index 504d0fe62ed..39ea5c730e1 100644
--- a/engines/nancy/misc/hypertext.cpp
+++ b/engines/nancy/misc/hypertext.cpp
@@ -82,6 +82,7 @@ void HypertextParser::drawAllText(const Common::Rect &textBounds, uint leftOffse
newlineTokens.push(0);
int curFontID = fontID;
uint numNonSpaceChars = 0;
+ bool hasMark = false;
// Token braces plus invalid characters that are known to appear in strings
Common::StringTokenizer tokenizer(_textLines[lineID], "<>\"");
@@ -192,6 +193,7 @@ void HypertextParser::drawAllText(const Common::Rect &textBounds, uint leftOffse
}
metaInfo.push({MetaInfo::kMark, numNonSpaceChars, (byte)(curToken[0] - '1')});
+ hasMark = true;
continue;
default:
break;
@@ -222,7 +224,13 @@ void HypertextParser::drawAllText(const Common::Rect &textBounds, uint leftOffse
// Do word wrapping on the text, sans tokens. This assumes
// all text uses fonts of the same width
Array<Common::String> wrappedLines;
- font->wordWrap(currentLine, textBounds.width(), wrappedLines, 0);
+ int maxWidth = textBounds.width();
+ if (hasMark) {
+ auto *mark = GetEngineData(MARK);
+ assert(mark);
+ maxWidth -= mark->_markSrcs[0].width();
+ }
+ font->wordWrap(currentLine, maxWidth, wrappedLines, 0);
// Setup most of the hotspot; textbox
if (hasHotspot) {
More information about the Scummvm-git-logs
mailing list