TurntableData.ts 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. /** 转盘数据类 */
  2. import GameM from "../manager/GameM"
  3. import RedPointM, { RedPointType } from "../manager/RedPointM"
  4. import UiM from "../manager/UiM"
  5. import Turntable from "../ui/Turntable"
  6. import LogUtil from "../utils/LogUtil"
  7. import { CFG_SERVER, HTTP_TYPE } from "./CommonData"
  8. import RoleManageData from "./RoleManageData"
  9. export default class TurntableData {
  10. private static instance: TurntableData = null
  11. static get Instance(): TurntableData {
  12. if (!TurntableData.instance) {
  13. TurntableData.instance = new TurntableData()
  14. }
  15. return TurntableData.instance
  16. }
  17. /** 转盘配置 */
  18. turntableCft: any = null
  19. /** 宝箱刷新 */
  20. turntableRefreshTimes = 0
  21. /** 每日宝箱抽奖次数 */
  22. turntableTimes = 10
  23. /**转盘奖励提升幅度*/
  24. turntableUpReward: number = 0.5;
  25. /**转盘奖励提升随机权重*/
  26. turntableRewardRandom: Array<number> = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5];
  27. /** 额外次数奖励配置 */
  28. turntableExtrasCfg = [[3,20006,58],[5,20006,158],[7,20006,258],[9,20006,358],[10,20006,458]]
  29. /** 获取一个奖励
  30. * @param type 抽奖类型 0 免费 1 看视频
  31. * @returns 随机的奖励
  32. */
  33. getTurnTable(type): any {
  34. let weight = 0
  35. let weightArr = []
  36. let len = this.turntableCft.length
  37. let data = null
  38. for (var i = 0; i < len; i++) {
  39. data = this.turntableCft[i]
  40. if (type == 0) {
  41. if (data.type == 1) {
  42. weight += data.weight
  43. weightArr[i] = weight
  44. }
  45. else {
  46. weightArr[i] = 0
  47. }
  48. }
  49. else if (type == 1) {
  50. weight += data.weight
  51. weightArr[i] = weight
  52. }
  53. }
  54. let ran = Math.random() * weight
  55. for (var i = 0; i < weightArr.length; i++) {
  56. if (ran <= weightArr[i]) {
  57. data = this.turntableCft[i]
  58. break
  59. }
  60. }
  61. return data
  62. }
  63. getTurntableCfg() {
  64. GameM.commonData.getSingleCfg(CFG_SERVER.TurntableCfg)
  65. }
  66. /**获取转盘配置 */
  67. getTurnTableCfgBack(data: string) {
  68. LogUtil.logV("getTurnTableCfg", data)
  69. let jsonObj = JSON.parse(data)
  70. this.turntableCft = jsonObj
  71. if (UiM.Instance.turntableNode) {
  72. UiM.Instance.turntableNode.getComponent(Turntable).init()
  73. }
  74. }
  75. /** 重置转盘次数
  76. * 每日 12点 18点 0点重置
  77. */
  78. updateResetTurntable() {
  79. if (this.turntableRefreshTimes < 3) {
  80. let hour = new Date(GameM.commonData.gameTime).getHours()
  81. if (hour < 12) {
  82. if (this.turntableRefreshTimes <= 0) {
  83. this.turntableRefreshTimes = 1
  84. this.turntableTimes = 10
  85. GameM.commonData.roleData.turntableUseCard = 0
  86. GameM.httpM.sendDatas(HTTP_TYPE.updateTurntableRefreshTimes, { 'turntableRefreshTimes': this.turntableRefreshTimes })
  87. GameM.httpM.sendDatas(HTTP_TYPE.updateTurntableTimes, { 'turntableTimes': this.turntableTimes })
  88. RoleManageData.Instance.updateRoleData("turntableUseCard", GameM.commonData.roleData.turntableUseCard)
  89. }
  90. }
  91. else if (hour < 18) {
  92. if (this.turntableRefreshTimes <= 1) {
  93. this.turntableRefreshTimes = 2
  94. this.turntableTimes = 10
  95. GameM.commonData.roleData.turntableUseCard = 0
  96. GameM.httpM.sendDatas(HTTP_TYPE.updateTurntableRefreshTimes, { 'turntableRefreshTimes': this.turntableRefreshTimes })
  97. GameM.httpM.sendDatas(HTTP_TYPE.updateTurntableTimes, { 'turntableTimes': this.turntableTimes })
  98. RoleManageData.Instance.updateRoleData("turntableUseCard", GameM.commonData.roleData.turntableUseCard)
  99. }
  100. }
  101. else {
  102. if (this.turntableRefreshTimes <= 2) {
  103. this.turntableRefreshTimes = 3
  104. this.turntableTimes = 10
  105. GameM.commonData.roleData.turntableUseCard = 0
  106. GameM.httpM.sendDatas(HTTP_TYPE.updateTurntableRefreshTimes, { 'turntableRefreshTimes': this.turntableRefreshTimes })
  107. GameM.httpM.sendDatas(HTTP_TYPE.updateTurntableTimes, { 'turntableTimes': this.turntableTimes })
  108. RoleManageData.Instance.updateRoleData("turntableUseCard", GameM.commonData.roleData.turntableUseCard)
  109. }
  110. }
  111. }
  112. }
  113. /** 每日抽奖次数 */
  114. updateTurntableTimes() {
  115. this.turntableTimes--
  116. GameM.httpM.sendDatas(HTTP_TYPE.updateTurntableTimes, { 'turntableTimes': this.turntableTimes })
  117. if (this.turntableTimes > 0) {
  118. RedPointM.instance.ActiveRedPoint(RedPointType.Turnplate, true)
  119. }
  120. else {
  121. RedPointM.instance.ActiveRedPoint(RedPointType.Turnplate, false)
  122. }
  123. GameM.commonData.addDailyFinishTimesDataByType(2)
  124. }
  125. /**刷新转盘次数奖励 */
  126. updateTurntableExtraReward(){
  127. let times = GameM.commonData.roleData.turntableExtrasReward
  128. let totalTimes = GameM.commonData.getDailyFinishTimesDataByType(2)
  129. // for(let entry of this.turntableExtrasCfg){
  130. // if(totalTimes)
  131. // }
  132. }
  133. }