summaryrefslogtreecommitdiff
path: root/src/TrainerMod/Framework/Commands/Player/ListItemsCommand.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/TrainerMod/Framework/Commands/Player/ListItemsCommand.cs')
-rw-r--r--src/TrainerMod/Framework/Commands/Player/ListItemsCommand.cs76
1 files changed, 0 insertions, 76 deletions
diff --git a/src/TrainerMod/Framework/Commands/Player/ListItemsCommand.cs b/src/TrainerMod/Framework/Commands/Player/ListItemsCommand.cs
deleted file mode 100644
index 7f4f454c..00000000
--- a/src/TrainerMod/Framework/Commands/Player/ListItemsCommand.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using StardewModdingAPI;
-using TrainerMod.Framework.ItemData;
-
-namespace TrainerMod.Framework.Commands.Player
-{
- /// <summary>A command which list items available to spawn.</summary>
- internal class ListItemsCommand : TrainerCommand
- {
- /*********
- ** Properties
- *********/
- /// <summary>Provides methods for searching and constructing items.</summary>
- private readonly ItemRepository Items = new ItemRepository();
-
-
- /*********
- ** Public methods
- *********/
- /// <summary>Construct an instance.</summary>
- public ListItemsCommand()
- : base("list_items", "Lists and searches items in the game data.\n\nUsage: list_items [search]\n- search (optional): an arbitrary search string to filter by.") { }
-
- /// <summary>Handle the command.</summary>
- /// <param name="monitor">Writes messages to the console and log file.</param>
- /// <param name="command">The command name.</param>
- /// <param name="args">The command arguments.</param>
- public override void Handle(IMonitor monitor, string command, ArgumentParser args)
- {
- // validate
- if (!Context.IsWorldReady)
- {
- monitor.Log("You need to load a save to use this command.", LogLevel.Error);
- return;
- }
-
- // handle
- SearchableItem[] matches =
- (
- from item in this.GetItems(args.ToArray())
- orderby item.Type.ToString(), item.Name
- select item
- )
- .ToArray();
- string summary = "Searching...\n";
- if (matches.Any())
- monitor.Log(summary + this.GetTableString(matches, new[] { "type", "name", "id" }, val => new[] { val.Type.ToString(), val.Name, val.ID.ToString() }), LogLevel.Info);
- else
- monitor.Log(summary + "No items found", LogLevel.Info);
- }
-
-
- /*********
- ** Private methods
- *********/
- /// <summary>Get all items which can be searched and added to the player's inventory through the console.</summary>
- /// <param name="searchWords">The search string to find.</param>
- private IEnumerable<SearchableItem> GetItems(string[] searchWords)
- {
- // normalise search term
- searchWords = searchWords?.Where(word => !string.IsNullOrWhiteSpace(word)).ToArray();
- if (searchWords?.Any() == false)
- searchWords = null;
-
- // find matches
- return (
- from item in this.Items.GetAll()
- let term = $"{item.ID}|{item.Type}|{item.Name}|{item.DisplayName}"
- where searchWords == null || searchWords.All(word => term.IndexOf(word, StringComparison.CurrentCultureIgnoreCase) != -1)
- select item
- );
- }
- }
-}