Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / mapEditorMapMark / EditorMarkCell.cs
  1. using System;
  2. using Config;
  3. using UI.MapEditor;
  4.  
  5. namespace UI.MapEditorMapMark;
  6.  
  7. public class EditorMarkCell : UiCell<MapEditorMapMark.MarkItem, MapEditorMapMarkPanel.MarkCellData>
  8. {
  9. //上一次点击的时间
  10. private long _prevClickTime2 = -1;
  11. public override void OnInit()
  12. {
  13. //这里不绑定 Click 函数, 而是绑定 OnClickHandler, 因为 Select 交给 MapEditorMapMarkPanel 处理了
  14. CellNode.L_MarkButton.Instance.Pressed += OnClickHandler;
  15. }
  16.  
  17. public override void OnSetData(MapEditorMapMarkPanel.MarkCellData data)
  18. {
  19. var text = "";
  20. //物体名称
  21. if (data.MarkInfo.MarkList != null && data.MarkInfo.MarkList.Count > 0)
  22. {
  23. var str = "";
  24. for (var i = 0; i < data.MarkInfo.MarkList.Count; i++)
  25. {
  26. var markInfoItem = data.MarkInfo.MarkList[i];
  27. if (i > 0)
  28. {
  29. str += ",";
  30. }
  31.  
  32. str += ExcelConfig.ActivityObject_Map[markInfoItem.Id].Name;
  33. }
  34. text += str;
  35. }
  36. else
  37. {
  38. if (data.MarkInfo.SpecialMarkType == SpecialMarkType.BirthPoint)
  39. {
  40. text = "出生标记";
  41. }
  42. else
  43. {
  44. text += "空";
  45. }
  46. }
  47.  
  48. //延时时间
  49. if (data.Preloading)
  50. {
  51. text += "\n提前加载";
  52. }
  53. else
  54. {
  55. text += "\n" + data.MarkInfo.DelayTime + "秒";
  56. }
  57. CellNode.L_MarkButton.Instance.Text = text;
  58. }
  59.  
  60. public void OnClickHandler()
  61. {
  62. EditorManager.SetSelectWaveIndex(Data.ParentCell.Index);
  63. CellNode.UiPanel.SetSelectCell(this, CellNode.Instance, MapEditorMapMarkPanel.SelectToolType.Mark);
  64. //选中标记
  65. EditorManager.SetSelectMark(Data.MarkInfo);
  66. //双击判定
  67. if (_prevClickTime2 >= 0)
  68. {
  69. var now = DateTime.Now.Ticks / 10000;
  70. if (now <= _prevClickTime2 + 500)
  71. {
  72. OnDoubleClickHandler();
  73. }
  74.  
  75. _prevClickTime2 = now;
  76. }
  77. else
  78. {
  79. _prevClickTime2 = DateTime.Now.Ticks / 10000;
  80. }
  81. }
  82.  
  83. public void OnDoubleClickHandler()
  84. {
  85. //双击聚焦标记
  86. var position = Data.MarkInfo.Position.AsVector2();
  87. CellNode.UiPanel.EditorTileMap.SetLookPosition(position);
  88. }
  89.  
  90. public override void OnSelect()
  91. {
  92. CellNode.L_MarkButton.L_Select.Instance.Visible = true;
  93. //选中标记
  94. EditorManager.SetSelectMark(Data.MarkInfo);
  95. }
  96.  
  97. public override void OnUnSelect()
  98. {
  99. CellNode.L_MarkButton.L_Select.Instance.Visible = false;
  100. }
  101.  
  102. public override int OnSort(UiCell<MapEditorMapMark.MarkItem, MapEditorMapMarkPanel.MarkCellData> other)
  103. {
  104. if (!Data.Preloading && other.Data.Preloading)
  105. {
  106. return 0;
  107. }
  108. else if (Data.Preloading)
  109. {
  110. return -1;
  111. }
  112. else if (other.Data.Preloading)
  113. {
  114. return 1;
  115. }
  116. return (int)(Data.MarkInfo.DelayTime * 1000 - other.Data.MarkInfo.DelayTime * 1000);
  117. }
  118. }