RedDotData.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  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 16:
  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. case 17:
  91. isEnable = false;
  92. switch (EnableId)
  93. {
  94. case 0: //没有自己的红点逻辑根据下层红点来决定
  95. isEnable = RedDotManager.Instance.AllRedDotGroupData[GroupId].TargetLayerIsEnable(Layer);
  96. break;
  97. case 1:
  98. int count = 0;
  99. for (var i = 0; i < PlayerManager.Instance.GongFaControl.allUseSkill.Length; i++)
  100. {
  101. if (PlayerManager.Instance.GongFaControl.allUseSkill[i] != null &&
  102. PlayerManager.Instance.GongFaControl.allUseSkill[i].skillConfig.SkillType == 2)
  103. {
  104. count++;
  105. }
  106. }
  107. if (count < PlayerManager.Instance.myHero.powerUpConfig.MaxPassiveGongfaNum)
  108. {
  109. isEnable = true;
  110. }
  111. break;
  112. }
  113. break;
  114. //境界升级
  115. case 5:
  116. isEnable = false;
  117. switch (EnableId)
  118. {
  119. case 0: //没有自己的红点逻辑根据下层红点来决定
  120. isEnable = RedDotManager.Instance.AllRedDotGroupData[GroupId].TargetLayerIsEnable(Layer);
  121. break;
  122. case 1:
  123. int currentMiao =
  124. (int)((TimeHelper.ClientNow() - PlayerManager.Instance.myHero.heroData.upTime) /
  125. 1000);
  126. float allexp = currentMiao * PlayerManager.Instance.myHero.powerUpConfig.AutoXiuwei;
  127. if (PlayerManager.Instance.myHero.heroData.exp + allexp <
  128. PlayerManager.Instance.myHero.powerUpConfig.levelUpExp)
  129. {
  130. isEnable = false;
  131. return;
  132. }
  133. int redDotID = 5;
  134. AccountFileInfo.RedDot redDot = RedDotManager.Instance.GetRedDot(redDotID);
  135. HeroInfo heroInfo = PlayerManager.Instance.myHero.CopyHero();
  136. heroInfo.InitHero(PlayerManager.Instance.myHero.heroData.heroModelId,
  137. PlayerManager.Instance.myHero.heroData.heroPowerId + 1);
  138. if (PlayerManager.Instance.myHero.powerUpConfig.jingjie1 == heroInfo.powerUpConfig.jingjie1)
  139. {
  140. //小突破
  141. if (PlayerManager.Instance.myHero.powerUpConfig.jingjie2 ==
  142. heroInfo.powerUpConfig.jingjie2)
  143. {
  144. isEnable = true;
  145. return;
  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(
  164. PlayerManager.Instance.myHero.powerUpConfig.ID.ToString()))
  165. {
  166. isEnable = false;
  167. return;
  168. }
  169. }
  170. }
  171. //渡劫
  172. else
  173. {
  174. for (var i = 0;
  175. i < PlayerManager.Instance.myHero.powerUpConfig.DujieMustItemIDs.Length;
  176. i++)
  177. {
  178. if (!PlayerManager.Instance.BagController.IsEnough(
  179. PlayerManager.Instance.myHero.powerUpConfig.DujieMustItemIDs[i], 1))
  180. {
  181. isEnable = false;
  182. return;
  183. }
  184. }
  185. //当前升级已经查看了也不显示红点
  186. if (redDot != null &&
  187. redDot.Params.Contains(PlayerManager.Instance.myHero.powerUpConfig.ID.ToString()))
  188. {
  189. isEnable = false;
  190. return;
  191. }
  192. }
  193. isEnable = true;
  194. break;
  195. }
  196. break;
  197. case 7: //具上的代金卷可以免费抽
  198. isEnable = false;
  199. switch (EnableId) //具体出现条件
  200. {
  201. case 0: //没有自己的红点逻辑根据下层红点来决定
  202. isEnable = RedDotManager.Instance.AllRedDotGroupData[GroupId].TargetLayerIsEnable(Layer);
  203. break;
  204. case 1:
  205. AccountFileInfo.SummonData summonData =
  206. PlayerManager.Instance.SummonManager.summonDataMap[1];
  207. OpenBoxConfig openBoxConfig = ConfigComponent.Instance.Get<OpenBoxConfig>(1);
  208. //有免费次数,并且让到时间了就免费抽
  209. if (summonData.tenFreeCount < openBoxConfig.oneConsumeFreePara_1[1] &&
  210. PlayerManager.Instance.serverTime >= summonData.nextTenFreeTime)
  211. {
  212. isEnable = true;
  213. return;
  214. }
  215. isEnable = false;
  216. break;
  217. }
  218. break;
  219. case 8: //法宝可以升级或者有新槽位
  220. isEnable = false;
  221. switch (EnableId) //具体出现条件
  222. {
  223. case 0: //没有自己的红点逻辑根据下层红点来决定
  224. isEnable = RedDotManager.Instance.AllRedDotGroupData[GroupId].TargetLayerIsEnable(Layer);
  225. break;
  226. case 1:
  227. for (int i = 0; i < 4; i++)
  228. {
  229. FaBaoInfo faBaoInfo = PlayerManager.Instance.FaBaoControl.FightFaBao[i];
  230. if (RedDotManager.Instance.IsFabaoUpgrade1(i, faBaoInfo))
  231. {
  232. isEnable = true;
  233. return;
  234. }
  235. }
  236. break;
  237. }
  238. break;
  239. case 11: //挂机奖励大于300分钟
  240. isEnable = false;
  241. switch (EnableId) //具体出现条件
  242. {
  243. case 0: //没有自己的红点逻辑根据下层红点来决定
  244. isEnable = RedDotManager.Instance.AllRedDotGroupData[GroupId].TargetLayerIsEnable(Layer);
  245. break;
  246. case 1:
  247. if (AccountFileInfo.Instance.playerData.QiankundaiLingQuAwardTime == 0)
  248. {
  249. isEnable = true;
  250. return;
  251. }
  252. int miao = (int)((PlayerManager.Instance.serverTime -
  253. AccountFileInfo.Instance.playerData.QiankundaiLingQuAwardTime) / 1000);
  254. if (miao >= 300)
  255. {
  256. isEnable = true;
  257. }
  258. break;
  259. }
  260. break;
  261. case 15: //丹药小红点
  262. isEnable = false;
  263. switch (EnableId) //具体出现条件
  264. {
  265. case 0: //没有自己的红点逻辑根据下层红点来决定
  266. isEnable = RedDotManager.Instance.AllRedDotGroupData[GroupId].TargetLayerIsEnable(Layer);
  267. break;
  268. case 1:
  269. foreach (var keyValuePair in PlayerManager.Instance.BagController.allBagDic)
  270. {
  271. if (keyValuePair.Value.config.itemTag == 5 && keyValuePair.Value.count.Value > 0)
  272. {
  273. isEnable = true;
  274. return;
  275. }
  276. }
  277. break;
  278. }
  279. break;
  280. }
  281. }
  282. }
  283. }