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.ObjectPackData ConvertObject(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, List <DynamicGameAssets.PackData.GiftTastePackData> giftTastes) { var item = new DynamicGameAssets.PackData.ObjectPackData(); item.ExtensionData.Add("JsonAssetsName", JToken.FromObject(data.Name)); item.ID = data.Name; item.Texture = Path.Combine("assets", "objects", data.Name + ".png"); i18n.AddI18n("en", $"object.{data.Name}.name", data.Name); i18n.AddI18n("en", $"object.{data.Name}.description", data.Description); item.Category = (DynamicGameAssets.PackData.ObjectPackData.VanillaCategory)Enum.Parse(typeof(DynamicGameAssets.PackData.ObjectPackData.VanillaCategory), data.Category.ToString()); i18n.AddI18n("en", $"object.{data.Name}.category", data.CategoryTextOverride); item.CategoryColorOverride = data.CategoryColorOverride; if (data.IsColored) { item.TextureColor = Path.Combine("assets", "objects", data.Name + "_color.png"); } item.SellPrice = data.CanSell ? data.Price : null; item.CanTrash = data.CanTrash; item.IsGiftable = data.CanBeGifted; item.HideFromShippingCollection = data.HideFromShippingCollection; // recipe done elsewhere item.Edibility = data.Edibility; item.EdibleIsDrink = data.EdibleIsDrink; item.ContextTags = data.ContextTags; if (data.EdibleBuffs != null) { item.EdibleBuffs = new DynamicGameAssets.PackData.ObjectPackData.FoodBuffsData() { Farming = data.EdibleBuffs.Farming, Fishing = data.EdibleBuffs.Fishing, Mining = data.EdibleBuffs.Mining, Luck = data.EdibleBuffs.Luck, Foraging = data.EdibleBuffs.Foraging, MaxStamina = data.EdibleBuffs.MaxStamina, MagnetRadius = data.EdibleBuffs.MaxStamina, Speed = data.EdibleBuffs.Speed, Defense = data.EdibleBuffs.Defense, Attack = data.EdibleBuffs.Attack, Duration = data.EdibleBuffs.Duration, }; } if (data.CanPurchase) { ConversionExtensions.DoShopEntry(shops, packId, data.Name, new JsonAssets.PurchaseData() { PurchasePrice = data.PurchasePrice, PurchaseFrom = data.PurchaseFrom, PurchaseRequirements = data.PurchaseRequirements, }); foreach (var entry in data.AdditionalPurchaseData) { ConversionExtensions.DoShopEntry(shops, packId, data.Name, entry); } } if (data.GiftTastes != null) { foreach (string taste in data.GiftTastes.Love) { if (taste == "Universal") { item.UniversalGiftTaste = 80; } else { giftTastes.Add(new DynamicGameAssets.PackData.GiftTastePackData() { ObjectId = $"{packId}/{item.ID}", Npc = taste, Amount = 80 }); } } foreach (string taste in data.GiftTastes.Like) { if (taste == "Universal") { item.UniversalGiftTaste = 45; } else { giftTastes.Add(new DynamicGameAssets.PackData.GiftTastePackData() { ObjectId = $"{packId}/{item.ID}", Npc = taste, Amount = 45 }); } } foreach (string taste in data.GiftTastes.Neutral) { if (taste == "Universal") { item.UniversalGiftTaste = 20; } else { giftTastes.Add(new DynamicGameAssets.PackData.GiftTastePackData() { ObjectId = $"{packId}/{item.ID}", Npc = taste, Amount = 20 }); } } foreach (string taste in data.GiftTastes.Dislike) { if (taste == "Universal") { item.UniversalGiftTaste = -20; } else { giftTastes.Add(new DynamicGameAssets.PackData.GiftTastePackData() { ObjectId = $"{packId}/{item.ID}", Npc = taste, Amount = -20 }); } } foreach (string taste in data.GiftTastes.Hate) { if (taste == "Universal") { item.UniversalGiftTaste = -40; } else { giftTastes.Add(new DynamicGameAssets.PackData.GiftTastePackData() { ObjectId = $"{packId}/{item.ID}", Npc = taste, Amount = -40 }); } } } foreach (var loc in data.NameLocalization) { i18n.AddI18n(loc.Key, $"object.{data.Name}.name", loc.Value); } foreach (var loc in data.DescriptionLocalization) { i18n.AddI18n(loc.Key, $"object.{data.Name}.description", loc.Value); } objs.Add(item); return(item); }