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)); } }