- using System;
- using Config;
- using Godot;
- using UI.MapEditor;
- namespace UI.MapEditorMapMark;
- public class EditorMarkCell : UiCell<MapEditorMapMark.MarkItem, MapEditorMapMarkPanel.MarkCellData>
- {
- //上一次点击的时间
- private long _prevClickTime2 = -1;
- public override void OnInit()
- {
- //这里不绑定 Click 函数, 而是绑定 OnClickHandler, 因为 Select 交给 MapEditorMapMarkPanel 处理了
- CellNode.L_MarkButton.Instance.Pressed += OnClickHandler;
- }
- public override void OnSetData(MapEditorMapMarkPanel.MarkCellData data)
- {
- var textureRect = CellNode.L_MarkButton.L_MarkIcon.Instance;
- var text = "";
- //物体名称
- if (data.MarkInfo.MarkList != null && data.MarkInfo.MarkList.Count > 0)
- {
- var str = "";
- for (var i = 0; i < data.MarkInfo.MarkList.Count; i++)
- {
- var markInfoItem = data.MarkInfo.MarkList[i];
- if (i > 0)
- {
- str += ",";
- }
- str += PreinstallMarkManager.GetMarkConfig(markInfoItem.Id).Name;
- }
- text += str;
- }
- else
- {
- if (data.MarkInfo.SpecialMarkType != SpecialMarkType.Normal)
- {
- text = PreinstallMarkManager.GetSpecialName(data.MarkInfo.SpecialMarkType);
- }
- else
- {
- text = "空";
- }
- }
- //延时时间
- if (data.Preloading)
- {
- text += "\n提前加载";
- }
- else
- {
- text += "\n" + data.MarkInfo.DelayTime + "秒";
- }
- //显示文本
- CellNode.L_MarkButton.Instance.Text = text;
- //显示图标
- textureRect.Texture = ResourceManager.GetMarkIcon(data.MarkInfo);
- }
- public void OnClickHandler()
- {
- EditorTileMapManager.SetSelectWaveIndex(Data.ParentCell.Index);
- CellNode.UiPanel.SetSelectCell(this, CellNode.Instance, MapEditorMapMarkPanel.SelectToolType.Mark);
- //选中标记
- EditorTileMapManager.SetSelectMark(Data.MarkInfo);
- //双击判定
- if (_prevClickTime2 >= 0)
- {
- var now = DateTime.Now.Ticks / 10000;
- if (now <= _prevClickTime2 + 500)
- {
- OnDoubleClickHandler();
- }
- _prevClickTime2 = now;
- }
- else
- {
- _prevClickTime2 = DateTime.Now.Ticks / 10000;
- }
- }
- public void OnDoubleClickHandler()
- {
- //双击聚焦标记
- var position = Data.MarkInfo.Position.AsVector2();
- CellNode.UiPanel.EditorTileMap.SetLookPosition(position);
- }
- public override void OnSelect()
- {
- CellNode.L_MarkButton.L_Select.Instance.Visible = true;
- //选中标记
- EditorTileMapManager.SetSelectMark(Data.MarkInfo);
- }
- public override void OnUnSelect()
- {
- CellNode.L_MarkButton.L_Select.Instance.Visible = false;
- }
- public override int OnSort(UiCell<MapEditorMapMark.MarkItem, MapEditorMapMarkPanel.MarkCellData> other)
- {
- if (Data.Preloading && other.Data.Preloading)
- {
- return 0;
- }
- else if (Data.Preloading)
- {
- return -1;
- }
- else if (other.Data.Preloading)
- {
- return 1;
- }
- return (int)(Data.MarkInfo.DelayTime * 1000 - other.Data.MarkInfo.DelayTime * 1000);
- }
- }