[Scummvm-git-logs] scummvm master -> 20e9aac9072cc8b945669cd3e037047448e33f96
whiterandrek
whiterandrek at gmail.com
Thu May 21 20:39:24 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:
4680781692 PETKA: implemented GoTo opcode
20e9aac907 PETKA: fix comparison between signed and unsigned
Commit: 4680781692bac8dd78581b80ba6e1e605acbfe1d
https://github.com/scummvm/scummvm/commit/4680781692bac8dd78581b80ba6e1e605acbfe1d
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-21T23:37:47+03:00
Commit Message:
PETKA: implemented GoTo opcode
Changed paths:
engines/petka/objects/object_bg.cpp
engines/petka/objects/object_bg.h
engines/petka/q_system.h
diff --git a/engines/petka/objects/object_bg.cpp b/engines/petka/objects/object_bg.cpp
index 66cca0e5d5..1b559e730b 100644
--- a/engines/petka/objects/object_bg.cpp
+++ b/engines/petka/objects/object_bg.cpp
@@ -69,20 +69,17 @@ void QObjectBG::processMessage(const QMessage &msg) {
case kNoMap:
_showMap = 0;
break;
- case kGoTo: {
- g_vm->getQSystem()->_mainInterface->loadRoom(_id, false);
- g_vm->videoSystem()->makeAllDirty();
- QMessageObject *obj = g_vm->getQSystem()->findObject(_id);
- g_vm->getQSystem()->_petka->setPos(obj->_walkX, obj->_walkY);
- g_vm->getQSystem()->_chapayev->setPos(obj->_walkX, obj->_walkY - 2);
+ case kGoTo:
+ goTo();
break;
- }
case kSetSeq:
g_vm->getQSystem()->_sequenceInterface->start(_id);
break;
case kEndSeq:
g_vm->getQSystem()->_sequenceInterface->stop();
break;
+ default:
+ break;
}
}
@@ -97,4 +94,51 @@ void QObjectBG::draw() {
}
}
+void QObjectBG::goTo() {
+ QSystem *sys = g_vm->getQSystem();
+
+ sys->_petka->stopWalk();
+ sys->_chapayev->stopWalk();
+
+ int oldRoomId = sys->_mainInterface->_roomId;
+ sys->_mainInterface->loadRoom(_id, false);
+
+ QMessageObject *oldRoom = sys->findObject(oldRoomId);
+
+ Common::ScopedPtr<Common::SeekableReadStream> bgsStream(g_vm->openFile("BGs.ini", false));
+ Common::INIFile bgsIni;
+ bgsIni.allowNonEnglishCharacters();
+ bgsIni.loadFromStream(*bgsStream);
+
+ Common::String entranceName;
+ if (bgsIni.getKey(oldRoom->_name, _name, entranceName)) {
+ setEntrance(entranceName);
+ return;
+ }
+
+ Common::Array<QObjectBG> &bgs = sys->_bgs;
+ for (uint i = 0; i < bgs.size(); ++i) {
+ if (bgsIni.getKey(bgs[i]._name, _name, entranceName)) {
+ setEntrance(entranceName);
+ break;
+ }
+ }
+}
+
+void QObjectBG::setEntrance(const Common::String &name) {
+ QSystem *sys = g_vm->getQSystem();
+ QMessageObject *entrance = sys->findObject(name);
+ if (entrance) {
+ sys->_petka->_z = 0;
+ sys->_chapayev->_z = 0;
+
+ sys->_petka->setPos(entrance->_walkX, entrance->_walkY);
+ sys->_chapayev->setPos(entrance->_walkX, entrance->_walkY - 2);
+
+ sys->_xOffset = CLIP(entrance->_walkX - 320, 0, sys->_sceneWidth - 640);
+ sys->_field6C = sys->_xOffset;
+ }
+ g_vm->videoSystem()->makeAllDirty();
+}
+
}
diff --git a/engines/petka/objects/object_bg.h b/engines/petka/objects/object_bg.h
index 2e654d0ed6..948428e956 100644
--- a/engines/petka/objects/object_bg.h
+++ b/engines/petka/objects/object_bg.h
@@ -32,6 +32,8 @@ public:
QObjectBG();
void processMessage(const QMessage &msg) override;
void draw() override;
+ void goTo();
+ void setEntrance(const Common::String &name);
public:
int _showMap;
diff --git a/engines/petka/q_system.h b/engines/petka/q_system.h
index 2b57084b71..1a1f8f2968 100644
--- a/engines/petka/q_system.h
+++ b/engines/petka/q_system.h
@@ -103,6 +103,11 @@ public:
int _fxId;
int _musicId;
+ int _sceneWidth;
+ int _xOffset;
+
+ int _field6C;
+
QObjectBG *_room;
};
Commit: 20e9aac9072cc8b945669cd3e037047448e33f96
https://github.com/scummvm/scummvm/commit/20e9aac9072cc8b945669cd3e037047448e33f96
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-21T23:38:56+03:00
Commit Message:
PETKA: fix comparison between signed and unsigned
Changed paths:
engines/petka/video.cpp
diff --git a/engines/petka/video.cpp b/engines/petka/video.cpp
index 276dc7f7ae..9d55054e3d 100644
--- a/engines/petka/video.cpp
+++ b/engines/petka/video.cpp
@@ -118,7 +118,7 @@ void VideoSystem::setShake(bool shake) {
void VideoSystem::sort() {
Common::Array<QVisibleObject *> &objs = g_vm->getQSystem()->_currInterface->_objs;
for (uint i = 0; i < objs.size() - 1; ++i) {
- int minIndex = i;
+ uint minIndex = i;
for (uint j = i + 1; j < objs.size(); ++j) {
if (objs[j]->_z < objs[minIndex]->_z) {
minIndex = j;
More information about the Scummvm-git-logs
mailing list