using System.Collections; using System.Text; using System.Collections.Generic; using UnityEngine; using Sirenix.OdinInspector; using QFSW.QC; using QFSW.QC.Utilities; using KairoEngine.Core; namespace KairoEngine.Inventory { public class ItemConsoleCommands : MonoBehaviour { private static readonly Pool _builderPool = new Pool(); [Command("get-item", "Adds target item to player's inventory")] private static string GetItem(string itemName, int quantity = 1) { QuantumConsole console = QuantumConsole.Instance; Color successColor = Color.green; Color errorColor = Color.red; Color blueColor = Color.blue; if(console != null) { QuantumTheme theme = console.GetTheme(); successColor = theme ? theme.SuccessColor : Color.white; errorColor = theme ? theme.ErrorColor : Color.white; blueColor = theme ? theme.CommandLogColor : Color.white; } ItemContainer playerInventory = EventManager.request.GetItemContainer("PlayeritemContainer").value; if(playerInventory == null) { return ColorExtensions.ColorText("Could not find player's inventory", errorColor); } ItemBase item = ItemLibrary.GetItemByName(itemName); if(item == null) { return ColorExtensions.ColorText("Item \"" + itemName + "\" could not be found!", errorColor); } if(item.category == ItemType.firearm) { ItemBaseFirearm firearmItem = (ItemBaseFirearm)item; ItemFirearmRef firearmRef = new ItemFirearmRef(item, 1, firearmItem.ammoType, quantity); playerInventory.AddItem(firearmRef); string msg = "Added "; msg += ColorExtensions.ColorText(itemName, successColor); msg += " and "; msg += ColorExtensions.ColorText(quantity.ToString() + "x ", blueColor); msg += ColorExtensions.ColorText(firearmItem.ammoType.title, successColor); msg += " to player inventory."; return msg; } else { ItemRef itemRef = new ItemRef(item, quantity, 1000); playerInventory.AddItem(itemRef); string msg = "Added "; msg += ColorExtensions.ColorText(quantity.ToString() + "x", blueColor); msg += " "; msg += ColorExtensions.ColorText(itemName, successColor); msg += " to player inventory."; return msg; } } [Command("list-items", "List all items available in the ItemLibrary")] private static string ListItems() { QuantumConsole console = QuantumConsole.Instance; Color successColor = Color.green; StringBuilder buffer = _builderPool.GetObject(); string result = ""; if(console != null) { QuantumTheme theme = console.GetTheme(); successColor = theme ? theme.SuccessColor : Color.white; } for (int i = 0; i < ItemLibrary.itemList.Count; i++) { string t = ColorExtensions.ColorText(ItemLibrary.itemList[i].title, successColor); buffer.Append(t); if(i < ItemLibrary.itemList.Count -1) buffer.Append(", "); } result = buffer.ToString(); _builderPool.Release(buffer); return result; } } }