custom-chatbot / data /InputHandler.cs
fastx's picture
Upload 84 files
ac55997
raw
history blame
2.12 kB
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Quantum;
using Photon.Deterministic;
public unsafe class InputHandler : MonoBehaviour
{
public int InitialIndex;
public int TargetIndex;
public bool HasInitial;
public bool DebugMoves = false;
public MovesIndicatorManager MovesIndicator;
public GameObject SelectedPieceIndicator;
public UnityEngine.LayerMask BoardsRaycastMask;
private void Update()
{
HandleClick();
if (HasInitial)
{
ChessViewUpdater.Instance.SetObjectByIndex(SelectedPieceIndicator, InitialIndex);
}
else {
SelectedPieceIndicator.SetActive(false);
}
}
public void HandleClick()
{
if (UnityEngine.Input.GetMouseButtonDown(0))
{
// Perform the Unity raycast
Ray ray = Camera.main.ScreenPointToRay(UnityEngine.Input.mousePosition);
RaycastHit hit;
Physics.Raycast(ray, out hit, 100, BoardsRaycastMask);
// If the raycast hit the Board...
if (hit.collider != null)
{
var position = new FPVector2(FP.FromFloat_UNSAFE(hit.point.x), FP.FromFloat_UNSAFE(hit.point.z));
if (HasInitial == false || DebugMoves)
{
InitialIndex = BoardHelper.GetIndexByPosition(position);
HasInitial = true;
MovesIndicator.UpdatePossibleMovements(InitialIndex);
}
else
{
TargetIndex = BoardHelper.GetIndexByPosition(position);
Frame f = QuantumRunner.Default.Game.Frames.Verified;
if (MoveValidatorHelper.IsValidMove(ref f.Global->Board, InitialIndex, TargetIndex, true) == false)
{
InitialIndex = TargetIndex;
MovesIndicator.UpdatePossibleMovements(InitialIndex);
}
else
{
HasInitial = false;
//sendcommand
var c = new MoveCommand();
c.Data.InitialIndex = InitialIndex;
c.Data.TargetIndex = TargetIndex;
QuantumRunner.Default.Game.SendCommand(c);
MovesIndicator.ResetPrefabs();
}
}
}
}
}
}