#pragma once #include "ProfileUtils.h" #include "ProfilePatch.h" class MinecraftProfile; class ProfileStrategy { friend class MinecraftProfile; public: virtual ~ProfileStrategy(){}; /// load the patch files into the profile virtual void load() = 0; /// reset the order of patches virtual bool resetOrder() = 0; /// save the order of patches, given the order virtual bool saveOrder(ProfileUtils::PatchOrder order) = 0; /// install a list of jar mods into the instance virtual bool installJarMods(QStringList filepaths) = 0; /// remove any files or records that constitute the version patch virtual bool removePatch(ProfilePatchPtr jarMod) = 0; /// make the patch custom, if possible virtual bool customizePatch(ProfilePatchPtr patch) = 0; /// revert the custom patch to 'vanilla', if possible virtual bool revertPatch(ProfilePatchPtr patch) = 0; protected: MinecraftProfile *profile; };