LunarInfantry/Assets/Scripts/PlayerEntityMovement.cs
2026-01-02 02:21:53 -08:00

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