[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