Ludo-3D/Assets/Scripts/Gameplay/Player/PlayerBaseHandler.cs

58 lines
1.6 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class PlayerBaseData
{
public PlayerType playerType;
public PlayerBase playerBase;
}
public class PlayerBaseHandler : MonoBehaviour
{
[SerializeField] private PlayerBase[] playerBases;
private Dictionary<PlayerType, PlayerBase> playerBasesDict = new Dictionary<PlayerType, PlayerBase>();
public void InitPlayerTypes(List<PlayerType> playerTypes)
{
foreach (PlayerBase playerBase in playerBases)
{
if (playerTypes.Contains(playerBase.GetPlayerType()))
{
playerBase.InitPlayerData();
playerBase.gameObject.SetActive(true);
if (!playerBasesDict.ContainsKey(playerBase.GetPlayerType()))
playerBasesDict.Add(playerBase.GetPlayerType(), playerBase);
else
playerBasesDict[playerBase.GetPlayerType()] = playerBase;
}
else
{
playerBase.gameObject.SetActive(false);
}
}
}
public PlayerBase GetPlayerBase(PlayerType playerType)
{
return playerBasesDict[playerType];
}
public void ResetPlayerBaseData()
{
foreach (var playerBasePair in playerBasesDict)
{
playerBasePair.Value.ResetPlayerDatas();
}
}
public void SendPlayerToHome(PlayerPawn pawn)
{
var playerBasePos = GetPlayerBase(pawn.PlayerType).GetBasePlacementDataPosition(pawn.PlayerId - 1);
pawn.MoveBackToHome(playerBasePos);
}
}