From 307055b028e0d6643983189e96a5ebcbe89d32ba Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Thu, 4 Apr 2019 18:43:56 -0400 Subject: bump version to 3.0 --- src/SMAPI.Mods.ConsoleCommands/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/SMAPI.Mods.ConsoleCommands') diff --git a/src/SMAPI.Mods.ConsoleCommands/manifest.json b/src/SMAPI.Mods.ConsoleCommands/manifest.json index 74295410..802de3a6 100644 --- a/src/SMAPI.Mods.ConsoleCommands/manifest.json +++ b/src/SMAPI.Mods.ConsoleCommands/manifest.json @@ -1,9 +1,9 @@ { "Name": "Console Commands", "Author": "SMAPI", - "Version": "2.11.3", + "Version": "3.0.0", "Description": "Adds SMAPI console commands that let you manipulate the game.", "UniqueID": "SMAPI.ConsoleCommands", "EntryDll": "ConsoleCommands.dll", - "MinimumApiVersion": "2.11.3" + "MinimumApiVersion": "3.0.0" } -- cgit From 78f28357e4f87ed619144229ea65c1e1cb0f9dd3 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Mon, 15 Apr 2019 22:36:50 -0400 Subject: update code for SDV 1.4 (#638) --- .../Framework/Commands/Player/SetMoneyCommand.cs | 4 ++-- .../Framework/ItemData/ItemType.cs | 17 ++++++++++------- .../Framework/ItemRepository.cs | 4 ++++ 3 files changed, 16 insertions(+), 9 deletions(-) (limited to 'src/SMAPI.Mods.ConsoleCommands') diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetMoneyCommand.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetMoneyCommand.cs index ad11cc66..1706bbc1 100644 --- a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetMoneyCommand.cs +++ b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/SetMoneyCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using StardewValley; namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.Player @@ -65,7 +65,7 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.Player public override void Update(IMonitor monitor) { if (this.InfiniteMoney) - Game1.player.money = 999999; + Game1.player.Money = 999999; } } } diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/ItemData/ItemType.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/ItemData/ItemType.cs index 7ee662d0..5d269c89 100644 --- a/src/SMAPI.Mods.ConsoleCommands/Framework/ItemData/ItemType.cs +++ b/src/SMAPI.Mods.ConsoleCommands/Framework/ItemData/ItemType.cs @@ -6,28 +6,31 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.ItemData /// A big craftable object in BigCraftable, - /// A item. + /// A item. Boots, - /// A flooring item. + /// A item. + Clothing, + + /// A flooring item. Flooring, - /// A item. + /// A item. Furniture, - /// A item. + /// A item. Hat, /// Any object in (except rings). Object, - /// A item. + /// A item. Ring, - /// A tool. + /// A tool. Tool, - /// A wall item. + /// A wall item. Wallpaper, /// A or item. diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs index fc631826..90cdb872 100644 --- a/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs +++ b/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs @@ -35,6 +35,10 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework yield return new SearchableItem(ItemType.Tool, this.CustomIDOffset + 2, new Pan()); yield return new SearchableItem(ItemType.Tool, this.CustomIDOffset + 3, new Wand()); + // clothing + foreach (int id in Game1.clothingInformation.Keys) + yield return new SearchableItem(ItemType.Clothing, id, new Clothing(id)); + // wallpapers for (int id = 0; id < 112; id++) yield return new SearchableItem(ItemType.Wallpaper, id, new Wallpaper(id) { Category = SObject.furnitureCategory }); -- cgit From abffdc2dab2a1c03904427b251acac9d800e0912 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Wed, 24 Apr 2019 23:45:34 -0400 Subject: simplify project names --- .../SMAPI.Mods.ConsoleCommands.csproj | 35 ++++++++++++++++++++++ .../StardewModdingAPI.Mods.ConsoleCommands.csproj | 35 ---------------------- 2 files changed, 35 insertions(+), 35 deletions(-) create mode 100644 src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj delete mode 100644 src/SMAPI.Mods.ConsoleCommands/StardewModdingAPI.Mods.ConsoleCommands.csproj (limited to 'src/SMAPI.Mods.ConsoleCommands') diff --git a/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj b/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj new file mode 100644 index 00000000..13f92443 --- /dev/null +++ b/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj @@ -0,0 +1,35 @@ + + + + SMAPI.Mods.ConsoleCommands + ConsoleCommands + net45 + false + latest + $(SolutionDir)\..\bin\$(Configuration)\Mods\ConsoleCommands + false + x86 + + + + + False + + + + + + Properties\GlobalAssemblyInfo.cs + + + + + + PreserveNewest + + + + + + + diff --git a/src/SMAPI.Mods.ConsoleCommands/StardewModdingAPI.Mods.ConsoleCommands.csproj b/src/SMAPI.Mods.ConsoleCommands/StardewModdingAPI.Mods.ConsoleCommands.csproj deleted file mode 100644 index b535e2fd..00000000 --- a/src/SMAPI.Mods.ConsoleCommands/StardewModdingAPI.Mods.ConsoleCommands.csproj +++ /dev/null @@ -1,35 +0,0 @@ - - - - StardewModdingAPI.Mods.ConsoleCommands - ConsoleCommands - net45 - false - latest - $(SolutionDir)\..\bin\$(Configuration)\Mods\ConsoleCommands - false - x86 - - - - - False - - - - - - Properties\GlobalAssemblyInfo.cs - - - - - - PreserveNewest - - - - - - - -- cgit From 904c39eb7286df6ad3098dfdcfbf09cb282141e4 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Tue, 18 Jun 2019 23:59:30 -0400 Subject: move assembly references out of common.targets --- .../SMAPI.Mods.ConsoleCommands.csproj | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'src/SMAPI.Mods.ConsoleCommands') diff --git a/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj b/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj index 13f92443..6cceb22d 100644 --- a/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj +++ b/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj @@ -17,6 +17,55 @@ + + + $(GamePath)\$(GameExecutableName).exe + False + + + + + + + + + $(GamePath)\StardewValley.GameData.dll + False + + + $(GamePath)\Netcode.dll + False + + + False + + + False + + + False + + + False + + + + + + + + + $(GamePath)\StardewValley.GameData.MonoGame.dll + False + + + $(GamePath)\MonoGame.Framework.dll + False + + + + + Properties\GlobalAssemblyInfo.cs -- cgit From c6d4381142ef4e871a7b203c4c940a792bcd1a1e Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Mon, 8 Jul 2019 20:59:55 -0400 Subject: update for SDV 1.4 build change on Linux/Mac (#638) --- .../SMAPI.Mods.ConsoleCommands.csproj | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/SMAPI.Mods.ConsoleCommands') diff --git a/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj b/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj index 6cceb22d..80e1986e 100644 --- a/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj +++ b/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj @@ -22,16 +22,16 @@ $(GamePath)\$(GameExecutableName).exe False + + $(GamePath)\StardewValley.GameData.dll + False + - - $(GamePath)\StardewValley.GameData.dll - False - $(GamePath)\Netcode.dll False @@ -54,10 +54,6 @@ - - $(GamePath)\StardewValley.GameData.MonoGame.dll - False - $(GamePath)\MonoGame.Framework.dll False -- cgit From fd77ae93d59222d70c86aebfc044f3af11063372 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 9 Aug 2019 01:18:05 -0400 Subject: fix typos and inconsistent spelling --- .../Framework/Commands/Player/AddCommand.cs | 2 +- .../Framework/Commands/Player/ListItemsCommand.cs | 4 ++-- .../Framework/Commands/World/SetTimeCommand.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src/SMAPI.Mods.ConsoleCommands') diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/AddCommand.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/AddCommand.cs index 263e126c..6cb2b624 100644 --- a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/AddCommand.cs +++ b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/AddCommand.cs @@ -15,7 +15,7 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.Player /// Provides methods for searching and constructing items. private readonly ItemRepository Items = new ItemRepository(); - /// The type names recognised by this command. + /// The type names recognized by this command. private readonly string[] ValidTypes = Enum.GetNames(typeof(ItemType)).Concat(new[] { "Name" }).ToArray(); diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/ListItemsCommand.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/ListItemsCommand.cs index 5b52e9a2..4232ce16 100644 --- a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/ListItemsCommand.cs +++ b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Player/ListItemsCommand.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using StardewModdingAPI.Mods.ConsoleCommands.Framework.ItemData; @@ -58,7 +58,7 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.Player /// The search string to find. private IEnumerable GetItems(string[] searchWords) { - // normalise search term + // normalize search term searchWords = searchWords?.Where(word => !string.IsNullOrWhiteSpace(word)).ToArray(); if (searchWords?.Any() == false) searchWords = null; diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/SetTimeCommand.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/SetTimeCommand.cs index a6075013..9eae6741 100644 --- a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/SetTimeCommand.cs +++ b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/World/SetTimeCommand.cs @@ -60,7 +60,7 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.World { for (int i = 0; i > intervals; i--) { - Game1.timeOfDay = FromTimeSpan(ToTimeSpan(Game1.timeOfDay).Subtract(TimeSpan.FromMinutes(20))); // offset 20 mins so game updates to next interval + Game1.timeOfDay = FromTimeSpan(ToTimeSpan(Game1.timeOfDay).Subtract(TimeSpan.FromMinutes(20))); // offset 20 minutes so game updates to next interval Game1.performTenMinuteClockUpdate(); } } -- cgit From 25e4aa14d865cdf9f3616cfb0fd981aaaf0e3535 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 9 Aug 2019 17:47:53 -0400 Subject: remove legacy AssemblyInfo and GlobalAssemblyInfo files, use consistent assembly names --- src/SMAPI.Mods.ConsoleCommands/Properties/AssemblyInfo.cs | 4 ---- src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj | 9 +-------- 2 files changed, 1 insertion(+), 12 deletions(-) delete mode 100644 src/SMAPI.Mods.ConsoleCommands/Properties/AssemblyInfo.cs (limited to 'src/SMAPI.Mods.ConsoleCommands') diff --git a/src/SMAPI.Mods.ConsoleCommands/Properties/AssemblyInfo.cs b/src/SMAPI.Mods.ConsoleCommands/Properties/AssemblyInfo.cs deleted file mode 100644 index 86653141..00000000 --- a/src/SMAPI.Mods.ConsoleCommands/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,4 +0,0 @@ -using System.Reflection; - -[assembly: AssemblyTitle("SMAPI.Mods.ConsoleCommands")] -[assembly: AssemblyDescription("")] diff --git a/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj b/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj index 80e1986e..ce35bf73 100644 --- a/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj +++ b/src/SMAPI.Mods.ConsoleCommands/SMAPI.Mods.ConsoleCommands.csproj @@ -1,10 +1,9 @@  - SMAPI.Mods.ConsoleCommands ConsoleCommands + StardewModdingAPI.Mods.ConsoleCommands net45 - false latest $(SolutionDir)\..\bin\$(Configuration)\Mods\ConsoleCommands false @@ -62,12 +61,6 @@ - - - Properties\GlobalAssemblyInfo.cs - - - PreserveNewest -- cgit From be79a042060757b7cb48ccbcc29f395757049a8c Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Mon, 28 Oct 2019 15:59:12 -0400 Subject: make item spawn commands more robust --- .../Framework/ItemRepository.cs | 343 ++++++++++++--------- 1 file changed, 199 insertions(+), 144 deletions(-) (limited to 'src/SMAPI.Mods.ConsoleCommands') diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs index 90cdb872..1dfb3129 100644 --- a/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs +++ b/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs @@ -1,4 +1,7 @@ +using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; using Microsoft.Xna.Framework; using StardewModdingAPI.Mods.ConsoleCommands.Framework.ItemData; using StardewValley; @@ -22,176 +25,228 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework ** Public methods *********/ /// Get all spawnable items. + [SuppressMessage("ReSharper", "AccessToModifiedClosure", Justification = "TryCreate invokes the lambda immediately.")] public IEnumerable GetAll() { - // get tools - yield return new SearchableItem(ItemType.Tool, ToolFactory.axe, ToolFactory.getToolFromDescription(ToolFactory.axe, 0)); - yield return new SearchableItem(ItemType.Tool, ToolFactory.hoe, ToolFactory.getToolFromDescription(ToolFactory.hoe, 0)); - yield return new SearchableItem(ItemType.Tool, ToolFactory.pickAxe, ToolFactory.getToolFromDescription(ToolFactory.pickAxe, 0)); - yield return new SearchableItem(ItemType.Tool, ToolFactory.wateringCan, ToolFactory.getToolFromDescription(ToolFactory.wateringCan, 0)); - yield return new SearchableItem(ItemType.Tool, ToolFactory.fishingRod, ToolFactory.getToolFromDescription(ToolFactory.fishingRod, 0)); - yield return new SearchableItem(ItemType.Tool, this.CustomIDOffset, new MilkPail()); // these don't have any sort of ID, so we'll just assign some arbitrary ones - yield return new SearchableItem(ItemType.Tool, this.CustomIDOffset + 1, new Shears()); - yield return new SearchableItem(ItemType.Tool, this.CustomIDOffset + 2, new Pan()); - yield return new SearchableItem(ItemType.Tool, this.CustomIDOffset + 3, new Wand()); - - // clothing - foreach (int id in Game1.clothingInformation.Keys) - yield return new SearchableItem(ItemType.Clothing, id, new Clothing(id)); - - // wallpapers - for (int id = 0; id < 112; id++) - yield return new SearchableItem(ItemType.Wallpaper, id, new Wallpaper(id) { Category = SObject.furnitureCategory }); - - // flooring - for (int id = 0; id < 40; id++) - yield return new SearchableItem(ItemType.Flooring, id, new Wallpaper(id, isFloor: true) { Category = SObject.furnitureCategory }); - - // equipment - foreach (int id in Game1.content.Load>("Data\\Boots").Keys) - yield return new SearchableItem(ItemType.Boots, id, new Boots(id)); - foreach (int id in Game1.content.Load>("Data\\hats").Keys) - yield return new SearchableItem(ItemType.Hat, id, new Hat(id)); - foreach (int id in Game1.objectInformation.Keys) + IEnumerable GetAllRaw() { - if (id >= Ring.ringLowerIndexRange && id <= Ring.ringUpperIndexRange) - yield return new SearchableItem(ItemType.Ring, id, new Ring(id)); - } - - // weapons - foreach (int id in Game1.content.Load>("Data\\weapons").Keys) - { - Item weapon = (id >= 32 && id <= 34) - ? (Item)new Slingshot(id) - : new MeleeWeapon(id); - yield return new SearchableItem(ItemType.Weapon, id, weapon); - } - - // furniture - foreach (int id in Game1.content.Load>("Data\\Furniture").Keys) - { - if (id == 1466 || id == 1468) - yield return new SearchableItem(ItemType.Furniture, id, new TV(id, Vector2.Zero)); - else - yield return new SearchableItem(ItemType.Furniture, id, new Furniture(id, Vector2.Zero)); - } - - // craftables - foreach (int id in Game1.bigCraftablesInformation.Keys) - yield return new SearchableItem(ItemType.BigCraftable, id, new SObject(Vector2.Zero, id)); + // get tools + for (int quality = Tool.stone; quality <= Tool.iridium; quality++) + { + yield return this.TryCreate(ItemType.Tool, ToolFactory.axe, () => ToolFactory.getToolFromDescription(ToolFactory.axe, quality)); + yield return this.TryCreate(ItemType.Tool, ToolFactory.hoe, () => ToolFactory.getToolFromDescription(ToolFactory.hoe, quality)); + yield return this.TryCreate(ItemType.Tool, ToolFactory.pickAxe, () => ToolFactory.getToolFromDescription(ToolFactory.pickAxe, quality)); + yield return this.TryCreate(ItemType.Tool, ToolFactory.wateringCan, () => ToolFactory.getToolFromDescription(ToolFactory.wateringCan, quality)); + if (quality != Tool.iridium) + yield return this.TryCreate(ItemType.Tool, ToolFactory.fishingRod, () => ToolFactory.getToolFromDescription(ToolFactory.fishingRod, quality)); + } + yield return this.TryCreate(ItemType.Tool, this.CustomIDOffset, () => new MilkPail()); // these don't have any sort of ID, so we'll just assign some arbitrary ones + yield return this.TryCreate(ItemType.Tool, this.CustomIDOffset + 1, () => new Shears()); + yield return this.TryCreate(ItemType.Tool, this.CustomIDOffset + 2, () => new Pan()); + yield return this.TryCreate(ItemType.Tool, this.CustomIDOffset + 3, () => new Wand()); + + // wallpapers + for (int id = 0; id < 112; id++) + yield return this.TryCreate(ItemType.Wallpaper, id, () => new Wallpaper(id) { Category = SObject.furnitureCategory }); + + // flooring + for (int id = 0; id < 40; id++) + yield return this.TryCreate(ItemType.Flooring, id, () => new Wallpaper(id, isFloor: true) { Category = SObject.furnitureCategory }); + + // equipment + foreach (int id in Game1.content.Load>("Data\\Boots").Keys) + yield return this.TryCreate(ItemType.Boots, id, () => new Boots(id)); + foreach (int id in Game1.content.Load>("Data\\hats").Keys) + yield return this.TryCreate(ItemType.Hat, id, () => new Hat(id)); + foreach (int id in Game1.objectInformation.Keys) + { + if (id >= Ring.ringLowerIndexRange && id <= Ring.ringUpperIndexRange) + yield return this.TryCreate(ItemType.Ring, id, () => new Ring(id)); + } - // secret notes - foreach (int id in Game1.content.Load>("Data\\SecretNotes").Keys) - { - SObject note = new SObject(79, 1); - note.name = $"{note.name} #{id}"; - yield return new SearchableItem(ItemType.Object, this.CustomIDOffset + id, note); - } + // weapons + foreach (int id in Game1.content.Load>("Data\\weapons").Keys) + { + yield return this.TryCreate(ItemType.Weapon, id, () => (id >= 32 && id <= 34) + ? (Item)new Slingshot(id) + : new MeleeWeapon(id) + ); + } - // objects - foreach (int id in Game1.objectInformation.Keys) - { - if (id == 79) - continue; // secret note handled above - if (id >= Ring.ringLowerIndexRange && id <= Ring.ringUpperIndexRange) - continue; // handled separated + // furniture + foreach (int id in Game1.content.Load>("Data\\Furniture").Keys) + { + if (id == 1466 || id == 1468) + yield return this.TryCreate(ItemType.Furniture, id, () => new TV(id, Vector2.Zero)); + else + yield return this.TryCreate(ItemType.Furniture, id, () => new Furniture(id, Vector2.Zero)); + } - SObject item = new SObject(id, 1); - yield return new SearchableItem(ItemType.Object, id, item); + // craftables + foreach (int id in Game1.bigCraftablesInformation.Keys) + yield return this.TryCreate(ItemType.BigCraftable, id, () => new SObject(Vector2.Zero, id)); - // fruit products - if (item.Category == SObject.FruitsCategory) + // secret notes + foreach (int id in Game1.content.Load>("Data\\SecretNotes").Keys) { - // wine - SObject wine = new SObject(348, 1) + yield return this.TryCreate(ItemType.Object, this.CustomIDOffset + id, () => { - Name = $"{item.Name} Wine", - Price = item.Price * 3 - }; - wine.preserve.Value = SObject.PreserveType.Wine; - wine.preservedParentSheetIndex.Value = item.ParentSheetIndex; - yield return new SearchableItem(ItemType.Object, this.CustomIDOffset * 2 + id, wine); - - // jelly - SObject jelly = new SObject(344, 1) - { - Name = $"{item.Name} Jelly", - Price = 50 + item.Price * 2 - }; - jelly.preserve.Value = SObject.PreserveType.Jelly; - jelly.preservedParentSheetIndex.Value = item.ParentSheetIndex; - yield return new SearchableItem(ItemType.Object, this.CustomIDOffset * 3 + id, jelly); + SObject note = new SObject(79, 1); + note.name = $"{note.name} #{id}"; + return note; + }); } - // vegetable products - else if (item.Category == SObject.VegetableCategory) + // objects + foreach (int id in Game1.objectInformation.Keys) { - // juice - SObject juice = new SObject(350, 1) + if (id == 79) + continue; // secret note handled above + if (id >= Ring.ringLowerIndexRange && id <= Ring.ringUpperIndexRange) + continue; // handled separated + + // spawn main item + SObject item; { - Name = $"{item.Name} Juice", - Price = (int)(item.Price * 2.25d) - }; - juice.preserve.Value = SObject.PreserveType.Juice; - juice.preservedParentSheetIndex.Value = item.ParentSheetIndex; - yield return new SearchableItem(ItemType.Object, this.CustomIDOffset * 4 + id, juice); - - // pickled - SObject pickled = new SObject(342, 1) + SearchableItem main = this.TryCreate(ItemType.Object, id, () => new SObject(id, 1)); + yield return main; + item = main?.Item as SObject; + } + if (item == null) + continue; + + // fruit products + if (item.Category == SObject.FruitsCategory) { - Name = $"Pickled {item.Name}", - Price = 50 + item.Price * 2 - }; - pickled.preserve.Value = SObject.PreserveType.Pickle; - pickled.preservedParentSheetIndex.Value = item.ParentSheetIndex; - yield return new SearchableItem(ItemType.Object, this.CustomIDOffset * 5 + id, pickled); - } + // wine + yield return this.TryCreate(ItemType.Object, this.CustomIDOffset * 2 + id, () => + { + SObject wine = new SObject(348, 1) + { + Name = $"{item.Name} Wine", + Price = item.Price * 3 + }; + wine.preserve.Value = SObject.PreserveType.Wine; + wine.preservedParentSheetIndex.Value = item.ParentSheetIndex; + return wine; + }); + + // jelly + yield return this.TryCreate(ItemType.Object, this.CustomIDOffset * 3 + id, () => + { + SObject jelly = new SObject(344, 1) + { + Name = $"{item.Name} Jelly", + Price = 50 + item.Price * 2 + }; + jelly.preserve.Value = SObject.PreserveType.Jelly; + jelly.preservedParentSheetIndex.Value = item.ParentSheetIndex; + return jelly; + }); + } - // flower honey - else if (item.Category == SObject.flowersCategory) - { - // get honey type - SObject.HoneyType? type = null; - switch (item.ParentSheetIndex) + // vegetable products + else if (item.Category == SObject.VegetableCategory) { - case 376: - type = SObject.HoneyType.Poppy; - break; - case 591: - type = SObject.HoneyType.Tulip; - break; - case 593: - type = SObject.HoneyType.SummerSpangle; - break; - case 595: - type = SObject.HoneyType.FairyRose; - break; - case 597: - type = SObject.HoneyType.BlueJazz; - break; - case 421: // sunflower standing in for all other flowers - type = SObject.HoneyType.Wild; - break; + // juice + yield return this.TryCreate(ItemType.Object, this.CustomIDOffset * 4 + id, () => + { + SObject juice = new SObject(350, 1) + { + Name = $"{item.Name} Juice", + Price = (int)(item.Price * 2.25d) + }; + juice.preserve.Value = SObject.PreserveType.Juice; + juice.preservedParentSheetIndex.Value = item.ParentSheetIndex; + return juice; + }); + + // pickled + yield return this.TryCreate(ItemType.Object, this.CustomIDOffset * 5 + id, () => + { + SObject pickled = new SObject(342, 1) + { + Name = $"Pickled {item.Name}", + Price = 50 + item.Price * 2 + }; + pickled.preserve.Value = SObject.PreserveType.Pickle; + pickled.preservedParentSheetIndex.Value = item.ParentSheetIndex; + return pickled; + }); } - // yield honey - if (type != null) + // flower honey + else if (item.Category == SObject.flowersCategory) { - SObject honey = new SObject(Vector2.Zero, 340, item.Name + " Honey", false, true, false, false) + // get honey type + SObject.HoneyType? type = null; + switch (item.ParentSheetIndex) { - Name = "Wild Honey" - }; - honey.honeyType.Value = type; + case 376: + type = SObject.HoneyType.Poppy; + break; + case 591: + type = SObject.HoneyType.Tulip; + break; + case 593: + type = SObject.HoneyType.SummerSpangle; + break; + case 595: + type = SObject.HoneyType.FairyRose; + break; + case 597: + type = SObject.HoneyType.BlueJazz; + break; + case 421: // sunflower standing in for all other flowers + type = SObject.HoneyType.Wild; + break; + } - if (type != SObject.HoneyType.Wild) + // yield honey + if (type != null) { - honey.Name = $"{item.Name} Honey"; - honey.Price += item.Price * 2; + yield return this.TryCreate(ItemType.Object, this.CustomIDOffset * 5 + id, () => + { + SObject honey = new SObject(Vector2.Zero, 340, item.Name + " Honey", false, true, false, false) + { + Name = "Wild Honey" + }; + honey.honeyType.Value = type; + + if (type != SObject.HoneyType.Wild) + { + honey.Name = $"{item.Name} Honey"; + honey.Price += item.Price * 2; + } + + return honey; + }); } - yield return new SearchableItem(ItemType.Object, this.CustomIDOffset * 5 + id, honey); } } } + + return GetAllRaw().Where(p => p != null); + } + + + /********* + ** Private methods + *********/ + /// Create a searchable item if valid. + /// The item type. + /// The unique ID (if different from the item's parent sheet index). + /// Create an item instance. + private SearchableItem TryCreate(ItemType type, int id, Func createItem) + { + try + { + return new SearchableItem(type, id, createItem()); + } + catch + { + return null; // if some item data is invalid, just don't include it + } } } } -- cgit From 773ebf54065c16ce4715e8e43ab04480010cc08a Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sun, 6 Oct 2019 21:41:32 -0400 Subject: update for honey changes in SDV 1.4 (#638) --- .../Framework/ItemRepository.cs | 50 ++++------------------ 1 file changed, 8 insertions(+), 42 deletions(-) (limited to 'src/SMAPI.Mods.ConsoleCommands') diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs index 1dfb3129..4d9091b0 100644 --- a/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs +++ b/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs @@ -178,50 +178,16 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework // flower honey else if (item.Category == SObject.flowersCategory) { - // get honey type - SObject.HoneyType? type = null; - switch (item.ParentSheetIndex) - { - case 376: - type = SObject.HoneyType.Poppy; - break; - case 591: - type = SObject.HoneyType.Tulip; - break; - case 593: - type = SObject.HoneyType.SummerSpangle; - break; - case 595: - type = SObject.HoneyType.FairyRose; - break; - case 597: - type = SObject.HoneyType.BlueJazz; - break; - case 421: // sunflower standing in for all other flowers - type = SObject.HoneyType.Wild; - break; - } - - // yield honey - if (type != null) + yield return this.TryCreate(ItemType.Object, this.CustomIDOffset * 5 + id, () => { - yield return this.TryCreate(ItemType.Object, this.CustomIDOffset * 5 + id, () => + SObject honey = new SObject(Vector2.Zero, 340, $"{item.Name} Honey", false, true, false, false) { - SObject honey = new SObject(Vector2.Zero, 340, item.Name + " Honey", false, true, false, false) - { - Name = "Wild Honey" - }; - honey.honeyType.Value = type; - - if (type != SObject.HoneyType.Wild) - { - honey.Name = $"{item.Name} Honey"; - honey.Price += item.Price * 2; - } - - return honey; - }); - } + Name = $"{item.Name} Honey", + preservedParentSheetIndex = { item.ParentSheetIndex } + }; + honey.Price += item.Price * 2; + return honey; + }); } } } -- cgit From 2c2644f5a083562822dda48311678daf3b8d5e1f Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 19 Jul 2019 21:31:35 -0400 Subject: add roe spawning (#638) --- .../Framework/ItemRepository.cs | 43 +++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) (limited to 'src/SMAPI.Mods.ConsoleCommands') diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs index 4d9091b0..0648aa2b 100644 --- a/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs +++ b/src/SMAPI.Mods.ConsoleCommands/Framework/ItemRepository.cs @@ -5,6 +5,7 @@ using System.Linq; using Microsoft.Xna.Framework; using StardewModdingAPI.Mods.ConsoleCommands.Framework.ItemData; using StardewValley; +using StardewValley.Menus; using StardewValley.Objects; using StardewValley.Tools; using SObject = StardewValley.Object; @@ -108,7 +109,10 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework // spawn main item SObject item; { - SearchableItem main = this.TryCreate(ItemType.Object, id, () => new SObject(id, 1)); + SearchableItem main = this.TryCreate(ItemType.Object, id, () => id == 812 + ? new ColoredObject(id, 1, Color.White) + : new SObject(id, 1) + ); yield return main; item = main?.Item as SObject; } @@ -189,6 +193,43 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework return honey; }); } + + // roe and aged roe (derived from FishPond.GetFishProduce) + else if (id == 812) + { + foreach (var pair in Game1.objectInformation) + { + // get input + SObject input = new SObject(pair.Key, 1); + if (input.Category != SObject.FishCategory) + continue; + Color color = TailoringMenu.GetDyeColor(input) ?? Color.Orange; + + // yield roe + SObject roe = new ColoredObject(812, 1, color) + { + name = $"{input.Name} Roe", + preserve = { Value = SObject.PreserveType.Roe }, + preservedParentSheetIndex = { Value = input.ParentSheetIndex } + }; + roe.Price += input.Price / 2; + yield return new SearchableItem(ItemType.Object, this.CustomIDOffset * 6 + 1, roe); + + // aged roe + if (pair.Key != 698) // aged sturgeon roe is caviar, which is a separate item + { + ColoredObject agedRoe = new ColoredObject(447, 1, color) + { + name = $"Aged {input.Name} Roe", + Category = -27, + preserve = { Value = SObject.PreserveType.AgedRoe }, + preservedParentSheetIndex = { Value = input.ParentSheetIndex }, + Price = roe.Price * 2 + }; + yield return new SearchableItem(ItemType.Object, this.CustomIDOffset * 6 + 1, agedRoe); + } + } + } } } -- cgit