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

68 lines
2.0 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
{
2026-01-26 19:48:55 +05:30
public PlayerType playerType;
2026-01-21 20:27:45 +05:30
public Transform playerFinishingTileParent;
}
public class TilesManager : MonoBehaviour, IBootLoader, IDataLoader, IBase
{
[SerializeField] private Tile[] generalTiles;
[SerializeField] private TileData[] tileDatas;
private GameplayManager gameplayManager;
2026-01-26 19:48:55 +05:30
private Dictionary<PlayerType, List<Transform>> finishingTileDataPairs = new Dictionary<PlayerType, List<Transform>>();
2026-01-21 20:27:45 +05:30
public void Initialize()
{
InterfaceManager.Instance.RegisterInterface<TilesManager>(this);
}
public void InitializeData()
{
gameplayManager = InterfaceManager.Instance.GetInterfaceInstance<GameplayManager>();
2026-01-30 22:06:51 +05:30
}
2026-01-21 20:27:45 +05:30
2026-01-30 22:06:51 +05:30
public void InitTilesData()
{
2026-01-21 20:27:45 +05:30
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);
}
}
}
2026-01-26 19:48:55 +05:30
public int GetFinishingTileDataLength(PlayerType 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
}
2026-01-26 19:48:55 +05:30
public Transform RetrievePositionForFinishingTile(PlayerType playerType, int index)
2026-01-21 20:27:45 +05:30
{
return finishingTileDataPairs[playerType][index];
}
}