[Scummvm-git-logs] scummvm master -> 9aff6a5094d1eb090c3a2139b770f6afb2356e07

elasota noreply at scummvm.org
Sun Sep 25 00:50:49 UTC 2022


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

Summary:
9aff6a5094 MTROPOLIS: Add sound fade modifier stub


Commit: 9aff6a5094d1eb090c3a2139b770f6afb2356e07
    https://github.com/scummvm/scummvm/commit/9aff6a5094d1eb090c3a2139b770f6afb2356e07
Author: elasota (ejlasota at gmail.com)
Date: 2022-09-24T20:50:13-04:00

Commit Message:
MTROPOLIS: Add sound fade modifier stub

Changed paths:
    engines/mtropolis/data.cpp
    engines/mtropolis/data.h
    engines/mtropolis/modifier_factory.cpp
    engines/mtropolis/modifiers.cpp
    engines/mtropolis/modifiers.h


diff --git a/engines/mtropolis/data.cpp b/engines/mtropolis/data.cpp
index a6080bc6e3c..f1602980e29 100644
--- a/engines/mtropolis/data.cpp
+++ b/engines/mtropolis/data.cpp
@@ -1185,6 +1185,24 @@ DataReadErrorCode ColorTableModifier::load(DataReader &reader) {
 	return kDataReadErrorNone;
 }
 
