[Scummvm-git-logs] scummvm master -> 8da787840da824f0154375e6d8299a5c6675426e

elasota noreply at scummvm.org
Thu Jul 14 08:09:05 UTC 2022


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:
2427ecd3e4 MTROPOLIS: Refactor some static interfaces to suppress compiler warnings
8da787840d MTROPOLIS: Move some defs around to fix def shadowing warnings


Commit: 2427ecd3e463f8a029286ddc643f852287755894
    https://github.com/scummvm/scummvm/commit/2427ecd3e463f8a029286ddc643f852287755894
Author: elasota (ejlasota at gmail.com)
Date: 2022-07-14T02:35:21-04:00

Commit Message:
MTROPOLIS: Refactor some static interfaces to suppress compiler warnings

Changed paths:
    engines/mtropolis/asset_factory.cpp
    engines/mtropolis/asset_factory.h
    engines/mtropolis/modifier_factory.cpp
    engines/mtropolis/modifier_factory.h
    engines/mtropolis/runtime.cpp
    engines/mtropolis/runtime.h


diff --git a/engines/mtropolis/asset_factory.cpp b/engines/mtropolis/asset_factory.cpp
index 08760613693..7b0071bb410 100644
--- a/engines/mtropolis/asset_factory.cpp
+++ b/engines/mtropolis/asset_factory.cpp
@@ -28,17 +28,17 @@ AssetLoaderContext::AssetLoaderContext(size_t pStreamIndex) : streamIndex(pStrea
 }
 
 template<typename TAsset, typename TAssetData>
