public enum BlockType
{
Empty,
Basic,
Execute,
MegaBlock
}
public struct Block
{
public readonly BlockType BlockType;
public int ColorIndex;
public Vector2Int BlockSize;
public Block(BlockType blockType)
{
BlockType = blockType;
ColorIndex = -1;
BlockSize = Vector2Int.one;
}
public Block(BlockType blockType, int colorIndex)
{
BlockType = blockType;
ColorIndex = colorIndex;
if (blockType == BlockType.MegaBlock)
{
BlockSize = Vector2Int.one * 2;
}
else
{
BlockSize = Vector2Int.one;
}
}
}
public struct Board
{
public NativeArray<Block> BlockArray;
public Vector2Int BoardSize;
public int Score;
public Board(Vector2Int boardSize)
{
BoardSize = boardSize;
BlockArray = new NativeArray<Block>(BoardSize.x * BoardSize.y, Allocator.Persistent);
Score = 0;
}
public Board(Board boardToCopy, Allocator allocator)
{
BoardSize = boardToCopy.BoardSize;
BlockArray = new NativeArray<Block>(boardToCopy.BlockArray, allocator);
Score = boardToCopy.Score;
}
}