untitled-game/Assets/Scripts/Inventory/InventoryItem.cs

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