Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / mapEditorMapMark / EditorWaveCell.cs
@小李xl 小李xl on 15 Aug 2023 3 KB 创建房间标记, 开发中
  1. using System.Collections.Generic;
  2. using Godot;
  3. using UI.MapEditor;
  4.  
  5. namespace UI.MapEditorMapMark;
  6.  
  7. public class EditorWaveCell : UiCell<MapEditorMapMark.WaveItem, List<MarkInfo>>
  8. {
  9. public UiGrid<MapEditorMapMark.MarkItem, MarkInfo> MarkGrid;
  10. public override void OnInit()
  11. {
  12. //这里不绑定 Click 函数, 而是绑定 OnClick, 因为 Select 交给 MapEditorMapMarkPanel 处理了
  13. CellNode.L_WaveContainer.L_WaveButton.Instance.Pressed += OnClick;
  14. CellNode.L_WaveContainer.L_TextureButton.Instance.Pressed += OnExpandOrClose;
  15. CellNode.L_MarginContainer.L_AddMarkButton.Instance.Pressed += OnAddMark;
  16.  
  17. CellNode.L_MarkContainer.L_MarkItem.Instance.SetHorizontalExpand(true);
  18. MarkGrid = new UiGrid<MapEditorMapMark.MarkItem, MarkInfo>(CellNode.L_MarkContainer.L_MarkItem, typeof(EditorMarkCell));
  19. MarkGrid.SetColumns(1);
  20. MarkGrid.SetHorizontalExpand(true);
  21. MarkGrid.SetCellOffset(new Vector2I(0, 5));
  22. }
  23.  
  24. public override void OnSetData(List<MarkInfo> data)
  25. {
  26. MarkGrid.SetDataList(data.ToArray());
  27. }
  28.  
  29. public override void OnRefreshIndex()
  30. {
  31. CellNode.L_WaveContainer.L_WaveButton.Instance.Text = $"第{Index + 1}波";
  32. }
  33.  
  34. public override void OnDestroy()
  35. {
  36. MarkGrid.Destroy();
  37. }
  38.  
  39. //添加标记
  40. private void OnAddMark()
  41. {
  42. //打开添加标记页面
  43. EditorWindowManager.ShowCreateMark(OnCreateMarkInfo);
  44. }
  45.  
  46. //创建的标记完成
  47. private void OnCreateMarkInfo(MarkInfo markInfo)
  48. {
  49. var preinstall = CellNode.UiPanel.GetSelectPreinstall();
  50. preinstall.WaveList[Index].Add(markInfo);
  51. MarkGrid.Add(markInfo);
  52. //添加标记工具
  53. EventManager.EmitEvent(EventEnum.OnCreateMark, markInfo);
  54. }
  55.  
  56. /// <summary>
  57. /// 展开/收起按钮点击
  58. /// </summary>
  59. public void OnExpandOrClose()
  60. {
  61. var marginContainer = CellNode.L_MarkContainer.Instance;
  62. var flag = !marginContainer.Visible;
  63. marginContainer.Visible = flag;
  64. CellNode.L_MarginContainer.Instance.Visible = flag;
  65. var textureButton = CellNode.L_WaveContainer.L_TextureButton.Instance;
  66. if (flag)
  67. {
  68. textureButton.TextureNormal = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Down_png);
  69. }
  70. else
  71. {
  72. textureButton.TextureNormal = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Right_png);
  73. }
  74. }
  75.  
  76. /// <summary>
  77. /// 是否展开
  78. /// </summary>
  79. public bool IsExpand()
  80. {
  81. return CellNode.L_MarkContainer.Instance.Visible;
  82. }
  83.  
  84. public override void OnClick()
  85. {
  86. CellNode.UiPanel.EditorTileMap.SelectWaveIndex = Index;
  87. CellNode.UiPanel.SetSelectCell(this, CellNode.L_WaveContainer.Instance, MapEditorMapMarkPanel.SelectToolType.Wave);
  88. }
  89.  
  90. public override void OnSelect()
  91. {
  92. CellNode.L_WaveContainer.L_WaveButton.L_Select.Instance.Visible = true;
  93. }
  94.  
  95. public override void OnUnSelect()
  96. {
  97. CellNode.L_WaveContainer.L_WaveButton.L_Select.Instance.Visible = false;
  98. }
  99. }