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