private static void PatchCustomTechData() { short added = 0; short replaced = 0; foreach (TechType techType in CustomTechData.Keys) { bool techExists = CraftData.techData.TryGetValue(techType, out CraftData.TechData techData); ITechData smlTechData = CustomTechData[techType]; bool sameData = false; if (techExists) { sameData = smlTechData.craftAmount == techData.craftAmount && smlTechData.ingredientCount == techData.ingredientCount && smlTechData.linkedItemCount == techData.linkedItemCount; if (sameData) { for (int i = 0; i < smlTechData.ingredientCount; i++) { if (smlTechData.GetIngredient(i).techType != techData.GetIngredient(i).techType) { sameData = false; break; } if (smlTechData.GetIngredient(i).amount != techData.GetIngredient(i).amount) { sameData = false; break; } } } if (sameData) { for (int i = 0; i < smlTechData.linkedItemCount; i++) { if (smlTechData.GetLinkedItem(i) != techData.GetLinkedItem(i)) { sameData = false; break; } } } } if (!techExists || !sameData) { var techDataInstance = new CraftData.TechData { _techType = techType, _craftAmount = smlTechData.craftAmount }; var ingredientsList = new CraftData.Ingredients(); if (smlTechData.ingredientCount > 0) { for (int i = 0; i < smlTechData.ingredientCount; i++) { IIngredient smlIngredient = smlTechData.GetIngredient(i); var ingredient = new CraftData.Ingredient(smlIngredient.techType, smlIngredient.amount); ingredientsList.Add(smlIngredient.techType, smlIngredient.amount); } techDataInstance._ingredients = ingredientsList; } if (smlTechData.linkedItemCount > 0) { var linkedItems = new List <TechType>(); for (int l = 0; l < smlTechData.linkedItemCount; l++) { linkedItems.Add(smlTechData.GetLinkedItem(l)); } techDataInstance._linkedItems = linkedItems; } if (techExists) { CraftData.techData.Remove(techType); Logger.Log($"{techType} TechType already existed in the CraftData.techData dictionary. Original value was replaced.", LogLevel.Warn); replaced++; } else { added++; } CraftData.techData.Add(techType, techDataInstance); } } if (added > 0) { Logger.Log($"Added {added} new entries to the CraftData.techData dictionary.", LogLevel.Info); } if (replaced > 0) { Logger.Log($"Replaced {replaced} existing entries to the CraftData.techData dictionary.", LogLevel.Info); } }
private static void AddCustomTechDataToOriginalDictionary() { short added = 0; short replaced = 0; foreach (TechType techType in CustomTechData.Keys) { ITechData smlTechData = CustomTechData[techType]; var techDataInstance = new CraftData.TechData { _techType = techType, _craftAmount = smlTechData.craftAmount }; var ingredientsList = new CraftData.Ingredients(); if (smlTechData.ingredientCount > 0) { for (int i = 0; i < smlTechData.ingredientCount; i++) { IIngredient smlIngredient = smlTechData.GetIngredient(i); var ingredient = new CraftData.Ingredient(smlIngredient.techType, smlIngredient.amount); ingredientsList.Add(smlIngredient.techType, smlIngredient.amount); } techDataInstance._ingredients = ingredientsList; } if (smlTechData.linkedItemCount > 0) { var linkedItems = new List <TechType>(); for (int l = 0; l < smlTechData.linkedItemCount; l++) { linkedItems.Add(smlTechData.GetLinkedItem(l)); } techDataInstance._linkedItems = linkedItems; } bool techDataExists = CraftData.techData.ContainsKey(techType); if (techDataExists) { CraftData.techData.Remove(techType); Logger.Log($"{techType} TechType already existed in the CraftData.techData dictionary. Original value was replaced.", LogLevel.Warn); replaced++; } else { added++; } CraftData.techData.Add(techType, techDataInstance); } if (added > 0) { Logger.Log($"Added {added} new entries to the CraftData.techData dictionary.", LogLevel.Info); } if (replaced > 0) { Logger.Log($"Replaced {replaced} existing entries to the CraftData.techData dictionary.", LogLevel.Info); } }