[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