[Scummvm-git-logs] scummvm master -> 749ed68686f2ba6debdeac437544b535ac5365b9

whiterandrek whiterandrek at gmail.com
Mon May 25 22:59:59 UTC 2020


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

Summary:
a4aac8b45a PETKA: moved handling set/play opcode to separate function
749ed68686 PETKA: implemented set/play opcodes for demo


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

Commit Message:
PETKA: moved handling set/play opcode to separate function

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


diff --git a/engines/petka/objects/object.cpp b/engines/petka/objects/object.cpp
index d5770fbb1d..5915324c02 100644
--- a/engines/petka/objects/object.cpp
+++ b/engines/petka/objects/object.cpp
@@ -119,39 +119,7 @@ void QMessageObject::processMessage(const QMessage &msg) {
 			break;
 		case kSet:
 		case kPlay:
-			if (dynamic_cast<QObjectBG *>(this)) {
-				break;
-			}
-			if (g_vm->getQSystem()->_isIniting) {
-				_resourceId = msg.arg1;
-				_notLoopedSound = msg.arg2 != 5;
-			} else {
-				_sound = g_vm->soundMgr()->addSound(g_vm->resMgr()->findSoundName(msg.arg1),
-													Audio::Mixer::kSFXSoundType);
-				_hasSound = _sound != nullptr;
-				_startSound = false;
-				FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
-				if (flc) {
-					g_vm->videoSystem()->addDirtyRect(Common::Point(_x, _y), *flc);
-				}
-
-				flc = g_vm->resMgr()->loadFlic(msg.arg1);
-				flc->setFrame(1);
-				_time = 0;
-				if (!_notLoopedSound) {
-					g_vm->soundMgr()->removeSound(g_vm->resMgr()->findSoundName(_resourceId));
-				}
-				_resourceId = msg.arg1;
-			}
-			if (msg.arg2 == 1) {
-				FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
-				flc->setFrame(1);
-				g_vm->videoSystem()->makeAllDirty();
-				_time = 0;
-			} else if (msg.arg2 == 2) {
-				g_vm->resMgr()->loadFlic(_resourceId);
-			}
-			_notLoopedSound = msg.arg2 != 5;
+			play(msg.arg1, msg.arg2);
 			break;
 		case kAnimate:
 			_animate = msg.arg1;
@@ -347,6 +315,43 @@ void QMessageObject::processReaction(QReaction *r, const QMessage *msg) {
 		delete r;
 }
 
+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;
+		FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
+		if (flc) {
+			g_vm->videoSystem()->addDirtyRect(Common::Point(_x, _y), *flc);
+		}
+
+		flc = g_vm->resMgr()->loadFlic(id);
+		flc->setFrame(1);
+		_time = 0;
+		if (!_notLoopedSound) {
+			g_vm->soundMgr()->removeSound(g_vm->resMgr()->findSoundName(_resourceId));
+		}
+		_resourceId = id;
+	}
+	switch (type) {
+	case 1: {
+		FlicDecoder *flc = g_vm->resMgr()->loadFlic(_resourceId);
+		flc->setFrame(1);
+		g_vm->videoSystem()->makeAllDirty();
+		break;
+	}
+	case 2:
+		g_vm->resMgr()->loadFlic(_resourceId);
+		break;
+	default:
+		break;
+	}
+	_notLoopedSound = type != 5;
+}
+
 QObject::QObject() {
 	_animate = true;
 	_updateZ = true;
diff --git a/engines/petka/objects/object.h b/engines/petka/objects/object.h
index ea439dc654..65a7a047dd 100644
--- a/engines/petka/objects/object.h
+++ b/engines/petka/objects/object.h
@@ -57,6 +57,8 @@ public:
 	virtual void processMessage(const QMessage &msg);
 	void processReaction(QReaction *reaction, const QMessage *msg = nullptr);
 
+	virtual void play(int id, int type);
+
 public:
 	int32 _x;
 	int32 _y;
diff --git a/engines/petka/objects/object_bg.h b/engines/petka/objects/object_bg.h
index 948428e956..90f182a0dd 100644
--- a/engines/petka/objects/object_bg.h
+++ b/engines/petka/objects/object_bg.h
@@ -34,6 +34,7 @@ public:
 	void draw() override;
 	void goTo();
 	void setEntrance(const Common::String &name);
+	void play(int id, int type) override {}
 
 public:
 	int _showMap;


Commit: 749ed68686f2ba6debdeac437544b535ac5365b9
    https://github.com/scummvm/scummvm/commit/749ed68686f2ba6debdeac437544b535ac5365b9
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-26T01:59:40+03:00

Commit Message:
PETKA: implemented set/play opcodes for demo

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


diff --git a/engines/petka/objects/object.cpp b/engines/petka/objects/object.cpp
index 5915324c02..63956c706e 100644
--- a/engines/petka/objects/object.cpp
+++ b/engines/petka/objects/object.cpp
@@ -331,7 +331,7 @@ void QMessageObject::play(int id, int type) {
 		flc = g_vm->resMgr()->loadFlic(id);
 		flc->setFrame(1);
 		_time = 0;
-		if (!_notLoopedSound) {
+		if (!_notLoopedSound || g_vm->isDemo()) {
 			g_vm->soundMgr()->removeSound(g_vm->resMgr()->findSoundName(_resourceId));
 		}
 		_resourceId = id;
diff --git a/engines/petka/petka.cpp b/engines/petka/petka.cpp
index c0958666b3..6ac90972cc 100644
--- a/engines/petka/petka.cpp
+++ b/engines/petka/petka.cpp
@@ -90,7 +90,7 @@ Common::Error PetkaEngine::run() {
 	_soundMgr.reset(new SoundMgr());
 	_vsys.reset(new VideoSystem());
 
-	loadPart(strcmp(_desc->gameId, "petka_demo") == 0 ? 1 : 0);
+	loadPart(isDemo() ? 1 : 0);
 
 	while (!shouldQuit()) {
 		Common::Event event;
@@ -208,6 +208,10 @@ void PetkaEngine::playVideo(Common::SeekableReadStream *stream) {
 	g_system->getMixer()->pauseAll(false);
 }
 
+bool PetkaEngine::isDemo() const {
+	return strcmp(_desc->gameId, "petka_demo") == 0;
+}
+
 SoundMgr *PetkaEngine::soundMgr() const {
 	return _soundMgr.get();
 }
diff --git a/engines/petka/petka.h b/engines/petka/petka.h
index c493ffe52c..3b25f1b075 100644
--- a/engines/petka/petka.h
+++ b/engines/petka/petka.h
@@ -71,6 +71,8 @@ public:
 	PetkaEngine(OSystem *syst, const ADGameDescription *desc);
 	~PetkaEngine();
 
+	bool isDemo() const;
+
 	void loadPart(byte part);
 	byte getPart();
 




More information about the Scummvm-git-logs mailing list