[Scummvm-git-logs] scummvm master -> a3a2419cbdfb80c770670fd8bb1ba82f5b28534a
whiterandrek
whiterandrek at gmail.com
Tue May 26 14:03:11 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:
121bbae3da PETKA: control object's sound by methods
71361395f3 PETKA: removed unnecessary field from QMessageObject
a3a2419cbd PETKA: implemented QObjectStar::setPos
Commit: 121bbae3da28610550f46b97c1710b4fb131d94f
https://github.com/scummvm/scummvm/commit/121bbae3da28610550f46b97c1710b4fb131d94f
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-26T11:44:19+03:00
Commit Message:
PETKA: control object's sound by methods
Changed paths:
engines/petka/interfaces/main.cpp
engines/petka/interfaces/sequence.cpp
engines/petka/objects/object.cpp
engines/petka/objects/object.h
diff --git a/engines/petka/interfaces/main.cpp b/engines/petka/interfaces/main.cpp
index a02431a3aa..f7f333fc7b 100644
--- a/engines/petka/interfaces/main.cpp
+++ b/engines/petka/interfaces/main.cpp
@@ -95,10 +95,7 @@ void InterfaceMain::loadRoom(int id, bool fromSave) {
_objs.push_back(room);
for (uint i = 0; i < info->attachedObjIds.size(); ++i) {
QMessageObject *obj = g_vm->getQSystem()->findObject(info->attachedObjIds[i]);
- debug("Added sound id %d", obj->_resourceId);
- obj->_sound = g_vm->soundMgr()->addSound(g_vm->resMgr()->findSoundName(obj->_resourceId), Audio::Mixer::kSFXSoundType);
- obj->_hasSound = obj->_sound != nullptr;
- obj->_startSound = false;
+ obj->loadSound();
if (obj->_isShown || obj->_isActive)
g_vm->resMgr()->loadFlic(obj->_resourceId);
_objs.push_back(obj);
@@ -154,8 +151,7 @@ void InterfaceMain::unloadRoom(bool fromSave) {
for (uint j = 0; j < info->attachedObjIds.size(); ++j) {
if (info->attachedObjIds[j] == ((QMessageObject *) _objs[i])->_id) {
QMessageObject *o = (QMessageObject *) _objs.remove_at(i);
- g_vm->soundMgr()->removeSound(g_vm->resMgr()->findSoundName(o->_resourceId));
- o->_sound = nullptr;
+ o->removeSound();
removed = true;
break;
}
diff --git a/engines/petka/interfaces/sequence.cpp b/engines/petka/interfaces/sequence.cpp
index 1b9dae0341..5e010576b8 100644
--- a/engines/petka/interfaces/sequence.cpp
+++ b/engines/petka/interfaces/sequence.cpp
@@ -44,9 +44,8 @@ void InterfaceSequence::start(int id) {
if (_objs[i]->_resourceId != -666) {
g_vm->resMgr()->removeResource(_objs[i]->_resourceId);
}
- QMessageObject *obj = (QObject *)_objs[i];
- g_vm->soundMgr()->removeSound(g_vm->resMgr()->findSoundName(_objs[i]->_resourceId));
- obj->_sound = nullptr;
+ QMessageObject *obj = (QMessageObject *)_objs[i];
+ obj->removeSound();
}
g_system->getMixer()->pauseAll(true);
@@ -87,10 +86,7 @@ void InterfaceSequence::start(int id) {
for (uint i = 0; i < info->attachedObjIds.size(); ++i) {
QMessageObject *obj = g_vm->getQSystem()->findObject(info->attachedObjIds[i]);
g_vm->resMgr()->loadFlic(obj->_resourceId);
- obj->_sound = g_vm->soundMgr()->addSound(g_vm->resMgr()->findSoundName(obj->_resourceId),
- Audio::Mixer::kSFXSoundType);
- obj->_hasSound = obj->_sound != nullptr;
- obj->_startSound = false;
+ obj->loadSound();
_objs.push_back(obj);
}
}
@@ -105,9 +101,8 @@ void InterfaceSequence::stop() {
if (_objs[i]->_resourceId != -666) {
g_vm->resMgr()->removeResource(_objs[i]->_resourceId);
}
- QMessageObject *obj = (QObject *)_objs[i];
- g_vm->soundMgr()->removeSound(g_vm->resMgr()->findSoundName(_objs[i]->_resourceId));
- obj->_sound = nullptr;
+ QMessageObject *obj = (QMessageObject *)_objs[i];
+ obj->removeSound();
}
g_vm->soundMgr()->removeSound(g_vm->resMgr()->findSoundName(_fxId));
diff --git a/engines/petka/objects/object.cpp b/engines/petka/objects/object.cpp
index 63956c706e..75609f9efb 100644
--- a/engines/petka/objects/object.cpp
+++ b/engines/petka/objects/object.cpp
@@ -319,22 +319,22 @@ void QMessageObject::play(int id, int type) {
if (g_vm->getQSystem()->_isIniting) {
_resourceId = id;
} else {
- _sound = g_vm->soundMgr()->addSound(g_vm->resMgr()->findSoundName(id),
- Audio::Mixer::kSFXSoundType);
- _hasSound = _sound != nullptr;
- _startSound = false;
+ if (!_notLoopedSound || g_vm->isDemo()) {
+ removeSound();
+ }
+
FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
if (flc) {
g_vm->videoSystem()->addDirtyRect(Common::Point(_x, _y), *flc);
}
+ _resourceId = id;
+
+ loadSound();
+
flc = g_vm->resMgr()->loadFlic(id);
flc->setFrame(1);
_time = 0;
- if (!_notLoopedSound || g_vm->isDemo()) {
- g_vm->soundMgr()->removeSound(g_vm->resMgr()->findSoundName(_resourceId));
- }
- _resourceId = id;
}
switch (type) {
case 1: {
@@ -352,6 +352,19 @@ void QMessageObject::play(int id, int type) {
_notLoopedSound = type != 5;
}
+void QMessageObject::loadSound() {
+ Common::String name = g_vm->resMgr()->findSoundName(_resourceId);
+ _sound = g_vm->soundMgr()->addSound(name, Audio::Mixer::kSFXSoundType);
+ _hasSound = _sound != nullptr;
+ _startSound = false;
+}
+
+void QMessageObject::removeSound() {
+ Common::String name = g_vm->resMgr()->findSoundName(_resourceId);
+ g_vm->soundMgr()->removeSound(name);
+ _sound = nullptr;
+}
+
QObject::QObject() {
_animate = true;
_updateZ = true;
diff --git a/engines/petka/objects/object.h b/engines/petka/objects/object.h
index 65a7a047dd..8c583ea9f3 100644
--- a/engines/petka/objects/object.h
+++ b/engines/petka/objects/object.h
@@ -59,6 +59,9 @@ public:
virtual void play(int id, int type);
+ void loadSound();
+ void removeSound();
+
public:
int32 _x;
int32 _y;
Commit: 71361395f3ae1e7d43570a987ae9607c39842d7d
https://github.com/scummvm/scummvm/commit/71361395f3ae1e7d43570a987ae9607c39842d7d
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-26T12:17:16+03:00
Commit Message:
PETKA: removed unnecessary field from QMessageObject
Changed paths:
engines/petka/objects/heroes.cpp
engines/petka/objects/object.cpp
engines/petka/objects/object.h
diff --git a/engines/petka/objects/heroes.cpp b/engines/petka/objects/heroes.cpp
index 49b5f124ec..6d13133e4f 100644
--- a/engines/petka/objects/heroes.cpp
+++ b/engines/petka/objects/heroes.cpp
@@ -129,6 +129,9 @@ void QObjectPetka::draw() {
if (_animate && _startSound) {
if (_sound) {
_sound->play(!_notLoopedSound);
+ if (!_notLoopedSound) {
+ _sound = nullptr;
+ }
}
_startSound = false;
}
@@ -271,15 +274,11 @@ void QObjectPetka::update(int time) {
FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
if (flc && flc->getFrameCount() != 1) {
while (_time >= flc->getDelay()) {
- if (_sound && _hasSound && flc->getCurFrame() == 0) {
+ if (_sound && flc->getCurFrame() == 0) {
_startSound = true;
- _hasSound = false;
}
flc->setFrame(-1);
if (flc->getCurFrame() == flc->getFrameCount() - 1) {
- if (_notLoopedSound) {
- _hasSound = _sound != nullptr;
- }
g_vm->getQSystem()->addMessage(_id, kEnd, _resourceId, 0, 0, 0, 0);
}
if (flc->getCurFrame() + 1 == flc->getFrameCount() / 2) {
diff --git a/engines/petka/objects/object.cpp b/engines/petka/objects/object.cpp
index 75609f9efb..ab2ffa3c18 100644
--- a/engines/petka/objects/object.cpp
+++ b/engines/petka/objects/object.cpp
@@ -66,7 +66,6 @@ QMessageObject::QMessageObject() {
_holdMessages = false;
_notLoopedSound = true;
_startSound = false;
- _hasSound = false;
_reaction = nullptr;
}
@@ -355,7 +354,6 @@ void QMessageObject::play(int id, int type) {
void QMessageObject::loadSound() {
Common::String name = g_vm->resMgr()->findSoundName(_resourceId);
_sound = g_vm->soundMgr()->addSound(name, Audio::Mixer::kSFXSoundType);
- _hasSound = _sound != nullptr;
_startSound = false;
}
@@ -403,6 +401,9 @@ void QObject::draw() {
if (_animate && _startSound) {
if (_sound) {
_sound->play(!_notLoopedSound);
+ if (!_notLoopedSound) {
+ _sound = nullptr;
+ }
}
_startSound = false;
}
@@ -462,16 +463,12 @@ void QObject::update(int time) {
FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
if (flc && flc->getFrameCount() != 1) {
while (_time >= flc->getDelay()) {
- if (_sound && _hasSound && flc->getCurFrame() == 0) {
+ if (_sound && flc->getCurFrame() == 0) {
_startSound = true;
- _hasSound = false;
}
g_vm->videoSystem()->addDirtyRect(Common::Point(_x, _y), *flc);
flc->setFrame(-1);
if (flc->getCurFrame() == flc->getFrameCount() - 1) {
- if (_notLoopedSound) {
- _hasSound = _sound != nullptr;
- }
g_vm->getQSystem()->addMessage(_id, kEnd, _resourceId, 0, 0, 0, 0);
}
if (flc->getCurFrame() + 1 == flc->getFrameCount() / 2) {
diff --git a/engines/petka/objects/object.h b/engines/petka/objects/object.h
index 8c583ea9f3..246c9d871d 100644
--- a/engines/petka/objects/object.h
+++ b/engines/petka/objects/object.h
@@ -75,7 +75,6 @@ public:
bool _holdMessages;
int _isActive;
int _startSound;
- int _hasSound;
int _notLoopedSound;
Sound *_sound;
int8 _status;
Commit: a3a2419cbdfb80c770670fd8bb1ba82f5b28534a
https://github.com/scummvm/scummvm/commit/a3a2419cbdfb80c770670fd8bb1ba82f5b28534a
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-26T17:02:13+03:00
Commit Message:
PETKA: implemented QObjectStar::setPos
Changed paths:
engines/petka/interfaces/main.cpp
engines/petka/objects/object_star.cpp
engines/petka/objects/object_star.h
diff --git a/engines/petka/interfaces/main.cpp b/engines/petka/interfaces/main.cpp
index f7f333fc7b..2cc3054c92 100644
--- a/engines/petka/interfaces/main.cpp
+++ b/engines/petka/interfaces/main.cpp
@@ -213,14 +213,7 @@ void InterfaceMain::onRightButtonDown(const Common::Point p) {
if (g_vm->getQSystem()->_case.get()->_isShown && cursor->_actionType == kActionObjUse) {
cursor->setAction(kActionTake);
} else {
- if (!star->_isShown) {
- FlicDecoder *flc = g_vm->resMgr()->loadFlic(star->_resourceId);
- int x = MAX(p.x - flc->getWidth() / 2, 0);
- int y = MAX(p.y - flc->getHeight() / 2, 0);
-
- star->_x = MIN(x, 639 - flc->getWidth());
- star->_y = MIN(y, 479 - flc->getHeight());
- }
+ star->setPos(p);
star->show(star->_isShown == 0);
}
}
diff --git a/engines/petka/objects/object_star.cpp b/engines/petka/objects/object_star.cpp
index 53e9b99c61..c3c6acef8e 100644
--- a/engines/petka/objects/object_star.cpp
+++ b/engines/petka/objects/object_star.cpp
@@ -89,4 +89,15 @@ uint QObjectStar::findButtonIndex(int16 x, int16 y) const {
return i;
}
+void QObjectStar::setPos(Common::Point p) {
+ if (!_isShown) {
+ FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
+ p.x = MAX<int16>(p.x - flc->getWidth() / 2, 0);
+ p.y = MAX<int16>(p.y - flc->getHeight() / 2, 0);
+
+ _x = MIN<int16>(p.x, 639 - flc->getWidth());
+ _y = MIN<int16>(p.y, 479 - flc->getHeight());
+ }
+}
+
}
diff --git a/engines/petka/objects/object_star.h b/engines/petka/objects/object_star.h
index 74726359ba..1acc3c6cf5 100644
--- a/engines/petka/objects/object_star.h
+++ b/engines/petka/objects/object_star.h
@@ -34,6 +34,7 @@ public:
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);
private:
uint findButtonIndex(int16 x, int16 y) const;
More information about the Scummvm-git-logs
mailing list