using System.Collections; using System.Collections.Generic; using UnityEngine; using Sirenix.OdinInspector; using TMPro; using KairoEngine.UI; using KairoEngine.UI.Tooltips; using KairoEngine.UI.InteractionHandler; using KairoEngine.GameTools.InteractionTools; namespace KairoEngine.Grids { public class BuildingSelectionUi : MonoBehaviour, IClickHandler { public bool generateOnStart = true; public GridBuildingSystem gridBuildingSystem; public Sprite rotateToolIcon; public Sprite destroyToolIcon; public bool showRotateButton = true; public bool showDestroyButton = true; public MenuUI menuUI; public string tooltipType = ""; private void Start() { if(generateOnStart) CreateMenu(); } public void CreateMenu() { menuUI.DestroyMenu(); CreateMenuData(); menuUI.CreateMenu(); } public void OnClick(string title) { for (int i = 0; i < gridBuildingSystem.placeObjectTypeList.Count; i++) { var obj = gridBuildingSystem.placeObjectTypeList[i]; if(obj.title == title) { InteractionToolsManager.instance.ChangeTool(1); gridBuildingSystem.ChangeSelectedPlacebleObject(i); return; } } if(title == "Destroy") InteractionToolsManager.instance.ChangeTool(2); if(title == "Rotate") gridBuildingSystem.RotatePlacebableObject(); } private void CreateMenuData() { menuUI.buttons.Clear(); List categories = new List(); for (int i = 0; i < gridBuildingSystem.placeObjectTypeList.Count; i++) { bool duplicate = false; for (int a = 0; a < categories.Count; a++) { if(categories[a] == gridBuildingSystem.placeObjectTypeList[i].category) duplicate = true; } if(duplicate == false) categories.Add(gridBuildingSystem.placeObjectTypeList[i].category); } for (int i = 0; i < categories.Count; i++) { var data = new MenuButtomData(); data.title = categories[i]; data.subMenuParent = true; //menuUI.buttons.Add(data); } for (int i = 0; i < gridBuildingSystem.placeObjectTypeList.Count; i++) { var obj = gridBuildingSystem.placeObjectTypeList[i]; var data = new MenuButtomData(); data.title = obj.title; data.parent = obj.category; data.description = obj.description; data.action = obj.title; data.graphic = obj.icon; data.subMenuParent = false; data.showTooltip = true; data.tooltipType = tooltipType; menuUI.buttons.Add(data); } // Rotate Button if(showRotateButton) { var rotateData = new MenuButtomData(); rotateData.title = "Rotate"; rotateData.description = "Rotate the current selected building"; rotateData.action = "Rotate"; rotateData.graphic = rotateToolIcon; rotateData.subMenuParent = false; menuUI.buttons.Add(rotateData); } // Demolish Button if(showDestroyButton) { var destroyData = new MenuButtomData(); destroyData.title = "Demolish"; destroyData.description = "Tool for destroying constructed buildings"; destroyData.action = "Destroy"; destroyData.graphic = destroyToolIcon; destroyData.subMenuParent = false; menuUI.buttons.Add(destroyData); } } } }