[Scummvm-git-logs] scummvm master -> 1781a1e140dc2739c3f719860c84f3f293cea167
fracturehill
noreply at scummvm.org
Sun May 5 19:04:00 UTC 2024
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:
b9aa46c4df NANCY: Merge LOAD structs
1781a1e140 NANCY: Fix SliderPuzzle for pre-nancy9 games
Commit: b9aa46c4df4b3ad54e51dc21dbb6139f1a96f7b2
https://github.com/scummvm/scummvm/commit/b9aa46c4df4b3ad54e51dc21dbb6139f1a96f7b2
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2024-05-05T21:03:05+02:00
Commit Message:
NANCY: Merge LOAD structs
Changed paths:
engines/nancy/enginedata.cpp
engines/nancy/enginedata.h
engines/nancy/nancy.cpp
engines/nancy/state/loadsave.cpp
diff --git a/engines/nancy/enginedata.cpp b/engines/nancy/enginedata.cpp
index 9de80e91e77..597be9cff5f 100644
--- a/engines/nancy/enginedata.cpp
+++ b/engines/nancy/enginedata.cpp
@@ -434,92 +434,93 @@ LOAD::LOAD(Common::SeekableReadStream *chunkStream) :
Common::Serializer s(chunkStream, nullptr);
s.setVersion(g_nancy->getGameType());
- readFilename(s, _imageName);
-
- s.skip(0x1F, kGameTypeVampire, kGameTypeVampire);
- s.skip(0x23, kGameTypeNancy1);
- s.skip(4);
-
- s.syncAsSint16LE(_mainFontID);
- s.syncAsSint16LE(_highlightFontID, kGameTypeNancy2);
- s.syncAsSint16LE(_disabledFontID, kGameTypeNancy2);
- s.syncAsSint16LE(_fontXOffset);
- s.syncAsSint16LE(_fontYOffset);
-
- s.skip(16);
-
- if (s.getVersion() <= kGameTypeNancy1) {
- readRectArray16(s, _saveButtonDests, 7);
- readRectArray16(s, _loadButtonDests, 7);
- readRectArray16(s, _textboxBounds, 7);
- readRect16(s, _doneButtonDest);
- readRectArray16(s, _saveButtonDownSrcs, 7);
- readRectArray16(s, _loadButtonDownSrcs, 7);
- s.skip(8 * 7);
- readRect16(s, _doneButtonDownSrc);
- readRect(s, _blinkingCursorSrc);
- s.syncAsUint16LE(_blinkingTimeDelay, kGameTypeNancy1);
- readRectArray(s, _cancelButtonSrcs, 7);
- readRectArray(s, _cancelButtonDests, 7);
- readRect(s, _cancelButtonDownSrc);
+ if (s.getVersion() <= kGameTypeNancy7) {
+ // v1
+ readFilename(s, _image1Name);
+
+ s.skip(0x1F, kGameTypeVampire, kGameTypeVampire);
+ s.skip(0x23, kGameTypeNancy1);
+ s.skip(4);
+
+ s.syncAsSint16LE(_mainFontID);
+ s.syncAsSint16LE(_highlightFontID, kGameTypeNancy2);
+ s.syncAsSint16LE(_disabledFontID, kGameTypeNancy2);
+ s.syncAsSint16LE(_fontXOffset);
+ s.syncAsSint16LE(_fontYOffset);
+
+ s.skip(16);
+
+ if (s.getVersion() <= kGameTypeNancy1) {
+ readRectArray16(s, _saveButtonDests, 7);
+ readRectArray16(s, _loadButtonDests, 7);
+ readRectArray16(s, _textboxBounds, 7);
+ readRect16(s, _doneButtonDest);
+ readRectArray16(s, _saveButtonDownSrcs, 7);
+ readRectArray16(s, _loadButtonDownSrcs, 7);
+ s.skip(8 * 7);
+ readRect16(s, _doneButtonDownSrc);
+ readRect(s, _blinkingCursorSrc);
+ s.syncAsUint16LE(_blinkingTimeDelay, kGameTypeNancy1);
+ readRectArray(s, _cancelButtonSrcs, 7);
+ readRectArray(s, _cancelButtonDests, 7);
+ readRect(s, _cancelButtonDownSrc);
+ } else {
+ readRectArray(s, _saveButtonDests, 7);
+ readRectArray(s, _loadButtonDests, 7);
+ readRectArray(s, _textboxBounds, 7);
+ readRect(s, _doneButtonDest);
+ readRectArray(s, _saveButtonDownSrcs, 7);
+ readRectArray(s, _loadButtonDownSrcs, 7);
+ s.skip(16 * 7);
+ readRect(s, _doneButtonDownSrc);
+ readRectArray(s, _saveButtonHighlightSrcs, 7);
+ readRectArray(s, _loadButtonHighlightSrcs, 7);
+ s.skip(16 * 7);
+ readRect(s, _doneButtonHighlightSrc);
+ readRectArray(s, _saveButtonDisabledSrcs, 7);
+ readRectArray(s, _loadButtonDisabledSrcs, 7);
+ s.skip(16 * 7);
+ readRect(s, _doneButtonDisabledSrc);
+ readRect(s, _blinkingCursorSrc);
+ s.syncAsUint16LE(_blinkingTimeDelay);
+ readRectArray(s, _cancelButtonSrcs, 7);
+ readRectArray(s, _cancelButtonDests, 7);
+ readRect(s, _cancelButtonDownSrc);
+ readRect(s, _cancelButtonHighlightSrc);
+ readRect(s, _cancelButtonDisabledSrc);
+
+ readFilename(s, _gameSavedPopup, kGameTypeNancy3);
+ readFilename(s, _emptySaveText, kGameTypeNancy7);
+ readFilename(s, _defaultSaveNamePrefix, kGameTypeNancy7);
+ s.skip(16, kGameTypeNancy3);
+ }
} else {
- readRectArray(s, _saveButtonDests, 7);
- readRectArray(s, _loadButtonDests, 7);
- readRectArray(s, _textboxBounds, 7);
- readRect(s, _doneButtonDest);
- readRectArray(s, _saveButtonDownSrcs, 7);
- readRectArray(s, _loadButtonDownSrcs, 7);
- s.skip(16 * 7);
- readRect(s, _doneButtonDownSrc);
- readRectArray(s, _saveButtonHighlightSrcs, 7);
- readRectArray(s, _loadButtonHighlightSrcs, 7);
- s.skip(16 * 7);
- readRect(s, _doneButtonHighlightSrc);
- readRectArray(s, _saveButtonDisabledSrcs, 7);
- readRectArray(s, _loadButtonDisabledSrcs, 7);
- s.skip(16 * 7);
- readRect(s, _doneButtonDisabledSrc);
- readRect(s, _blinkingCursorSrc);
- s.syncAsUint16LE(_blinkingTimeDelay);
- readRectArray(s, _cancelButtonSrcs, 7);
- readRectArray(s, _cancelButtonDests, 7);
- readRect(s, _cancelButtonDownSrc);
- readRect(s, _cancelButtonHighlightSrc);
- readRect(s, _cancelButtonDisabledSrc);
-
- readFilename(s, _gameSavedPopup, kGameTypeNancy3);
- readFilename(s, _emptySaveText, kGameTypeNancy7);
- readFilename(s, _defaultSaveNamePrefix, kGameTypeNancy7);
- s.skip(16, kGameTypeNancy3);
- }
-}
+ // v2
+ readFilename(*chunkStream, _image1Name);
+ readFilename(*chunkStream, _image2Name);
+ readFilename(*chunkStream, _imageButtonsName);
-LOAD_v2::LOAD_v2(Common::SeekableReadStream *chunkStream) :
- EngineData(chunkStream) {
- readFilename(*chunkStream, _firstPageimageName);
- readFilename(*chunkStream, _otherPageimageName);
- readFilename(*chunkStream, _buttonsImageName);
+ readRectArray(*chunkStream, _unpressedButtonSrcs, 5);
+ readRectArray(*chunkStream, _pressedButtonSrcs, 5);
+ readRectArray(*chunkStream, _highlightedButtonSrcs, 5);
+ readRectArray(*chunkStream, _disabledButtonSrcs, 5);
- readRectArray(*chunkStream, _unpressedButtonSrcs, 5);
- readRectArray(*chunkStream, _pressedButtonSrcs, 5);
- readRectArray(*chunkStream, _highlightedButtonSrcs, 5);
- readRectArray(*chunkStream, _disabledButtonSrcs, 5);
+ readRectArray(*chunkStream, _buttonDests, 5);
+ readRectArray(*chunkStream, _textboxBounds, 10);
- readRectArray(*chunkStream, _buttonDests, 5);
- readRectArray(*chunkStream, _textboxBounds, 10);
+ chunkStream->skip(25); // prefixes and suffixes for filenames
- chunkStream->skip(25); // prefixes and suffixes for filenames
+ _mainFontID = chunkStream->readSint16LE();
+ _highlightFontID = chunkStream->readSint16LE();
+ _fontXOffset = chunkStream->readSint16LE();
+ _fontYOffset = chunkStream->readSint16LE();
- _mainFontID = chunkStream->readSint16LE();
- _highlightFontID = chunkStream->readSint16LE();
- _fontXOffset = chunkStream->readSint16LE();
- _fontYOffset = chunkStream->readSint16LE();
+ chunkStream->skip(16); // src rect for dash in font
+ _blinkingTimeDelay = chunkStream->readUint16LE();
- chunkStream->skip(16); // src rect for dash in font
- _blinkingTimeDelay = chunkStream->readUint16LE();
-
- readFilename(*chunkStream, _gameSavedPopup);
- readFilename(*chunkStream, _emptySaveText);
+ readFilename(*chunkStream, _gameSavedPopup);
+ readFilename(*chunkStream, _emptySaveText);
+ }
}
SDLG::SDLG(Common::SeekableReadStream *chunkStream) : EngineData(chunkStream) {
diff --git a/engines/nancy/enginedata.h b/engines/nancy/enginedata.h
index 600c80dae31..033707e4be2 100644
--- a/engines/nancy/enginedata.h
+++ b/engines/nancy/enginedata.h
@@ -259,7 +259,7 @@ struct SET : public EngineData {
struct LOAD : public EngineData {
LOAD(Common::SeekableReadStream *chunkStream);
- Common::Path _imageName;
+ Common::Path _image1Name;
int16 _mainFontID;
int16 _highlightFontID;
@@ -295,15 +295,10 @@ struct LOAD : public EngineData {
Common::String _emptySaveText;
Common::String _defaultSaveNamePrefix;
// Common::Rect _gameSavedBounds
-};
-// Contains data for the new Save/Load screen. Used in nancy8 and up
-struct LOAD_v2 : public EngineData {
- LOAD_v2(Common::SeekableReadStream *chunkStream);
-
- Common::Path _firstPageimageName;
- Common::Path _otherPageimageName;
- Common::Path _buttonsImageName;
+ // v2 members
+ Common::Path _image2Name;
+ Common::Path _imageButtonsName;
Common::Array<Common::Rect> _unpressedButtonSrcs;
Common::Array<Common::Rect> _pressedButtonSrcs;
@@ -311,17 +306,6 @@ struct LOAD_v2 : public EngineData {
Common::Array<Common::Rect> _disabledButtonSrcs;
Common::Array<Common::Rect> _buttonDests;
- Common::Array<Common::Rect> _textboxBounds;
-
- int16 _mainFontID;
- int16 _highlightFontID;
- int16 _fontXOffset;
- int16 _fontYOffset;
-
- uint16 _blinkingTimeDelay;
-
- Common::Path _gameSavedPopup;
- Common::String _emptySaveText;
};
// Contains data for the prompt that appears when exiting the game
diff --git a/engines/nancy/nancy.cpp b/engines/nancy/nancy.cpp
index c344e6d88af..69fa411250c 100644
--- a/engines/nancy/nancy.cpp
+++ b/engines/nancy/nancy.cpp
@@ -450,6 +450,7 @@ void NancyEngine::bootGameEngine() {
LOAD_BOOT(HELP)
LOAD_BOOT(CRED)
LOAD_BOOT(MENU)
+ LOAD_BOOT(LOAD)
LOAD_BOOT(SET)
LOAD_BOOT(SDLG)
LOAD_BOOT(MAP)
@@ -462,13 +463,6 @@ void NancyEngine::bootGameEngine() {
LOAD_BOOT(TABL)
LOAD_BOOT(MARK)
- if (g_nancy->getGameType() <= kGameTypeNancy7) {
- LOAD_BOOT(LOAD)
- } else {
- // nancy8 has a completely new save/load screen
- LOAD_BOOT_L(LOAD_v2, "LOAD")
- }
-
_cursor->init(iff->getChunkStream("CURS"));
_graphics->init();
diff --git a/engines/nancy/state/loadsave.cpp b/engines/nancy/state/loadsave.cpp
index e48099c9515..c9855930a53 100644
--- a/engines/nancy/state/loadsave.cpp
+++ b/engines/nancy/state/loadsave.cpp
@@ -148,7 +148,7 @@ void LoadSaveMenu::init() {
_loadSaveData = GetEngineData(LOAD);
assert(_loadSaveData);
- _background.init(_loadSaveData->_imageName);
+ _background.init(_loadSaveData->_image1Name);
_baseFont = g_nancy->_graphics->getFont(_loadSaveData->_mainFontID);
Commit: 1781a1e140dc2739c3f719860c84f3f293cea167
https://github.com/scummvm/scummvm/commit/1781a1e140dc2739c3f719860c84f3f293cea167
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2024-05-05T21:03:05+02:00
Commit Message:
NANCY: Fix SliderPuzzle for pre-nancy9 games
The last changes to the class broke older titles
which use the SPUZ chunk.
Fixes #15097
Changed paths:
engines/nancy/action/puzzle/sliderpuzzle.cpp
engines/nancy/enginedata.cpp
engines/nancy/enginedata.h
diff --git a/engines/nancy/action/puzzle/sliderpuzzle.cpp b/engines/nancy/action/puzzle/sliderpuzzle.cpp
index 0b8976fdfc0..e66b199e4d3 100644
--- a/engines/nancy/action/puzzle/sliderpuzzle.cpp
+++ b/engines/nancy/action/puzzle/sliderpuzzle.cpp
@@ -86,7 +86,7 @@ void SliderPuzzle::readData(Common::SeekableReadStream &stream) {
} else {
auto *spuzData = GetEngineData(SPUZ);
assert(spuzData);
- _startTileOrder = spuzData->tileOrder;
+ _startTileOrder = spuzData->tileOrder[NancySceneState.getDifficulty()];
}
_correctTileOrder.resize(_height);
diff --git a/engines/nancy/enginedata.cpp b/engines/nancy/enginedata.cpp
index 597be9cff5f..5de1b215a60 100644
--- a/engines/nancy/enginedata.cpp
+++ b/engines/nancy/enginedata.cpp
@@ -559,10 +559,13 @@ HINT::HINT(Common::SeekableReadStream *chunkStream) : EngineData(chunkStream) {
SPUZ::SPUZ(Common::SeekableReadStream *chunkStream) : EngineData(chunkStream) {
tileOrder.resize(3);
- for (uint i = 0; i < 3; ++i) {
- tileOrder[i].resize(36);
- for (uint j = 0; j < 36; ++j) {
- tileOrder[i][j] = chunkStream->readSint16LE();
+ for (uint difficulty = 0; difficulty < 3; ++difficulty) {
+ tileOrder[difficulty].resize(6);
+ for (uint y = 0; y < 6; ++y) {
+ tileOrder[difficulty][y].resize(6);
+ for (uint x = 0; x < 6; ++x) {
+ tileOrder[difficulty][y][x] = chunkStream->readSint16LE();
+ }
}
}
}
diff --git a/engines/nancy/enginedata.h b/engines/nancy/enginedata.h
index 033707e4be2..2d083301d26 100644
--- a/engines/nancy/enginedata.h
+++ b/engines/nancy/enginedata.h
@@ -345,7 +345,7 @@ struct HINT : public EngineData {
struct SPUZ : public EngineData {
SPUZ(Common::SeekableReadStream *chunkStream);
- Common::Array<Common::Array<int16>> tileOrder;
+ Common::Array<Common::Array<Common::Array<int16>>> tileOrder;
};
// Contains data for the clock UI that appears at the bottom left of the screen (top left in TVD)
More information about the Scummvm-git-logs
mailing list