#pragma once #include #include "FlagMap.h" #include "Logger.h" #include "xml/ModuleConfiguration.h" class CompositeDependency; class StepViewModel; class ConditionTester { public: explicit ConditionTester(MOBase::IOrganizer* organizer) : mOrganizer(organizer) {} bool isStepVisible(const std::shared_ptr& flags, const CompositeDependency& compositeDependency, int stepIndex, const std::vector>& steps) const; bool testCompositeDependency(const std::shared_ptr& flags, const CompositeDependency& compositeDependency) const; static bool testFlagDependency(const std::shared_ptr& flags, const FlagDependency& flagDependency); [[nodiscard]] bool testFileDependency(const FileDependency& fileDependency) const; bool testGameDependency(const GameDependency& gameDependency) const; private: Logger& log = Logger::getInstance(); MOBase::IOrganizer* mOrganizer; friend class FomodViewModel; [[nodiscard]] FileDependencyTypeEnum getFileDependencyStateForPlugin(const std::string& pluginName) const; PluginTypeEnum getPluginTypeDescriptorState(const std::shared_ptr& plugin, const std::shared_ptr& flags) const; mutable std::unordered_map pluginStateCache; };