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); }
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); } }
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); }
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"); }