public static DynamicGameAssets.PackData.CraftingRecipePackData ConvertCrafting(this JsonAssets.Data.ObjectData data, string packId, Dictionary <string, Dictionary <string, string> > i18n, List <DynamicGameAssets.PackData.ObjectPackData> objs, List <DynamicGameAssets.PackData.CraftingRecipePackData> crafting, List <DynamicGameAssets.PackData.ShopEntryPackData> shops) { if (data.Recipe != null) { var recipe = new DynamicGameAssets.PackData.CraftingRecipePackData(); recipe.ID = "Converted_" + data.Name + " Recipe"; i18n.AddI18n("en", $"crafting.Converted_{data.Name} Recipe.name", data.Name); i18n.AddI18n("en", $"crafting.Converted_{data.Name} Recipe.description", data.Description); recipe.IsCooking = data.Category == JsonAssets.Data.ObjectCategory.Cooking; recipe.SkillUnlockName = data.Recipe.SkillUnlockName; recipe.SkillUnlockLevel = data.Recipe.SkillUnlockLevel; recipe.KnownByDefault = data.Recipe.IsDefault; recipe.Result = new List <DynamicGameAssets.Weighted <DynamicGameAssets.ItemAbstraction> >() { new DynamicGameAssets.Weighted <DynamicGameAssets.ItemAbstraction>(1, new DynamicGameAssets.ItemAbstraction() { Value = $"{packId}/{data.Name}", Type = DynamicGameAssets.ItemAbstraction.ItemType.DGAItem, }) }; recipe.Ingredients = new List <DynamicGameAssets.PackData.CraftingRecipePackData.IngredientAbstraction>(); foreach (var ingred in data.Recipe.Ingredients) { var productObj = objs.FirstOrDefault(o => o.ID == ingred.Object.ToString()); var newIngred = new DynamicGameAssets.PackData.CraftingRecipePackData.IngredientAbstraction() { Value = productObj != null ? $"{packId}/{productObj.ID}" : ingred.Object.ToString(), Type = productObj != null ? DynamicGameAssets.ItemAbstraction.ItemType.DGAItem : DynamicGameAssets.ItemAbstraction.ItemType.VanillaObject, Quantity = ingred.Count, }; recipe.Ingredients.Add(newIngred); } crafting.Add(recipe); if (data.Recipe.CanPurchase) { ConversionExtensions.DoShopEntry(shops, packId, recipe.ID, new JsonAssets.PurchaseData() { PurchasePrice = data.Recipe.PurchasePrice, PurchaseFrom = data.Recipe.PurchaseFrom, PurchaseRequirements = data.Recipe.PurchaseRequirements, }); foreach (var entry in data.AdditionalPurchaseData) { ConversionExtensions.DoShopEntry(shops, packId, recipe.ID, entry); } } return(recipe); } return(null); }
public static DynamicGameAssets.PackData.BigCraftablePackData ConvertBigCraftable(this JsonAssets.Data.BigCraftableData data, string packId, Dictionary <string, Dictionary <string, string> > i18n, List <DynamicGameAssets.PackData.BigCraftablePackData> bigCraftables, List <DynamicGameAssets.PackData.ObjectPackData> objs, List <DynamicGameAssets.PackData.CraftingRecipePackData> crafting, List <DynamicGameAssets.PackData.ShopEntryPackData> shops) { var item = new DynamicGameAssets.PackData.BigCraftablePackData(); item.ExtensionData.Add("JsonAssetsName", JToken.FromObject(data.Name)); item.ID = data.Name; item.Texture = Path.Combine("assets", "big-craftables", data.Name + "0.png"); i18n.AddI18n("en", $"big-craftable.{data.Name}.name", data.Name); i18n.AddI18n("en", $"big-craftable.{data.Name}.description", data.Description); item.SellPrice = data.Price; item.ProvidesLight = data.ProvidesLight; if (data.Recipe != null) { var recipe = new DynamicGameAssets.PackData.CraftingRecipePackData(); recipe.ID = "Converted_" + data.Name + " Recipe"; i18n.AddI18n("en", $"crafting.Converted_{data.Name} Recipe.name", data.Name); i18n.AddI18n("en", $"crafting.Converted_{data.Name} Recipe.description", data.Description); recipe.SkillUnlockName = data.Recipe.SkillUnlockName; recipe.SkillUnlockLevel = data.Recipe.SkillUnlockLevel; recipe.KnownByDefault = data.Recipe.IsDefault; recipe.Result = new List <DynamicGameAssets.Weighted <DynamicGameAssets.ItemAbstraction> >() { new DynamicGameAssets.Weighted <DynamicGameAssets.ItemAbstraction>(1, new DynamicGameAssets.ItemAbstraction() { Value = $"{packId}/{item.ID}", Type = DynamicGameAssets.ItemAbstraction.ItemType.DGAItem, }) }; recipe.Ingredients = new List <DynamicGameAssets.PackData.CraftingRecipePackData.IngredientAbstraction>(); foreach (var ingred in data.Recipe.Ingredients) { var productObj = objs.FirstOrDefault(o => o.ID == ingred.Object.ToString()); var newIngred = new DynamicGameAssets.PackData.CraftingRecipePackData.IngredientAbstraction() { Value = productObj != null ? $"{packId}/{productObj.ID}" : ingred.Object.ToString(), Type = productObj != null ? DynamicGameAssets.ItemAbstraction.ItemType.DGAItem : DynamicGameAssets.ItemAbstraction.ItemType.VanillaObject, Quantity = ingred.Count, }; recipe.Ingredients.Add(newIngred); } crafting.Add(recipe); if (data.Recipe.CanPurchase) { ConversionExtensions.DoShopEntry(shops, packId, recipe.ID, new JsonAssets.PurchaseData() { PurchasePrice = data.Recipe.PurchasePrice, PurchaseFrom = data.Recipe.PurchaseFrom, PurchaseRequirements = data.Recipe.PurchaseRequirements, }); foreach (var entry in data.AdditionalPurchaseData) { ConversionExtensions.DoShopEntry(shops, packId, recipe.ID, entry); } } } foreach (var loc in data.NameLocalization) { i18n.AddI18n(loc.Key, $"big-craftable.{data.Name}.name", loc.Value); } foreach (var loc in data.DescriptionLocalization) { i18n.AddI18n(loc.Key, $"big-craftable.{data.Name}.description", loc.Value); } bigCraftables.Add(item); return(item); }