ItemConsoleCommands.cs 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using System.Collections;
  2. using System.Text;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using Sirenix.OdinInspector;
  6. using QFSW.QC;
  7. using QFSW.QC.Utilities;
  8. using KairoEngine.Core;
  9. namespace KairoEngine.Inventory
  10. {
  11. public class ItemConsoleCommands : MonoBehaviour
  12. {
  13. private static readonly Pool<StringBuilder> _builderPool = new Pool<StringBuilder>();
  14. [Command("get-item", "Adds target item to player's inventory")]
  15. private static string GetItem(string itemName, int quantity = 1)
  16. {
  17. QuantumConsole console = QuantumConsole.Instance;
  18. Color successColor = Color.green;
  19. Color errorColor = Color.red;
  20. Color blueColor = Color.blue;
  21. if(console != null)
  22. {
  23. QuantumTheme theme = console.GetTheme();
  24. successColor = theme ? theme.SuccessColor : Color.white;
  25. errorColor = theme ? theme.ErrorColor : Color.white;
  26. blueColor = theme ? theme.CommandLogColor : Color.white;
  27. }
  28. ItemContainer playerInventory = EventManager.request.GetItemContainer("PlayeritemContainer").value;
  29. if(playerInventory == null)
  30. {
  31. return ColorExtensions.ColorText("Could not find player's inventory", errorColor);
  32. }
  33. ItemBase item = ItemLibrary.GetItemByName(itemName);
  34. if(item == null)
  35. {
  36. return ColorExtensions.ColorText("Item \"" + itemName + "\" could not be found!", errorColor);
  37. }
  38. if(item.category == ItemType.firearm)
  39. {
  40. ItemBaseFirearm firearmItem = (ItemBaseFirearm)item;
  41. ItemFirearmRef firearmRef = new ItemFirearmRef(item, 1, firearmItem.ammoType, quantity);
  42. playerInventory.AddItem(firearmRef);
  43. string msg = "Added ";
  44. msg += ColorExtensions.ColorText(itemName, successColor);
  45. msg += " and ";
  46. msg += ColorExtensions.ColorText(quantity.ToString() + "x ", blueColor);
  47. msg += ColorExtensions.ColorText(firearmItem.ammoType.title, successColor);
  48. msg += " to player inventory.";
  49. return msg;
  50. }
  51. else
  52. {
  53. ItemRef itemRef = new ItemRef(item, quantity, 1000);
  54. playerInventory.AddItem(itemRef);
  55. string msg = "Added ";
  56. msg += ColorExtensions.ColorText(quantity.ToString() + "x", blueColor);
  57. msg += " ";
  58. msg += ColorExtensions.ColorText(itemName, successColor);
  59. msg += " to player inventory.";
  60. return msg;
  61. }
  62. }
  63. [Command("list-items", "List all items available in the ItemLibrary")]
  64. private static string ListItems()
  65. {
  66. QuantumConsole console = QuantumConsole.Instance;
  67. Color successColor = Color.green;
  68. StringBuilder buffer = _builderPool.GetObject();
  69. string result = "";
  70. if(console != null)
  71. {
  72. QuantumTheme theme = console.GetTheme();
  73. successColor = theme ? theme.SuccessColor : Color.white;
  74. }
  75. for (int i = 0; i < ItemLibrary.itemList.Count; i++)
  76. {
  77. string t = ColorExtensions.ColorText(ItemLibrary.itemList[i].title, successColor);
  78. buffer.Append(t);
  79. if(i < ItemLibrary.itemList.Count -1) buffer.Append(", ");
  80. }
  81. result = buffer.ToString();
  82. _builderPool.Release(buffer);
  83. return result;
  84. }
  85. }
  86. }