using System; using Godot; /// /// 可拖拽图块接口 /// public interface ITileDraggable { /// /// 图块在网格中的位置 /// Vector2I TilePosition { get; set; } /// /// 是否允许拖拽 /// bool Draggable { get; set; } /// /// 是否处于碰撞状态(例如位置无效或重叠) /// bool IsCollided { get; set; } /// /// 图块占据的矩形区域(相对于 TilePosition) /// Rect2I TileRect { get; } /// /// 拖拽时鼠标相对于图块原点的偏移量 /// Vector2I MouseOffset { get; } /// /// 特殊功能图块列表(如座位、交互点等) /// SpecialTile[] SpecialTiles { get; } /// /// 唯一标识符 /// Guid Id { get; } /// /// 获取指定相对坐标处的图块类型 /// /// 相对坐标 /// 地图节点类型 Lab.MapNodeType GetTileType(Vector2I pos); /// /// 特殊图块定义 /// class SpecialTile { /// /// 节点类型(如可行走、作为座位等) /// public readonly Lab.MapNodeType NodeType; /// /// 相对位置 /// public readonly Vector2I Position; /// /// 构造特殊图块 /// /// 相对位置 /// 节点类型 public SpecialTile(Vector2I pos, Lab.MapNodeType node) { Position = pos; NodeType = node; } } }