[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