[Scummvm-git-logs] scummvm master -> 66283b98a6fcc90324aeb89315e4ed0eee35b49e

whiterandrek whiterandrek at gmail.com
Thu May 28 20:52:03 UTC 2020


This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
832a55a2ee PETKA: renamed arg in BigDialogue
f6e60b937b PETKA: fixed kOperationDisableMenuItem
b43cf23db3 PETKA: implemented right button event in panel and map interfaces
59669a5d5f PETKA: fixed saving BigDialogue
b3e71ad429 PETKA: fixed saving system
66283b98a6 PETKA: fixed loading chapter


Commit: 832a55a2ee989e5f80b508989f18d6fac4a11dbd
    https://github.com/scummvm/scummvm/commit/832a55a2ee989e5f80b508989f18d6fac4a11dbd
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-28T23:51:20+03:00

Commit Message:
PETKA: renamed arg in BigDialogue

Changed paths:
    engines/petka/big_dialogue.h


diff --git a/engines/petka/big_dialogue.h b/engines/petka/big_dialogue.h
index 272f7b1eb5..991edda6e3 100644
--- a/engines/petka/big_dialogue.h
+++ b/engines/petka/big_dialogue.h
@@ -115,7 +115,7 @@ public:
 	const DialogHandler *findHandler(uint objId, uint opcode, bool *fallback) const;
 	void setHandler(uint objId, uint opcode);
 
-	const Common::U32String *getSpeechInfo(int *talkerId, const char **soundName, int unk);
+	const Common::U32String *getSpeechInfo(int *talkerId, const char **soundName, int choice);
 	void getMenuChoices(Common::Array<Common::U32String> &choices);
 
 	void load(Common::ReadStream *s);


Commit: f6e60b937b233543786e47e503fca8fca2c11986
    https://github.com/scummvm/scummvm/commit/f6e60b937b233543786e47e503fca8fca2c11986
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-28T23:51:20+03:00

Commit Message:
PETKA: fixed kOperationDisableMenuItem

Changed paths:
    engines/petka/big_dialogue.cpp


diff --git a/engines/petka/big_dialogue.cpp b/engines/petka/big_dialogue.cpp
index 50bdc0194a..99db35ebdf 100644
--- a/engines/petka/big_dialogue.cpp
+++ b/engines/petka/big_dialogue.cpp
@@ -358,7 +358,7 @@ void BigDialogue::next(int choice) {
 		}
 		case kOperationDisableMenuItem:
 			_ops[_currOp->disableMenuItem.opIndex].menu.bitField &= ~(1 << _currOp->disableMenuItem.bit); // disable menu item
-			checkMenu(_currOp->disableMenuItem.opIndex);
+			checkMenu(_startOpIndex);
 			_currOp += 1;
 			processed = false;
 			break;


Commit: b43cf23db3c87a568c19db91bae8a42bc5522d76
    https://github.com/scummvm/scummvm/commit/b43cf23db3c87a568c19db91bae8a42bc5522d76
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-28T23:51:20+03:00

Commit Message:
PETKA: implemented right button event in panel and map interfaces

Changed paths:
    engines/petka/interfaces/map.cpp
    engines/petka/interfaces/map.h
    engines/petka/interfaces/panel.cpp
    engines/petka/interfaces/panel.h


diff --git a/engines/petka/interfaces/map.cpp b/engines/petka/interfaces/map.cpp
index d0876cfae1..bdec4047d5 100644
--- a/engines/petka/interfaces/map.cpp
+++ b/engines/petka/interfaces/map.cpp
@@ -156,4 +156,8 @@ void InterfaceMap::onMouseMove(const Common::Point p) {
 	}
 }
 
+void InterfaceMap::onRightButtonDown(const Common::Point p) {
+	stop();
+}
+
 } // End of namespace Petka
diff --git a/engines/petka/interfaces/map.h b/engines/petka/interfaces/map.h
index a5df37a3a7..5df2d334ec 100644
--- a/engines/petka/interfaces/map.h
+++ b/engines/petka/interfaces/map.h
@@ -33,6 +33,7 @@ public:
 	void stop() override;
 
 	void onLeftButtonDown(const Common::Point p) override;
+	void onRightButtonDown(const Common::Point p) override;
 	void onMouseMove(const Common::Point p) override;
 
 private:
diff --git a/engines/petka/interfaces/panel.cpp b/engines/petka/interfaces/panel.cpp
index 4978b0fc9a..a767142567 100644
--- a/engines/petka/interfaces/panel.cpp
+++ b/engines/petka/interfaces/panel.cpp
@@ -321,4 +321,8 @@ void InterfacePanel::applySettings() {
 	g_vm->syncSoundSettings();
 }
 
+void InterfacePanel::onRightButtonDown(const Common::Point p) {
+	stop();
+}
+
 } // End of namespace Petka
