Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }