RedDotData.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. using System;
  2. using System.Collections.Generic;
  3. using Excel2Json;
  4. using Fort23.Core;
  5. using Fort23.UTool;
  6. using GameLogic.Hero;
  7. using Utility;
  8. namespace Fort23.Mono
  9. {
  10. public class RedDotData
  11. {
  12. /// <summary>
  13. /// 具体Id
  14. /// </summary>
  15. public int Id;
  16. /// <summary>
  17. /// 红点组ID
  18. /// </summary>
  19. public int GroupId;
  20. /// <summary>
  21. /// 当前红点所属于层级 1级为最上层
  22. /// </summary>
  23. public int Layer;
  24. /// <summary>
  25. /// 是否已经激活
  26. /// </summary>
  27. private bool _isEnable;
  28. public bool isEnable
  29. {
  30. get { return _isEnable; }
  31. set { _isEnable = value; }
  32. }
  33. public int EnableId;
  34. public void Update()
  35. {
  36. switch (GroupId)
  37. {
  38. //上阵的功法可以升级显示红点
  39. case 1:
  40. isEnable = false;
  41. switch (EnableId)
  42. {
  43. case 0: //没有自己的红点逻辑根据下层红点来决定
  44. isEnable = RedDotManager.Instance.AllRedDotGroupData[GroupId].TargetLayerIsEnable(Layer);
  45. break;
  46. case 1:
  47. foreach (var _skillInfo in PlayerManager.Instance.GongFaControl.allSkill)
  48. {
  49. if (RedDotManager.Instance.isSkillStar(_skillInfo))
  50. {
  51. isEnable = true;
  52. return;
  53. }
  54. }
  55. foreach (var _skillInfo in PlayerManager.Instance.GongFaControl.allUseSkill)
  56. {
  57. if (RedDotManager.Instance.isSkillUpgradeDaYu4(_skillInfo))
  58. {
  59. isEnable = true;
  60. return;
  61. }
  62. }
  63. break;
  64. }
  65. break;
  66. case 14:
  67. isEnable = false;
  68. switch (EnableId)
  69. {
  70. case 0: //没有自己的红点逻辑根据下层红点来决定
  71. isEnable = RedDotManager.Instance.AllRedDotGroupData[GroupId].TargetLayerIsEnable(Layer);
  72. break;
  73. case 1:
  74. int count = 0;
  75. for (var i = 0; i < PlayerManager.Instance.GongFaControl.allUseSkill.Length; i++)
  76. {
  77. if (PlayerManager.Instance.GongFaControl.allUseSkill[i] != null &&
  78. PlayerManager.Instance.GongFaControl.allUseSkill[i].skillConfig.SkillType == 1)
  79. {
  80. count++;
  81. }
  82. }
  83. if (count < PlayerManager.Instance.myHero.powerUpConfig.MaxActiveGongfaNum)
  84. {
  85. isEnable = true;
  86. }
  87. break;
  88. }
  89. break;
  90. //境界升级
  91. case 5:
  92. isEnable = false;
  93. switch (EnableId)
  94. {
  95. case 0: //没有自己的红点逻辑根据下层红点来决定
  96. isEnable = RedDotManager.Instance.AllRedDotGroupData[GroupId].TargetLayerIsEnable(Layer);
  97. break;
  98. case 1:
  99. int currentMiao =
  100. (int)((TimeHelper.ClientNow() - PlayerManager.Instance.myHero.heroData.upTime) /
  101. 1000);
  102. float allexp = currentMiao * PlayerManager.Instance.myHero.powerUpConfig.AutoXiuwei;
  103. if (PlayerManager.Instance.myHero.heroData.exp + allexp <
  104. PlayerManager.Instance.myHero.powerUpConfig.levelUpExp)
  105. {
  106. isEnable = false;
  107. return;
  108. }
  109. int redDotID = 5;
  110. AccountFileInfo.RedDot redDot = RedDotManager.Instance.GetRedDot(redDotID);
  111. HeroInfo heroInfo = PlayerManager.Instance.myHero.CopyHero();
  112. heroInfo.InitHero(PlayerManager.Instance.myHero.heroData.heroModelId,
  113. PlayerManager.Instance.myHero.heroData.heroPowerId + 1);
  114. if (PlayerManager.Instance.myHero.powerUpConfig.jingjie1 == heroInfo.powerUpConfig.jingjie1)
  115. {
  116. //小突破
  117. if (PlayerManager.Instance.myHero.powerUpConfig.jingjie2 ==
  118. heroInfo.powerUpConfig.jingjie2)
  119. {
  120. isEnable = true;
  121. return;
  122. }
  123. //大突破
  124. else
  125. {
  126. for (var i = 0;
  127. i < PlayerManager.Instance.myHero.powerUpConfig.DujieMustItemIDs.Length;
  128. i++)
  129. {
  130. if (!PlayerManager.Instance.BagController.IsEnough(
  131. PlayerManager.Instance.myHero.powerUpConfig.DujieMustItemIDs[i], 1))
  132. {
  133. isEnable = false;
  134. return;
  135. }
  136. }
  137. //当前升级已经查看了也不显示红点
  138. if (redDot != null &&
  139. redDot.Params.Contains(
  140. PlayerManager.Instance.myHero.powerUpConfig.ID.ToString()))
  141. {
  142. isEnable = false;
  143. return;
  144. }
  145. }
  146. }
  147. //渡劫
  148. else
  149. {
  150. for (var i = 0;
  151. i < PlayerManager.Instance.myHero.powerUpConfig.DujieMustItemIDs.Length;
  152. i++)
  153. {
  154. if (!PlayerManager.Instance.BagController.IsEnough(
  155. PlayerManager.Instance.myHero.powerUpConfig.DujieMustItemIDs[i], 1))
  156. {
  157. isEnable = false;
  158. return;
  159. }
  160. }
  161. //当前升级已经查看了也不显示红点
  162. if (redDot != null &&
  163. redDot.Params.Contains(PlayerManager.Instance.myHero.powerUpConfig.ID.ToString()))
  164. {
  165. isEnable = false;
  166. return;
  167. }
  168. }
  169. isEnable = true;
  170. break;
  171. }
  172. break;
  173. case 7: //具上的代金卷可以免费抽
  174. isEnable = false;
  175. switch (EnableId) //具体出现条件
  176. {
  177. case 0: //没有自己的红点逻辑根据下层红点来决定
  178. isEnable = RedDotManager.Instance.AllRedDotGroupData[GroupId].TargetLayerIsEnable(Layer);
  179. break;
  180. case 1:
  181. AccountFileInfo.SummonData summonData =
  182. PlayerManager.Instance.SummonManager.summonDataMap[1];
  183. OpenBoxConfig openBoxConfig = ConfigComponent.Instance.Get<OpenBoxConfig>(1);
  184. //有免费次数,并且让到时间了就免费抽
  185. if (summonData.tenFreeCount < openBoxConfig.oneConsumeFreePara_1[1] &&
  186. PlayerManager.Instance.serverTime >= summonData.nextTenFreeTime)
  187. {
  188. isEnable = true;
  189. return;
  190. }
  191. isEnable = false;
  192. break;
  193. }
  194. break;
  195. case 8: //法宝可以升级或者有新槽位
  196. isEnable = false;
  197. switch (EnableId) //具体出现条件
  198. {
  199. case 0: //没有自己的红点逻辑根据下层红点来决定
  200. isEnable = RedDotManager.Instance.AllRedDotGroupData[GroupId].TargetLayerIsEnable(Layer);
  201. break;
  202. case 1:
  203. for (int i = 0; i < 4; i++)
  204. {
  205. FaBaoInfo faBaoInfo = PlayerManager.Instance.FaBaoControl.FightFaBao[i];
  206. if (RedDotManager.Instance.IsFabaoUpgrade1(i, faBaoInfo))
  207. {
  208. isEnable = true;
  209. return;
  210. }
  211. }
  212. break;
  213. }
  214. break;
  215. case 11: //挂机奖励大于300分钟
  216. isEnable = false;
  217. switch (EnableId) //具体出现条件
  218. {
  219. case 0: //没有自己的红点逻辑根据下层红点来决定
  220. isEnable = RedDotManager.Instance.AllRedDotGroupData[GroupId].TargetLayerIsEnable(Layer);
  221. break;
  222. case 1:
  223. if (AccountFileInfo.Instance.playerData.QiankundaiLingQuAwardTime == 0)
  224. {
  225. isEnable = true;
  226. return;
  227. }
  228. int miao = (int)((PlayerManager.Instance.serverTime -
  229. AccountFileInfo.Instance.playerData.QiankundaiLingQuAwardTime) / 1000);
  230. if (miao >= 300)
  231. {
  232. isEnable = true;
  233. }
  234. break;
  235. }
  236. break;
  237. }
  238. }
  239. }
  240. }