Files
aibis-dream/Assets/Scripts/MiniGame/BlockPuzzle/Interface/IBlockShapeDragger.cs
T

92 lines
2.3 KiB
C#

using UnityEngine;
using System;
namespace AibisDream
{
/// <summary>
/// 拖拽状态
/// </summary>
public enum DragState
{
Idle, // 空闲
Dragging, // 拖拽中
Placed // 已放置
}
/// <summary>
/// 交互模式:由外界赋值控制每个 shape 是拖拽还是点击状态
/// </summary>
public enum InteractionMode
{
Drag, // 长按拿起、点击放下(当前逻辑)
Click // 仅点击,触发 OnClick + 反馈
}
/// <summary>
/// 拖拽结束结果类型
/// </summary>
public enum DragEndResultType
{
None, // 未处理
Recycled, // 已回收
SnappedToGrid, // 已吸附到网格
Dropped, // 直接放下(未吸附)
Cancelled // 取消拖拽
}
/// <summary>
/// 拖拽结束事件参数
/// </summary>
public class DragEndEventArgs : EventArgs
{
/// <summary>
/// 被拖拽的形状
/// </summary>
public BlockShape Shape { get; set; }
/// <summary>
/// 拖拽结束时的世界坐标位置
/// </summary>
public Vector3 EndPosition { get; set; }
/// <summary>
/// 最终的拖拽状态(由处理器设置)
/// </summary>
public DragState FinalState { get; set; }
/// <summary>
/// 是否已被处理(如回收、吸附等)
/// </summary>
public bool IsHandled { get; set; }
/// <summary>
/// 处理结果类型
/// </summary>
public DragEndResultType ResultType { get; set; }
}
/// <summary>
/// 拖拽开始事件参数
/// </summary>
public class DragStartEventArgs : EventArgs
{
public BlockShape Shape { get; set; }
public Vector3 StartPosition { get; set; }
}
/// <summary>
/// 拖拽更新事件参数
/// </summary>
public class DragUpdateEventArgs : EventArgs
{
public BlockShape Shape { get; set; }
public Vector3 CurrentPosition { get; set; }
/// <summary>
/// 当前的吸附检测结果(由Grid提供)
/// </summary>
public SnapResult CurrentSnapResult { get; set; }
}
}