Exemple #1
0
        public void Deserialize_AliasRecipesList_AllLowerCaseIDs()
        {
            const string serialized = "AliasRecipes:" + "\r\n" +
                                      "(" + "\r\n" +
                                      "    ItemID:AliasAerogel7;" + "\r\n" +
                                      "    DisplayName:\"Craft Aerogel\";" + "\r\n" +
                                      "    Tooltip:\"Custom aerogel tooltip\";" + "\r\n" +
                                      "    Ingredients:" + "\r\n" +
                                      "        (" + "\r\n" +
                                      "            ItemID:Titanium;" + "\r\n" +
                                      "        )," + "\r\n" +
                                      "        (" + "\r\n" +
                                      "            ItemID:Copper;" + "\r\n" +
                                      "        );" + "\r\n" +
                                      "    ForceUnlockAtStart:NO;" + "\r\n" +
                                      "    LinkedItemIDs:Silver,Gold;" + "\r\n" +
                                      "    Path:Fabricator/Resources/BasicMaterials;" +
                                      ")," + "\r\n" +
                                      "(" + "\r\n" +
                                      "    ItemID:DummyDisinfectedWater;" + "\r\n" +
                                      "    DisplayName:\"Disinfected water\";" + "\r\n" +
                                      "    Tooltip:\"Craft disinfected water from filtered water\";" + "\r\n" +
                                      "    AmountCrafted:0;" + "\r\n" +
                                      "    Ingredients:" + "\r\n" +
                                      "        (" + "\r\n" +
                                      "            ItemID:FilteredWater;" + "\r\n" +
                                      "            Required:2;" + "\r\n" +
                                      "        );" + "\r\n" +
                                      "    LinkedItemIDs:DisinfectedWater;" + "\r\n" +
                                      "    Path:Fabricator/Survival/Water;" +
                                      ")," + "\r\n" +
                                      "(" + "\r\n" +
                                      "    ItemID:DummyDisinfectedWater2;" + "\r\n" +
                                      "    DisplayName:\"Disinfected water\";" + "\r\n" +
                                      "    Tooltip:\"Craft disinfected water from big filtered water\";" + "\r\n" +
                                      "    AmountCrafted:0;" + "\r\n" +
                                      "    Ingredients:" + "\r\n" +
                                      "        (" + "\r\n" +
                                      "            ItemID:BigFilteredWater;" + "\r\n" +
                                      "        );" + "\r\n" +
                                      "    LinkedItemIDs:DisinfectedWater,DisinfectedWater;" + "\r\n" +
                                      "    Path:Fabricator/Survival/Water;" +
                                      ");" + "\r\n";

            var recipeList = new AliasRecipeList();

            bool success = recipeList.FromString(serialized);

            Assert.IsTrue(success);
            Assert.AreEqual(3, recipeList.Count);
        }
Exemple #2
0
        public void Deserialize_AliasRecipesList_FullDetails()
        {
            const string serialized = "AliasRecipes:" + "\r\n" +
                                      "(" + "\r\n" +
                                      "    ItemID:AliasAerogel2;" + "\r\n" +
                                      "    DisplayName:\"Craft Aerogel\";" + "\r\n" +
                                      "    Tooltip:\"Custom aerogel tooltip\";" + "\r\n" +
                                      "    AmountCrafted:0;" + "\r\n" +
                                      "    Ingredients:" + "\r\n" +
                                      "        (" + "\r\n" +
                                      "            ItemID:Titanium;" + "\r\n" +
                                      "            Required:2;" + "\r\n" +
                                      "        )," + "\r\n" +
                                      "        (" + "\r\n" +
                                      "            ItemID:Copper;" + "\r\n" +
                                      "            Required:3;" + "\r\n" +
                                      "        );" + "\r\n" +
                                      "    LinkedItemIDs:Silver,Gold;" + "\r\n" +
                                      "    Path:Fabricator/Resources/BasicMaterials;" +
                                      "    FunctionalID:Aerogel;" +
                                      "    SpriteItemID:Aerogel;" +
                                      ")," + "\r\n" +
                                      "(" + "\r\n" +
                                      "    ItemID:AliasAerogel3;" + "\r\n" +
                                      "    DisplayName:\"Craft Aerogel\";" + "\r\n" +
                                      "    Tooltip:\"Custom aerogel tooltip\";" + "\r\n" +
                                      "    AmountCrafted:0;" + "\r\n" +
                                      "    Ingredients:" + "\r\n" +
                                      "        (" + "\r\n" +
                                      "            ItemID:Titanium;" + "\r\n" +
                                      "            Required:2;" + "\r\n" +
                                      "        )," + "\r\n" +
                                      "        (" + "\r\n" +
                                      "            ItemID:Copper;" + "\r\n" +
                                      "            Required:3;" + "\r\n" +
                                      "        );" + "\r\n" +
                                      "    LinkedItemIDs:Silver,Gold;" + "\r\n" +
                                      "    Path:Fabricator/Resources/BasicMaterials;" +
                                      "    FunctionalID:Aerogel;" +
                                      "    SpriteItemID:Aerogel;" +
                                      ");" + "\r\n";


            var recipe = new AliasRecipeList();

            recipe.FromString(serialized);

            Assert.AreEqual("AliasAerogel2", recipe[0].ItemID);
            Assert.AreEqual("AliasAerogel3", recipe[1].ItemID);

            foreach (AliasRecipe r in recipe)
            {
                Assert.AreEqual(0, r.AmountCrafted);

                Assert.AreEqual(2, r.Ingredients.Count);

                EmIngredient item0 = r.Ingredients[0];
                Assert.AreEqual(TechType.Titanium.ToString(), item0.ItemID);
                Assert.AreEqual(2, item0.Required);

                EmIngredient item1 = r.Ingredients[1];
                Assert.AreEqual(TechType.Copper.ToString(), item1.ItemID);
                Assert.AreEqual(3, item1.Required);

                Assert.AreEqual(2, r.LinkedItemIDs.Count);


                Assert.AreEqual(TechType.Silver.ToString(), r.LinkedItemIDs[0]);
                Assert.AreEqual(TechType.Gold.ToString(), r.LinkedItemIDs[1]);

                Assert.AreEqual("Craft Aerogel", r.DisplayName);
                Assert.AreEqual("Custom aerogel tooltip", r.Tooltip);

                Assert.AreEqual("Fabricator/Resources/BasicMaterials", r.Path);

                Assert.AreEqual(TechType.Aerogel.ToString(), r.FunctionalID);
                Assert.AreEqual(TechType.Aerogel, r.SpriteItemID);
            }
        }
