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

63 lines
1.8 KiB
C#
Raw Permalink Normal View History

using UnityEngine;
2026-02-11 19:53:16 +05:30
using System.Collections.Generic;
[System.Serializable]
public class PlayerBaseData
{
2026-01-26 19:48:55 +05:30
public PlayerType playerType;
public PlayerBase playerBase;
}
public class PlayerBaseHandler : MonoBehaviour
{
[SerializeField] private PlayerBase[] playerBases;
2026-01-26 19:48:55 +05:30
private Dictionary<PlayerType, PlayerBase> playerBasesDict = new Dictionary<PlayerType, PlayerBase>();
2026-01-26 13:03:50 +05:30
2026-01-26 19:48:55 +05:30
public void InitPlayerTypes(List<PlayerType> playerTypes)
{
foreach (PlayerBase playerBase in playerBases)
{
if (playerTypes.Contains(playerBase.GetPlayerType()))
{
2026-01-26 13:03:50 +05:30
playerBase.InitPlayerData();
playerBase.gameObject.SetActive(true);
2026-01-26 13:03:50 +05:30
if (!playerBasesDict.ContainsKey(playerBase.GetPlayerType()))
playerBasesDict.Add(playerBase.GetPlayerType(), playerBase);
else
playerBasesDict[playerBase.GetPlayerType()] = playerBase;
}
else
{
playerBase.gameObject.SetActive(false);
}
}
}
2026-01-26 19:48:55 +05:30
public PlayerBase GetPlayerBase(PlayerType playerType)
{
2026-01-26 13:03:50 +05:30
return playerBasesDict[playerType];
}
2026-02-02 19:27:17 +05:30
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);
}
}