diff --git a/engines/petka/interfaces/panel.h b/engines/petka/interfaces/panel.h
index 76ffc4be8f..01952706a0 100644
--- a/engines/petka/interfaces/panel.h
+++ b/engines/petka/interfaces/panel.h
@@ -35,6 +35,7 @@ public:
 	void stop() override;
 
 	void onLeftButtonDown(const Common::Point p) override;
+	void onRightButtonDown(const Common::Point p) override;
 	void onMouseMove(const Common::Point p) override;
 
 private:


Commit: 59669a5d5f409dc1f1f319f7dbd182258ea575c4
    https://github.com/scummvm/scummvm/commit/59669a5d5f409dc1f1f319f7dbd182258ea575c4
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-28T23:51:20+03:00

Commit Message:
PETKA: fixed saving BigDialogue

Changed paths:
    engines/petka/big_dialogue.cpp


diff --git a/engines/petka/big_dialogue.cpp b/engines/petka/big_dialogue.cpp
index 99db35ebdf..b91dda72e8 100644
--- a/engines/petka/big_dialogue.cpp
+++ b/engines/petka/big_dialogue.cpp
@@ -269,7 +269,7 @@ void BigDialogue::save(Common::WriteStream *s) {
 	for (uint i = 0; i < _ops.size(); ++i) {
 		switch (_ops[i].type) {
 		case kOperationBreak:
-			s->writeUint32LE(MKTAG(0, 0, 0, kOperationBreak));
+			s->writeUint32LE(MKTAG(kOperationBreak, 0, 0, 0));
 			break;
 		case kOperationMenu:
 			s->writeByte(_ops[i].menu.bits);
@@ -278,30 +278,30 @@ void BigDialogue::save(Common::WriteStream *s) {
 			break;
 		case kOperationGoTo:
 			s->writeUint16LE(_ops[i].goTo.opIndex);
-			s->writeUint16LE(MKTAG16(0, kOperationGoTo));
+			s->writeUint16LE(MKTAG16(kOperationGoTo, 0));
 			break;
 		case kOperationDisableMenuItem:
 			s->writeUint16LE(_ops[i].disableMenuItem.opIndex);
-			s->writeUint16LE(MKTAG16(_ops[i].disableMenuItem.bit, kOperationDisableMenuItem));
+			s->writeUint16LE(MKTAG16(kOperationDisableMenuItem, _ops[i].disableMenuItem.bit));
 			break;
 		case kOperationEnableMenuItem:
 			s->writeUint16LE(_ops[i].enableMenuItem.opIndex);
-			s->writeUint16LE(MKTAG16(_ops[i].enableMenuItem.bit, kOperationEnableMenuItem));
+			s->writeUint16LE(MKTAG16(kOperationEnableMenuItem, _ops[i].enableMenuItem.bit));
 			break;
 		case kOperationReturn:
-			s->writeUint32LE(MKTAG(0, 0, 0, kOperationReturn));
+			s->writeUint32LE(MKTAG(kOperationReturn, 0, 0, 0));
 			break;
 		case kOperationPlay:
 			s->writeUint16LE(_ops[i].play.messageIndex);
-			s->writeUint16LE(MKTAG16(0, kOperationPlay));
+			s->writeUint16LE(MKTAG16(kOperationPlay, 0));
 			break;
 		case kOperationCircle:
 			s->writeUint16LE(_ops[i].circle.count);
-			s->writeUint16LE(MKTAG16(_ops[i].circle.curr, kOperationPlay));
+			s->writeUint16LE(MKTAG16(kOperationCircle, _ops[i].circle.curr));
 			break;
 		case kOperationUserMessage:
 			s->writeUint16LE(_ops[i].userMsg.arg);
-			s->writeUint16LE(MKTAG16(0, kOperationUserMessage));
+			s->writeUint16LE(MKTAG16(kOperationUserMessage, 0));
 			break;
 		default:
 			break;


Commit: b3e71ad4292a06372a77c13cac1d3c43ed1d2614
    https://github.com/scummvm/scummvm/commit/b3e71ad4292a06372a77c13cac1d3c43ed1d2614
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-28T23:51:20+03:00

Commit Message:
PETKA: fixed saving system

Changed paths:
    engines/petka/interfaces/main.cpp
    engines/petka/interfaces/save_load.cpp
    engines/petka/interfaces/save_load.h
    engines/petka/petka.cpp
    engines/petka/petka.h
    engines/petka/q_system.cpp
    engines/petka/saveload.cpp


diff --git a/engines/petka/interfaces/main.cpp b/engines/petka/interfaces/main.cpp
index 99b52e16c6..0912313ebc 100644
--- a/engines/petka/interfaces/main.cpp
+++ b/engines/petka/interfaces/main.cpp
@@ -78,7 +78,8 @@ void InterfaceMain::start(int id) {
 	bgsIni.loadFromStream(*bgsStream);
 	Common::String startRoom;
 	bgsIni.getKey("StartRoom", "Settings", startRoom);
-	loadRoom(g_vm->getQSystem()->findObject(startRoom)->_id, false);
+	if (g_vm->getSaveSlot() == -1)
+		loadRoom(g_vm->getQSystem()->findObject(startRoom)->_id, false);
 }
 
 void InterfaceMain::loadRoom(int id, bool fromSave) {
diff --git a/engines/petka/interfaces/save_load.cpp b/engines/petka/interfaces/save_load.cpp
index aacb8835e2..fade3e9aea 100644
--- a/engines/petka/interfaces/save_load.cpp
+++ b/engines/petka/interfaces/save_load.cpp
@@ -52,7 +52,6 @@ void InterfaceSaveLoad::start(int id) {
 
 	_loadMode = (id == kLoadMode);
 
-	_objs.clear();
 	QObjectBG *bg = (QObjectBG *)sys->findObject("SAVELOAD");
 	_objs.push_back(bg);
 	bg->_resourceId = kFirstSaveLoadPageId + _page + (_loadMode ? 0 : 5);
@@ -85,6 +84,8 @@ void InterfaceSaveLoad::stop() {
 	sys->_currInterface = sys->_prevInterface;
 	sys->_currInterface->onMouseMove(Common::Point(cursor->_x, cursor->_y));
 
+	_objs.clear();
+
 	Interface::stop();
 }
 
diff --git a/engines/petka/interfaces/save_load.h b/engines/petka/interfaces/save_load.h
index 692cd5e195..7bcf092c1a 100644
--- a/engines/petka/interfaces/save_load.h
+++ b/engines/petka/interfaces/save_load.h
@@ -39,6 +39,8 @@ public:
 	void start(int id) override;
 	void stop() override;
 
+	bool loadMode() { return _loadMode; }
+
 	void onLeftButtonDown(const Common::Point p) override;
 	void onRightButtonDown(const Common::Point p) override;
 	void onMouseMove(const Common::Point p) override;
diff --git a/engines/petka/petka.cpp b/engines/petka/petka.cpp
index 298e568d9c..f41ec59797 100644
--- a/engines/petka/petka.cpp
+++ b/engines/petka/petka.cpp
@@ -59,6 +59,9 @@ PetkaEngine::PetkaEngine(OSystem *system, const ADGameDescription *desc)
 
 	_part = 0;
 	_chapter = 0;
+	_shouldChangePart = false;
+	_nextPart = 0;
+	_saveSlot = -1;
 	g_vm = this;
 
 	debug("PetkaEngine::ctor");
@@ -120,6 +123,9 @@ Common::Error PetkaEngine::run() {
 
 		if (_shouldChangePart) {
 			loadPart(_nextPart);
+			if (_saveSlot != -1)
+				loadGameState(_saveSlot);
+			_saveSlot = -1;
 			_shouldChangePart = false;
 			_vsys->makeAllDirty();
 		}
@@ -132,7 +138,6 @@ Common::Error PetkaEngine::run() {
 
 Common::SeekableReadStream *PetkaEngine::openFile(const Common::String &name, bool addCurrentPath) {
 	if (name.empty()) {
-		debug("PetkaEngine::openFile: attempt to open file with empty name");
 		return nullptr;
 	}
 	return _fileMgr->getFileStream(addCurrentPath ? _currentPath + name : name);
@@ -252,6 +257,7 @@ void PetkaEngine::loadPart(byte part) {
 void PetkaEngine::loadPartAtNextFrame(byte part) {
 	_shouldChangePart = true;
 	_nextPart = part;
+	_saveSlot = -1;
 }
 
 void PetkaEngine::loadChapter(byte chapter) {
@@ -306,4 +312,18 @@ const Common::String &PetkaEngine::getSpeechPath() {
 	return _speechPath;
 }
 
+bool PetkaEngine::hasFeature(EngineFeature f) const {
+	return
+		f == kSupportsReturnToLauncher ||
+		f == kSupportsLoadingDuringRuntime ||
+		f == kSupportsSavingDuringRuntime ||
+		f == kSupportsChangingOptionsDuringRuntime;
+}
+
+void PetkaEngine::pauseEngineIntern(bool pause) {
+	if (!pause)
+		_vsys->updateTime();
+	Engine::pauseEngineIntern(pause);
+}
+
 } // End of namespace Petka
diff --git a/engines/petka/petka.h b/engines/petka/petka.h
index e22e7bc520..d36705ed37 100644
--- a/engines/petka/petka.h
+++ b/engines/petka/petka.h
@@ -80,11 +80,14 @@ public:
 	void loadPartAtNextFrame(byte part);
 
 	byte getPart();
+	int getSaveSlot();
 
 	void loadChapter(byte chapter);
 
 	virtual Common::Error run() override;
 
+	bool hasFeature(EngineFeature f) const override;
+
 	Common::SeekableReadStream *openFile(const Common::String &name, bool addCurrentPath);
 
 	void playVideo(Common::SeekableReadStream *stream);
@@ -104,6 +107,9 @@ public:
 	Common::Error saveGameState(int slot, const Common::String &desc, bool isAutosave) override;
 	bool canSaveGameStateCurrently() override;
 
+protected:
+	void pauseEngineIntern(bool pause) override;
+
 private:
 	void loadStores();
 
@@ -128,7 +134,7 @@ private:
 	uint8 _nextPart;
 	uint8 _chapter;
 	bool _shouldChangePart;
-	Common::String _saveName;
+	int _saveSlot;
 };
 
 class Console : public GUI::Debugger {
diff --git a/engines/petka/q_system.cpp b/engines/petka/q_system.cpp
index df75794b80..23b085100d 100644
--- a/engines/petka/q_system.cpp
+++ b/engines/petka/q_system.cpp
@@ -312,8 +312,8 @@ void QSystem::load(Common::ReadStream *s) {
 }
 
 void QSystem::save(Common::WriteStream *s) {
-	s->writeUint32LE(_allObjects.size());
-	for (uint i = 0; i < _allObjects.size(); ++i) {
+	s->writeUint32LE(_allObjects.size() - 3);
+	for (uint i = 0; i < _allObjects.size() - 3; ++i) {
 		writeString(s, _allObjects[i]->_name);
 		s->writeUint32LE(_allObjects[i]->_holdMessages);
 		s->writeUint32LE(_allObjects[i]->_status);
diff --git a/engines/petka/saveload.cpp b/engines/petka/saveload.cpp
index 688b22b9c8..c662833e78 100644
--- a/engines/petka/saveload.cpp
+++ b/engines/petka/saveload.cpp
@@ -29,6 +29,7 @@
 
 #include "petka/petka.h"
 #include "petka/q_system.h"
+#include "petka/interfaces/save_load.h"
 
 namespace Petka {
 
@@ -49,7 +50,7 @@ Common::Error PetkaEngine::loadGameState(int slot) {
 		_qsystem->load(in);
 	} else {
 		_shouldChangePart = true;
-		_saveName = generateSaveName(slot, _targetName.c_str());
+		_saveSlot = slot;
 	}
 
 	delete in;
@@ -62,6 +63,8 @@ Common::Error PetkaEngine::saveGameState(int slot, const Common::String &desci,
 		return Common::kUnknownError;
 
 	out->writeUint32BE(MKTAG('p', 'e', 't', 'k'));
+	out->writeByte(desci.size());
+	out->writeString(desci);
 
 	TimeDate curTime;
 	_system->getTimeAndDate(curTime);
@@ -84,10 +87,18 @@ Common::Error PetkaEngine::saveGameState(int slot, const Common::String &desci,
 
 bool PetkaEngine::canSaveGameStateCurrently() {
 	return true;
+	InterfaceSaveLoad *interface =_qsystem->_saveLoadInterface.get();
+	return (interface == _qsystem->_currInterface && !interface->loadMode());
 }
 
 bool PetkaEngine::canLoadGameStateCurrently() {
 	return true;
+	InterfaceSaveLoad *interface =_qsystem->_saveLoadInterface.get();
+	return (interface == _qsystem->_currInterface && interface->loadMode());
+}
+
+int PetkaEngine::getSaveSlot() {
+	return _saveSlot;
 }
 
 bool readSaveHeader(Common::InSaveFile &in, SaveStateDescriptor &desc, bool skipThumbnail) {


Commit: 66283b98a6fcc90324aeb89315e4ed0eee35b49e
    https://github.com/scummvm/scummvm/commit/66283b98a6fcc90324aeb89315e4ed0eee35b49e
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-28T23:51:20+03:00

Commit Message:
PETKA: fixed loading chapter

Changed paths:
    engines/petka/petka.cpp


diff --git a/engines/petka/petka.cpp b/engines/petka/petka.cpp
index f41ec59797..04a5717b01 100644
--- a/engines/petka/petka.cpp
+++ b/engines/petka/petka.cpp
@@ -276,6 +276,8 @@ void PetkaEngine::loadChapter(byte chapter) {
 	if (_chapterStoreName.empty())
 		return;
 
+	_fileMgr->openStore(_chapterStoreName);
+
 	Common::ScopedPtr<Common::SeekableReadStream> namesStream(g_vm->openFile("Names.ini", true));
 	Common::ScopedPtr<Common::SeekableReadStream> castStream(g_vm->openFile("Cast.ini", true));
 




More information about the Scummvm-git-logs mailing list