Add recipe output multiplier
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
using System.Linq;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using BepInEx;
|
using BepInEx;
|
||||||
using BepInEx.Configuration;
|
using BepInEx.Configuration;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
@@ -30,6 +32,8 @@ namespace CykaOfIndustry {
|
|||||||
public static ConfigEntry<float> transportSpeedMultiplier;
|
public static ConfigEntry<float> transportSpeedMultiplier;
|
||||||
public static ConfigEntry<float> shipyardCargoMultiplier;
|
public static ConfigEntry<float> shipyardCargoMultiplier;
|
||||||
public static ConfigEntry<int> autosaveInterval;
|
public static ConfigEntry<int> autosaveInterval;
|
||||||
|
public static ConfigEntry<string> recipeMultipliers;
|
||||||
|
public static Dictionary<string, int> recipeMultipliersDict;
|
||||||
|
|
||||||
public static ConfigEntry<bool> debugMode;
|
public static ConfigEntry<bool> debugMode;
|
||||||
|
|
||||||
@@ -71,6 +75,18 @@ namespace CykaOfIndustry {
|
|||||||
new ConfigDescription("Shipyard Cargo Multiplier"));
|
new ConfigDescription("Shipyard Cargo Multiplier"));
|
||||||
autosaveInterval = Config.Bind("General", "Autosave Interval", 1,
|
autosaveInterval = Config.Bind("General", "Autosave Interval", 1,
|
||||||
new ConfigDescription("Autosave Interval in minutes"));
|
new ConfigDescription("Autosave Interval in minutes"));
|
||||||
|
recipeMultipliers = Config.Bind("General", "Recipe Multipliers", "dirt:4",
|
||||||
|
new ConfigDescription("Recipe Multipliers"));
|
||||||
|
|
||||||
|
recipeMultipliersDict = recipeMultipliers.Value.Split(',')
|
||||||
|
.ToDictionary(x => x.Split(':')[0], x => int.Parse(x.Split(':')[1]));
|
||||||
|
recipeMultipliers.SettingChanged += (sender, args) => {
|
||||||
|
recipeMultipliersDict = recipeMultipliers.Value.Split(',')
|
||||||
|
.ToDictionary(x => x.Split(':')[0], x => int.Parse(x.Split(':')[1]));
|
||||||
|
Console.WriteLine("IndustrialCyka: Recipe multipliers parsed as:");
|
||||||
|
foreach (var kvp in recipeMultipliersDict)
|
||||||
|
Console.WriteLine("\tIndustrialCyka: {0} x {1}", kvp.Key, kvp.Value);
|
||||||
|
};
|
||||||
|
|
||||||
debugMode = Config.Bind("General", "Debug Mode", false, new ConfigDescription("Debug Mode"));
|
debugMode = Config.Bind("General", "Debug Mode", false, new ConfigDescription("Debug Mode"));
|
||||||
|
|
||||||
|
@@ -16,6 +16,7 @@ using Mafi.Core.Entities.Dynamic;
|
|||||||
using Mafi.Core.Entities.Static;
|
using Mafi.Core.Entities.Static;
|
||||||
using Mafi.Core.Entities.Static.Layout;
|
using Mafi.Core.Entities.Static.Layout;
|
||||||
using Mafi.Core.Factory.Machines;
|
using Mafi.Core.Factory.Machines;
|
||||||
|
using Mafi.Core.Factory.Recipes;
|
||||||
using Mafi.Core.Factory.Transports;
|
using Mafi.Core.Factory.Transports;
|
||||||
using Mafi.Core.Population;
|
using Mafi.Core.Population;
|
||||||
using Mafi.Core.Ports.Io;
|
using Mafi.Core.Ports.Io;
|
||||||
@@ -521,6 +522,26 @@ namespace CykaOfIndustry {
|
|||||||
Console.WriteLine("IndustrialCyka: Autosave interval: {0}", num);
|
Console.WriteLine("IndustrialCyka: Autosave interval: {0}", num);
|
||||||
__result = num > Main.autosaveInterval.Value;
|
__result = num > Main.autosaveInterval.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HarmonyPrefix]
|
||||||
|
[HarmonyPatch(typeof(MachineProto), nameof(MachineProto.AddRecipe))]
|
||||||
|
static void machineProtoAddRecipe(MachineProto __instance, ref RecipeProto recipe) {
|
||||||
|
Console.WriteLine("Recipe outputs for {0}:", __instance.Id);
|
||||||
|
recipe.AllOutputs.ForEach(o => {
|
||||||
|
var id = o.Product.Id.ToString();
|
||||||
|
Console.WriteLine("\tIndustrialCyka: Recipe output {0} x {1}", id, o.Quantity);
|
||||||
|
if (!Main.recipeMultipliersDict.ContainsKey(id)) {
|
||||||
|
if (Main.debugMode.Value)
|
||||||
|
Console.WriteLine("IndustrialCyka: Recipe output {0} not found in multipliers, nothing to do", id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var multiplier = Main.recipeMultipliersDict[id];
|
||||||
|
var trav = Traverse.Create(o);
|
||||||
|
trav.Field("Quantity").SetValue(new Quantity(trav.Field("Quantity").GetValue<Quantity>().Value * multiplier));
|
||||||
|
if (Main.debugMode.Value)
|
||||||
|
Console.WriteLine("IndustrialCyka: Recipe output {0} changed to {1}", id, trav.Field("Quantity").GetValue<Quantity>());
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[HarmonyPatch(typeof(Excavator), "MineMixedAt")]
|
[HarmonyPatch(typeof(Excavator), "MineMixedAt")]
|
||||||
|
Reference in New Issue
Block a user