124 lines
3.2 KiB
C#
124 lines
3.2 KiB
C#
using UnityEngine;
|
|
|
|
namespace AibisDream
|
|
{
|
|
/// <summary>
|
|
/// 形状旋转角度
|
|
/// </summary>
|
|
public enum RotationAngle
|
|
{
|
|
Rotate0 = 0, // 0度
|
|
Rotate90 = 90, // 90度
|
|
Rotate180 = 180, // 180度
|
|
Rotate270 = 270 // 270度
|
|
}
|
|
|
|
/// <summary>
|
|
/// 形状块接口
|
|
/// 负责管理形状的数据和操作
|
|
/// </summary>
|
|
public interface IBlockShape
|
|
{
|
|
/// <summary>
|
|
/// 形状的唯一ID
|
|
/// </summary>
|
|
int ShapeId { get; }
|
|
|
|
/// <summary>
|
|
/// 形状名称
|
|
/// </summary>
|
|
string ShapeName { get; }
|
|
|
|
/// <summary>
|
|
/// 当前旋转角度
|
|
/// </summary>
|
|
RotationAngle CurrentRotation { get; }
|
|
|
|
/// <summary>
|
|
/// 获取当前形状的宽度(考虑旋转)
|
|
/// </summary>
|
|
int Width { get; }
|
|
|
|
/// <summary>
|
|
/// 获取当前形状的高度(考虑旋转)
|
|
/// </summary>
|
|
int Height { get; }
|
|
|
|
/// <summary>
|
|
/// 获取形状占用的格子数量
|
|
/// </summary>
|
|
int BlockCount { get; }
|
|
|
|
/// <summary>
|
|
/// 获取形状拖拽器
|
|
/// </summary>
|
|
ShapeDragger ShapeDragger { get; }
|
|
|
|
/// <summary>
|
|
/// 获取原始形状模式(未旋转)
|
|
/// </summary>
|
|
/// <returns>二维数组,1表示有格子,0表示空</returns>
|
|
int[,] GetOriginalPattern();
|
|
|
|
/// <summary>
|
|
/// 获取当前形状模式(考虑旋转)
|
|
/// </summary>
|
|
/// <returns>二维数组,1表示有格子,0表示空</returns>
|
|
int[,] GetCurrentPattern();
|
|
|
|
/// <summary>
|
|
/// 旋转形状
|
|
/// </summary>
|
|
/// <param name="angle">旋转角度</param>
|
|
void Rotate(RotationAngle angle);
|
|
|
|
/// <summary>
|
|
/// 顺时针旋转90度
|
|
/// </summary>
|
|
void RotateClockwise();
|
|
|
|
/// <summary>
|
|
/// 逆时针旋转90度
|
|
/// </summary>
|
|
void RotateCounterClockwise();
|
|
|
|
/// <summary>
|
|
/// 重置旋转角度为0
|
|
/// </summary>
|
|
void ResetRotation();
|
|
|
|
/// <summary>
|
|
/// 检查指定位置是否有格子
|
|
/// </summary>
|
|
/// <param name="x">形状内的X坐标(相对坐标)</param>
|
|
/// <param name="y">形状内的Y坐标(相对坐标)</param>
|
|
/// <returns>是否有格子</returns>
|
|
bool HasBlockAt(int x, int y);
|
|
|
|
/// <summary>
|
|
/// 获取形状的所有格子位置(相对坐标)
|
|
/// </summary>
|
|
/// <returns>格子位置列表</returns>
|
|
Vector2Int[] GetBlockPositions();
|
|
|
|
/// <summary>
|
|
/// 获取形状旋转后的轴向
|
|
/// </summary>
|
|
/// <returns>旋转后的轴向</returns>
|
|
Vector2Int GetAxis();
|
|
|
|
/// <summary>
|
|
/// 获取形状的中心位置
|
|
/// </summary>
|
|
/// <returns>中心位置</returns>
|
|
Vector3 GetCenterPosition();
|
|
|
|
/// <summary>
|
|
/// 获取形状的全局中心位置
|
|
/// </summary>
|
|
/// <returns>全局中心位置</returns>
|
|
Vector3 GetGlobalCenterPosition();
|
|
}
|
|
}
|
|
|