Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / room / RoomDoor.cs
@小李xl 小李xl on 11 Mar 2023 2 KB 备份
  1.  
  2. /// <summary>
  3. /// 房间的门, 门有两种状态, 打开和关闭
  4. /// </summary>
  5. [RegisterActivity(ActivityIdPrefix.Other + "0001", ResourcePath.prefab_map_RoomDoor_tscn)]
  6. public partial class RoomDoor : ActivityObject
  7. {
  8. /// <summary>
  9. /// 门的方向
  10. /// </summary>
  11. public DoorDirection Direction => _door.Direction;
  12. /// <summary>
  13. /// 门是否关闭
  14. /// </summary>
  15. public bool IsClose { get; private set; }
  16. private RoomDoorInfo _door;
  17.  
  18. /// <summary>
  19. /// 初始化调用
  20. /// </summary>
  21. public void Init(RoomDoorInfo doorInfo)
  22. {
  23. _door = doorInfo;
  24. OpenDoor();
  25.  
  26. switch (doorInfo.Direction)
  27. {
  28. case DoorDirection.E:
  29. RotationDegrees = 90;
  30. break;
  31. case DoorDirection.W:
  32. RotationDegrees = 270;
  33. break;
  34. case DoorDirection.S:
  35. RotationDegrees = 180;
  36. break;
  37. case DoorDirection.N:
  38. RotationDegrees = 0;
  39. break;
  40. }
  41. }
  42.  
  43. /// <summary>
  44. /// 打开当前的门
  45. /// </summary>
  46. public void OpenDoor()
  47. {
  48. IsClose = false;
  49. Visible = false;
  50. Collision.Disabled = true;
  51. if (_door.Navigation != null)
  52. {
  53. _door.Navigation.OpenNavigationNode.Enabled = true;
  54. _door.Navigation.OpenNavigationNode.Visible = true;
  55. _door.Navigation.CloseNavigationNode.Enabled = false;
  56. _door.Navigation.CloseNavigationNode.Visible = false;
  57. }
  58. }
  59.  
  60. /// <summary>
  61. /// 关闭当前的门
  62. /// </summary>
  63. public void CloseDoor()
  64. {
  65. IsClose = true;
  66. Visible = true;
  67. Collision.Disabled = false;
  68. if (_door.Navigation != null)
  69. {
  70. _door.Navigation.OpenNavigationNode.Enabled = false;
  71. _door.Navigation.OpenNavigationNode.Visible = false;
  72. _door.Navigation.CloseNavigationNode.Enabled = true;
  73. _door.Navigation.CloseNavigationNode.Visible = true;
  74. }
  75. }
  76. }