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; } }