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