diff --git a/GameData/SimpleRefuel/Plugins/SimpleRefuel.dll b/GameData/SimpleRefuel/Plugins/SimpleRefuel.dll index 25a0f28..5581619 100644 Binary files a/GameData/SimpleRefuel/Plugins/SimpleRefuel.dll and b/GameData/SimpleRefuel/Plugins/SimpleRefuel.dll differ diff --git a/GameData/SimpleRefuel/SimpleRefuel.cfg b/GameData/SimpleRefuel/SimpleRefuel.cfg index 3d9ee60..57f1836 100644 --- a/GameData/SimpleRefuel/SimpleRefuel.cfg +++ b/GameData/SimpleRefuel/SimpleRefuel.cfg @@ -1,4 +1,5 @@ SimpleRefuel_Settings { RefuelSpeed = 100.0 + ResourceCost = ElectricCharge,0.0;LiquidFuel,0.8;Oxidizer,0.2,IntakeAir,0.0;SolidFuel,0.6;MonoPropellant,1.2;XenonGas,4.0;Ore,0.02;Ablator,0.5 } \ No newline at end of file diff --git a/Source/Config.cs b/Source/Config.cs index 6bb80c0..58cfb4f 100644 --- a/Source/Config.cs +++ b/Source/Config.cs @@ -17,15 +17,24 @@ internal static Config Instance { } private Config() { + this.ResourcesCost = new Dictionary(); this.Load(); } internal float RefuelSpeed; + internal Dictionary ResourcesCost; private void Load() { var node = ConfigNode.Load(ConfigFilePath); var settings = node.GetNode(settingsNodeName); this.RefuelSpeed = float.Parse(settings.GetValue("RefuelSpeed")); + + var resCosts = settings.GetValue("ResourceCost").Split(';'); + foreach (var resCost in resCosts) { + var parts = resCost.Split(','); + this.ResourcesCost.Add(parts[0], float.Parse(parts[1])); + + } } } } diff --git a/Source/SimpleRefuel.cs b/Source/SimpleRefuel.cs index 273f491..c9117e6 100644 --- a/Source/SimpleRefuel.cs +++ b/Source/SimpleRefuel.cs @@ -30,18 +30,6 @@ public class Refuel : MonoBehaviour private readonly string icon_green = "SimpleRefuel/Textures/icon_green"; private readonly string icon_red = "SimpleRefuel/Textures/icon_red"; - /* RESOURCES COST */ - Dictionary resourcesCost = new Dictionary { //From: https://wiki.kerbalspaceprogram.com/wiki/Resource - { "ElectricCharge", 0.0f }, - { "LiquidFuel", 0.8f }, - { "Oxidizer", 0.18f }, - { "IntakeAir", 0.0f }, - { "SolidFuel", 0.6f }, - { "MonoPropellant", 1.2f }, - { "XenonGas ", 4.0f }, - { "Ore", 0.02f }, - { "Ablator", 0.5f } - }; /* MONOBEHAVIOUR METHODS */ void Awake() @@ -87,16 +75,16 @@ void Update() if (r.resourceName == resources[current_resource] && r.amount < r.maxAmount) { - if (r.maxAmount - r.amount > Config.Instance.RefuelSpeed * TimeWarp.deltaTime){ - if(Funding.CanAfford(Config.Instance.RefuelSpeed * resourcesCost[r.resourceName] * TimeWarp.deltaTime)){ + if (r.maxAmount - r.amount > Config.Instance.RefuelSpeed * TimeWarp.deltaTime) { + if(Funding.CanAfford(Config.Instance.RefuelSpeed * Config.Instance.ResourcesCost[r.resourceName] * TimeWarp.deltaTime)){ r.amount += Config.Instance.RefuelSpeed * TimeWarp.deltaTime; // Charge RefuelSpeed units per second - Funding.Instance.AddFunds(-Config.Instance.RefuelSpeed * resourcesCost[r.resourceName] * TimeWarp.deltaTime, TransactionReasons.Any); + Funding.Instance.AddFunds(-Config.Instance.RefuelSpeed * Config.Instance.ResourcesCost[r.resourceName] * TimeWarp.deltaTime, TransactionReasons.Any); } } else { - if(Funding.CanAfford((float)(r.maxAmount - r.amount) * resourcesCost[r.resourceName])){ + if(Funding.CanAfford((float)(r.maxAmount - r.amount) * Config.Instance.ResourcesCost[r.resourceName])){ r.amount = r.maxAmount; - Funding.Instance.AddFunds(-(r.maxAmount - r.amount) * resourcesCost[r.resourceName], TransactionReasons.Any); + Funding.Instance.AddFunds(-(r.maxAmount - r.amount) * Config.Instance.ResourcesCost[r.resourceName], TransactionReasons.Any); } }