Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / mapEditor / MapEditorPanel.cs
using Godot;

namespace UI.MapEditor;

public partial class MapEditorPanel : MapEditor
{
    private EditorTileMapBar _editorTileMapBar;
    private string _title;
    
    public override void OnCreateUi()
    {
        S_TabContainer.Instance.SetTabTitle(0, "地图");
        S_TabContainer.Instance.SetTabTitle(1, "对象");
        //S_MapLayer.Instance.Init(S_MapLayer);
        S_Left.Instance.Resized += OnMapViewResized;
        S_Back.Instance.Pressed += OnBackClick;
        S_Save.Instance.Pressed += OnSave;
        
        _editorTileMapBar = new EditorTileMapBar(this, S_TileMap);
    }

    public override void OnShowUi()
    {
        OnMapViewResized();
        _editorTileMapBar.OnShow();
    }

    public override void OnHideUi()
    {
        _editorTileMapBar.OnHide();
    }

    public override void OnDestroyUi()
    {
        _editorTileMapBar.OnDestroy();
    }
    
    public override void Process(float delta)
    {
        _editorTileMapBar.Process(delta);
    }

    /// <summary>
    /// 保存地图数据
    /// </summary>
    public void OnSave()
    {
        S_TileMap.Instance.TriggerSave();
    }

    /// <summary>
    /// 加载地牢, 返回是否加载成功
    /// </summary>
    public bool LoadMap(DungeonRoomSplit roomSplit)
    {
        _title = "正在编辑:" + roomSplit.RoomInfo.RoomName;
        S_Title.Instance.Text = _title;
        return S_TileMap.Instance.Load(roomSplit);
    }
    
    //调整地图显示区域大小
    private void OnMapViewResized()
    {
        S_SubViewport.Instance.Size = S_Left.Instance.Size.AsVector2I() - new Vector2I(4, 4);
    }

    private void OnBackClick()
    {
        EditorWindowManager.ShowConfirm("提示", "是否退出编辑房间?", v =>
        {
            if (v)
            {
                //返回上一个Ui
                OpenPrevUi();
            }
        });
    }
}