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 playerBasesDict = new Dictionary(); public void InitPlayerTypes(List 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); } public void ShowSelectedPlayerBase(PlayerType playerType, bool state) { playerBasesDict[playerType].ShowPlayerBaseEffect(state); } }