using UnityEngine;
using System;
namespace AibisDream
{
///
/// 拖拽状态
///
public enum DragState
{
Idle, // 空闲
Dragging, // 拖拽中
Placed // 已放置
}
///
/// 形状拖拽接口
/// 负责处理形状的拖拽、吸附和放置逻辑
///
public interface IBlockShapeDragger
{
///
/// 当前拖拽状态
///
DragState CurrentState { get; }
///
/// 是否可拖拽
///
bool IsDraggable { get; set; }
///
/// 目标网格
///
IBlockPuzzleGrid TargetGrid { get; }
///
/// 获取形状
///
IBlockShape BlockShape { get; }
///
/// 拖拽开始事件
///
event Action OnDragStart;
///
/// 拖拽更新事件
///
event Action OnDragUpdate;
///
/// 拖拽结束事件
///
event Action OnDragEnd; // bool表示是否成功放置
///
/// 开始拖拽
///
void StartDrag();
///
/// 更新拖拽位置
///
void UpdateDrag();
///
/// 结束拖拽
///
void EndDrag();
///
/// 检查是否可以放置到指定位置
///
/// 网格X坐标
/// 网格Y坐标
/// 是否可以放置
// bool CanPlaceAt(int gridX, int gridY);
///
/// 获取当前吸附的网格坐标
///
/// 输出的网格X坐标
/// 输出的网格Y坐标
/// 是否正在吸附
// bool GetSnapGridPosition(out int gridX, out int gridY);
}
}