60 lines
1.3 KiB
C#
60 lines
1.3 KiB
C#
using UnityEngine;
|
|
|
|
public class InventoryItem : MonoBehaviour
|
|
{
|
|
|
|
[SerializeField, Min(1)]
|
|
private int gridSpacesX = 1;
|
|
|
|
[SerializeField, Min(1)]
|
|
private int gridSpacesY = 1;
|
|
|
|
[SerializeField]
|
|
private bool[] occupiedCells;
|
|
|
|
[SerializeField]
|
|
private Item itemData;
|
|
|
|
public Item ItemData => itemData;
|
|
public int gridX => gridSpacesX;
|
|
public int gridY => gridSpacesY;
|
|
|
|
public bool[] cells => occupiedCells;
|
|
|
|
private void OnValidate()
|
|
{
|
|
int size = gridSpacesX * gridSpacesY;
|
|
|
|
if (occupiedCells == null || occupiedCells.Length != size)
|
|
{
|
|
bool[] old = occupiedCells;
|
|
|
|
occupiedCells = new bool[size];
|
|
|
|
if (old != null)
|
|
{
|
|
for (int i = 0; i < Mathf.Min(old.Length, occupiedCells.Length); i++)
|
|
{
|
|
occupiedCells[i] = old[i];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public bool IsOccupied(int x, int y)
|
|
{
|
|
int flippedY = gridSpacesY - 1 - y;
|
|
int index = flippedY * gridSpacesX + x;
|
|
|
|
return occupiedCells[index];
|
|
}
|
|
|
|
public void SetOccupied(int x, int y, bool value)
|
|
{
|
|
int flippedY = gridSpacesY - 1 - y;
|
|
int index = flippedY * gridSpacesX + x;
|
|
|
|
occupiedCells[index] = value;
|
|
}
|
|
}
|