[Scummvm-git-logs] scummvm master -> 16b216537c3752ad86b4e8549f49f80a401b8bb3
whiterandrek
whiterandrek at gmail.com
Fri Oct 2 20:05:25 UTC 2020
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
6025f75544 PETKA: stop walk when clicking on object
93ae63e563 PETKA: set walk background when loading room
16b216537c PETKA: recalculate needed xOffset
Commit: 6025f7554481b27d70db8e84050d5d8693436ccb
https://github.com/scummvm/scummvm/commit/6025f7554481b27d70db8e84050d5d8693436ccb
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-10-02T22:39:37+03:00
Commit Message:
PETKA: stop walk when clicking on object
Changed paths:
engines/petka/objects/object.cpp
diff --git a/engines/petka/objects/object.cpp b/engines/petka/objects/object.cpp
index a8ec8467b9..73fb2ff92f 100644
--- a/engines/petka/objects/object.cpp
+++ b/engines/petka/objects/object.cpp
@@ -538,7 +538,12 @@ void QObject::setPos(Common::Point p, bool) {
}
void QObject::onClick(Common::Point p) {
+ QSystem *sys = g_vm->getQSystem();
QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
+
+ sys->getPetka()->stopWalk();
+ sys->getChapay()->stopWalk();
+
switch (cursor->_actionType) {
case kActionLook:
g_vm->getQSystem()->addMessage(_id, kLook, 0, 0, 0, 0, this);
Commit: 93ae63e5631553e198c9c7e0ee5ab9c51aee6550
https://github.com/scummvm/scummvm/commit/93ae63e5631553e198c9c7e0ee5ab9c51aee6550
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-10-02T22:46:36+03:00
Commit Message:
PETKA: set walk background when loading room
Changed paths:
engines/petka/interfaces/main.cpp
diff --git a/engines/petka/interfaces/main.cpp b/engines/petka/interfaces/main.cpp
index 94f43f0a1f..081c683591 100644
--- a/engines/petka/interfaces/main.cpp
+++ b/engines/petka/interfaces/main.cpp
@@ -82,16 +82,23 @@ void InterfaceMain::start(int id) {
void InterfaceMain::loadRoom(int id, bool fromSave) {
QSystem *sys = g_vm->getQSystem();
+
sys->_currInterface->stop();
if (_roomId == id)
return;
+
unloadRoom(fromSave);
- _roomId = id;
+
const BGInfo *info = findBGInfo(id);
QObjectBG *room = (QObjectBG *)sys->findObject(id);
+ QManager *resMgr = g_vm->resMgr();
+
+ _roomId = id;
sys->_room = room;
- g_vm->resMgr()->loadBitmap(room->_resourceId);
_objs.push_back(room);
+
+ resMgr->loadBitmap(room->_resourceId);
+
for (uint i = 0; i < info->attachedObjIds.size(); ++i) {
QMessageObject *obj = sys->findObject(info->attachedObjIds[i]);
obj->loadSound();
@@ -100,11 +107,20 @@ void InterfaceMain::loadRoom(int id, bool fromSave) {
_objs.push_back(obj);
}
- sys->getPetka()->_walk->setBackground(g_vm->resMgr()->findResourceName(room->_resourceId));
- sys->getChapay()->_walk->setBackground(g_vm->resMgr()->findResourceName(room->_resourceId));
+ auto petka = sys->getPetka();
+ auto chapay = sys->getChapay();
+
+ auto bkgName = resMgr->findResourceName(room->_resourceId);
+
+ petka->_walk->setBackground(bkgName);
+ chapay->_walk->setBackground(bkgName);
+
+ petka->setPos(Common::Point(petka->_x, petka->_y), false);
+ chapay->setPos(Common::Point(chapay->_x, chapay->_y), false);
playSound(room->_musicId, Audio::Mixer::kMusicSoundType);
playSound(room->_fxId, Audio::Mixer::kSFXSoundType);
+
if (!fromSave)
sys->addMessageForAllObjects(kInitBG, 0, 0, 0, 0, room);
g_vm->videoSystem()->updateTime();
Commit: 16b216537c3752ad86b4e8549f49f80a401b8bb3
https://github.com/scummvm/scummvm/commit/16b216537c3752ad86b4e8549f49f80a401b8bb3
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-10-02T22:56:14+03:00
Commit Message:
PETKA: recalculate needed xOffset
Changed paths:
engines/petka/objects/heroes.cpp
engines/petka/objects/heroes.h
diff --git a/engines/petka/objects/heroes.cpp b/engines/petka/objects/heroes.cpp
index b95455a25d..efe0b2fc84 100644
--- a/engines/petka/objects/heroes.cpp
+++ b/engines/petka/objects/heroes.cpp
@@ -39,10 +39,9 @@ QObjectPetka::QObjectPetka() {
_reaction = nullptr;
_heroReaction = nullptr;
_sender = nullptr;
- _isPetka = true;
_isWalking = false;
_x = 574;
- _y = 44;
+ _y = 444;
_z = 200;
// _surfId = -5;
_surfH = 0;
@@ -75,7 +74,7 @@ void QObjectPetka::processMessage(const QMessage &arg) {
msg.arg2 = 1;
}
if (msg.opcode == kSet || msg.opcode == kPlay) {
- _field7C = msg.arg2 == _imageId || msg.opcode == kPlay;
+ _field7C = msg.arg1 == _imageId || msg.opcode == kPlay;
}
if (msg.opcode != kWalk) {
if (msg.opcode == kWalked && _heroReaction) {
@@ -102,38 +101,40 @@ void QObjectPetka::initSurface() {
void QObjectPetka::walk(int x, int y) {
Common::Point walkPos(x, y);
- if (_isShown) {
- Common::Point currPos;
- if (_isWalking) {
- currPos = _walk->currPos();
- } else {
- currPos.x = _x_;
- currPos.y = _y_;
- }
+ if (!_isShown) {
+ setPos(walkPos, false);
+ return;
+ }
- if (currPos.sqrDist(walkPos) >= 25 * 25) {
- _walk->init(currPos, walkPos);
- _destX = x;
- _destY = y;
- _resourceId = _imageId + _walk->getSpriteId() + 10;
- _isWalking = true;
- _animate = true;
+ Common::Point currPos;
+ if (_isWalking) {
+ currPos = _walk->currPos();
+ } else {
+ currPos.x = _x_;
+ currPos.y = _y_;
+ }
- initSurface();
- FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
- flc->setFrame(1);
- sub_408940();
+ if (currPos.sqrDist(walkPos) >= 25 * 25) {
+ _walk->init(currPos, walkPos);
+ _destX = x;
+ _destY = y;
+ _resourceId = _imageId + _walk->getSpriteId() + 10;
+ _isWalking = true;
+ _animate = true;
- g_vm->videoSystem()->makeAllDirty();
+ initSurface();
+ FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
+ flc->setFrame(1);
- _field7C = 0;
- _time = 0;
- _holdMessages = true;
- }
- } else {
- setPos(Common::Point(x, y), false);
+ sub_408940();
+
+ g_vm->videoSystem()->makeAllDirty();
+
+ _field7C = 0;
+ _time = 0;
+ _holdMessages = true;
}
}
@@ -160,7 +161,7 @@ void QObjectPetka::draw() {
Common::Rect srcRect(0, 0, conv->w, conv->h);
Common::Rect dstRect(0, 0, _surfW, _surfH);
- dstRect.translate(_x, _y);
+ dstRect.translate(_x - g_vm->getQSystem()->_xOffset, _y);
g_vm->videoSystem()->transBlitFrom(*conv, srcRect, dstRect, flc->getTransColor(conv->format));
conv->free();
@@ -168,6 +169,12 @@ void QObjectPetka::draw() {
}
void QObjectPetka::setPos(Common::Point p, bool) {
+ QSystem *sys = g_vm->getQSystem();
+
+ int xOff = sys->_xOffset;
+ Common::Rect dirty(_x - xOff, _y, _surfW + _x - xOff, _surfH + _y);
+ g_vm->videoSystem()->addDirtyRect(dirty);
+
p.y = MIN<int16>(p.y, 480);
FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
@@ -182,7 +189,9 @@ void QObjectPetka::setPos(Common::Point p, bool) {
_x = p.x - _surfW / 2;
_y = p.y - _surfH;
- g_vm->videoSystem()->makeAllDirty();
+ recalcOffset();
+
+ g_vm->videoSystem()->addDirtyRect(Common::Rect(_x - xOff, _y, _surfW + _x - xOff, _surfH + _y));
}
double QObjectPetka::calcPerspective(int y) {
@@ -372,7 +381,8 @@ void QObjectPetka::sub_408940() {
FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
QSystem *sys = g_vm->getQSystem();
- Common::Rect dirty(_x - sys->_xOffset, _y, _surfW + _x - sys->_xOffset, _surfH + _y);
+ int xOff = sys->_xOffset;
+ Common::Rect dirty(_x - xOff, _y, _surfW + _x - xOff, _surfH + _y);
g_vm->videoSystem()->addDirtyRect(dirty);
Common::Point currPos = _walk->currPos();
@@ -384,18 +394,28 @@ void QObjectPetka::sub_408940() {
_x = p.x;
_y = p.y;
- Common::Point curr = _walk->currPos();
- _x_ = curr.x;
- _y_ = curr.y;
+ _x_ = currPos.x;
+ _y_ = currPos.y;
+
+ recalcOffset();
+
+ g_vm->videoSystem()->addDirtyRect(Common::Rect(_x - xOff, _y, _surfW + _x - xOff, _surfH + _y));
+}
- // todo
+void QObjectPetka::recalcOffset() {
+ QSystem *sys = g_vm->getQSystem();
+ int xOff = sys->_xOffset;
+
+ if (_x_ < xOff + 160 || _x_ > xOff + 480) {
+ sys->_reqOffset = _x_ - 320;
+ }
+ sys->_reqOffset = CLIP<int>(sys->_reqOffset, 0, sys->_sceneWidth - 640);
}
QObjectChapayev::QObjectChapayev() {
_x = 477;
_y = 350;
// _surfId = -6;
- _isPetka = false;
}
}
diff --git a/engines/petka/objects/heroes.h b/engines/petka/objects/heroes.h
index 6d1cf3b381..cee480ea0f 100644
--- a/engines/petka/objects/heroes.h
+++ b/engines/petka/objects/heroes.h
@@ -51,6 +51,9 @@ public:
void sub_408940();
+private:
+ virtual void recalcOffset();
+
public:
int _field7C;
int _surfW;
@@ -64,7 +67,6 @@ public:
int _destX;
int _destY;
bool _isWalking;
- bool _isPetka;
QReaction *_heroReaction;
QMessageObject *_sender;
int _fieldB4;
@@ -74,6 +76,8 @@ class QObjectChapayev : public QObjectPetka {
public:
QObjectChapayev();
+ void recalcOffset() override {}
+
};
} // End of namespace Petka
More information about the Scummvm-git-logs
mailing list