[Scummvm-git-logs] scummvm master -> c2efe9cf72366941b771621b28db1218c9d8a54a
bluegr
noreply at scummvm.org
Tue Mar 31 00:30:38 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:
424f2d87fb NANCY: More work on movement action records for Nancy10+
5576227ebc NANCY: Fix loading saved games for Nancy10+
c2efe9cf72 NANCY: Update FrameTextBox AR stub for Nancy11+
Commit: 424f2d87fbba4345ce25d840e587e6d8e1f505e8
https://github.com/scummvm/scummvm/commit/424f2d87fbba4345ce25d840e587e6d8e1f505e8
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-03-31T03:29:31+03:00
Commit Message:
NANCY: More work on movement action records for Nancy10+
Changed paths:
engines/nancy/action/arfactory.cpp
engines/nancy/action/navigationrecords.cpp
engines/nancy/action/navigationrecords.h
diff --git a/engines/nancy/action/arfactory.cpp b/engines/nancy/action/arfactory.cpp
index 9d7dd58cdc3..a3e9499b36a 100644
--- a/engines/nancy/action/arfactory.cpp
+++ b/engines/nancy/action/arfactory.cpp
@@ -81,9 +81,19 @@ namespace Action {
ActionRecord *ActionManager::createActionRecord(uint16 type, Common::SeekableReadStream *recordStream) {
switch (type) {
case 10:
- return new Hot1FrSceneChange(CursorManager::kHotspot);
+ if (g_nancy->getGameType() <= kGameTypeNancy9) {
+ return new Hot1FrSceneChange(CursorManager::kHotspot);
+ } else {
+ return new SceneChange();
+ }
case 11:
- return new HotMultiframeSceneChange(CursorManager::kHotspot);
+ if (g_nancy->getGameType() <= kGameTypeNancy9) {
+ return new HotMultiframeSceneChange(CursorManager::kHotspot);
+ } else {
+ // TODO: Handle this correctly, as it messes up scene hotspots
+ return nullptr;
+ //return new HotSingleFrameSceneChange(true);
+ }
case 12:
return new SceneChange();
case 13:
@@ -109,8 +119,10 @@ ActionRecord *ActionManager::createActionRecord(uint16 type, Common::SeekableRea
case 21:
if (g_nancy->getGameType() == kGameTypeVampire) {
return new PaletteNextScene();
- } else {
+ } else if (g_nancy->getGameType() <= kGameTypeNancy9) {
return new HotMultiframeSceneChange(CursorManager::kMoveDown);
+ } else {
+ return new HotSingleFrameSceneChange();
}
case 22:
if (g_nancy->getGameType() <= kGameTypeNancy9) {
@@ -222,6 +234,10 @@ ActionRecord *ActionManager::createActionRecord(uint16 type, Common::SeekableRea
return new ModifyListEntry(ModifyListEntry::kDelete);
case 73:
return new ModifyListEntry(ModifyListEntry::kMark);
+ case 74:
+ // Nancy 10+
+ warning("FrameTextBox - not implemented yet");
+ return nullptr;
case 75:
return new TextBoxWrite();
case 76:
diff --git a/engines/nancy/action/navigationrecords.cpp b/engines/nancy/action/navigationrecords.cpp
index f3fe72a153a..368b55e00ac 100644
--- a/engines/nancy/action/navigationrecords.cpp
+++ b/engines/nancy/action/navigationrecords.cpp
@@ -71,12 +71,38 @@ void HotMultiframeSceneChange::execute() {
}
}
+void HotSingleFrameSceneChange::readData(Common::SeekableReadStream &stream) {
+ _hoverCursor = (CursorManager::CursorType)stream.readUint16LE();
+ _sceneChange.sceneID = stream.readUint16LE();
+ _sceneChange.continueSceneSound = kContinueSceneSound;
+ _sceneChange.listenerFrontVector.set(0, 0, 1);
+ readRect(stream, _sceneHotspot.coords);
+ if (_readExtra) {
+ uint16 unk1 = stream.readUint16LE();
+ uint16 unk2 = stream.readUint16LE();
+ debug("Read extra data for HotSingleFrameSceneChange: %u, %u", unk1, unk2);
+ }
+}
+
+void HotSingleFrameSceneChange::execute() {
+ switch (_state) {
+ case kBegin:
+ _hotspot = _sceneHotspot.coords;
+ _state = kRun;
+ // fall through
+ case kRun:
+ _hasHotspot = true;
+ break;
+ case kActionTrigger:
+ SceneChange::execute();
+ break;
+ }
+}
+
void Hot1FrSceneChange::readData(Common::SeekableReadStream &stream) {
if (!_isTerse) {
SceneChange::readData(stream);
_hotspotDesc.readData(stream);
- if (g_nancy->getGameType() >= kGameTypeNancy10)
- stream.skip(14); // TODO
} else {
_sceneChange.sceneID = stream.readUint16LE();
_sceneChange.continueSceneSound = kContinueSceneSound;
diff --git a/engines/nancy/action/navigationrecords.h b/engines/nancy/action/navigationrecords.h
index 03e7d9a46cf..e6b193a7977 100644
--- a/engines/nancy/action/navigationrecords.h
+++ b/engines/nancy/action/navigationrecords.h
@@ -39,6 +39,29 @@ protected:
Common::String getRecordTypeName() const override { return "SceneChange"; }
};
+// Changes the scene when clicked
+class HotSingleFrameSceneChange : public SceneChange {
+public:
+ HotSingleFrameSceneChange(bool readExtra = false) : _readExtra(readExtra) {
+ _hasHotspot = false;
+ }
+ virtual ~HotSingleFrameSceneChange() {}
+
+ void readData(Common::SeekableReadStream &stream) override;
+ void execute() override;
+
+ CursorManager::CursorType getHoverCursor() const override { return _hoverCursor; }
+
+ HotspotDescription _sceneHotspot;
+
+protected:
+ CursorManager::CursorType _hoverCursor;
+ bool _readExtra;
+
+ bool canHaveHotspot() const override { return true; }
+ Common::String getRecordTypeName() const override { return "HotSingleFrameSceneChange"; }
+};
+
// Changes the scene when clicked. Hotspot can move along with scene background frame.
// Nancy4 introduced several sub-types with a specific mouse cursor to show when
// hovering; all of them are handled in this class as well.
Commit: 5576227ebc50fffa4ea1041ac0fba07fde90b556
https://github.com/scummvm/scummvm/commit/5576227ebc50fffa4ea1041ac0fba07fde90b556
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-03-31T03:29:32+03:00
Commit Message:
NANCY: Fix loading saved games for Nancy10+
Changed paths:
engines/nancy/state/scene.cpp
diff --git a/engines/nancy/state/scene.cpp b/engines/nancy/state/scene.cpp
index 97998820aec..80e0e30aa05 100644
--- a/engines/nancy/state/scene.cpp
+++ b/engines/nancy/state/scene.cpp
@@ -685,7 +685,7 @@ void Scene::synchronize(Common::Serializer &ser) {
order.pop_back();
}
- if (ser.isLoading()) {
+ if (ser.isLoading() && g_nancy->getGameType() <= kGameTypeNancy9) {
// Make sure the shades are open if we have items
getInventoryBox().onReorder();
}
Commit: c2efe9cf72366941b771621b28db1218c9d8a54a
https://github.com/scummvm/scummvm/commit/c2efe9cf72366941b771621b28db1218c9d8a54a
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-03-31T03:29:33+03:00
Commit Message:
NANCY: Update FrameTextBox AR stub for Nancy11+
Changed paths:
engines/nancy/action/arfactory.cpp
diff --git a/engines/nancy/action/arfactory.cpp b/engines/nancy/action/arfactory.cpp
index a3e9499b36a..2de25ae3499 100644
--- a/engines/nancy/action/arfactory.cpp
+++ b/engines/nancy/action/arfactory.cpp
@@ -234,8 +234,8 @@ ActionRecord *ActionManager::createActionRecord(uint16 type, Common::SeekableRea
return new ModifyListEntry(ModifyListEntry::kDelete);
case 73:
return new ModifyListEntry(ModifyListEntry::kMark);
- case 74:
- // Nancy 10+
+ case 74: // Nancy 10
+ case 81: // Nancy 11+
warning("FrameTextBox - not implemented yet");
return nullptr;
case 75:
More information about the Scummvm-git-logs
mailing list