73 lines
2.1 KiB
C#
73 lines
2.1 KiB
C#
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<PlayerType, List<Tile>> finishingTileDataPairs = new Dictionary<PlayerType, List<Tile>>();
|
|
|
|
public void Initialize()
|
|
{
|
|
InterfaceManager.Instance.RegisterInterface<TilesManager>(this);
|
|
}
|
|
|
|
public void InitializeData()
|
|
{
|
|
gameplayManager = InterfaceManager.Instance.GetInterfaceInstance<GameplayManager>();
|
|
}
|
|
|
|
public void InitTilesData()
|
|
{
|
|
foreach (var tileData in tileDatas)
|
|
{
|
|
if (gameplayManager.PlayerTypesCollection.Contains(tileData.playerType))
|
|
{
|
|
finishingTileDataPairs.Add(tileData.playerType, new List<Tile>());
|
|
foreach (Transform child in tileData.playerFinishingTileParent)
|
|
finishingTileDataPairs[tileData.playerType].Add(child.GetComponent<Tile>());
|
|
}
|
|
}
|
|
}
|
|
|
|
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 Tile RetrieveFinishingTileBasedOnIndex(PlayerType playerType, int index)
|
|
{
|
|
return finishingTileDataPairs[playerType][index];
|
|
}
|
|
|
|
public Transform RetrievePositionForFinishingTile(PlayerType playerType, int index)
|
|
{
|
|
return finishingTileDataPairs[playerType][index].transform;
|
|
}
|
|
}
|