[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