SDM_LethalCompany_Mod/ScarletMansion/ScarletMansion/ModPatch/ModPatch.cs
2024-04-28 14:41:33 -07:00

56 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BepInEx;
using BepInEx.Bootstrap;
namespace ScarletMansion.ModPatch {
public abstract class ModPatch {
public string guid;
public bool active;
public virtual string version => null;
public virtual string warningMessage => null;
public abstract void AddPatch();
public ModPatch(string guid){
this.guid = guid;
active = false;
}
public void CheckIfActive(){
var modLoaded = Chainloader.PluginInfos.ContainsKey(guid);
if (!modLoaded) return;
bool validVersion;
var pluginInfo = Chainloader.PluginInfos[guid];
var loadedVersion = pluginInfo.Metadata.Version;
if (string.IsNullOrWhiteSpace(version)){
validVersion = true;
} else {
var requiredVersion = new Version(version);
validVersion = loadedVersion >= requiredVersion;
}
if (validVersion) {
active = true;
Plugin.logger.LogInfo($"Loading compability patch for {guid}");
if (!string.IsNullOrWhiteSpace(warningMessage)) Plugin.logger.LogWarning(warningMessage);
}
else {
Plugin.logger.LogWarning($"Failed to load compability patch for {guid}. Requires version {version} but found {loadedVersion}");
}
}
public void Activate(){
if (active)
AddPatch();
}
}
}