-
- using Godot;
-
- /// <summary>
- /// 地牢房间出口
- /// </summary>
- public partial class RoomExit : Area2D
- {
- public override void _Ready()
- {
- BodyEntered += OnBodyEntered;
- }
-
- private void OnBodyEntered(Node body)
- {
- if (body is Role role)
- {
- //Debug.Log("::RoomExit::OnBodyEntered");
- var gameApplication = GameApplication.Instance;
-
- if (gameApplication.DungeonManager.IsEditorMode) //编辑器模式下下一层就是当前层, 相当于重新开始
- {
- EditorPlayManager.Restart();
- }
- else
- {
- var nextName = gameApplication.GetNextDungeonGroup(gameApplication.DungeonManager.CurrConfig.GroupName);
- if (string.IsNullOrEmpty(nextName)) //没有下一层, 表示已经通关
- {
- World.Current.Pause = true;
- var openVictory = UiManager.Open_Victory();
- openVictory.Callback = () =>
- {
- //先直接返回大厅, 后面再补充流程
- UiManager.Open_Loading();
- GameApplication.Instance.DungeonManager.LoadRoleId = ActivityObject.Ids.Id_role0001;
- GameApplication.Instance.DungeonManager.ExitDungeon(false, () =>
- {
- GameApplication.Instance.DungeonManager.LoadHall(() =>
- {
- World.Current.Pause = false;
- UiManager.Destroy_Loading();
- });
- });
- };
- }
- else //有下一层
- {
- var config = gameApplication.GetDungeonConfig(nextName, gameApplication.DungeonManager.CurrConfig.DungeonLayer + 1);
-
- UiManager.Open_Loading();
- GameApplication.Instance.DungeonManager.RestartDungeon(true, config, () =>
- {
- UiManager.Destroy_Loading();
- });
- }
- }
- }
- }
- }