Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / room / RoomDoor.cs
@lijincheng lijincheng on 9 Mar 2023 1 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. _door.Navigation.OpenNavigationNode.Enabled = true;
  52. _door.Navigation.OpenNavigationNode.Visible = true;
  53. _door.Navigation.CloseNavigationNode.Enabled = false;
  54. _door.Navigation.CloseNavigationNode.Visible = false;
  55. }
  56.  
  57. /// <summary>
  58. /// 关闭当前的门
  59. /// </summary>
  60. public void CloseDoor()
  61. {
  62. IsClose = true;
  63. Visible = true;
  64. Collision.Disabled = false;
  65. _door.Navigation.OpenNavigationNode.Enabled = false;
  66. _door.Navigation.OpenNavigationNode.Visible = false;
  67. _door.Navigation.CloseNavigationNode.Enabled = true;
  68. _door.Navigation.CloseNavigationNode.Visible = true;
  69. }
  70. }