OldBlueWater/BlueWater/Assets/GolemiteGames/GridBuilder2/Scripts/PickBuildingBtn.cs
2023-08-01 13:03:57 +09:00

115 lines
3.0 KiB
C#

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
[RequireComponent(typeof(Button))]
public class PickBuildingBtn : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
//Cached variables
GridSelector gridSelector;
RemoveMode removeMode;
ObjectPlacer objectPlacer;
ObjectSelector objectSelector;
bool dragAndDrop = false;
Button btn;
[SerializeField] Building buildingPrefab;
private void Awake()
{
removeMode = FindObjectOfType<RemoveMode>();
btn = GetComponent<Button>();
}
// Start is called before the first frame update
void Start()
{
//Caches objects
objectPlacer = GridBuilder2Manager.Instance.ObjectPlacer;
if (objectPlacer)
{
dragAndDrop = objectPlacer.DragAndDrop;
}
gridSelector = GridBuilder2Manager.Instance.GridSelector;
objectSelector = GridBuilder2Manager.Instance.ObjectSelector;
if (buildingPrefab)
{
buildingPrefab.SaveStartChecks();
}
if (!dragAndDrop)
{
btn.onClick.AddListener(() =>
{
SetBuildObject();
});
}
}
//Sets up the functions to place the prefab attached to this component
private void SetBuildObject()
{
if (removeMode)
{
removeMode.DisableRemoveMode();
removeMode.ChangeText();
}
if (objectSelector)
{
if (objectSelector.SelectedObj)
{
objectSelector.DeselectObject();
}
}
if (gridSelector)
{
gridSelector.DeselectPreview();
if (buildingPrefab)
{
buildingPrefab.ResetStartChecks();
gridSelector.DragMove = false;
gridSelector.SetGameObjectToPlace(buildingPrefab);
}
}
}
//This are used for the drag and drop objectPlacer method
public void OnPointerDown(PointerEventData pointerData)
{
if (objectPlacer.DragAndDrop)
{
if (pointerData.button == PointerEventData.InputButton.Left)
{
gridSelector.Dragging = true;
SetBuildObject();
}
}
}
//This are used for the drag and drop objectPlacer method
public void OnPointerUp(PointerEventData pointerData)
{
if (pointerData.button == PointerEventData.InputButton.Left)
{
if (gridSelector.Dragging && !gridSelector.PreviewObj)
{
gridSelector.DeselectPreview();
gridSelector.Dragging = false;
}
if (gridSelector.Dragging && gridSelector.PreviewObj)
{
if (!gridSelector.PreviewObj.activeSelf)
{
gridSelector.DeselectPreview();
gridSelector.Dragging = false;
}
}
}
}
}