Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / mapEditorMapLayer / LayerButtonCell.cs
@小李xl 小李xl on 20 Jan 2024 2 KB 调整TileMap编辑器布局
using UI.MapEditor;

namespace UI.MapEditorMapLayer;

public class LayerButtonCell : UiCell<MapEditorMapLayer.LayerButton, TileMapLayerData>
{
    private bool _visible;
    
    public override void OnInit()
    {
        CellNode.L_VisibleButton.Instance.Pressed += OnVisibleButtonClick;
        CellNode.L_SelectTexture.Instance.Visible = false;
    }

    public override void OnSetData(TileMapLayerData data)
    {
        if (data.IsLock)
        {
            CellNode.Instance.Icon = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Lock_png);
        }
        else
        {
            CellNode.Instance.Icon = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Unlock_png);
        }

        CellNode.Instance.Text = data.Title;
        var panel = CellNode.UiPanel.ParentUi as MapEditorPanel;
        if (panel != null)
        {
            if (Data.Layer == MapLayer.MarkLayer) //标记层
            {
                _visible = true;
                CellNode.UiPanel.EditorTileMap.IsDrawMark = _visible;
            }
            else
            {
                _visible = panel.S_TileMap.Instance.IsLayerEnabled(data.Layer);
            }
            SetVisibleIcon(_visible);
        }
    }

    /// <summary>
    /// 设置层级是否显示
    /// </summary>
    public void SetLayerVisible(bool visible)
    {
        var panel = CellNode.UiPanel.ParentUi as MapEditorPanel;
        if (panel != null)
        {
            _visible = visible;
            if (Data.Layer == MapLayer.MarkLayer) //隐藏标记层
            {
                CellNode.UiPanel.EditorTileMap.IsDrawMark = visible;
                panel.S_MapEditorTools.Instance.S_ToolRoot.Instance.Visible = visible;
            }
            else //隐藏地图层级
            {
                panel.S_TileMap.Instance.SetLayerEnabled(Data.Layer, visible);
            }
            SetVisibleIcon(visible);
        }
    }

    private void OnVisibleButtonClick()
    {
        SetLayerVisible(!_visible);
    }

    private void SetVisibleIcon(bool visible)
    {
        if (visible)
        {
            CellNode.L_VisibleButton.Instance.TextureNormal = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Visible_png);
        }
        else
        {
            CellNode.L_VisibleButton.Instance.TextureNormal = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Hide_png);
        }
    }

    public override void OnSelect()
    {
        CellNode.L_SelectTexture.Instance.Visible = true;
        CellNode.UiPanel.EditorTileMap.SetCurrLayer(Data);
    }

    public override void OnUnSelect()
    {
        CellNode.L_SelectTexture.Instance.Visible = false;
    }

    public override bool CanSelect()
    {
        return !Data.IsLock;
    }
}