Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / manager / EditorPlayManager.cs

using System.Collections.Generic;

public static class EditorPlayManager
{
    /// <summary>
    /// 是否正在播放
    /// </summary>
    public static bool IsPlay { get; set; }

    private static DungeonConfig _config;

    /// <summary>
    /// 地牢编辑器中的播放按钮
    /// </summary>
    public static void Play(UiBase prevUi)
    {
        if (IsPlay)
        {
            return;
        }

        IsPlay = true;
        _config = new DungeonConfig();
        _config.GroupName = EditorTileMapManager.SelectDungeonGroup.GroupName;
        _config.DesignatedType = EditorTileMapManager.SelectRoom.RoomInfo.RoomType;
        _config.DesignatedRoom = new List<DungeonRoomSplit>();

        if (_config.DesignatedType == DungeonRoomType.Inlet) //初始房间
        {
            var dungeonRoomGroup = GameApplication.Instance.RoomConfig[_config.GroupName];
            _config.DesignatedRoom.Add(EditorTileMapManager.SelectRoom);
            //随机选择战斗房间
            for (var i = 0; i < 5; i++)
            {
                _config.DesignatedRoom.Add(Utils.Random.RandomChoose(dungeonRoomGroup.BattleList));
            }
            //结束房间
            _config.DesignatedRoom.Add(Utils.Random.RandomChoose(dungeonRoomGroup.OutletList));
        }
        else if (_config.DesignatedType == DungeonRoomType.Outlet) //结束房间
        {
            var dungeonRoomGroup = GameApplication.Instance.RoomConfig[_config.GroupName];
            //随机选择初始房间
            _config.DesignatedRoom.Add(Utils.Random.RandomChoose(dungeonRoomGroup.InletList));
            _config.DesignatedRoom.Add(EditorTileMapManager.SelectRoom);
        }
        else //其他类型房间
        {
            var dungeonRoomGroup = GameApplication.Instance.RoomConfig[_config.GroupName];
            //随机选择初始房间
            _config.DesignatedRoom.Add(Utils.Random.RandomChoose(dungeonRoomGroup.InletList));
            for (var i = 0; i < 5; i++)
            {
                _config.DesignatedRoom.Add(EditorTileMapManager.SelectRoom);
            }
            //结束房间
            _config.DesignatedRoom.Add(Utils.Random.RandomChoose(dungeonRoomGroup.OutletList));
        }
        
        UiManager.Open_Loading();
        GameApplication.Instance.DungeonManager.EditorPlayDungeon(prevUi, _config, () =>
        {
            UiManager.Destroy_Loading();
        });
}

    public static void Exit()
    {
        if (!IsPlay)
        {
            return;
        }

        IsPlay = false;
        UiManager.Open_Loading();
        GameApplication.Instance.DungeonManager.EditorExitDungeon(false, () =>
        {
            UiManager.Destroy_Loading();
        });
    }

    public static void Restart()
    {
        if (!IsPlay)
        {
            return;
        }
        UiManager.Open_Loading();
        GameApplication.Instance.DungeonManager.ExitDungeon(false, () =>
        {
            GameApplication.Instance.DungeonManager.EditorPlayDungeon(_config, () =>
            {
                UiManager.Destroy_Loading();
            });
        });
    }
}