WUT_Computer_Science/theProject/Assets/Scripts/Player/PlayerClickSystem.cs

70 lines
2.0 KiB
C#
Raw Normal View History

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerClickSystem : MonoBehaviour
{
[SerializeField] TilemapManager tilemapManager;
2022-05-23 15:01:14 +02:00
private BetterInput bInput;
private bool leftMouseClicked = false;
private Vector2 mousePos = Vector2.zero;
private void Awake()
{
2022-05-23 15:01:14 +02:00
bInput = new BetterInput();
bInput.Main.MouseLeftClick.started += (ctx) => { leftMouseClicked = true; };
bInput.Main.MouseLeftClick.canceled += (ctx) => { leftMouseClicked = false; };
bInput.Main.MousePosition.performed += (ctx) => { mousePos = ctx.ReadValue<Vector2>(); };
tilemapManager = FindObjectOfType<TilemapManager>();
if(tilemapManager == null)
{
Debug.LogError("Tilemap Manager not found");
}
}
// Update is called once per frame
void Update()
{
2022-05-23 15:01:14 +02:00
if(leftMouseClicked) // Change to new input system
{
2022-05-23 15:01:14 +02:00
leftMouseClicked = false;
//Debug.Log("CLICK");
Camera camera = Camera.main;
RaycastHit hit;
2022-05-23 15:01:14 +02:00
Ray ray = camera.ScreenPointToRay(mousePos);
if (Physics.Raycast(ray, out hit))
{
Vector3 hitWorldPosition = hit.point;
Debug.Log($"Hit at {hitWorldPosition}");
TilemapManager.Tile selectedTile;
int x, y;
TilemapManager.TileState tileState = tilemapManager.GetTileFromWorldCoords(hitWorldPosition, out selectedTile, out x, out y);
if(tileState == TilemapManager.TileState.outOfBounds)
{
Debug.Log($"No tile was hit (hit \"coords\" {x},{y})");
return; // for now do nothing if a tile was not selected
}
// a tile was hit
Debug.Log($"Tile {x},{y} was selected - DO MOVEMENT ORDER");
}
}
}
2022-05-23 15:01:14 +02:00
private void OnEnable()
{
bInput.Main.Enable();
}
private void OnDisable()
{
bInput.Main.Disable();
}
}