Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / map / serialize / room / RoomPreinstallInfo.cs
@小李xl 小李xl on 23 Mar 2024 2 KB 更改宝箱预设初始化流程
  1.  
  2. using System.Collections.Generic;
  3. using System.Text.Json.Serialization;
  4.  
  5. /// <summary>
  6. /// 房间预设数据
  7. /// </summary>
  8. public class RoomPreinstallInfo
  9. {
  10. /// <summary>
  11. /// 预设名称
  12. /// </summary>
  13. [JsonInclude]
  14. public string Name;
  15.  
  16. /// <summary>
  17. /// 预设权重
  18. /// </summary>
  19. [JsonInclude]
  20. public int Weight;
  21.  
  22. /// <summary>
  23. /// 预设备注
  24. /// </summary>
  25. [JsonInclude]
  26. public string Remark;
  27.  
  28. /// <summary>
  29. /// 是否自动填充数据
  30. /// </summary>
  31. [JsonInclude]
  32. public bool AutoFill;
  33.  
  34. /// <summary>
  35. /// 波数数据
  36. /// </summary>
  37. [JsonInclude]
  38. public List<List<MarkInfo>> WaveList;
  39.  
  40. /// <summary>
  41. /// 初始化波数据
  42. /// </summary>
  43. public void InitWaveList()
  44. {
  45. WaveList = new List<List<MarkInfo>>
  46. {
  47. new List<MarkInfo>()
  48. };
  49. }
  50.  
  51. /// <summary>
  52. /// 初始化特殊标记
  53. /// </summary>
  54. public void InitSpecialMark(DungeonRoomType roomType)
  55. {
  56. var type = GetRoomSpecialMark(roomType);
  57. if (type != SpecialMarkType.Normal)
  58. {
  59. var preloading = WaveList[0];
  60. var markInfo = new MarkInfo();
  61. markInfo.Position = new SerializeVector2();
  62. markInfo.Size = new SerializeVector2();
  63. markInfo.SpecialMarkType = type;
  64. markInfo.MarkList = new List<MarkInfoItem>();
  65. preloading.Add(markInfo);
  66. }
  67. }
  68.  
  69. /// <summary>
  70. /// 检查是否创建了特殊标记, 如果没有, 则会自动创建并返回false
  71. /// </summary>
  72. public bool CheckSpecialMark(DungeonRoomType roomType)
  73. {
  74. var type = GetRoomSpecialMark(roomType);
  75. if (type == SpecialMarkType.Normal)
  76. {
  77. return true;
  78. }
  79.  
  80. if (WaveList.Count> 0)
  81. {
  82. var markInfos = WaveList[0];
  83. foreach (var markInfo in markInfos)
  84. {
  85. if (markInfo.SpecialMarkType == type)
  86. {
  87. return true;
  88. }
  89. }
  90. }
  91. InitSpecialMark(roomType);
  92. return false;
  93. }
  94. /// <summary>
  95. /// 获取指定类型房间中应该存在的特殊标记数据类型
  96. /// </summary>
  97. public SpecialMarkType GetRoomSpecialMark(DungeonRoomType roomType)
  98. {
  99. if (roomType == DungeonRoomType.Inlet) //初始房间
  100. {
  101. return SpecialMarkType.BirthPoint;
  102. }
  103. else if (roomType == DungeonRoomType.Outlet) //结束房间
  104. {
  105. return SpecialMarkType.OutPoint;
  106. }
  107. else if (roomType == DungeonRoomType.Shop) //商店房间
  108. {
  109. return SpecialMarkType.ShopBoss;
  110. }
  111. else if (roomType == DungeonRoomType.Reward) //奖励房间
  112. {
  113. return SpecialMarkType.Treasure;
  114. }
  115. return SpecialMarkType.Normal;
  116. }
  117. }