namespace AibisDream
{
///
/// 形状工厂接口
/// 负责创建和管理形状对象
///
public interface IBlockShapeFactory
{
///
/// 创建指定ID的形状
///
/// 形状ID
/// 形状对象,如果ID不存在则返回null
IBlockShape CreateShape(int shapeId);
///
/// 创建指定名称的形状
///
/// 形状名称
/// 形状对象,如果名称不存在则返回null
IBlockShape CreateShape(string shapeName);
///
/// 创建随机形状
///
/// 随机形状对象
IBlockShape CreateRandomShape();
///
/// 获取所有可用的形状ID列表
///
/// 形状ID数组
int[] GetAllShapeIds();
///
/// 获取所有可用的形状名称列表
///
/// 形状名称数组
string[] GetAllShapeNames();
///
/// 注册新形状
///
/// 形状ID
/// 形状名称
/// 形状模式(二维数组)
void RegisterShape(int shapeId, string shapeName, int[,] pattern);
///
/// 检查形状ID是否存在
///
/// 形状ID
/// 是否存在
bool HasShape(int shapeId);
}
}