[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