BuildingSelectionUi.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using Sirenix.OdinInspector;
  5. using TMPro;
  6. using KairoEngine.UI;
  7. using KairoEngine.UI.Tooltips;
  8. using KairoEngine.UI.InteractionHandler;
  9. using KairoEngine.GameTools.InteractionTools;
  10. namespace KairoEngine.Grids
  11. {
  12. public class BuildingSelectionUi : MonoBehaviour, IClickHandler
  13. {
  14. public bool generateOnStart = true;
  15. public GridBuildingSystem gridBuildingSystem;
  16. public Sprite destroyToolIcon;
  17. public MenuUI menuUI;
  18. public string tooltipType = "";
  19. private void Start()
  20. {
  21. if(generateOnStart) CreateMenu();
  22. }
  23. public void CreateMenu()
  24. {
  25. menuUI.DestroyMenu();
  26. CreateMenuData();
  27. menuUI.CreateMenu();
  28. }
  29. public void OnClick(string title)
  30. {
  31. for (int i = 0; i < gridBuildingSystem.placeObjectTypeList.Count; i++)
  32. {
  33. var obj = gridBuildingSystem.placeObjectTypeList[i];
  34. if(obj.title == title)
  35. {
  36. InteractionToolsManager.instance.ChangeTool(1);
  37. gridBuildingSystem.ChangeSelectedPlacebleObject(i);
  38. return;
  39. }
  40. }
  41. if(title == "Destroy") InteractionToolsManager.instance.ChangeTool(2);
  42. }
  43. private void CreateMenuData()
  44. {
  45. menuUI.buttons.Clear();
  46. List<string> categories = new List<string>();
  47. for (int i = 0; i < gridBuildingSystem.placeObjectTypeList.Count; i++)
  48. {
  49. bool duplicate = false;
  50. for (int a = 0; a < categories.Count; a++)
  51. {
  52. if(categories[a] == gridBuildingSystem.placeObjectTypeList[i].category) duplicate = true;
  53. }
  54. if(duplicate == false) categories.Add(gridBuildingSystem.placeObjectTypeList[i].category);
  55. }
  56. for (int i = 0; i < categories.Count; i++)
  57. {
  58. var data = new MenuButtomData();
  59. data.title = categories[i];
  60. data.subMenuParent = true;
  61. //menuUI.buttons.Add(data);
  62. }
  63. for (int i = 0; i < gridBuildingSystem.placeObjectTypeList.Count; i++)
  64. {
  65. var obj = gridBuildingSystem.placeObjectTypeList[i];
  66. var data = new MenuButtomData();
  67. data.title = obj.title;
  68. data.parent = obj.category;
  69. data.description = obj.description;
  70. data.action = obj.title;
  71. data.graphic = obj.icon;
  72. data.subMenuParent = false;
  73. data.showTooltip = true;
  74. data.tooltipType = tooltipType;
  75. menuUI.buttons.Add(data);
  76. }
  77. var destroyData = new MenuButtomData();
  78. destroyData.title = "Demolish";
  79. destroyData.description = "Tool for destroying constructed buildings";
  80. destroyData.action = "Destroy";
  81. destroyData.graphic = destroyToolIcon;
  82. destroyData.subMenuParent = false;
  83. menuUI.buttons.Add(destroyData);
  84. }
  85. }
  86. }