Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / mapEditorMapLayer / MapEditorMapLayerPanel.cs
@小李xl 小李xl on 20 Jan 2024 2 KB TileMap编辑器小细节优化
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);
    }
}