Ejemplo 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);
        }
Ejemplo n.º 2
0
        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);
        }