[Scummvm-git-logs] scummvm master -> 1fa8691a061ddc3732a105cadb8973034adce1df
whiterandrek
whiterandrek at gmail.com
Wed May 27 20:20:34 UTC 2020
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:
6d30fc3fed PETKA: load ini files from stores instead of loading from local directory
1fa8691a06 PETKA: implemented PART and CHAPTER opcodes
Commit: 6d30fc3fed783a174e6fb5ece8c0d2f46eb4051a
https://github.com/scummvm/scummvm/commit/6d30fc3fed783a174e6fb5ece8c0d2f46eb4051a
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-27T23:19:57+03:00
Commit Message:
PETKA: load ini files from stores instead of loading from local directory
Changed paths:
engines/petka/interfaces/main.cpp
engines/petka/objects/object.cpp
engines/petka/objects/object_bg.cpp
engines/petka/q_system.cpp
diff --git a/engines/petka/interfaces/main.cpp b/engines/petka/interfaces/main.cpp
index 2cc3054c92..99b52e16c6 100644
--- a/engines/petka/interfaces/main.cpp
+++ b/engines/petka/interfaces/main.cpp
@@ -72,7 +72,7 @@ void InterfaceMain::start(int id) {
_objs.push_back(g_vm->getQSystem()->_petka.get());
_objs.push_back(g_vm->getQSystem()->_chapayev.get());
- Common::ScopedPtr<Common::SeekableReadStream> bgsStream(g_vm->openFile("BGs.ini", false));
+ Common::ScopedPtr<Common::SeekableReadStream> bgsStream(g_vm->openFile("BGs.ini", true));
Common::INIFile bgsIni;
bgsIni.allowNonEnglishCharacters();
bgsIni.loadFromStream(*bgsStream);
diff --git a/engines/petka/objects/object.cpp b/engines/petka/objects/object.cpp
index 22986bb944..708ca3a6db 100644
--- a/engines/petka/objects/object.cpp
+++ b/engines/petka/objects/object.cpp
@@ -224,7 +224,7 @@ void QMessageObject::processMessage(const QMessage &msg) {
}
break;
case kDescription: {
- Common::ScopedPtr<Common::SeekableReadStream> invStream(g_vm->openFile("invntr.txt", false));
+ Common::ScopedPtr<Common::SeekableReadStream> invStream(g_vm->openFile("invntr.txt", true));
if (invStream) {
Common::String desc;
Common::INIFile invIni;
diff --git a/engines/petka/objects/object_bg.cpp b/engines/petka/objects/object_bg.cpp
index 296aba5eda..3f18f6e676 100644
--- a/engines/petka/objects/object_bg.cpp
+++ b/engines/petka/objects/object_bg.cpp
@@ -105,7 +105,7 @@ void QObjectBG::goTo() {
QMessageObject *oldRoom = sys->findObject(oldRoomId);
- Common::ScopedPtr<Common::SeekableReadStream> bgsStream(g_vm->openFile("BGs.ini", false));
+ Common::ScopedPtr<Common::SeekableReadStream> bgsStream(g_vm->openFile("BGs.ini", true));
Common::INIFile bgsIni;
bgsIni.allowNonEnglishCharacters();
bgsIni.loadFromStream(*bgsStream);
diff --git a/engines/petka/q_system.cpp b/engines/petka/q_system.cpp
index 89c3a30e3b..df75794b80 100644
--- a/engines/petka/q_system.cpp
+++ b/engines/petka/q_system.cpp
@@ -99,9 +99,9 @@ bool QSystem::init() {
if (!stream)
return false;
_isIniting = 1;
- Common::ScopedPtr<Common::SeekableReadStream> namesStream(g_vm->openFile("Names.ini", false));
- Common::ScopedPtr<Common::SeekableReadStream> castStream(g_vm->openFile("Cast.ini", false));
- Common::ScopedPtr<Common::SeekableReadStream> bgsStream(g_vm->openFile("BGs.ini", false));
+ Common::ScopedPtr<Common::SeekableReadStream> namesStream(g_vm->openFile("Names.ini", true));
+ Common::ScopedPtr<Common::SeekableReadStream> castStream(g_vm->openFile("Cast.ini", true));
+ Common::ScopedPtr<Common::SeekableReadStream> bgsStream(g_vm->openFile("BGs.ini", true));
Common::INIFile namesIni;
Common::INIFile castIni;
Commit: 1fa8691a061ddc3732a105cadb8973034adce1df
https://github.com/scummvm/scummvm/commit/1fa8691a061ddc3732a105cadb8973034adce1df
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-27T23:19:57+03:00
Commit Message:
PETKA: implemented PART and CHAPTER opcodes
Changed paths:
engines/petka/objects/object.cpp
engines/petka/petka.cpp
engines/petka/petka.h
diff --git a/engines/petka/objects/object.cpp b/engines/petka/objects/object.cpp
index 708ca3a6db..c397cf12f4 100644
--- a/engines/petka/objects/object.cpp
+++ b/engines/petka/objects/object.cpp
@@ -237,8 +237,13 @@ void QMessageObject::processMessage(const QMessage &msg) {
}
break;
}
+ case kPart:
+ g_vm->loadPartAtNextFrame(msg.arg1);
+ break;
+ case kChapter:
+ g_vm->loadChapter(msg.arg1);
+ break;
default:
- debug("Opcode %d is not implemented", msg.opcode);
break;
}
} else {
diff --git a/engines/petka/petka.cpp b/engines/petka/petka.cpp
index 9a50b905e4..298e568d9c 100644
--- a/engines/petka/petka.cpp
+++ b/engines/petka/petka.cpp
@@ -117,6 +117,13 @@ Common::Error PetkaEngine::run() {
}
}
_qsystem->update();
+
+ if (_shouldChangePart) {
+ loadPart(_nextPart);
+ _shouldChangePart = false;
+ _vsys->makeAllDirty();
+ }
+
_vsys->update();
_system->delayMillis(20);
}
@@ -242,6 +249,55 @@ void PetkaEngine::loadPart(byte part) {
_qsystem->init();
}
+void PetkaEngine::loadPartAtNextFrame(byte part) {
+ _shouldChangePart = true;
+ _nextPart = part;
+}
+
+void PetkaEngine::loadChapter(byte chapter) {
+ Common::INIFile parts;
+ Common::ScopedPtr<Common::SeekableReadStream> stream(_fileMgr->getFileStream("PARTS.INI"));
+
+ if (!stream || !parts.loadFromStream(*stream)) {
+ debugC(kPetkaDebugResources, "PARTS.INI opening failed");
+ return;
+ }
+
+ _fileMgr->closeStore(_chapterStoreName);
+
+ const Common::String section = Common::String::format("Part %d Chapter %d", _part, chapter);
+ parts.getKey("Chapter", section, _chapterStoreName);
+ if (_chapterStoreName.empty())
+ return;
+
+ Common::ScopedPtr<Common::SeekableReadStream> namesStream(g_vm->openFile("Names.ini", true));
+ Common::ScopedPtr<Common::SeekableReadStream> castStream(g_vm->openFile("Cast.ini", true));
+
+ Common::INIFile namesIni;
+ Common::INIFile castIni;
+
+ namesIni.allowNonEnglishCharacters();
+ castIni.allowNonEnglishCharacters();
+
+ if (namesStream)
+ namesIni.loadFromStream(*namesStream);
+ if (castStream)
+ castIni.loadFromStream(*castStream);
+
+ for (uint i = 0; i < _qsystem->_allObjects.size(); ++i) {
+ QMessageObject *obj = _qsystem->_allObjects[i];
+ namesIni.getKey(obj->_name, "all", obj->_nameOnScreen);
+
+ Common::String rgbString;
+ if (castIni.getKey(obj->_name, "all", rgbString)) {
+ int r, g, b;
+ sscanf(rgbString.c_str(), "%d %d %d", &r, &g, &b);
+ obj->_dialogColor = g_vm->_system->getScreenFormat().RGBToColor((byte)r, (byte)g, (byte)b);
+ }
+ }
+ _chapter = chapter;
+}
+
BigDialogue *PetkaEngine::getBigDialogue() const {
return _dialogMan.get();
}
diff --git a/engines/petka/petka.h b/engines/petka/petka.h
index 09d6a49904..e22e7bc520 100644
--- a/engines/petka/petka.h
+++ b/engines/petka/petka.h
@@ -77,8 +77,12 @@ public:
bool isDemo() const;
void loadPart(byte part);
+ void loadPartAtNextFrame(byte part);
+
byte getPart();
+ void loadChapter(byte chapter);
+
virtual Common::Error run() override;
Common::SeekableReadStream *openFile(const Common::String &name, bool addCurrentPath);
More information about the Scummvm-git-logs
mailing list