76 lines
1.9 KiB
C#
76 lines
1.9 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
public class PlayerEntityMovement : MonoBehaviour
|
|
{
|
|
//unsure if this should also move enemies but who knows!
|
|
#region Statication
|
|
|
|
public static PlayerEntityMovement instance;
|
|
|
|
private void Awake()
|
|
{
|
|
if (instance != null && instance != this)
|
|
{
|
|
Destroy(gameObject);
|
|
return;
|
|
}
|
|
instance = this;
|
|
}
|
|
|
|
#endregion
|
|
[SerializeField] private Grid gameplayGrid;
|
|
|
|
public Entity selectedEntity;
|
|
public GameObject templateObject;
|
|
public bool isMoving;
|
|
|
|
private Vector3 mouseWorldPos;
|
|
private Camera cam;
|
|
|
|
private float debounceTime;
|
|
[SerializeField] private float debounceDuration;
|
|
|
|
private void Start()
|
|
{
|
|
cam = Camera.main;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
mouseWorldPos = cam.ScreenToWorldPoint(Input.mousePosition);
|
|
if (debounceTime > 0)
|
|
{
|
|
debounceTime -= Time.deltaTime;
|
|
}
|
|
if (isMoving)
|
|
{
|
|
templateObject.transform.position = gameplayGrid.GetCellCenterWorld(gameplayGrid.WorldToCell(mouseWorldPos));
|
|
if (Input.GetMouseButtonDown(0) && debounceTime <= 0)
|
|
{
|
|
SelectLocation();
|
|
isMoving = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SelectEntity(Entity entitySelected)
|
|
{
|
|
selectedEntity = entitySelected;
|
|
isMoving = true;
|
|
debounceTime = debounceDuration;
|
|
CreateTemplate();
|
|
}
|
|
|
|
private void SelectLocation()
|
|
{
|
|
selectedEntity.transform.position = gameplayGrid.GetCellCenterWorld(gameplayGrid.WorldToCell(mouseWorldPos));
|
|
templateObject.SetActive(false);
|
|
}
|
|
|
|
private void CreateTemplate()
|
|
{
|
|
templateObject.SetActive(true);
|
|
templateObject.transform.position = gameplayGrid.GetCellCenterWorld(gameplayGrid.WorldToCell(mouseWorldPos));
|
|
}
|
|
}
|