Exemple #3
0
        public void Deserialize_FoodCloneExample()
        {
            const string lineBreak   = "\r\n";
            const string displayName = "My Custom Food";
            const string toolTip     = "My Food Tooltip";


            string serialized = "AliasRecipes:" + lineBreak +
                                "(" + lineBreak +
                                "    ItemID:CustomFoodExperiment;" + lineBreak +
                                $"    DisplayName:\"{displayName}\";" + lineBreak +
                                $"    Tooltip:\"{toolTip}\";" + lineBreak +
                                "    AmountCrafted:1;" + lineBreak +
                                "    Ingredients:" + lineBreak +
                                "        (" + lineBreak +
                                $"            ItemID:{TechType.Salt};" + lineBreak +
                                "            Required:2;" + lineBreak +
                                "        )," + lineBreak +
                                "        (" + lineBreak +
                                $"            ItemID:{TechType.CookedPeeper};" + lineBreak +
                                "            Required:1;" + lineBreak +
                                "        )," + lineBreak +
                                "        (" + lineBreak +
                                $"            ItemID:{TechType.CookedEyeye};" + lineBreak +
                                "            Required:1;" + lineBreak +
                                "        );" + lineBreak +
                                $"    Path:Fabricator/Sustenance/CookedFood;" +
                                "    FunctionalID:CuredLavaEyeye;" +
                                ");" + lineBreak;

            var recipe = new AliasRecipeList();

            recipe.FromString(serialized);

            AliasRecipe r = recipe[0];

            Assert.AreEqual("CustomFoodExperiment", r.ItemID);

            Assert.AreEqual(1, r.AmountCrafted);

            Assert.AreEqual(3, r.Ingredients.Count);

            EmIngredient item0 = r.Ingredients[0];

            Assert.AreEqual(TechType.Salt.ToString(), item0.ItemID);
            Assert.AreEqual(2, item0.Required);

            EmIngredient item1 = r.Ingredients[1];

            Assert.AreEqual(TechType.CookedPeeper.ToString(), item1.ItemID);
            Assert.AreEqual(1, item1.Required);

            EmIngredient item2 = r.Ingredients[2];

            Assert.AreEqual(TechType.CookedEyeye.ToString(), item2.ItemID);
            Assert.AreEqual(1, item2.Required);

            Assert.AreEqual(0, r.LinkedItemIDs.Count);

            Assert.AreEqual(displayName, r.DisplayName);
            Assert.AreEqual(toolTip, r.Tooltip);

            Assert.AreEqual("Fabricator/Sustenance/CookedFood", r.Path);

            Assert.AreEqual(TechType.CuredLavaEyeye.ToString(), r.FunctionalID);
        }
