116 lines
2.2 KiB
C#
Raw Normal View History

2026-01-21 20:27:45 +05:30
using System;
using DG.Tweening;
using UnityEngine;
public enum PlayerState
{
InHome,
InSafeZone,
Moving,
InFinishingPath,
HasFinished
}
2026-01-27 20:55:55 +05:30
public enum PawnType
{
User,
Bot
}
2026-01-21 20:27:45 +05:30
public class PlayerPawn : MonoBehaviour
{
[SerializeField] private PlayerState playerState;
2026-01-28 20:57:35 +05:30
public bool CanSelectPlayerFromHome
{
get; private set;
}
2026-01-26 19:48:55 +05:30
private GameplayManager gameplayManager;
2026-01-21 20:27:45 +05:30
public int CurrentTileIndex
{
get; private set;
}
2026-01-23 12:46:59 +05:30
public int PlayerId
{
get; private set;
}
2026-01-26 19:48:55 +05:30
public PlayerType PlayerType
2026-01-26 13:03:50 +05:30
{
get; private set;
}
2026-01-27 20:55:55 +05:30
public bool IsBotPlayer
{
get; private set;
}
2026-01-28 16:57:27 +05:30
public int StepsTaken
{
get; private set;
}
2026-01-27 20:55:55 +05:30
public void AssignBotPlayerState(bool state)
{
IsBotPlayer = state;
}
2026-01-21 20:27:45 +05:30
public void SetPlayerSelectionState(bool state)
{
2026-01-28 20:57:35 +05:30
CanSelectPlayerFromHome = state;
if (CanSelectPlayerFromHome)
2026-01-21 20:27:45 +05:30
{
2026-01-26 19:48:55 +05:30
// TODO :: Play animation for selecting any of the players
2026-01-21 20:27:45 +05:30
}
}
public void MoveToTile(Vector3 startingPoint, Action onComplete, int tileIndex)
{
2026-01-28 16:57:27 +05:30
StepsTaken++;
2026-01-21 20:27:45 +05:30
CurrentTileIndex = tileIndex;
2026-01-28 16:57:27 +05:30
transform.DOMove(startingPoint, 0.5f).onComplete = () => onComplete?.Invoke();
2026-01-21 20:27:45 +05:30
}
2026-01-23 13:33:16 +05:30
public void MoveToCustomTilePosition(Vector3 targetPoint)
{
2026-01-28 16:57:27 +05:30
StepsTaken++;
transform.DOMove(targetPoint, 0.5f);
}
2026-01-21 20:27:45 +05:30
// when he is defeated
2026-01-28 16:57:27 +05:30
public void MoveBackToHome(Vector3 pos)
2026-01-21 20:27:45 +05:30
{
2026-01-28 16:57:27 +05:30
transform.position = pos;
SetPlayerState(PlayerState.InHome);
StepsTaken = 0;
2026-01-21 20:27:45 +05:30
}
public PlayerState GetPlayerState() => playerState;
public void SetPlayerState(PlayerState state)
{
playerState = state;
}
private void OnMouseDown()
{
2026-01-28 20:57:35 +05:30
if (IsBotPlayer || !CanSelectPlayerFromHome) return;
2026-01-21 20:27:45 +05:30
SetGameplayManager();
gameplayManager.OnPawnSelected(this);
}
private void SetGameplayManager()
{
gameplayManager = gameplayManager ?? InterfaceManager.Instance.GetInterfaceInstance<GameplayManager>();
}
2026-01-23 12:46:59 +05:30
2026-01-26 19:48:55 +05:30
public void Init(int id, PlayerType playerType)
2026-01-23 12:46:59 +05:30
{
PlayerId = id;
2026-01-26 13:03:50 +05:30
PlayerType = playerType;
2026-01-23 12:46:59 +05:30
}
2026-01-21 20:27:45 +05:30
}