using System; using DG.Tweening; using UnityEngine; public enum PlayerState { InHome, InSafeZone, Moving, InFinishingPath, HasFinished } public enum PawnType { User, Bot } public class PlayerPawn : MonoBehaviour { [SerializeField] private PlayerState playerState; public bool CanSelectPlayerFromHome { get; private set; } private GameplayManager gameplayManager; public int CurrentTileIndex { get; private set; } public int PlayerId { get; private set; } public PlayerType PlayerType { get; private set; } public bool IsBotPlayer { get; private set; } public int StepsTaken { get; private set; } public void AssignBotPlayerState(bool state) { IsBotPlayer = state; } public void SetPlayerSelectionState(bool state) { CanSelectPlayerFromHome = state; if (CanSelectPlayerFromHome) { // TODO :: Play animation for selecting any of the players } } public void MoveToTile(Vector3 startingPoint, Action onComplete, int tileIndex) { StepsTaken++; CurrentTileIndex = tileIndex; transform.DOMove(startingPoint, 0.5f).onComplete = () => onComplete?.Invoke(); } public void MoveToCustomTilePosition(Vector3 targetPoint) { StepsTaken++; transform.DOMove(targetPoint, 0.5f); } // when he is defeated public void MoveBackToHome(Vector3 pos) { transform.position = pos; SetPlayerState(PlayerState.InHome); StepsTaken = 0; } public PlayerState GetPlayerState() => playerState; public void SetPlayerState(PlayerState state) { playerState = state; } private void OnMouseDown() { if (IsBotPlayer || !CanSelectPlayerFromHome) return; SetGameplayManager(); gameplayManager.OnPawnSelected(this); } private void SetGameplayManager() { gameplayManager = gameplayManager ?? InterfaceManager.Instance.GetInterfaceInstance(); } public void Init(int id, PlayerType playerType) { PlayerId = id; PlayerType = playerType; } }