[Scummvm-git-logs] scummvm master -> 228bd23dbf5a39695bbf623f5aed096fb7ed18f6

whiterandrek whiterandrek at gmail.com
Sat May 30 20:09:30 UTC 2020


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

Summary:
bd39dfc352 PETKA: use Common::Point in object's methods
b8bd1d1d41 PETKA: changed object's fields type to bool where appropriate
b3652ee8f9 PETKA: use Engine::quitGame in System opcode
228bd23dbf PETKA: fixed crash when there is no video file


Commit: bd39dfc3529ea13319dd6183f2194091e9616286
    https://github.com/scummvm/scummvm/commit/bd39dfc3529ea13319dd6183f2194091e9616286
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-30T22:54:55+03:00

Commit Message:
PETKA: use Common::Point in object's methods

Changed paths:
    engines/petka/interfaces/interface.cpp
    engines/petka/interfaces/main.cpp
    engines/petka/interfaces/map.cpp
    engines/petka/interfaces/panel.cpp
    engines/petka/interfaces/save_load.cpp
    engines/petka/interfaces/sequence.cpp
    engines/petka/interfaces/startup.cpp
    engines/petka/objects/heroes.cpp
    engines/petka/objects/heroes.h
    engines/petka/objects/object.cpp
    engines/petka/objects/object.h
    engines/petka/objects/object_bg.cpp
    engines/petka/objects/object_case.cpp
    engines/petka/objects/object_case.h
    engines/petka/objects/object_cursor.cpp
    engines/petka/objects/object_cursor.h
    engines/petka/objects/object_star.cpp
    engines/petka/objects/object_star.h
    engines/petka/objects/text.cpp
    engines/petka/objects/text.h


