private static void LoadRecyclingPrefab(TechType originTech, TechType recyclingTech) { string originPrefab, originFile; var prefabID = prefabIDPrefix + (int)recyclingTech; CraftDataWrapper.SetTechPrefab(recyclingTech, prefabID); PrefabDatabaseWrapper.PreparePrefabDatabase(); if (CraftDataWrapper.TryGetTechPrefab(originTech, out originPrefab) && PrefabDatabase.TryGetPrefabFilename(originPrefab, out originFile)) { PrefabDatabaseWrapper.SetPrefabFile(prefabID, originFile); } else { Logger.Warning($"Failed to load prefabID or fileName for TechType '{originTech}'."); } }
private static void LoadRecyclingData(TechType originTech, TechType recyclingTech) { if (IsBlackListed(recyclingTech)) { CraftDataWrapper.SetTechData(recyclingTech, new TechData(0, new Ingredient[0], new TechType[0])); return; } var originData = CraftData.Get(originTech); var ingredients = new Dictionary <TechType, int>(); if (originData.craftAmount > 0) { ingredients[originTech] = originData.craftAmount; } for (var i = 0; i < originData.linkedItemCount; i++) { var item = originData.GetLinkedItem(i); ingredients[item] = ingredients.ContainsKey(item) ? (ingredients[item] + 1) : 1; } var resIngs = new List <IIngredient>(); ingredients.ForEach(x => resIngs.Add(new Ingredient(x.Key, x.Value))); var linkedItems = new List <TechType>(); var isTool = IsPlayerToolWithEnergyMixin(originTech); for (var i = 0; i < originData.ingredientCount; i++) { var ing = originData.GetIngredient(i); if (isTool && IsBattery(ing.techType)) { continue; } var amount = UnityEngine.Mathf.FloorToInt(ing.amount * Config.GetYield(ing.techType)); for (var j = 0; j < amount; j++) { linkedItems.Add(ing.techType); } } CraftDataWrapper.SetTechData(recyclingTech, new TechData(0, resIngs, linkedItems)); }