52 lines
1.1 KiB
C#
52 lines
1.1 KiB
C#
using UnityEngine;
|
|
|
|
[CreateAssetMenu(fileName = "Grid", menuName = "Game Data/Map Grid")]
|
|
public class TileGrid : ScriptableObject
|
|
{
|
|
public Vector2Int size;
|
|
private Tile[,] _tiles;
|
|
|
|
// Initialize the grid with the size of the map
|
|
public TileGrid(Vector2Int size)
|
|
{
|
|
this.size = size;
|
|
Initialize(this.size);
|
|
}
|
|
|
|
public void Initialize(Vector2Int gSize)
|
|
{
|
|
size = gSize;
|
|
_tiles = new Tile[gSize.x, gSize.y];
|
|
}
|
|
|
|
public Tile GetTile(int x, int y)
|
|
{
|
|
return _tiles[x, y];
|
|
}
|
|
|
|
public void SetTile(int x, int y, Tile tile)
|
|
{
|
|
_tiles[x, y] = tile;
|
|
}
|
|
|
|
|
|
public void ClearTile(int x, int y)
|
|
{
|
|
_tiles[x, y] = null;
|
|
}
|
|
|
|
public bool IsTileOccupied(int x, int y)
|
|
{
|
|
return _tiles[x, y] != null;
|
|
}
|
|
|
|
public bool IsTileOccupiedByInteractableItem(int x, int y)
|
|
{
|
|
return _tiles[x, y] != null && _tiles[x, y].Interactable != null;
|
|
}
|
|
|
|
public bool IsTileOccupiedByCrop(int x, int y)
|
|
{
|
|
return _tiles[x, y] != null && _tiles[x, y].Interactable.Type == InteractableType.Crop;
|
|
}
|
|
} |