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.Configuration;
|
||||
using HarmonyLib;
|
||||
@@ -30,6 +32,8 @@ namespace CykaOfIndustry {
|
||||
public static ConfigEntry<float> transportSpeedMultiplier;
|
||||
public static ConfigEntry<float> shipyardCargoMultiplier;
|
||||
public static ConfigEntry<int> autosaveInterval;
|
||||
public static ConfigEntry<string> recipeMultipliers;
|
||||
public static Dictionary<string, int> recipeMultipliersDict;
|
||||
|
||||
public static ConfigEntry<bool> debugMode;
|
||||
|
||||
@@ -71,6 +75,18 @@ namespace CykaOfIndustry {
|
||||
new ConfigDescription("Shipyard Cargo Multiplier"));
|
||||
autosaveInterval = Config.Bind("General", "Autosave Interval", 1,
|
||||
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"));
|
||||
|
||||
|
@@ -16,6 +16,7 @@ using Mafi.Core.Entities.Dynamic;
|
||||
using Mafi.Core.Entities.Static;
|
||||
using Mafi.Core.Entities.Static.Layout;
|
||||
using Mafi.Core.Factory.Machines;
|
||||
using Mafi.Core.Factory.Recipes;
|
||||
using Mafi.Core.Factory.Transports;
|
||||
using Mafi.Core.Population;
|
||||
using Mafi.Core.Ports.Io;
|
||||
@@ -521,6 +522,26 @@ namespace CykaOfIndustry {
|
||||
Console.WriteLine("IndustrialCyka: Autosave interval: {0}", num);
|
||||
__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")]
|
||||
|
Reference in New Issue
Block a user