Exemple #4
0
        public void Deserialize_AliasRecipesList_NoAmounts_Defaults()
        {
            const string serialized = "AliasRecipes:" + "\r\n" +
                                      "(" + "\r\n" +
                                      "    ItemID:AliasAerogel5;" + "\r\n" +
                                      "    DisplayName:\"Craft Aerogel\";" + "\r\n" +
                                      "    Tooltip:\"Custom aerogel tooltip\";" + "\r\n" +
                                      "    Ingredients:" + "\r\n" +
                                      "        (" + "\r\n" +
                                      "            ItemID:Titanium;" + "\r\n" +
                                      "        )," + "\r\n" +
                                      "        (" + "\r\n" +
                                      "            ItemID:Copper;" + "\r\n" +
                                      "        );" + "\r\n" +
                                      "    ForceUnlockAtStart:NO;" + "\r\n" +
                                      "    LinkedItemIDs:Silver,Gold;" + "\r\n" +
                                      "    Path:Fabricator/Resources/BasicMaterials;" +
                                      ")," + "\r\n" +
                                      "(" + "\r\n" +
                                      "    ItemID:AliasAerogel6;" + "\r\n" +
                                      "    DisplayName:\"Craft Aerogel\";" + "\r\n" +
                                      "    Tooltip:\"Custom aerogel tooltip\";" + "\r\n" +
                                      "    Ingredients:" + "\r\n" +
                                      "        (" + "\r\n" +
                                      "            ItemID:Titanium;" + "\r\n" +
                                      "        )," + "\r\n" +
                                      "        (" + "\r\n" +
                                      "            ItemID:Copper;" + "\r\n" +
                                      "        );" + "\r\n" +
                                      "    ForceUnlockAtStart:NO;" + "\r\n" +
                                      "    LinkedItemIDs:Silver,Gold;" + "\r\n" +
                                      "    Path:Fabricator/Resources/BasicMaterials;" +
                                      ");" + "\r\n";


            var recipe = new AliasRecipeList();

            recipe.FromString(serialized);

            Assert.AreEqual("AliasAerogel5", recipe[0].ItemID);
            Assert.AreEqual("AliasAerogel6", recipe[1].ItemID);
            foreach (AliasRecipe r in recipe)
            {
                Assert.AreEqual(false, recipe[0].AmountCrafted.HasValue);

                Assert.AreEqual(2, r.Ingredients.Count);

                EmIngredient item0 = r.Ingredients[0];
                Assert.AreEqual(TechType.Titanium.ToString(), item0.ItemID);
                Assert.AreEqual(1, item0.Required);

                EmIngredient item1 = r.Ingredients[1];
                Assert.AreEqual(TechType.Copper.ToString(), item1.ItemID);
                Assert.AreEqual(1, item1.Required);

                Assert.AreEqual(2, r.LinkedItemIDs.Count);


                Assert.AreEqual(TechType.Silver.ToString(), r.LinkedItemIDs[0]);
                Assert.AreEqual(TechType.Gold.ToString(), r.LinkedItemIDs[1]);

                Assert.AreEqual("Craft Aerogel", r.DisplayName);
                Assert.AreEqual("Custom aerogel tooltip", r.Tooltip);

                Assert.AreEqual(false, r.ForceUnlockAtStart);

                Assert.AreEqual("Fabricator/Resources/BasicMaterials", r.Path);
            }
        }
        public void Generate_All_Files()
        {
            // TABS
            var salvageTab = new CustomCraftingTab
            {
                TabID         = SalvageTabID,
                DisplayName   = "Salvage and Recycling",
                ParentTabPath = PathToSalvageTab,
                SpriteItemID  = TechType.Trashcans
            };

            var tabList = new CustomCraftingTabList
            {
                salvageTab
            };

            WriteFile(tabList, "EquipmentSalvage_Tabs.txt");

            // Move the Metal Salvage into the new tab
            var moveMetalSalvage = new MovedRecipe
            {
                ItemID  = TechType.Titanium.ToString(),
                OldPath = PathHelper.Fabricator.Resources.BasicMaterials.BasicMaterialsTab.GetCraftingPath.ToString(),
                NewPath = tabList[0].FullPath,
                Hidden  = false,
                Copied  = true
            };

            var movedList = new MovedRecipeList
            {
                moveMetalSalvage
            };

            WriteFile(movedList, "EquipmentSalvage_Moves.txt");

            // RECIPES
            var leadSalvage = new AliasRecipe
            {
                ItemID             = "LeadSalvage",
                DisplayName        = "Salvage Lead",
                Tooltip            = "Recover the useful lead from a radiation suit no longer in use",
                Path               = tabList[0].FullPath,
                ForceUnlockAtStart = !EnableUnlocking,
                PdaCategory        = TechCategory.BasicMaterials,
                PdaGroup           = TechGroup.Resources,
                SpriteItemID       = TechType.Lead,
                Ingredients        =
                {
                    new EmIngredient(TechType.RadiationSuit),
                    new EmIngredient(TechType.RadiationHelmet),
                    new EmIngredient(TechType.RadiationGloves)
                },
                LinkedItemIDs =
                {
                    TechType.Lead.ToString(),
                    TechType.Lead.ToString()
                },
                UnlockedBy = { TechType.RadiationSuit.ToString() }
            };

            var copperSalvage = new AliasRecipe
            {
                ItemID             = "CopperSalvage",
                DisplayName        = "Salvage Copper",
                Tooltip            = "Recover the precious copper from unneeded power cells",
                Path               = tabList[0].FullPath,
                ForceUnlockAtStart = !EnableUnlocking,
                PdaCategory        = TechCategory.BasicMaterials,
                PdaGroup           = TechGroup.Resources,
                SpriteItemID       = TechType.Copper,
                Ingredients        =
                {
                    new EmIngredient(TechType.PowerCell)
                },
                LinkedItemIDs =
                {
                    TechType.Copper.ToString(),
                    TechType.Copper.ToString()
                },
                UnlockedBy = { TechType.PowerCell.ToString() }
            };

            var deepSalvage = new AliasRecipe
            {
                ItemID             = "DeepSalvage",
                DisplayName        = "Salvage Precious Metals",
                Tooltip            = "Recover the lithium and magnetite from unneeded deep power cells",
                Path               = tabList[0].FullPath,
                ForceUnlockAtStart = !EnableUnlocking,
                PdaCategory        = TechCategory.AdvancedMaterials,
                PdaGroup           = TechGroup.Resources,
                SpriteItemID       = TechType.Magnetite,
                Ingredients        =
                {
                    new EmIngredient("DeepPowerCell")
                },
                LinkedItemIDs =
                {
                    TechType.Lithium.ToString(),
                    TechType.Magnetite.ToString(),
                    TechType.Lithium.ToString(),
                    TechType.Magnetite.ToString()
                },
                UnlockedBy = { "DeepPowerCell" }
            };

            var ionSalvage = new AliasRecipe
            {
                ItemID             = "IonCubeSalvage",
                DisplayName        = "Salvage Ion Cubes",
                Tooltip            = "Recover the precious ion cubes from unneeded ion power cells",
                Path               = tabList[0].FullPath,
                ForceUnlockAtStart = !EnableUnlocking,
                PdaCategory        = TechCategory.AdvancedMaterials,
                PdaGroup           = TechGroup.Resources,
                SpriteItemID       = TechType.PrecursorIonCrystal,
                Ingredients        =
                {
                    new EmIngredient(TechType.PrecursorIonPowerCell)
                },
                LinkedItemIDs =
                {
                    TechType.PrecursorIonCrystal.ToString(),
                    TechType.PrecursorIonCrystal.ToString()
                },
                UnlockedBy = { TechType.PrecursorIonPowerCell.ToString() }
            };

            var diamondSalvage = new AliasRecipe
            {
                ItemID             = "DiamondSalvage",
                DisplayName        = "Salvage Diamonds",
                Tooltip            = "Recover diamonds from retired laser cutters. Don't forget to remove the batteries first.",
                Path               = tabList[0].FullPath,
                ForceUnlockAtStart = !EnableUnlocking,
                PdaCategory        = TechCategory.AdvancedMaterials,
                PdaGroup           = TechGroup.Resources,
                SpriteItemID       = TechType.Diamond,
                Ingredients        =
                {
                    new EmIngredient(TechType.LaserCutter)
                },
                LinkedItemIDs =
                {
                    TechType.Diamond.ToString(),
                    TechType.Diamond.ToString()
                },
                UnlockedBy = { TechType.Diamond.ToString() }
            };

            var wireSalvage = new AliasRecipe
            {
                ItemID             = "WireSalvage",
                DisplayName        = "Salvage Copper Wire",
                Tooltip            = "Recover copper wire from retired seaglide. Don't forget to remove the batteries first.",
                Path               = tabList[0].FullPath,
                ForceUnlockAtStart = !EnableUnlocking,
                PdaCategory        = TechCategory.Electronics,
                PdaGroup           = TechGroup.Resources,
                SpriteItemID       = TechType.CopperWire,
                Ingredients        =
                {
                    new EmIngredient(TechType.Seaglide)
                },
                LinkedItemIDs =
                {
                    TechType.CopperWire.ToString(),
                },
                UnlockedBy = { TechType.Seaglide.ToString() }
            };

            var aliasList = new AliasRecipeList
            {
                leadSalvage, copperSalvage, deepSalvage, ionSalvage, diamondSalvage, wireSalvage
            };

            WriteFile(aliasList, "EquipmentSalvage_Recipes.txt");
        }