From 075563b518bb8e9df4cdf69669dedba33984f2ad Mon Sep 17 00:00:00 2001 From: Florence Everett Date: Wed, 14 Jul 2021 18:30:46 +1200 Subject: [PATCH 1/2] Allow Producers to take BigCraftables as input. Allows looking up producer rule input by object name --- .../Controllers/ProducerController.cs | 42 ++++++++++--------- ProducerFrameworkMod/ObjectOverrides.cs | 2 +- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/ProducerFrameworkMod/Controllers/ProducerController.cs b/ProducerFrameworkMod/Controllers/ProducerController.cs index fff1e1b..b1896dd 100644 --- a/ProducerFrameworkMod/Controllers/ProducerController.cs +++ b/ProducerFrameworkMod/Controllers/ProducerController.cs @@ -282,9 +282,8 @@ private static bool ValidateRuleProducerName(string producerName) private static void AddRuleToRepository(ProducerRule producerRule) { Tuple ruleKey = new Tuple(producerRule.ProducerName, producerRule.InputKey); - if (RulesRepository.ContainsKey(ruleKey)) + if (RulesRepository.TryGetValue(ruleKey, out var oldRule)) { - ProducerRule oldRule = RulesRepository[ruleKey]; if (oldRule.ModUniqueID != producerRule.ModUniqueID) { if (oldRule.OverrideMod.Contains(producerRule.ModUniqueID) && @@ -475,28 +474,33 @@ private static void AddConfigToRepository(ProducerConfig producerConfig) public static ProducerRule GetProducerItem(string producerName, Object input) { ProducerRule value; - if (input == null) - { - RulesRepository.TryGetValue(new Tuple(producerName, null), out value); + if (input == null && RulesRepository.TryGetValue(new Tuple(producerName, null), out value)) { + return value; + } + + if (RulesRepository.TryGetValue(new Tuple(producerName, input.Name), out value)) + { + return value; } - else + + if (RulesRepository.TryGetValue(new Tuple(producerName, input.ParentSheetIndex), out value)) + { + return value; + } + + foreach (string tag in input.GetContextTagList()) { - RulesRepository.TryGetValue(new Tuple(producerName, input.ParentSheetIndex), out value); - if (value == null) - { - foreach (string tag in input.GetContextTagList()) - { - if (RulesRepository.TryGetValue(new Tuple(producerName, tag), out value)) - { - break; - } - } - } - if (value == null) + if (RulesRepository.TryGetValue(new Tuple(producerName, tag), out value)) { - RulesRepository.TryGetValue(new Tuple(producerName, input.Category), out value); + return value; } } + + if (RulesRepository.TryGetValue(new Tuple(producerName, input.Category), out value)) + { + return value; + } + return value; } diff --git a/ProducerFrameworkMod/ObjectOverrides.cs b/ProducerFrameworkMod/ObjectOverrides.cs index 8798a52..de580e4 100644 --- a/ProducerFrameworkMod/ObjectOverrides.cs +++ b/ProducerFrameworkMod/ObjectOverrides.cs @@ -28,7 +28,7 @@ internal static bool PerformObjectDropInAction(Object __instance, Item dropInIte bool failLocationCondition = false; bool failSeasonCondition = false; - if (__instance.heldObject.Value != null && !__instance.name.Equals("Crystalarium") || input.bigCraftable.Value) + if (__instance.heldObject.Value != null && !__instance.name.Equals("Crystalarium")) { return true; } From e28ae71d52e60d7e4fe1f6370ab6417e32e4f1ea Mon Sep 17 00:00:00 2001 From: Florence Everett Date: Fri, 16 Jul 2021 22:15:44 +1200 Subject: [PATCH 2/2] correctly return on null input --- ProducerFrameworkMod/Controllers/ProducerController.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ProducerFrameworkMod/Controllers/ProducerController.cs b/ProducerFrameworkMod/Controllers/ProducerController.cs index b1896dd..d85d182 100644 --- a/ProducerFrameworkMod/Controllers/ProducerController.cs +++ b/ProducerFrameworkMod/Controllers/ProducerController.cs @@ -474,7 +474,8 @@ private static void AddConfigToRepository(ProducerConfig producerConfig) public static ProducerRule GetProducerItem(string producerName, Object input) { ProducerRule value; - if (input == null && RulesRepository.TryGetValue(new Tuple(producerName, null), out value)) { + if (input == null) { + RulesRepository.TryGetValue(new Tuple(producerName, null), out value); return value; }