Ludo-3D/Assets/Scripts/Tile/TilesManager.cs

65 lines
1.9 KiB
C#
Raw Normal View History

2026-01-21 20:27:45 +05:30
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Tilemaps;
[System.Serializable]
public struct TileData
{
public PlayerTypes playerType;
public Transform playerFinishingTileParent;
}
public class TilesManager : MonoBehaviour, IBootLoader, IDataLoader, IBase
{
[SerializeField] private Tile[] generalTiles;
[SerializeField] private TileData[] tileDatas;
private GameplayManager gameplayManager;
private Dictionary<PlayerTypes, List<Transform>> finishingTileDataPairs = new Dictionary<PlayerTypes, List<Transform>>();
public void Initialize()
{
InterfaceManager.Instance.RegisterInterface<TilesManager>(this);
}
public void InitializeData()
{
gameplayManager = InterfaceManager.Instance.GetInterfaceInstance<GameplayManager>();
foreach (var tileData in tileDatas)
{
if (gameplayManager.PlayerTypesCollection.Contains(tileData.playerType))
{
finishingTileDataPairs.Add(tileData.playerType, new List<Transform>());
foreach (Transform child in tileData.playerFinishingTileParent)
finishingTileDataPairs[tileData.playerType].Add(child);
}
}
}
public int GetFinishingTileDataLength(PlayerTypes playerType) => finishingTileDataPairs[playerType].Count;
2026-01-21 20:27:45 +05:30
public int GetGeneralTilesLength() => generalTiles.Length;
public Tile RetrieveTileBasedOnIndex(int index)
{
Debug.Log($"RetrieveTileBasedOnIndex: Index: {index}");
2026-01-23 12:46:59 +05:30
Tile tile = index == generalTiles.Length ? generalTiles[0] : generalTiles[index];
// if (tile.IsSafeZone)
// {
// return (SafeTile)tile;
// }
return tile;
2026-01-21 20:27:45 +05:30
}
public Transform RetrievePositionForFinishingTile(PlayerTypes playerType, int index)
{
return finishingTileDataPairs[playerType][index];
}
}