Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / mapEditorMapLayer / MapEditorMapLayerPanel.cs
@小李xl 小李xl on 20 Jan 2024 2 KB TileMap编辑器小细节优化
  1. using System.Collections.Generic;
  2. using Godot;
  3. using UI.MapEditor;
  4.  
  5. namespace UI.MapEditorMapLayer;
  6.  
  7. public partial class MapEditorMapLayerPanel : MapEditorMapLayer
  8. {
  9. /// <summary>
  10. /// 所有地图层级网格
  11. /// </summary>
  12. public UiGrid<LayerButton, TileMapLayerData> LayerGrid { get; private set; }
  13. /// <summary>
  14. /// 编辑器Tile对象
  15. /// </summary>
  16. public EditorTileMap EditorTileMap { get; private set; }
  17. public override void OnCreateUi()
  18. {
  19. var editorPanel = (MapEditorPanel)ParentUi;
  20. EditorTileMap = editorPanel.S_TileMap.Instance;
  21.  
  22. LayerGrid = CreateUiGrid<LayerButton, TileMapLayerData, LayerButtonCell>(S_LayerButton);
  23. LayerGrid.SetCellOffset(new Vector2I(0, 2));
  24. LayerGrid.SetHorizontalExpand(true);
  25.  
  26. S_CheckButton.Instance.Toggled += OnToggled;
  27. }
  28.  
  29. /// <summary>
  30. /// 初始化层级数据
  31. /// </summary>
  32. public void InitData()
  33. {
  34. LayerGrid.Add(new TileMapLayerData("地板", MapLayer.AutoFloorLayer, false));
  35. LayerGrid.Add(new TileMapLayerData("底层1", MapLayer.CustomFloorLayer1, false));
  36. LayerGrid.Add(new TileMapLayerData("底层2", MapLayer.CustomFloorLayer2, false));
  37. LayerGrid.Add(new TileMapLayerData("底层3", MapLayer.CustomFloorLayer3, false));
  38. LayerGrid.Add(new TileMapLayerData("侧方墙壁", MapLayer.AutoMiddleLayer, true));
  39. LayerGrid.Add(new TileMapLayerData("中层1", MapLayer.CustomMiddleLayer1, false));
  40. LayerGrid.Add(new TileMapLayerData("中层2", MapLayer.CustomMiddleLayer2, false));
  41. LayerGrid.Add(new TileMapLayerData("顶部墙壁", MapLayer.AutoTopLayer, true));
  42. LayerGrid.Add(new TileMapLayerData("顶层", MapLayer.CustomTopLayer, false));
  43. LayerGrid.Add(new TileMapLayerData("标记数据层", MapLayer.MarkLayer, true));
  44. LayerGrid.SelectIndex = 0;
  45. }
  46.  
  47. /// <summary>
  48. /// 设置指定层级显示或者隐藏
  49. /// </summary>
  50. public void SetLayerVisible(int layer, bool visible)
  51. {
  52. LayerGrid.ForEach(cell =>
  53. {
  54. ((LayerButtonCell)cell).SetLayerVisible(visible);
  55. });
  56. }
  57.  
  58. private void OnToggled(bool toggledon)
  59. {
  60. EditorTileMap.SetDesaltOtherLayer(toggledon);
  61. }
  62. }