using System.Collections.Generic; using Godot; using UI.MapEditor; namespace UI.MapEditorMapLayer; public partial class MapEditorMapLayerPanel : MapEditorMapLayer { /// <summary> /// 所有地图层级网格 /// </summary> public UiGrid<LayerButton, TileMapLayerData> LayerGrid { get; private set; } /// <summary> /// 编辑器Tile对象 /// </summary> public EditorTileMap EditorTileMap { get; private set; } public override void OnCreateUi() { var editorPanel = (MapEditorPanel)ParentUi; EditorTileMap = editorPanel.S_TileMap.Instance; LayerGrid = CreateUiGrid<LayerButton, TileMapLayerData, LayerButtonCell>(S_LayerButton); LayerGrid.SetCellOffset(new Vector2I(0, 2)); LayerGrid.SetHorizontalExpand(true); S_CheckButton.Instance.Toggled += OnToggled; } /// <summary> /// 初始化层级数据 /// </summary> public void InitData() { LayerGrid.Add(new TileMapLayerData("地板", MapLayer.AutoFloorLayer, false)); LayerGrid.Add(new TileMapLayerData("底层1", MapLayer.CustomFloorLayer1, false)); LayerGrid.Add(new TileMapLayerData("底层2", MapLayer.CustomFloorLayer2, false)); LayerGrid.Add(new TileMapLayerData("底层3", MapLayer.CustomFloorLayer3, false)); LayerGrid.Add(new TileMapLayerData("侧方墙壁", MapLayer.AutoMiddleLayer, true)); LayerGrid.Add(new TileMapLayerData("中层1", MapLayer.CustomMiddleLayer1, false)); LayerGrid.Add(new TileMapLayerData("中层2", MapLayer.CustomMiddleLayer2, false)); LayerGrid.Add(new TileMapLayerData("顶部墙壁", MapLayer.AutoTopLayer, true)); LayerGrid.Add(new TileMapLayerData("顶层", MapLayer.CustomTopLayer, false)); LayerGrid.Add(new TileMapLayerData("标记数据层", MapLayer.MarkLayer, true)); LayerGrid.SelectIndex = 0; } /// <summary> /// 设置指定层级显示或者隐藏 /// </summary> public void SetLayerVisible(int layer, bool visible) { LayerGrid.ForEach(cell => { ((LayerButtonCell)cell).SetLayerVisible(visible); }); } private void OnToggled(bool toggledon) { EditorTileMap.SetDesaltOtherLayer(toggledon); } }