Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / room / RoomExit.cs
  1.  
  2. using Godot;
  3.  
  4. /// <summary>
  5. /// 地牢房间出口
  6. /// </summary>
  7. public partial class RoomExit : Area2D
  8. {
  9. public override void _Ready()
  10. {
  11. BodyEntered += OnBodyEntered;
  12. }
  13. private void OnBodyEntered(Node body)
  14. {
  15. if (body is Role role)
  16. {
  17. //Debug.Log("::RoomExit::OnBodyEntered");
  18. var gameApplication = GameApplication.Instance;
  19.  
  20. if (gameApplication.DungeonManager.IsEditorMode) //编辑器模式下下一层就是当前层, 相当于重新开始
  21. {
  22. EditorPlayManager.Restart();
  23. }
  24. else
  25. {
  26. var nextName = gameApplication.GetNextDungeonGroup(gameApplication.DungeonManager.CurrConfig.GroupName);
  27. if (string.IsNullOrEmpty(nextName)) //没有下一层, 表示已经通关
  28. {
  29. World.Current.Pause = true;
  30. var openVictory = UiManager.Open_Victory();
  31. openVictory.Callback = () =>
  32. {
  33. //先直接返回大厅, 后面再补充流程
  34. UiManager.Open_Loading();
  35. GameApplication.Instance.DungeonManager.LoadRoleId = ActivityObject.Ids.Id_role0001;
  36. GameApplication.Instance.DungeonManager.ExitDungeon(false, () =>
  37. {
  38. GameApplication.Instance.DungeonManager.LoadHall(() =>
  39. {
  40. World.Current.Pause = false;
  41. UiManager.Destroy_Loading();
  42. });
  43. });
  44. };
  45. }
  46. else //有下一层
  47. {
  48. var config = gameApplication.GetDungeonConfig(nextName, gameApplication.DungeonManager.CurrConfig.DungeonLayer + 1);
  49. UiManager.Open_Loading();
  50. GameApplication.Instance.DungeonManager.RestartDungeon(true, config, () =>
  51. {
  52. UiManager.Destroy_Loading();
  53. });
  54. }
  55. }
  56. }
  57. }
  58. }