- using System;
- using Config;
- 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 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 += ExcelConfig.ActivityObject_Map[markInfoItem.Id].Name;
- }
- text += str;
- }
- else
- {
- if (data.MarkInfo.SpecialMarkType == SpecialMarkType.BirthPoint)
- {
- text = "出生标记";
- }
- else
- {
- text += "空";
- }
- }
- //延时时间
- if (data.Preloading)
- {
- text += "\n提前加载";
- }
- else
- {
- text += "\n" + data.MarkInfo.DelayTime + "秒";
- }
- CellNode.L_MarkButton.Instance.Text = text;
- }
- public void OnClickHandler()
- {
- EditorManager.SetSelectWaveIndex(Data.ParentCell.Index);
- CellNode.UiPanel.SetSelectCell(this, CellNode.Instance, MapEditorMapMarkPanel.SelectToolType.Mark);
- //选中标记
- EditorManager.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;
- //选中标记
- EditorManager.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);
- }
- }