Added gas grid optimization, various despawn optimizations, new hauling optimizations utilizing events and regions, bugfixes for old patches and for vanilla functions too, as well as smaller additions. 1.3 files removed.
This commit is contained in:
@@ -12,14 +12,38 @@ public static class ActiveMods
|
||||
// GradientHair = Contains(PackageIDs.GRADIENT_HAIR),
|
||||
GraphicsSetter = Contains(PackageIDs.GRAPHICS_SETTINGS),
|
||||
Harmony = Contains(PackageIDs.HARMONY),
|
||||
HumanResources = Contains(PackageIDs.HUMAN_RESOURCES),
|
||||
Multiplayer = Contains(PackageIDs.MULTIPLAYER),
|
||||
PerformanceOptimizer = Contains(PackageIDs.PERFORMANCE_OPTIMIZER),
|
||||
Prepatcher = Contains(PackageIDs.PREPATCHER),
|
||||
UseBestMaterials = Contains(PackageIDs.USE_BEST_MATERIALS),
|
||||
VanillaExpandedFramework = Contains(PackageIDs.VANILLA_EXPANDED_FRAMEWORK);
|
||||
|
||||
// ModsConfig.IsActive does not ignore _steam postfixes, causing it to fail when local copies were made
|
||||
public static bool Contains(string packageID) => TryGetModMetaData(packageID) != null;
|
||||
|
||||
|
||||
public static bool ContainsAnyOf<T>(T packageIDs) where T : IEnumerable<string>
|
||||
{
|
||||
foreach (var id in packageIDs)
|
||||
{
|
||||
if (Contains(id))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool ContainsAllOf<T>(T packageIDs) where T : IEnumerable<string>
|
||||
{
|
||||
foreach (var id in packageIDs)
|
||||
{
|
||||
if (!Contains(id))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static ModMetaData? TryGetModMetaData(string packageID)
|
||||
=> ModLister.GetActiveModWithIdentifier(packageID, true);
|
||||
|
||||
@@ -55,7 +79,7 @@ public static class ActiveMods
|
||||
ThrowForMissingModDependency(nameof(Fishery));
|
||||
|
||||
if (!Harmony)
|
||||
ThrowForMissingModDependency(nameof(Harmony));
|
||||
WarnForMissingModDependency(nameof(Harmony));
|
||||
|
||||
VerifyLoadOrder(nameof(Fishery), PackageIDs.FISHERY, PackageIDs.PERFORMANCE_FISH, PackageIDs.BETTER_LOG);
|
||||
VerifyLoadOrder(nameof(Harmony), PackageIDs.HARMONY, PackageIDs.PERFORMANCE_FISH);
|
||||
@@ -70,14 +94,14 @@ public static class ActiveMods
|
||||
if (activeModsInLoadOrder.FindIndex(mod => mod.PackageId == dependencyID)
|
||||
> activeModsInLoadOrder.FindIndex(mod => dependingModIDs.Contains(mod.PackageId)))
|
||||
{
|
||||
ThrowForIncorrectLoadOrder(dependencyName);
|
||||
ErrorForIncorrectLoadOrder(dependencyName);
|
||||
}
|
||||
}
|
||||
|
||||
private static void CheckFisheryVersion()
|
||||
{
|
||||
if (FisheryLib.FisheryLib.VERSION > FisheryLib.FisheryLib.CurrentlyLoadedVersion)
|
||||
ThrowForOutdatedModDependency(nameof(Fishery));
|
||||
ErrorForOutdatedModDependency(nameof(Fishery));
|
||||
}
|
||||
|
||||
private static void CheckHarmonyVersion()
|
||||
@@ -86,23 +110,27 @@ public static class ActiveMods
|
||||
private static void CheckDependencyVersion(string dependencyName, Type dependencyType,
|
||||
string dependencyAssemblyName)
|
||||
{
|
||||
if (typeof(PerformanceFishMod).Assembly.GetReferencedAssemblies().First(assembly
|
||||
=> assembly.FullName.StartsWith($"{dependencyAssemblyName}, Version", StringComparison.Ordinal)).Version
|
||||
> dependencyType.Assembly.GetName().Version)
|
||||
if (typeof(PerformanceFishMod).Assembly.GetReferencedAssemblyVersion(dependencyAssemblyName)
|
||||
> dependencyType.Assembly.GetLoadedVersion())
|
||||
{
|
||||
ThrowForOutdatedModDependency(dependencyName);
|
||||
ErrorForOutdatedModDependency(dependencyName);
|
||||
}
|
||||
}
|
||||
|
||||
private static void ThrowForIncorrectLoadOrder(string dependencyName)
|
||||
=> ThrowHelper.ThrowOperationCanceledException($"Incorrect load order detected. {
|
||||
dependencyName} must be loaded before any mod depending on it.");
|
||||
private static void ErrorForIncorrectLoadOrder(string dependencyName)
|
||||
=> Log.Error($"Incorrect load order detected. {dependencyName} must be loaded before any mod depending on it.");
|
||||
|
||||
private static void ThrowForOutdatedModDependency(string modName)
|
||||
=> ThrowHelper.ThrowOperationCanceledException($"Outdated {modName} mod detected. {
|
||||
private static void ErrorForOutdatedModDependency(string modName)
|
||||
=> Log.Error($"Outdated {modName} mod detected. {
|
||||
modName} must be updated for Performance Fish to work correctly");
|
||||
|
||||
private static void ThrowForMissingModDependency(string modName)
|
||||
=> ThrowHelper.ThrowOperationCanceledException(
|
||||
$"{modName} mod is missing. Performance Fish requires this mod in order to function.");
|
||||
{
|
||||
Log.Error($"{modName} mod is missing. Performance Fish requires this mod in order to function.");
|
||||
ThrowHelper.ThrowOperationCanceledException();
|
||||
}
|
||||
|
||||
private static void WarnForMissingModDependency(string modName)
|
||||
=> Log.Warning(
|
||||
$"{modName} mod is missing. Performance Fish may not work correctly without this dependency.");
|
||||
}
|
||||
Reference in New Issue
Block a user