Ludo-3D/Assets/Scripts/Gameplay/Player/PlayerBaseHandler.cs
Ashby Issac 66c71eb098 NullRefFix: Gameplay.
While selecting PvsAI and selecting green, got a null ref due to wrong currentPlayerTurnIndex be passed on.
2026-02-23 16:09:23 +05:30

63 lines
1.8 KiB
C#

using UnityEngine;
using System.Collections.Generic;
[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);
}
public void ShowSelectedPlayerBase(PlayerType playerType, bool state)
{
if (playerBasesDict.ContainsKey(playerType))
playerBasesDict[playerType].ShowPlayerBaseEffect(state);
}
}