diff --git a/engines/petka/interfaces/interface.cpp b/engines/petka/interfaces/interface.cpp
index 3873f6242c..1df8801be3 100644
--- a/engines/petka/interfaces/interface.cpp
+++ b/engines/petka/interfaces/interface.cpp
@@ -66,7 +66,7 @@ void Interface::initCursor(int id, bool show, bool animate) {
 	cursor->_isShown = show;
 	cursor->_animate = animate;
 	cursor->_actionType = kActionLook;
-	cursor->setCursorPos(cursor->_x, cursor->_y, 0);
+	cursor->setPos(Common::Point(cursor->_x, cursor->_y), false);
 }
 
 void Interface::removeTexts() {
diff --git a/engines/petka/interfaces/main.cpp b/engines/petka/interfaces/main.cpp
index cc5107768b..7748fed1e3 100644
--- a/engines/petka/interfaces/main.cpp
+++ b/engines/petka/interfaces/main.cpp
@@ -156,8 +156,8 @@ void InterfaceMain::onLeftButtonDown(Common::Point p) {
 	}
 
 	for (int i = _objs.size() - 1; i >= 0; --i) {
-		if (_objs[i]->isInPoint(p.x, p.y)) {
-			_objs[i]->onClick(p.x, p.y);
+		if (_objs[i]->isInPoint(p)) {
+			_objs[i]->onClick(p);
 			return;
 		}
 	}
@@ -198,7 +198,7 @@ void InterfaceMain::onRightButtonDown(Common::Point p) {
 	if (objCase->_isShown && cursor->_actionType == kActionObjUse) {
 		cursor->setAction(kActionTake);
 	} else {
-		star->setPos(p);
+		star->setPos(p, false);
 		star->show(star->_isShown == 0);
 	}
 }
@@ -210,15 +210,15 @@ void InterfaceMain::onMouseMove(Common::Point p) {
 	QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
 	if (cursor->_isShown) {
 		for (int i = _objs.size() - 1; i >= 0; --i) {
-			if (_objs[i]->isInPoint(p.x, p.y)) {
-				_objs[i]->onMouseMove(p.x, p.y);
+			if (_objs[i]->isInPoint(p)) {
+				_objs[i]->onMouseMove(p);
 				break;
 			}
 		}
 	}
 
 	cursor->_animate = _objUnderCursor != nullptr;
-	cursor->setCursorPos(p.x, p.y, true);
+	cursor->setPos(p, true);
 
 	if (prevObj != _objUnderCursor && _objUnderCursor && !_dialog.isActive()) {
 		Graphics::PixelFormat fmt = g_system->getScreenFormat();
diff --git a/engines/petka/interfaces/map.cpp b/engines/petka/interfaces/map.cpp
index 2b3fa95155..ad8386def1 100644
--- a/engines/petka/interfaces/map.cpp
+++ b/engines/petka/interfaces/map.cpp
@@ -71,8 +71,8 @@ void InterfaceMap::stop() {
 
 void InterfaceMap::onLeftButtonDown(Common::Point p) {
 	for (int i = _objs.size() - 1; i >= 0; --i) {
-		if (_objs[i]->isInPoint(p.x, p.y)) {
-			_objs[i]->onClick(p.x, p.y);
+		if (_objs[i]->isInPoint(p)) {
+			_objs[i]->onClick(p);
 			break;
 		}
 	}
@@ -89,7 +89,7 @@ void InterfaceMap::onMouseMove(Common::Point p) {
 			FlicDecoder *flc = g_vm->resMgr()->loadFlic(obj->_resourceId);
 			if (flc) {
 				bool show = false;
-				if (!found && obj->isInPoint(p.x, p.y)) {
+				if (!found && obj->isInPoint(p)) {
 					found = true;
 					show = true;
 					_objUnderCursor = obj;
@@ -103,7 +103,7 @@ void InterfaceMap::onMouseMove(Common::Point p) {
 	QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
 	cursor->_animate = _objUnderCursor != nullptr;
 	cursor->_isShown = true;
-	cursor->setCursorPos(p.x, p.y, 0);
+	cursor->setPos(p, false);
 
 	if (_objUnderCursor != oldObj && _objUnderCursor) {
 		Graphics::PixelFormat fmt = g_system->getScreenFormat();
diff --git a/engines/petka/interfaces/panel.cpp b/engines/petka/interfaces/panel.cpp
index 860a22a4c9..886bcde13d 100644
--- a/engines/petka/interfaces/panel.cpp
+++ b/engines/petka/interfaces/panel.cpp
@@ -122,7 +122,7 @@ void InterfacePanel::start(int id) {
 void InterfacePanel::onLeftButtonDown(Common::Point p) {
 	int i = 0;
 	for (i = _objs.size() - 1; i > 0; --i) {
-		if (_objs[i]->isInPoint(p.x, p.y)) {
+		if (_objs[i]->isInPoint(p)) {
 			break;
 		}
 	}
@@ -188,7 +188,7 @@ void InterfacePanel::onMouseMove(Common::Point p) {
 	for (uint i = _objs.size() - 1; i > 0; --i) {
 		QMessageObject *obj = (QMessageObject *)_objs[i];
 		byte frame = 1;
-		if (!found && obj->isInPoint(p.x, p.y)) {
+		if (!found && obj->isInPoint(p)) {
 			found = true;
 			if ((i >= kNewGameButtonIndex && i <= kSaveButtonIndex) || (i >= kDecSpeechButtonIndex && i <= kIncSpeedButtonIndex)) {
 				frame = 2;
@@ -230,7 +230,7 @@ void InterfacePanel::onMouseMove(Common::Point p) {
 	}
 	QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
 	cursor->_isShown = 1;
-	cursor->setCursorPos(p.x, p.y, 0);
+	cursor->setPos(p, false);
 }
 
 void InterfacePanel::updateSliders() {
diff --git a/engines/petka/interfaces/save_load.cpp b/engines/petka/interfaces/save_load.cpp
index 6c21be210f..d3cae8f557 100644
--- a/engines/petka/interfaces/save_load.cpp
+++ b/engines/petka/interfaces/save_load.cpp
@@ -79,7 +79,7 @@ void InterfaceSaveLoad::onRightButtonDown(Common::Point p) {
 void InterfaceSaveLoad::onMouseMove(Common::Point p) {
 	QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
 	cursor->_animate = findSaveLoadRectIndex(p) != -1 || _nextPageRect.contains(p) || _prevPageRect.contains(p);
-	cursor->setCursorPos(p.x, p.y, 0);
+	cursor->setPos(p, false);
 }
 
 int InterfaceSaveLoad::findSaveLoadRectIndex(Common::Point p) {
diff --git a/engines/petka/interfaces/sequence.cpp b/engines/petka/interfaces/sequence.cpp
index f9e61883aa..5d1bbf106e 100644
--- a/engines/petka/interfaces/sequence.cpp
+++ b/engines/petka/interfaces/sequence.cpp
@@ -81,7 +81,7 @@ void InterfaceSequence::stop() {
 void InterfaceSequence::onLeftButtonDown(Common::Point p) {
 	QVisibleObject *obj = findObject(-2);
 	if (obj) {
-		obj->onClick(p.x, p.y);
+		obj->onClick(p);
 	}
 }
 
diff --git a/engines/petka/interfaces/startup.cpp b/engines/petka/interfaces/startup.cpp
index c0102f3a5a..9fa22087c6 100644
--- a/engines/petka/interfaces/startup.cpp
+++ b/engines/petka/interfaces/startup.cpp
@@ -103,7 +103,7 @@ void InterfaceStartup::onMouseMove(Common::Point p) {
 			FlicDecoder *flc = g_vm->resMgr()->loadFlic(obj->_resourceId);
 			if (flc) {
 				bool show = false;
-				if (!found && obj->isInPoint(p.x, p.y)) {
+				if (!found && obj->isInPoint(p)) {
 					found = true;
 					show = true;
 					_objUnderCursor = obj;
@@ -117,7 +117,7 @@ void InterfaceStartup::onMouseMove(Common::Point p) {
 	QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
 	cursor->_animate = _objUnderCursor != nullptr;
 	cursor->_isShown = true;
-	cursor->setCursorPos(p.x, p.y, 0);
+	cursor->setPos(p, false);
 }
 
 void InterfaceStartup::stop() {
diff --git a/engines/petka/objects/heroes.cpp b/engines/petka/objects/heroes.cpp
index b190828bce..2530e0c0c9 100644
--- a/engines/petka/objects/heroes.cpp
+++ b/engines/petka/objects/heroes.cpp
@@ -77,7 +77,7 @@ void QObjectPetka::processMessage(const QMessage &arg) {
 		if (msg.opcode == kSet || msg.opcode == kPlay) {
 			initSurface();
 			if (!g_vm->getQSystem()->_totalInit) {
-				setPos(_x_, _y_);
+				setPos(Common::Point(_x_, _y_), false);
 			}
 		}
 	}
@@ -122,7 +122,7 @@ void QObjectPetka::walk(int x, int y) {
 			_holdMessages = true;
 		//}
 	} else {
-		setPos(x, y);
+		setPos(Common::Point(x, y), false);
 	}
 }
 
@@ -158,20 +158,20 @@ void QObjectPetka::draw() {
 	delete conv;
 }
 
-void QObjectPetka::setPos(int x, int y) {
-	y = MIN(y, 480);
+void QObjectPetka::setPos(Common::Point p, bool) {
+	p.y = MIN<int16>(p.y, 480);
 	FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
 
-	_field98 = calcSmth(y);
+	_field98 = calcSmth(p.y);
 
 	_surfH = flc->getHeight() * _field98;
 	_surfW = flc->getWidth() * _field98;
 
-	_x_ = x;
-	_y_ = y;
+	_x_ = p.x;
+	_y_ = p.y;
 
-	_x = x - _surfW / 2;
-	_y = y - _surfH;
+	_x = p.x - _surfW / 2;
+	_y = p.y - _surfH;
 
 	g_vm->videoSystem()->makeAllDirty();
 }
@@ -194,7 +194,7 @@ double QObjectPetka::calcSmth(int y) {
 void QObjectPetka::updateWalk() {
 	if (_isWalking) {
 		_isWalking = false;
-		setPos(_destX, _destY);
+		setPos(Common::Point(_destX, _destY), false);
 
 		QMessage msg(_id, kSet, (uint16)_imageId, 1, 0, nullptr, 0);
 		if (_heroReaction) {
@@ -300,7 +300,7 @@ void QObjectPetka::update(int time) {
 	}
 }
 
-bool QObjectPetka::isInPoint(int x, int y) {
+bool QObjectPetka::isInPoint(Common::Point p) {
 	if (!_isActive)
 		return false;
 	FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
@@ -308,11 +308,11 @@ bool QObjectPetka::isInPoint(int x, int y) {
 	if (!s)
 		return false;
 	Common::Rect bounds(_surfW, _surfH);
-	x -= _x;
-	y -= _y;
-	if (!bounds.contains(x, y))
+	p.x -= _x;
+	p.y -= _y;
+	if (!bounds.contains(p.x, p.y))
 		return false;
-	return *(uint16 *)s->getBasePtr(x, y) != flc->getTransColor(s->format);
+	return *(uint16 *)s->getBasePtr(p.x, p.y) != flc->getTransColor(s->format);
 }
 
 QObjectChapayev::QObjectChapayev() {
diff --git a/engines/petka/objects/heroes.h b/engines/petka/objects/heroes.h
index aea0598bae..468d28acbc 100644
--- a/engines/petka/objects/heroes.h
+++ b/engines/petka/objects/heroes.h
@@ -39,9 +39,9 @@ public:
 	void setReactionAfterWalk(uint index, QReaction *reaction, QMessageObject *sender, bool deleteReaction);
 
 	void draw() override;
-	bool isInPoint(int x, int y) override;
+	bool isInPoint(Common::Point p) override;
 	void update(int time) override;
-	void setPos(int x, int y) override;
+	void setPos(Common::Point p, bool ) override;
 
 	double calcSmth(int y);
 
diff --git a/engines/petka/objects/object.cpp b/engines/petka/objects/object.cpp
index bb0a9b3279..8328c438b7 100644
--- a/engines/petka/objects/object.cpp
+++ b/engines/petka/objects/object.cpp
@@ -114,7 +114,7 @@ void QMessageObject::processMessage(const QMessage &msg) {
 			g_vm->getQSystem()->_mainInterface->_dialog.start(msg.arg1, this);
 			break;
 		case kSetPos:
-			setPos(msg.arg1, msg.arg2);
+			setPos(Common::Point(msg.arg1, msg.arg2), false);
 			break;
 		case kSet:
 		case kPlay:
@@ -179,12 +179,20 @@ void QMessageObject::processMessage(const QMessage &msg) {
 		case kPassive:
 			_isActive = false;
 			break;
-		case kJump:
-			g_vm->getQSystem()->getPetka()->setPos((msg.arg1 == 0xffff ? _walkX : msg.arg1), (msg.arg2 == -1 ? _walkY : msg.arg2));
+		case kJump: {
+			Common::Point p;
+			p.x = (msg.arg1 == 0xffff ? _walkX : msg.arg1);
+			p.y = (msg.arg2 == -1 ? _walkY : msg.arg2);
+			g_vm->getQSystem()->getPetka()->setPos(p, false);
 			break;
-		case kJumpVich:
-			g_vm->getQSystem()->getPetka()->setPos((msg.arg1 == 0xffff ? _walkX : msg.arg1), (msg.arg2 == -1 ? _walkY : msg.arg2));
+		}
+		case kJumpVich: {
+			Common::Point p;
+			p.x = (msg.arg1 == 0xffff ? _walkX : msg.arg1);
+			p.y = (msg.arg2 == -1 ? _walkY : msg.arg2);
+			g_vm->getQSystem()->getPetka()->setPos(p, false);
 			break;
+		}
 		case kWalk:
 			if (!reacted) {
 				if (_walkX == -1) {
@@ -419,22 +427,22 @@ QObject::QObject() {
 	_walkY = -1;
 }
 
-bool QObject::isInPoint(int x, int y) {
+bool QObject::isInPoint(Common::Point p) {
 	if (!_isActive)
 		return false;
 	FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
 	if (flc) {
-		if (!flc->getBounds().contains(x - _x, y - _y))
+		if (!flc->getBounds().contains(p.x - _x, p.y - _y))
 			return false;
 		const Graphics::Surface *s = flc->getCurrentFrame();
 		if (s->format.bytesPerPixel == 1) {
-			byte index = *(const byte *) flc->getCurrentFrame()->getBasePtr(x - _x - flc->getPos().x,
-																			y - _y - flc->getPos().y);
+			byte index = *(const byte *) flc->getCurrentFrame()->getBasePtr(p.x - _x - flc->getPos().x,
+																			p.y - _y - flc->getPos().y);
 			const byte *pal = flc->getPalette();
 			return (pal[0] != pal[index * 3] || pal[1] != pal[index * 3 + 1] || pal[2] != pal[index * 3 + 2]);
 		}
 		if (s->format.bytesPerPixel == 2)
-			return *(const uint16*)flc->getCurrentFrame()->getBasePtr(x - _x - flc->getPos().x, y - _y - flc->getPos().y) != flc->getTransColor(s->format);
+			return *(const uint16*)flc->getCurrentFrame()->getBasePtr(p.x - _x - flc->getPos().x, p.y - _y - flc->getPos().y) != flc->getTransColor(s->format);
 	}
 	return false;
 }
@@ -526,24 +534,24 @@ void QObject::update(int time) {
 	}
 }
 
-void QObject::setPos(int x, int y) {
+void QObject::setPos(Common::Point p, bool) {
 	FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
 	if (flc) {
 		g_vm->videoSystem()->addDirtyMskRects(Common::Point(_x, _y), *flc);
-		g_vm->videoSystem()->addDirtyMskRects(Common::Point(x, y), *flc);
-		_x = x;
-		_y = y;
+		g_vm->videoSystem()->addDirtyMskRects(p, *flc);
+		_x = p.x;
+		_y = p.y;
 	}
 }
 
-void QObject::onClick(int x, int y) {
+void QObject::onClick(Common::Point p) {
 	QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
 	switch (cursor->_actionType) {
 	case kActionLook:
 		g_vm->getQSystem()->addMessage(_id, kLook, 0, 0, 0, 0, this);
 		break;
 	case kActionWalk:
-		g_vm->getQSystem()->addMessage(_id, kWalk, x, y, 0, 0, this);
+		g_vm->getQSystem()->addMessage(_id, kWalk, p.x, p.y, 0, 0, this);
 		break;
 	case kActionUse:
 		g_vm->getQSystem()->addMessage(_id, kUse, 0, 0, 0, 0, this);
@@ -555,7 +563,7 @@ void QObject::onClick(int x, int y) {
 		g_vm->getQSystem()->addMessage(_id, kTalk, 0, 0, 0, 0, this);
 		break;
 	case kActionObjUseChapayev:
-		g_vm->getQSystem()->addMessage(_id, kObjectUse, x, y, 0, 0, g_vm->getQSystem()->getChapay());
+		g_vm->getQSystem()->addMessage(_id, kObjectUse, p.x, p.y, 0, 0, g_vm->getQSystem()->getChapay());
 		break;
 	case kActionObjUse:
 		g_vm->getQSystem()->addMessage(_id, kObjectUse, 0, 0, 0, 0, cursor->_invObj);
@@ -565,7 +573,7 @@ void QObject::onClick(int x, int y) {
 	}
 }
 
-void QObject::onMouseMove(int x, int y) {
+void QObject::onMouseMove(Common::Point p) {
 	g_vm->getQSystem()->_mainInterface->_objUnderCursor = this;
 }
 
diff --git a/engines/petka/objects/object.h b/engines/petka/objects/object.h
index 6c726211f7..817bbe6571 100644
--- a/engines/petka/objects/object.h
+++ b/engines/petka/objects/object.h
@@ -23,6 +23,8 @@
 #ifndef PETKA_OBJECT_H
 #define PETKA_OBJECT_H
 
+#include "common/rect.h"
+
 #include "petka/base.h"
 
 namespace Common {
@@ -41,10 +43,10 @@ public:
 	virtual void update(int time) {};
 	virtual void updateZ() {};
 	virtual void show(bool v) {};
-	virtual void setPos(int x, int y) {};
-	virtual bool isInPoint(int x, int y) { return false; }
-	virtual void onMouseMove(int x, int y) {}
-	virtual void onClick(int x, int y) {}
+	virtual void setPos(Common::Point p, bool center) {};
+	virtual bool isInPoint(Common::Point p) { return false; }
+	virtual void onMouseMove(Common::Point p) {}
+	virtual void onClick(Common::Point p) {}
 
 public:
 	int32 _resourceId;
@@ -103,11 +105,11 @@ public:
 	void draw() override;
 	void update(int time) override;
 	void updateZ() override;
-	bool isInPoint(int x, int y) override;
-	void setPos(int x, int y) override;
+	bool isInPoint(Common::Point p) override;
+	void setPos(Common::Point p, bool center) override;
 	void show(bool v) override;
-	void onClick(int x, int y) override;
-	void onMouseMove(int x, int y) override;
+	void onClick(Common::Point p) override;
+	void onMouseMove(Common::Point p) override;
 };
 
 } // End of namespace Petka
diff --git a/engines/petka/objects/object_bg.cpp b/engines/petka/objects/object_bg.cpp
index e6786e92c6..a26e06000b 100644
--- a/engines/petka/objects/object_bg.cpp
+++ b/engines/petka/objects/object_bg.cpp
@@ -134,8 +134,8 @@ void QObjectBG::setEntrance(const Common::String &name) {
 		sys->getPetka()->_z = 0;
 		sys->getChapay()->_z = 0;
 
-		sys->getPetka()->setPos(entrance->_walkX, entrance->_walkY);
-		sys->getChapay()->setPos(entrance->_walkX, entrance->_walkY - 2);
+		sys->getPetka()->setPos(Common::Point(entrance->_walkX, entrance->_walkY), false);
+		sys->getChapay()->setPos(Common::Point(entrance->_walkX, entrance->_walkY - 2), false);
 
 		sys->_xOffset = CLIP<int32>(entrance->_walkX - 320, 0, sys->_sceneWidth - 640);
 		sys->_field6C = sys->_xOffset;
diff --git a/engines/petka/objects/object_case.cpp b/engines/petka/objects/object_case.cpp
index 3c7d5da4e4..f8dc1c6064 100644
--- a/engines/petka/objects/object_case.cpp
+++ b/engines/petka/objects/object_case.cpp
@@ -136,13 +136,13 @@ void QObjectCase::show(bool v) {
 	}
 }
 
-bool QObjectCase::isInPoint(int x, int y) {
+bool QObjectCase::isInPoint(Common::Point p) {
 	return _isShown;
 }
 
-void QObjectCase::onMouseMove(int x, int y) {
+void QObjectCase::onMouseMove(Common::Point p) {
 	FlicDecoder *flc = g_vm->resMgr()->loadFlic(kExitCaseResourceId);
-	if (*(const byte *)flc->getCurrentFrame()->getBasePtr(x - _x, y - _y) != 0) {
+	if (*(const byte *)flc->getCurrentFrame()->getBasePtr(p.x - _x, p.y - _y) != 0) {
 		if (_clickedObjIndex != kCloseButton && _clickedObjIndex != kInvalidButton) {
 			flc = g_vm->resMgr()->loadFlic(kFirstButtonResourceId + _clickedObjIndex);
 			flc->setFrame(1);
@@ -153,7 +153,7 @@ void QObjectCase::onMouseMove(int x, int y) {
 		uint i;
 		for (i = 0; i < kButtonsCount; ++i) {
 			flc = g_vm->resMgr()->loadFlic(kFirstButtonResourceId + i);
-			if (flc->getMskRects()[0].contains(Common::Point(x - _x, y))) {
+			if (flc->getMskRects()[0].contains(Common::Point(p.x - _x, p.y))) {
 				break;
 			}
 		}
@@ -178,7 +178,7 @@ void QObjectCase::onMouseMove(int x, int y) {
 	}
 }
 
-void QObjectCase::onClick(int x, int y) {
+void QObjectCase::onClick(Common::Point p) {
 	switch (_clickedObjIndex) {
 		case kChapayevButton:
 			g_vm->getQSystem()->setCursorAction(kActionObjUseChapayev);
diff --git a/engines/petka/objects/object_case.h b/engines/petka/objects/object_case.h
index 978314670a..bcfc32d7be 100644
--- a/engines/petka/objects/object_case.h
+++ b/engines/petka/objects/object_case.h
@@ -33,9 +33,9 @@ public:
 	void draw() override;
 	void update(int time) override;
 	void show(bool v) override;
-	bool isInPoint(int x, int y) override;
-	void onMouseMove(int x, int y) override;
-	void onClick(int x, int y) override;
+	bool isInPoint(Common::Point p) override;
+	void onMouseMove(Common::Point p) override;
+	void onClick(Common::Point p) override;
 
 	void addItem(uint16 id);
 	void removeItem(uint16 id);
diff --git a/engines/petka/objects/object_cursor.cpp b/engines/petka/objects/object_cursor.cpp
index 4e0f823be6..106324acfe 100644
--- a/engines/petka/objects/object_cursor.cpp
+++ b/engines/petka/objects/object_cursor.cpp
@@ -85,7 +85,7 @@ void QObjectCursor::update(int time) {
 	}
 }
 
-void QObjectCursor::setCursorPos(int x, int y, bool center) {
+void QObjectCursor::setPos(Common::Point p, bool center) {
 	FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
 	if (!_animate) {
 		flc->setFrame(1);
@@ -95,12 +95,12 @@ void QObjectCursor::setCursorPos(int x, int y, bool center) {
 
 	if (center) {
 		Common::Rect bounds = flc->getBounds();
-		x = x - bounds.left - bounds.width() / 2;
-		y = y - bounds.top - bounds.height() / 2;
+		p.x = p.x - bounds.left - bounds.width() / 2;
+		p.y = p.y - bounds.top - bounds.height() / 2;
 	}
 
-	_x = x;
-	_y = y;
+	_x = p.x;
+	_y = p.y;
 
 	g_vm->videoSystem()->addDirtyRect(Common::Point(_x, _y), flc->getBounds());
 }
diff --git a/engines/petka/objects/object_cursor.h b/engines/petka/objects/object_cursor.h
index 842c27d17c..d1842f4469 100644
--- a/engines/petka/objects/object_cursor.h
+++ b/engines/petka/objects/object_cursor.h
@@ -41,11 +41,11 @@ class QObjectCursor : public QMessageObject {
 public:
 	QObjectCursor();
 
-	void setCursorPos(int x, int y, bool center);
+	void setPos(Common::Point p, bool center) override;
 	void update(int time) override;
 	void draw() override;
 	void show(bool v) override;
-	bool isInPoint(int x, int y) override { return 0; }
+	bool isInPoint(Common::Point p) override { return false; }
 	void setAction(int actionType);
 	void setInvItem(QMessageObject *item, uint16 resourceId);
 	void returnInvItem();
diff --git a/engines/petka/objects/object_star.cpp b/engines/petka/objects/object_star.cpp
index 438f25f17b..2215b8f852 100644
--- a/engines/petka/objects/object_star.cpp
+++ b/engines/petka/objects/object_star.cpp
@@ -52,12 +52,12 @@ QObjectStar::QObjectStar() {
 	_buttonRects[5] = Common::Rect(11, 79, 40, 118);
 }
 
-bool QObjectStar::isInPoint(int x, int y) {
+bool QObjectStar::isInPoint(Common::Point p) {
 	return _isShown;
 }
 
-void QObjectStar::onMouseMove(int x, int y) {
-	uint frame = (findButtonIndex(x - _x, y - _y) + 1) % 7 + 1;
+void QObjectStar::onMouseMove(Common::Point p) {
+	uint frame = (findButtonIndex(p.x - _x, p.y - _y) + 1) % 7 + 1;
 	FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
 	if (flc && flc->getCurFrame() + 1 != frame) {
 		g_vm->videoSystem()->addDirtyRect(Common::Point(_x, _y), *flc);
@@ -65,8 +65,8 @@ void QObjectStar::onMouseMove(int x, int y) {
 	}
 }
 
-void QObjectStar::onClick(int x, int y) {
-	uint button = findButtonIndex(x - _x, y - _y);
+void QObjectStar::onClick(Common::Point p) {
+	uint button = findButtonIndex(p.x - _x, p.y - _y);
 	if (button == kCaseButtonIndex) {
 		g_vm->getQSystem()->getCase()->show(1);
 	} else if (button < ARRAYSIZE(_buttonRects)) {
@@ -85,7 +85,7 @@ uint QObjectStar::findButtonIndex(int16 x, int16 y) const {
 	return i;
 }
 
-void QObjectStar::setPos(Common::Point p) {
+void QObjectStar::setPos(Common::Point p, bool) {
 	if (!_isShown) {
 		FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
 		p.x = MAX<int16>(p.x - flc->getWidth() / 2, 0);
diff --git a/engines/petka/objects/object_star.h b/engines/petka/objects/object_star.h
index 1acc3c6cf5..f306a6e4e8 100644
--- a/engines/petka/objects/object_star.h
+++ b/engines/petka/objects/object_star.h
@@ -31,10 +31,10 @@ class QObjectStar : public QObject {
 public:
 	QObjectStar();
 	void update(int time) override {}
-	bool isInPoint(int x, int y) override;
-	void onMouseMove(int x, int y) override;
-	void onClick(int x, int y) override;
-	void setPos(Common::Point p);
+	bool isInPoint(Common::Point p) override;
+	void onMouseMove(Common::Point p) override;
+	void onClick(Common::Point p) override;
+	void setPos(Common::Point p, bool center) override;
 
 private:
 	uint findButtonIndex(int16 x, int16 y) const;
diff --git a/engines/petka/objects/text.cpp b/engines/petka/objects/text.cpp
index 1b4fd7f477..afba1aa4a3 100644
--- a/engines/petka/objects/text.cpp
+++ b/engines/petka/objects/text.cpp
@@ -119,7 +119,7 @@ void QTextPhrase::update(int time) {
 	}
 }
 
-void QTextPhrase::onClick(int x, int y) {
+void QTextPhrase::onClick(Common::Point p) {
 	DialogInterface &dialog = g_vm->getQSystem()->_mainInterface->_dialog;
 	dialog.next(-1);
 }
@@ -147,7 +147,7 @@ QTextDescription::QTextDescription(const Common::U32String &desc, uint32 frame)
 	font->drawString(s, desc, textArea.left, textArea.top, textArea.width(), 0);
 }
 
-void QTextDescription::onClick(int x, int y) {
+void QTextDescription::onClick(Common::Point p) {
 	g_vm->getQSystem()->_mainInterface->removeTextDescription();
 }
 
@@ -187,8 +187,9 @@ QTextChoice::QTextChoice(const Common::Array<Common::U32String> &choices, uint16
 	}
 }
 
-void QTextChoice::onMouseMove(int x, int y) {
-	Common::Point p(x -_rect.left, y - _rect.top);
+void QTextChoice::onMouseMove(Common::Point p) {
+	p.x = p.x - _rect.left;
+	p.y = p.y - _rect.top;
 	uint newChoice;
 	for (newChoice = 0; newChoice < _rects.size(); ++newChoice) {
 		if (_rects[newChoice].contains(p)) {
@@ -212,7 +213,7 @@ void QTextChoice::onMouseMove(int x, int y) {
 	}
 }
 
-void QTextChoice::onClick(int x, int y) {
+void QTextChoice::onClick(Common::Point p) {
 	if (_activeChoice < _choices.size()) {
 		g_vm->getQSystem()->_mainInterface->_dialog.next(_activeChoice);
 	}
diff --git a/engines/petka/objects/text.h b/engines/petka/objects/text.h
index 14bcfbda03..8b60dcfa2c 100644
--- a/engines/petka/objects/text.h
+++ b/engines/petka/objects/text.h
@@ -55,8 +55,8 @@ public:
 
 	void draw() override;
 	void update(int time) override;
-	void onClick(int x, int y) override;
-	bool isInPoint(int x, int y) override { return true; }
+	void onClick(Common::Point p) override;
+	bool isInPoint(Common::Point p) override { return true; }
 
 private:
 	Common::U32String _phrase;
@@ -68,17 +68,17 @@ public:
 	QTextDescription(const Common::U32String &desc, uint32 frame);
 
 	void draw() override;
-	void onClick(int x, int y) override;
-	bool isInPoint(int x, int y) override { return true; }
+	void onClick(Common::Point p) override;
+	bool isInPoint(Common::Point p) override { return true; }
 };
 
 class QTextChoice : public QText {
 public:
 	QTextChoice(const Common::Array<Common::U32String> &choices, uint16 color, uint16 selectedColor);
 
-	void onMouseMove(int x, int y) override;
-	void onClick(int x, int y) override;
-	bool isInPoint(int x, int y) override { return true; }
+	void onMouseMove(Common::Point p) override;
+	void onClick(Common::Point p) override;
+	bool isInPoint(Common::Point p) override { return true; }
 
 private:
 	Common::Array<Common::Rect> _rects;


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

Commit Message:
PETKA: changed object's fields type to bool where appropriate

Changed paths:
    engines/petka/interfaces/dialog_interface.cpp
    engines/petka/interfaces/main.cpp
    engines/petka/interfaces/panel.cpp
    engines/petka/interfaces/startup.cpp
    engines/petka/objects/object.cpp
    engines/petka/objects/object.h
    engines/petka/objects/object_bg.cpp
    engines/petka/objects/object_bg.h
    engines/petka/objects/object_cursor.cpp
    engines/petka/objects/object_star.cpp
    engines/petka/q_system.cpp
    engines/petka/sound.cpp


diff --git a/engines/petka/interfaces/dialog_interface.cpp b/engines/petka/interfaces/dialog_interface.cpp
index 41eb8ebc47..410a3228fd 100644
--- a/engines/petka/interfaces/dialog_interface.cpp
+++ b/engines/petka/interfaces/dialog_interface.cpp
@@ -194,7 +194,7 @@ void DialogInterface::playSound(const Common::String &name) {
 			Common::Rect bounds = flc->getBounds();
 			s->setBalance(bounds.left + _talker->_x + bounds.width(), 640);
 		}
-		s->play(0);
+		s->play(false);
 	}
 }
 
diff --git a/engines/petka/interfaces/main.cpp b/engines/petka/interfaces/main.cpp
index 7748fed1e3..ad9a655267 100644
--- a/engines/petka/interfaces/main.cpp
+++ b/engines/petka/interfaces/main.cpp
@@ -242,7 +242,7 @@ void InterfaceMain::setTextChoice(const Common::Array<Common::U32String> &choice
 void InterfaceMain::setTextDescription(const Common::U32String &text, int frame) {
 	removeTexts();
 	QObjectStar *star = g_vm->getQSystem()->getStar();
-	star->_isActive = 0;
+	star->_isActive = false;
 	_objUnderCursor = nullptr;
 	_hasTextDesc = true;
 	_objs.push_back(new QTextDescription(text, frame));
diff --git a/engines/petka/interfaces/panel.cpp b/engines/petka/interfaces/panel.cpp
index 886bcde13d..5c66e5f056 100644
--- a/engines/petka/interfaces/panel.cpp
+++ b/engines/petka/interfaces/panel.cpp
@@ -106,8 +106,8 @@ void InterfacePanel::start(int id) {
 		obj->_x = _objectPoints[i].x;
 		obj->_y = _objectPoints[i].y;
 		obj->_frame = 1;
-		obj->_animate = 0;
-		obj->_isShown = 1;
+		obj->_animate = false;
+		obj->_isShown = true;
 		_objs.push_back(obj);
 	}
 
@@ -229,7 +229,7 @@ void InterfacePanel::onMouseMove(Common::Point p) {
 		g_vm->videoSystem()->addDirtyRect(_objectPoints[pointIndex], *flc);
 	}
 	QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
-	cursor->_isShown = 1;
+	cursor->_isShown = true;
 	cursor->setPos(p, false);
 }
 
diff --git a/engines/petka/interfaces/startup.cpp b/engines/petka/interfaces/startup.cpp
index 9fa22087c6..31164f8100 100644
--- a/engines/petka/interfaces/startup.cpp
+++ b/engines/petka/interfaces/startup.cpp
@@ -64,8 +64,8 @@ void InterfaceStartup::start(int id) {
 		obj->_x = 0;
 		obj->_y = 0;
 		obj->_frame = 1;
-		obj->_animate = 0;
-		obj->_isShown = 0;
+		obj->_animate = false;
+		obj->_isShown = false;
 		_objs.push_back(obj);
 	}
 
diff --git a/engines/petka/objects/object.cpp b/engines/petka/objects/object.cpp
index 8328c438b7..4372bcfa92 100644
--- a/engines/petka/objects/object.cpp
+++ b/engines/petka/objects/object.cpp
@@ -62,7 +62,7 @@ QMessageObject::QMessageObject() {
 	_animate = true;
 	_isShown = true;
 	_isActive = true;
-	_updateZ = 0;
+	_updateZ = false;
 	_holdMessages = false;
 	_notLoopedSound = true;
 	_startSound = false;
@@ -154,10 +154,10 @@ void QMessageObject::processMessage(const QMessage &msg) {
 		case kSystem:
 			switch (msg.arg1){
 			case 0:
-				g_vm->getQSystem()->getStar()->_isActive = 0;
+				g_vm->getQSystem()->getStar()->_isActive = false;
 				break;
 			case 1:
-				g_vm->getQSystem()->getStar()->_isActive = 1;
+				g_vm->getQSystem()->getStar()->_isActive = true;
 				break;
 			case 242:
 				g_system->quit();
diff --git a/engines/petka/objects/object.h b/engines/petka/objects/object.h
index 817bbe6571..9ff3229cbe 100644
--- a/engines/petka/objects/object.h
+++ b/engines/petka/objects/object.h
@@ -79,13 +79,13 @@ public:
 	int32 _walkY;
 	int32 _time;
 	byte _frame;
-	int32 _isShown;
-	int32 _animate;
-	int _updateZ;
+	bool _isShown;
+	bool _animate;
+	bool _updateZ;
 	bool _holdMessages;
-	int _isActive;
-	int _startSound;
-	int _notLoopedSound;
+	bool _isActive;
+	bool _startSound;
+	bool _notLoopedSound;
 	Sound *_sound;
 	int8 _status;
 	uint16 _id;
diff --git a/engines/petka/objects/object_bg.cpp b/engines/petka/objects/object_bg.cpp
index a26e06000b..1555e30fe5 100644
--- a/engines/petka/objects/object_bg.cpp
+++ b/engines/petka/objects/object_bg.cpp
@@ -45,7 +45,7 @@ QObjectBG::QObjectBG() {
 	_y = 0;
 	_z = 0;
 
-	_showMap = 1;
+	_showMap = true;
 
 	_fxId = 0;
 	_musicId = 0;
@@ -64,10 +64,10 @@ void QObjectBG::processMessage(const QMessage &msg) {
 		_fxId = msg.arg1;
 		break;
 	case kMap:
-		_showMap = msg.arg1 != 0;
+		_showMap = (msg.arg1 != 0);
 		break;
 	case kNoMap:
-		_showMap = 0;
+		_showMap = false;
 		break;
 	case kGoTo:
 		goTo();
diff --git a/engines/petka/objects/object_bg.h b/engines/petka/objects/object_bg.h
index a6a4d783b3..fe126cae6c 100644
--- a/engines/petka/objects/object_bg.h
+++ b/engines/petka/objects/object_bg.h
@@ -48,7 +48,7 @@ public:
 	void readInisData(Common::INIFile &names, Common::INIFile &cast, Common::INIFile *bgs) override;
 
 public:
-	int _showMap;
+	bool _showMap;
 	int _fxId;
 	int _musicId;
 	Perspective _persp;
diff --git a/engines/petka/objects/object_cursor.cpp b/engines/petka/objects/object_cursor.cpp
index 106324acfe..4826512857 100644
--- a/engines/petka/objects/object_cursor.cpp
+++ b/engines/petka/objects/object_cursor.cpp
@@ -113,7 +113,7 @@ void QObjectCursor::show(bool v) {
 
 void QObjectCursor::returnInvItem() {
 	if (_actionType == kActionObjUse) {
-		_invObj->show(1);
+		_invObj->show(true);
 		_invObj->_isActive = true;
 	}
 }
diff --git a/engines/petka/objects/object_star.cpp b/engines/petka/objects/object_star.cpp
index 2215b8f852..ccb3c13640 100644
--- a/engines/petka/objects/object_star.cpp
+++ b/engines/petka/objects/object_star.cpp
@@ -68,12 +68,12 @@ void QObjectStar::onMouseMove(Common::Point p) {
 void QObjectStar::onClick(Common::Point p) {
 	uint button = findButtonIndex(p.x - _x, p.y - _y);
 	if (button == kCaseButtonIndex) {
-		g_vm->getQSystem()->getCase()->show(1);
+		g_vm->getQSystem()->getCase()->show(true);
 	} else if (button < ARRAYSIZE(_buttonRects)) {
 		QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
 		cursor->setAction(button - 1);
 	}
-	show(0);
+	show(false);
 }
 
 uint QObjectStar::findButtonIndex(int16 x, int16 y) const {
diff --git a/engines/petka/q_system.cpp b/engines/petka/q_system.cpp
index b17d7db7d8..3601889808 100644
--- a/engines/petka/q_system.cpp
+++ b/engines/petka/q_system.cpp
@@ -178,7 +178,7 @@ void QSystem::togglePanelInterface() {
 
 void QSystem::toggleMapInterface() {
 	if (_currInterface != _startupInterface.get() && getStar()->_isActive && _room->_showMap) {
-		getCase()->show(0);
+		getCase()->show(false);
 		if (_currInterface == _mapInterface.get()) {
 			_currInterface->stop();
 		} else if (_currInterface == _mainInterface.get()) {
@@ -398,7 +398,7 @@ void QSystem::onEvent(const Common::Event &event) {
 }
 
 void QSystem::goPrevInterface() {
-	getCase()->show(0);
+	getCase()->show(false);
 	if (_currInterface != _startupInterface.get() && _currInterface != _sequenceInterface.get())
 		_currInterface->stop();
 }
diff --git a/engines/petka/sound.cpp b/engines/petka/sound.cpp
index 3a4dd61a47..4d8e6ef819 100644
--- a/engines/petka/sound.cpp
+++ b/engines/petka/sound.cpp
@@ -102,7 +102,7 @@ void SoundMgr::removeSound(const Common::String &name) {
 
 void SoundMgr::removeAll() {
 	debug("SoundMgr::removeAll");
-	_sounds.clear(0);
+	_sounds.clear(false);
 }
 
 void SoundMgr::removeSoundsWithType(Audio::Mixer::SoundType type) {


Commit: b3652ee8f99034fd7a39e6bad4cdef9ea2b77b07
    https://github.com/scummvm/scummvm/commit/b3652ee8f99034fd7a39e6bad4cdef9ea2b77b07
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-30T23:05:27+03:00

Commit Message:
PETKA: use Engine::quitGame in System opcode

Changed paths:
    engines/petka/objects/object.cpp


diff --git a/engines/petka/objects/object.cpp b/engines/petka/objects/object.cpp
index 4372bcfa92..e1d3e2361d 100644
--- a/engines/petka/objects/object.cpp
+++ b/engines/petka/objects/object.cpp
@@ -160,7 +160,7 @@ void QMessageObject::processMessage(const QMessage &msg) {
 				g_vm->getQSystem()->getStar()->_isActive = true;
 				break;
 			case 242:
-				g_system->quit();
+				Engine::quitGame();
 				break;
 			default:
 				break;


Commit: 228bd23dbf5a39695bbf623f5aed096fb7ed18f6
    https://github.com/scummvm/scummvm/commit/228bd23dbf5a39695bbf623f5aed096fb7ed18f6
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-30T23:08:00+03:00

Commit Message:
PETKA: fixed crash when there is no video file

Changed paths:
    engines/petka/petka.cpp


diff --git a/engines/petka/petka.cpp b/engines/petka/petka.cpp
index 5548882554..65e1c50bdc 100644
--- a/engines/petka/petka.cpp
+++ b/engines/petka/petka.cpp
@@ -171,14 +171,14 @@ Common::RandomSource &PetkaEngine::getRnd() {
 }
 
 void PetkaEngine::playVideo(Common::SeekableReadStream *stream) {
-	g_system->getMixer()->pauseAll(true);
-	Graphics::PixelFormat fmt = _system->getScreenFormat();
-
 	Video::AVIDecoder decoder;
-	if (!decoder.loadStream(stream)) {
+	if (stream && !decoder.loadStream(stream)) {
 		return;
 	}
 
+	g_system->getMixer()->pauseAll(true);
+	Graphics::PixelFormat fmt = _system->getScreenFormat();
+
 	decoder.start();
 	while (!decoder.endOfVideo()) {
 		Common::Event event;




More information about the Scummvm-git-logs mailing list