+SoundFadeModifier::SoundFadeModifier() : unknown1{0, 0, 0, 0}, fadeToVolume(0), codedDuration{0, 0, 0, 0},
+	unknown2{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,} {
+}
+
+DataReadErrorCode SoundFadeModifier::load(DataReader &reader) {
+	if (_revision != 1000)
+		return kDataReadErrorUnsupportedRevision;
+
+	if (!modHeader.load(reader))
+		return kDataReadErrorReadFailed;
+
+	if (!reader.readBytes(unknown1) || !enableWhen.load(reader) || !disableWhen.load(reader)
+		|| !reader.readU16(fadeToVolume) || !reader.readBytes(codedDuration) || !reader.readBytes(unknown2))
+		return kDataReadErrorReadFailed;
+
+	return kDataReadErrorNone;
+}
+
 SaveAndRestoreModifier::SaveAndRestoreModifier()
 	: unknown1{0, 0, 0, 0}, saveWhen(Event::createDefault()), restoreWhen(Event::createDefault()),
 	  unknown5{0, 0, 0, 0, 0, 0, 0, 0}, lengthOfFilePath(0), lengthOfFileName(0), lengthOfVariableName(0), lengthOfVariableString(0) {
@@ -2314,6 +2332,9 @@ DataReadErrorCode loadDataObject(const PlugInModifierRegistry &registry, DataRea
 	case DataObjectTypes::kColorTableModifier:
 		dataObject = new ColorTableModifier();
 		break;
+	case DataObjectTypes::kSoundFadeModifier:
+		dataObject = new SoundFadeModifier();
+		break;
 	case DataObjectTypes::kSaveAndRestoreModifier:
 		dataObject = new SaveAndRestoreModifier();
 		break;
diff --git a/engines/mtropolis/data.h b/engines/mtropolis/data.h
index c6c8cbf54a7..3c34a51dc24 100644
--- a/engines/mtropolis/data.h
+++ b/engines/mtropolis/data.h
@@ -950,6 +950,21 @@ protected:
 	DataReadErrorCode load(DataReader &reader) override;
 };
 
+struct SoundFadeModifier : public DataObject {
+	SoundFadeModifier();
+
+	TypicalModifierHeader modHeader;
+	uint8 unknown1[4];
+	Event enableWhen;
+	Event disableWhen;
+	uint16 fadeToVolume;
+	uint8 codedDuration[4];
+	uint8 unknown2[18];
+
+protected:
+	DataReadErrorCode load(DataReader &reader) override;
+};
+
 struct SaveAndRestoreModifier : public DataObject {
 	SaveAndRestoreModifier();
 
diff --git a/engines/mtropolis/modifier_factory.cpp b/engines/mtropolis/modifier_factory.cpp
index c8339c3b3d5..a996e4cf571 100644
--- a/engines/mtropolis/modifier_factory.cpp
+++ b/engines/mtropolis/modifier_factory.cpp
@@ -75,6 +75,8 @@ SIModifierFactory *getModifierFactoryForDataObjectType(const Data::DataObjectTyp
 		return ModifierFactory<MiniscriptModifier, Data::MiniscriptModifier>::getInstance();
 	case Data::DataObjectTypes::kColorTableModifier:
 		return ModifierFactory<ColorTableModifier, Data::ColorTableModifier>::getInstance();
+	case Data::DataObjectTypes::kSoundFadeModifier:
+		return ModifierFactory<SoundFadeModifier, Data::SoundFadeModifier>::getInstance();
 	case Data::DataObjectTypes::kSaveAndRestoreModifier:
 		return ModifierFactory<SaveAndRestoreModifier, Data::SaveAndRestoreModifier>::getInstance();
 	case Data::DataObjectTypes::kAliasModifier:
diff --git a/engines/mtropolis/modifiers.cpp b/engines/mtropolis/modifiers.cpp
index 5f0669432a9..d218b5e7dd2 100644
--- a/engines/mtropolis/modifiers.cpp
+++ b/engines/mtropolis/modifiers.cpp
@@ -302,6 +302,40 @@ bool SaveAndRestoreModifier::load(ModifierLoaderContext &context, const Data::Sa
 	return true;
 }
 
+
+SoundFadeModifier::SoundFadeModifier() : _fadeToVolume(0), _durationMSec(0) {
+}
+
+bool SoundFadeModifier::load(ModifierLoaderContext &context, const Data::SoundFadeModifier &data) {
+	if (!loadTypicalHeader(data.modHeader))
+		return false;
+
+	if (!_enableWhen.load(data.enableWhen) || !_disableWhen.load(data.disableWhen))
+		return false;
+
+	_fadeToVolume = data.fadeToVolume;
+	_durationMSec = ((((data.codedDuration[0] * 60) + data.codedDuration[1]) * 60 + data.codedDuration[2]) * 100 + data.codedDuration[3]) * 10;
+
+	return true;
+}
+
+bool SoundFadeModifier::respondsToEvent(const Event &evt) const {
+	return evt.respondsTo(_enableWhen) || evt.respondsTo(_disableWhen);
+}
+
+VThreadState SoundFadeModifier::consumeMessage(Runtime *runtime, const Common::SharedPtr<MessageProperties> &msg) {
+	warning("Sound fade modifier is not implemented");
+	return kVThreadReturn;
+}
+
+Common::SharedPtr<Modifier> SoundFadeModifier::shallowClone() const {
+	return Common::SharedPtr<Modifier>(new SoundFadeModifier(*this));
+}
+
+const char *SoundFadeModifier::getDefaultName() const {
+	return "Sound Fade Modifier";
+}
+
 bool SaveAndRestoreModifier::respondsToEvent(const Event &evt) const {
 	if (_saveWhen.respondsTo(evt) || _restoreWhen.respondsTo(evt))
 		return true;
diff --git a/engines/mtropolis/modifiers.h b/engines/mtropolis/modifiers.h
index 126be254a59..3ea119e7cdd 100644
--- a/engines/mtropolis/modifiers.h
+++ b/engines/mtropolis/modifiers.h
@@ -150,6 +150,33 @@ private:
 	uint32 _assetID;
 };
 
+class SoundFadeModifier : public Modifier {
+public:
+	SoundFadeModifier();
+
+	bool load(ModifierLoaderContext &context, const Data::SoundFadeModifier &data);
+
+	bool respondsToEvent(const Event &evt) const override;
+	VThreadState consumeMessage(Runtime *runtime, const Common::SharedPtr<MessageProperties> &msg) override;
+
+	void disable(Runtime *runtime) override {}
+
+#ifdef MTROPOLIS_DEBUG_ENABLE
+	const char *debugGetTypeName() const override { return "Sound Fade Modifier"; }
+	SupportStatus debugGetSupportStatus() const override { return kSupportStatusNone; }
+#endif
+
+private:
+	Common::SharedPtr<Modifier> shallowClone() const override;
+	const char *getDefaultName() const override;
+
+	Event _enableWhen;
+	Event _disableWhen;
+
+	uint16 _fadeToVolume;
+	uint32 _durationMSec;
+};
+
 class SaveAndRestoreModifier : public Modifier {
 public:
 	bool load(ModifierLoaderContext &context, const Data::SaveAndRestoreModifier &data);




More information about the Scummvm-git-logs mailing list