Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / room / World.cs
@小李xl 小李xl on 15 May 2023 2 KB 添加加载页面
  1. using System.Collections.Generic;
  2. using Godot;
  3.  
  4. /// <summary>
  5. /// 游戏世界
  6. /// </summary>
  7. public partial class World : Node2D
  8. {
  9. /// <summary>
  10. /// //对象根节点
  11. /// </summary>
  12. [Export] public Node2D NormalLayer;
  13. /// <summary>
  14. /// 对象根节点, 带y轴排序功能
  15. /// </summary>
  16. [Export] public Node2D YSortLayer;
  17. /// <summary>
  18. /// 地图根节点
  19. /// </summary>
  20. [Export] public TileMap TileRoot;
  21. /// <summary>
  22. /// 是否暂停
  23. /// </summary>
  24. public bool Pause
  25. {
  26. get => _pause;
  27. set
  28. {
  29. if (_pause != value)
  30. {
  31. _pause = value;
  32. if (value)
  33. {
  34. ProcessMode = ProcessModeEnum.WhenPaused;
  35. }
  36. else
  37. {
  38. ProcessMode = ProcessModeEnum.Inherit;
  39. }
  40. }
  41. }
  42. }
  43. /// <summary>
  44. /// 所有被扔在地上的武器
  45. /// </summary>
  46. public HashSet<Weapon> Weapon_UnclaimedWeapons { get; } = new HashSet<Weapon>();
  47. /// <summary>
  48. /// 记录所有存活的敌人
  49. /// </summary>
  50. public List<Enemy> Enemy_InstanceList { get; } = new List<Enemy>();
  51. /// <summary>
  52. /// 公共属性, 敌人是否找到目标, 如果找到目标, 则与目标同房间的所有敌人都会知道目标的位置
  53. /// </summary>
  54. public bool Enemy_IsFindTarget { get; set; }
  55.  
  56. /// <summary>
  57. /// 公共属性, 敌人在哪个区域找到的目标, 所有该区域下的敌人都会知道目标的位置
  58. /// </summary>
  59. public HashSet<AffiliationArea> Enemy_FindTargetAffiliationSet { get; } = new HashSet<AffiliationArea>();
  60. /// <summary>
  61. /// 公共属性, 敌人找到的目标的位置, 如果目标在视野内, 则一直更新
  62. /// </summary>
  63. public Vector2 EnemyFindTargetPosition { get; set; }
  64. private bool _pause = false;
  65. public override void _Ready()
  66. {
  67. TileRoot.YSortEnabled = false;
  68. }
  69.  
  70. /// <summary>
  71. /// 获取指定层级根节点
  72. /// </summary>
  73. public Node2D GetRoomLayer(RoomLayerEnum layerEnum)
  74. {
  75. switch (layerEnum)
  76. {
  77. case RoomLayerEnum.NormalLayer:
  78. return NormalLayer;
  79. case RoomLayerEnum.YSortLayer:
  80. return YSortLayer;
  81. }
  82.  
  83. return null;
  84. }
  85. }