[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