-class AssetFactory : public IAssetFactory {
+class AssetFactory {
 public:
-	Common::SharedPtr<Asset> createAsset(AssetLoaderContext &context, const Data::DataObject &dataObject) const override;
-	static IAssetFactory *getInstance();
+	static Common::SharedPtr<Asset> createAsset(AssetLoaderContext &context, const Data::DataObject &dataObject);
+	static SIAssetFactory *getInstance();
 
 private:
-	static AssetFactory<TAsset, TAssetData> _instance;
+	static SIAssetFactory _instance;
 };
 
 template<typename TAsset, typename TAssetData>
-Common::SharedPtr<Asset> AssetFactory<TAsset, TAssetData>::createAsset(AssetLoaderContext &context, const Data::DataObject &dataObject) const {
+Common::SharedPtr<Asset> AssetFactory<TAsset, TAssetData>::createAsset(AssetLoaderContext &context, const Data::DataObject &dataObject) {
 	Common::SharedPtr<TAsset> asset(new TAsset());
 
 	if (!asset->load(context, static_cast<const TAssetData &>(dataObject)))
@@ -48,14 +48,16 @@ Common::SharedPtr<Asset> AssetFactory<TAsset, TAssetData>::createAsset(AssetLoad
 }
 
 template<typename TAsset, typename TAssetData>
-IAssetFactory *AssetFactory<TAsset, TAssetData>::getInstance() {
+SIAssetFactory *AssetFactory<TAsset, TAssetData>::getInstance() {
 	return &_instance;
 }
 
 template<typename TAsset, typename TAssetData>
-AssetFactory<TAsset, TAssetData> AssetFactory<TAsset, TAssetData>::_instance;
+SIAssetFactory AssetFactory<TAsset, TAssetData>::_instance = {
+	AssetFactory<TAsset, TAssetData>::createAsset
+};
 
-IAssetFactory *getAssetFactoryForDataObjectType(const Data::DataObjectTypes::DataObjectType dataObjectType) {
+SIAssetFactory *getAssetFactoryForDataObjectType(const Data::DataObjectTypes::DataObjectType dataObjectType) {
 	switch (dataObjectType) {
 	case Data::DataObjectTypes::kColorTableAsset:
 		return AssetFactory<ColorTableAsset, Data::ColorTableAsset>::getInstance();
diff --git a/engines/mtropolis/asset_factory.h b/engines/mtropolis/asset_factory.h
index 7466290fb3d..997bb2362fa 100644
--- a/engines/mtropolis/asset_factory.h
+++ b/engines/mtropolis/asset_factory.h
@@ -34,11 +34,11 @@ struct AssetLoaderContext {
 	size_t streamIndex;
 };
 
-struct IAssetFactory : public IInterfaceBase {
-	virtual Common::SharedPtr<Asset> createAsset(AssetLoaderContext &context, const Data::DataObject &dataObject) const = 0;
+struct SIAssetFactory {
+	Common::SharedPtr<Asset> (*createAsset)(AssetLoaderContext &context, const Data::DataObject &dataObject);
 };
 
-IAssetFactory *getAssetFactoryForDataObjectType(Data::DataObjectTypes::DataObjectType dataObjectType);
+SIAssetFactory *getAssetFactoryForDataObjectType(Data::DataObjectTypes::DataObjectType dataObjectType);
 
 } // End of namespace MTropolis
 
diff --git a/engines/mtropolis/modifier_factory.cpp b/engines/mtropolis/modifier_factory.cpp
index e2b2cb01559..6f4d7a94e24 100644
--- a/engines/mtropolis/modifier_factory.cpp
+++ b/engines/mtropolis/modifier_factory.cpp
@@ -31,17 +31,17 @@ PlugInModifierLoaderContext::PlugInModifierLoaderContext(ModifierLoaderContext &
 }
 
 template<typename TModifier, typename TModifierData>
-class ModifierFactory : public IModifierFactory {
+class ModifierFactory {
 public:
-	Common::SharedPtr<Modifier> createModifier(ModifierLoaderContext &context, const Data::DataObject &dataObject) const override;
-	static IModifierFactory *getInstance();
+	static Common::SharedPtr<Modifier> createModifier(ModifierLoaderContext &context, const Data::DataObject &dataObject);
+	static SIModifierFactory *getInstance();
 
 private:
-	static ModifierFactory<TModifier, TModifierData> _instance;
+	static SIModifierFactory _instance;
 };
 
 template<typename TModifier, typename TModifierData>
-Common::SharedPtr<Modifier> ModifierFactory<TModifier, TModifierData>::createModifier(ModifierLoaderContext &context, const Data::DataObject &dataObject) const {
+Common::SharedPtr<Modifier> ModifierFactory<TModifier, TModifierData>::createModifier(ModifierLoaderContext &context, const Data::DataObject &dataObject) {
 	Common::SharedPtr<TModifier> modifier(new TModifier());
 
 	if (!modifier->load(context, static_cast<const TModifierData &>(dataObject)))
@@ -57,15 +57,17 @@ Common::SharedPtr<Modifier> ModifierFactory<TModifier, TModifierData>::createMod
 }
 
 template<typename TModifier, typename TModifierData>
-IModifierFactory *ModifierFactory<TModifier, TModifierData>::getInstance() {
+SIModifierFactory *ModifierFactory<TModifier, TModifierData>::getInstance() {
 	return &_instance;
 }
 
 template<typename TModifier, typename TModifierData>
-ModifierFactory<TModifier, TModifierData> ModifierFactory<TModifier, TModifierData>::_instance;
+SIModifierFactory ModifierFactory<TModifier, TModifierData>::_instance = {
+	ModifierFactory<TModifier, TModifierData>::createModifier
+};
 
 
-IModifierFactory *getModifierFactoryForDataObjectType(const Data::DataObjectTypes::DataObjectType dataObjectType) {
+SIModifierFactory *getModifierFactoryForDataObjectType(const Data::DataObjectTypes::DataObjectType dataObjectType) {
 	switch (dataObjectType) {
 	case Data::DataObjectTypes::kBehaviorModifier:
 		return ModifierFactory<BehaviorModifier, Data::BehaviorModifier>::getInstance();
diff --git a/engines/mtropolis/modifier_factory.h b/engines/mtropolis/modifier_factory.h
index 63c1760b517..e0bebd1accb 100644
--- a/engines/mtropolis/modifier_factory.h
+++ b/engines/mtropolis/modifier_factory.h
@@ -33,8 +33,8 @@ struct ModifierLoaderContext {
 	ChildLoaderStack *childLoaderStack;
 };
 
-struct IModifierFactory : public IInterfaceBase {
-	virtual Common::SharedPtr<Modifier> createModifier(ModifierLoaderContext &context, const Data::DataObject &dataObject) const = 0;
+struct SIModifierFactory {
+	Common::SharedPtr<Modifier> (*createModifier)(ModifierLoaderContext &context, const Data::DataObject &dataObject);
 };
 
 struct IPlugInModifierFactory : public IInterfaceBase {
@@ -98,7 +98,7 @@ PlugIn& PlugInModifierFactory<TModifier, TModifierData>::getPlugIn() const {
 	return _plugIn;
 }
 
-IModifierFactory *getModifierFactoryForDataObjectType(Data::DataObjectTypes::DataObjectType dataObjectType);
+SIModifierFactory *getModifierFactoryForDataObjectType(Data::DataObjectTypes::DataObjectType dataObjectType);
 
 } // End of namespace MTropolis
 
diff --git a/engines/mtropolis/runtime.cpp b/engines/mtropolis/runtime.cpp
index edbe6fe1645..f8b7065f9b6 100644
--- a/engines/mtropolis/runtime.cpp
+++ b/engines/mtropolis/runtime.cpp
@@ -6338,7 +6338,7 @@ Common::SharedPtr<Modifier> Project::loadModifierObject(ModifierLoaderContext &l
 
 		modifier = factory->createModifier(loaderContext, plugInData);
 	} else {
-		IModifierFactory *factory = getModifierFactoryForDataObjectType(dataObject.getType());
+		SIModifierFactory *factory = getModifierFactoryForDataObjectType(dataObject.getType());
 
 		if (!factory)
 			error("Unknown or unsupported modifier type, or non-modifier encountered where a modifier was expected");
@@ -6630,7 +6630,7 @@ void Project::loadContextualObject(size_t streamIndex, ChildLoaderStack &stack,
 void Project::loadAssetDef(size_t streamIndex, AssetDefLoaderContext& context, const Data::DataObject& dataObject) {
 	assert(Data::DataObjectTypes::isAsset(dataObject.getType()));
 
-	IAssetFactory *factory = getAssetFactoryForDataObjectType(dataObject.getType());
+	SIAssetFactory *factory = getAssetFactoryForDataObjectType(dataObject.getType());
 	if (!factory) {
 		error("Unimplemented asset type");
 		return;
diff --git a/engines/mtropolis/runtime.h b/engines/mtropolis/runtime.h
index 18437134f27..14c418f07a7 100644
--- a/engines/mtropolis/runtime.h
+++ b/engines/mtropolis/runtime.h
@@ -95,7 +95,6 @@ struct ICollider;
 struct ILoadUIProvider;
 struct IMessageConsumer;
 struct IModifierContainer;
-struct IModifierFactory;
 struct IPlugInModifierFactory;
 struct IPlugInModifierFactoryAndDataFactory;
 struct ISaveUIProvider;
@@ -103,6 +102,7 @@ struct IStructuralReferenceVisitor;
 struct MessageProperties;
 struct ModifierLoaderContext;
 struct PlugInModifierLoaderContext;
+struct SIModifierFactory;
 template<typename TElement, typename TElementData> class ElementFactory;
 
 enum MiniscriptInstructionOutcome {


Commit: 8da787840da824f0154375e6d8299a5c6675426e
    https://github.com/scummvm/scummvm/commit/8da787840da824f0154375e6d8299a5c6675426e
Author: elasota (ejlasota at gmail.com)
Date: 2022-07-14T02:35:21-04:00

Commit Message:
MTROPOLIS: Move some defs around to fix def shadowing warnings

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


diff --git a/engines/mtropolis/data.h b/engines/mtropolis/data.h
index 2db06c5ee35..cee24b6e5b8 100644
--- a/engines/mtropolis/data.h
+++ b/engines/mtropolis/data.h
@@ -529,23 +529,53 @@ protected:
 };
 
 namespace ElementFlags {
-	enum ElementFlags {
-		kNotDirectToScreen	= 0x00001000,
-		kHidden				= 0x00008000,
-		kPaused				= 0x00010000,
-		kExpandedInEditor	= 0x00800000,
-		kCacheBitmap		= 0x02000000,
-		kSelectedInEditor	= 0x10000000,
-	};
+
+enum ElementFlags {
+	kNotDirectToScreen	= 0x00001000,
+	kHidden				= 0x00008000,
+	kPaused				= 0x00010000,
+	kExpandedInEditor	= 0x00800000,
+	kCacheBitmap		= 0x02000000,
+	kSelectedInEditor	= 0x10000000,
+};
+
 } // End of namespace ElementFlags
 
 namespace AnimationFlags {
-	enum AnimationFlags {
-		kAlternate			= 0x10000000,
-		kLoop				= 0x08000000,
-		kPlayEveryFrame		= 0x02000000,
-	};
-}
+
+enum AnimationFlags {
+	kAlternate			= 0x10000000,
+	kLoop				= 0x08000000,
+	kPlayEveryFrame		= 0x02000000,
+};
+
+} // End of namespace AnimationFlags
+
+namespace SceneTransitionTypes {
+
+enum SceneTransitionType {
+	kNone = 0,
+	kPatternDissolve = 0x0406,
+	kRandomDissolve = 0x0410, // No steps
+	kFade = 0x041a,
+	kSlide = 0x03e8, // Directional
+	kPush = 0x03f2,  // Directional
+	kZoom = 0x03fc,
+	kWipe = 0x0424, // Directional
+};
+
+} // End of namespace SceneTransitionTypes
+
+namespace SceneTransitionDirections {
+
+enum SceneTransitionDirection {
+	kUp = 0x384,
+	kDown = 0x385,
+	kLeft = 0x386,
+	kRight = 0x387,
+};
+
+} // End of namespace SceneTransitionDirections
 
 struct GraphicElement : public StructuralDef {
 	// Possible element flags: NotDirectToScreen, CacheBitmap, Hidden
@@ -1085,6 +1115,18 @@ protected:
 };
 
 struct ElementTransitionModifier : public DataObject {
+	enum TransitionType {
+		kTransitionTypeRectangularIris = 0x03e8,
+		kTransitionTypeOvalIris = 0x03f2,
+		kTransitionTypeZoom = 0x044c,
+		kTransitionTypeFade = 0x2328,
+	};
+
+	enum RevealType {
+		kRevealTypeReveal = 0,
+		kRevealTypeConceal = 1,
+	};
+
 	TypicalModifierHeader modHeader;
 
 	Event enableWhen;
diff --git a/engines/mtropolis/modifiers.cpp b/engines/mtropolis/modifiers.cpp
index cf7451fdd4d..d3dfa5e83ed 100644
--- a/engines/mtropolis/modifiers.cpp
+++ b/engines/mtropolis/modifiers.cpp
@@ -838,8 +838,10 @@ bool SceneTransitionModifier::load(ModifierLoaderContext &context, const Data::S
 
 	_duration = data.duration;
 	_steps = data.steps;
-	_transitionType = static_cast<TransitionType>(data.transitionType);
-	_transitionDirection = static_cast<TransitionDirection>(data.direction);
+	if (!SceneTransitionTypes::loadFromData(_transitionType, data.transitionType))
+		return false;
+	if (!SceneTransitionDirections::loadFromData(_transitionDirection, data.direction))
+		return false;
 
 	return true;
 }
@@ -861,8 +863,34 @@ bool ElementTransitionModifier::load(ModifierLoaderContext &context, const Data:
 
 	_rate = data.rate;
 	_steps = data.steps;
-	_transitionType = static_cast<TransitionType>(data.transitionType);
-	_revealType = static_cast<RevealType>(data.revealType);
+
+	switch (data.transitionType) {
+	case Data::ElementTransitionModifier::kTransitionTypeFade:
+		_transitionType = kTransitionTypeFade;
+		break;
+	case Data::ElementTransitionModifier::kTransitionTypeOvalIris:
+		_transitionType = kTransitionTypeOvalIris;
+		break;
+	case Data::ElementTransitionModifier::kTransitionTypeRectangularIris:
+		_transitionType = kTransitionTypeRectangularIris;
+		break;
+	case Data::ElementTransitionModifier::kTransitionTypeZoom:
+		_transitionType = kTransitionTypeZoom;
+		break;
+	default:
+		return false;
+	}
+
+	switch (data.revealType) {
+	case Data::ElementTransitionModifier::kRevealTypeConceal:
+		_revealType = kRevealTypeConceal;
+		break;
+	case Data::ElementTransitionModifier::kRevealTypeReveal:
+		_revealType = kRevealTypeReveal;
+		break;
+	default:
+		return false;
+	}
 
 	return true;
 }
diff --git a/engines/mtropolis/modifiers.h b/engines/mtropolis/modifiers.h
index 45a8f4a552b..85101ba75fb 100644
--- a/engines/mtropolis/modifiers.h
+++ b/engines/mtropolis/modifiers.h
@@ -361,8 +361,8 @@ private:
 
 	uint32 _duration;	// 6000000 is maximum
 	uint16 _steps;
-	TransitionType _transitionType;
-	TransitionDirection _transitionDirection;
+	SceneTransitionTypes::SceneTransitionType _transitionType;
+	SceneTransitionDirections::SceneTransitionDirection _transitionDirection;
 };
 
 class ElementTransitionModifier : public Modifier {
@@ -373,15 +373,15 @@ public:
 	VThreadState consumeMessage(Runtime *runtime, const Common::SharedPtr<MessageProperties> &msg) override;
 
 	enum TransitionType {
-		kTransitionTypeRectangularIris = 0x03e8,
-		kTransitionTypeOvalIris = 0x03f2,
-		kTransitionTypeZoom = 0x044c,
-		kTransitionTypeFade = 0x2328,
+		kTransitionTypeRectangularIris,
+		kTransitionTypeOvalIris,
+		kTransitionTypeZoom,
+		kTransitionTypeFade,
 	};
 
 	enum RevealType {
-		kRevealTypeReveal = 0,
-		kRevealTypeConceal = 1,
+		kRevealTypeReveal,
+		kRevealTypeConceal,
 	};
 
 #ifdef MTROPOLIS_DEBUG_ENABLE
diff --git a/engines/mtropolis/runtime.cpp b/engines/mtropolis/runtime.cpp
index f8b7065f9b6..c9688035372 100644
--- a/engines/mtropolis/runtime.cpp
+++ b/engines/mtropolis/runtime.cpp
@@ -259,6 +259,61 @@ size_t caseInsensitiveFind(const Common::String &strToSearch, const Common::Stri
 	return Common::String::npos;
 }
 
+bool SceneTransitionTypes::loadFromData(SceneTransitionType &transType, uint16 data) {
+	switch (data) {
+	case Data::SceneTransitionTypes::kNone:
+		transType = kNone;
+		break;
+	case Data::SceneTransitionTypes::kPatternDissolve:
+		transType = kPatternDissolve;
+		break;
+	case Data::SceneTransitionTypes::kRandomDissolve:
+		transType = kRandomDissolve;
+		break;
+	case Data::SceneTransitionTypes::kFade:
+		transType = kFade;
+		break;
+	case Data::SceneTransitionTypes::kSlide:
+		transType = kSlide;
+		break;
+	case Data::SceneTransitionTypes::kPush:
+		transType = kPush;
+		break;
+	case Data::SceneTransitionTypes::kZoom:
+		transType = kZoom;
+		break;
+	case Data::SceneTransitionTypes::kWipe:
+		transType = kWipe;
+		break;
+	default:
+		return false;
+	}
+
+	return true;
+}
+
+
+bool SceneTransitionDirections::loadFromData(SceneTransitionDirection &transDir, uint16 data) {
+	switch (data) {
+	case Data::SceneTransitionDirections::kUp:
+		transDir = kUp;
+		break;
+	case Data::SceneTransitionDirections::kDown:
+		transDir = kDown;
+		break;
+	case Data::SceneTransitionDirections::kLeft:
+		transDir = kLeft;
+		break;
+	case Data::SceneTransitionDirections::kRight:
+		transDir = kRight;
+		break;
+	default:
+		return false;
+	}
+
+	return true;
+}
+
 bool EventIDs::isCommand(EventID eventID) {
 	switch (eventID) {
 	case kElementShow:
@@ -4199,7 +4254,7 @@ void Runtime::executeCompleteTransitionToScene(const Common::SharedPtr<Structura
 
 	// Scene transitions have to be set up by the destination scene
 	_sceneTransitionState = kSceneTransitionStateWaitingForDraw;
-	_sceneTransitionEffect.transitionType = kTransitionTypeNone;
+	_sceneTransitionEffect.transitionType = SceneTransitionTypes::kNone;
 	_sceneTransitionEffect.duration = 0;
 
 	executeSharedScenePostSceneChangeActions();
diff --git a/engines/mtropolis/runtime.h b/engines/mtropolis/runtime.h
index 14c418f07a7..c736ce482ab 100644
--- a/engines/mtropolis/runtime.h
+++ b/engines/mtropolis/runtime.h
@@ -134,24 +134,36 @@ enum ColorDepthMode {
 	kColorDepthModeInvalid,
 };
 
-enum TransitionType {
-	kTransitionTypeNone = 0,
-	kTransitionTypePatternDissolve = 0x0406,
-	kTransitionTypeRandomDissolve = 0x0410, // No steps
-	kTransitionTypeFade = 0x041a,
-	kTransitionTypeSlide = 0x03e8, // Directional
-	kTransitionTypePush = 0x03f2,  // Directional
-	kTransitionTypeZoom = 0x03fc,
-	kTransitionTypeWipe = 0x0424, // Directional
+namespace SceneTransitionTypes {
+
+enum SceneTransitionType {
+	kNone,
+	kPatternDissolve,
+	kRandomDissolve, // No steps
+	kFade,
+	kSlide, // Directional
+	kPush,  // Directional
+	kZoom,
+	kWipe, // Directional
 };
 
-enum TransitionDirection {
-	kTransitionDirectionUp = 0x385,
-	kTransitionDirectionDown = 0x385,
-	kTransitionDirectionLeft = 0x386,
-	kTransitionDirectionRight = 0x387,
+bool loadFromData(SceneTransitionType &transType, uint16 data);
+
+} // End of namespace SceneTransitionTypes
+
+namespace SceneTransitionDirections {
+
+enum SceneTransitionDirection {
+	kUp,
+	kDown,
+	kLeft,
+	kRight,
 };
 
+bool loadFromData(SceneTransitionDirection &transDir, uint16 data);
+
+} // End of namespace SceneTransitionDirections
+
 enum ConstraintDirection {
 	kConstraintDirectionNone,
 	kConstraintDirectionHorizontal,
@@ -1277,8 +1289,8 @@ struct HighLevelSceneTransition {
 struct SceneTransitionEffect {
 	uint32 duration; // 6000000 is maximum
 	uint16 steps;
-	TransitionType transitionType;
-	TransitionDirection transitionDirection;
+	SceneTransitionTypes::SceneTransitionType transitionType;
+	SceneTransitionDirections::SceneTransitionDirection transitionDirection;
 };
 
 class MessageDispatch {




More information about the Scummvm-git-logs mailing list