using UnityEngine;
namespace AibisDream
{
///
/// 形状旋转角度
///
public enum RotationAngle
{
Rotate0 = 0, // 0度
Rotate90 = 90, // 90度
Rotate180 = 180, // 180度
Rotate270 = 270 // 270度
}
///
/// 形状块接口
/// 负责管理形状的数据和操作
///
public interface IBlockShape
{
///
/// 形状的唯一ID
///
int ShapeId { get; }
///
/// 形状名称
///
string ShapeName { get; }
///
/// 当前旋转角度
///
RotationAngle CurrentRotation { get; }
///
/// 获取当前形状的宽度(考虑旋转)
///
int Width { get; }
///
/// 获取当前形状的高度(考虑旋转)
///
int Height { get; }
///
/// 获取形状占用的格子数量
///
int BlockCount { get; }
///
/// 获取原始形状模式(未旋转)
///
/// 二维数组,1表示有格子,0表示空
int[,] GetOriginalPattern();
///
/// 获取当前形状模式(考虑旋转)
///
/// 二维数组,1表示有格子,0表示空
int[,] GetCurrentPattern();
///
/// 旋转形状
///
/// 旋转角度
void Rotate(RotationAngle angle);
///
/// 顺时针旋转90度
///
void RotateClockwise();
///
/// 逆时针旋转90度
///
void RotateCounterClockwise();
///
/// 重置旋转角度为0
///
void ResetRotation();
///
/// 检查指定位置是否有格子
///
/// 形状内的X坐标(相对坐标)
/// 形状内的Y坐标(相对坐标)
/// 是否有格子
bool HasBlockAt(int x, int y);
///
/// 获取形状的所有格子位置(相对坐标)
///
/// 格子位置列表
Vector2Int[] GetBlockPositions();
///
/// 创建形状的副本
///
/// 形状副本
// IBlockShape Clone();
}
}