92 lines
2.3 KiB
C#
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; }
|
|
}
|
|
}
|
|
|