ClutterDataLogic.lua 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. --杂数据处理模块
  2. --db
  3. --[=[
  4. human.db.clutterData = {
  5. [type] = value,
  6. },
  7. ]=]--
  8. local Msg = require("core.Msg")
  9. local Lang = require("common.Lang")
  10. local Broadcast = require("broadcast.Broadcast")
  11. local ClutterDataDefine = require("clutter.ClutterDataDefine")
  12. local DAILY_LIMIT_TIMES = 99999 --抽奖和寻星每日最大次数
  13. local function initAllClutterData(human)
  14. human.db.clutterData = {}
  15. human.db.clutterData[ClutterDataDefine.CLUTTER_TYPE1] = DAILY_LIMIT_TIMES
  16. human.db.clutterData[ClutterDataDefine.CLUTTER_TYPE2] = DAILY_LIMIT_TIMES
  17. human.db.clutterData[ClutterDataDefine.CLUTTER_TYPE3] = DAILY_LIMIT_TIMES
  18. human.db.clutterData[ClutterDataDefine.CLUTTER_TYPE4] = DAILY_LIMIT_TIMES
  19. human.db.clutterData[ClutterDataDefine.CLUTTER_TYPE5] = DAILY_LIMIT_TIMES
  20. human.db.clutterData[ClutterDataDefine.CLUTTER_TYPE6] = DAILY_LIMIT_TIMES
  21. end
  22. local function getAllClutterData(human)
  23. return human.db.clutterData
  24. end
  25. --根据类型获取杂数据
  26. local function getDiffClutterData(human, clutteryType)
  27. if not clutteryType then
  28. return
  29. end
  30. local clutterData = getAllClutterData(human)
  31. if not clutterData then
  32. return
  33. end
  34. return clutterData[clutteryType]
  35. end
  36. --更新不同类型的杂数据
  37. local function updateDiffClutterData(human, clutteryType, newValue, isAdd)
  38. if not clutteryType then
  39. return
  40. end
  41. local clutterData = getAllClutterData(human)
  42. if not clutterData then
  43. return
  44. end
  45. if isAdd then
  46. clutterData[clutteryType] = (clutterData[clutteryType] or 0) + newValue
  47. else
  48. clutterData[clutteryType] = (clutterData[clutteryType] or 0) - newValue
  49. end
  50. end
  51. -- 获取不同类型的抽奖次数
  52. function GetDiffLotteryTimes(human, clutteryType)
  53. return getDiffClutterData(human, clutteryType) or 0
  54. end
  55. -- 更新不同类型的抽奖次数
  56. function UpdateDiffLotteryTimes(human, clutteryType, val, type2)
  57. updateDiffClutterData(human, clutteryType, val)
  58. QueryDiffLotteryTimes(human, type2)
  59. end
  60. --寻星次数
  61. function GetZhuanPanTimes(human)
  62. return getDiffClutterData(human, ClutterDataDefine.CLUTTER_TYPE6) or 0
  63. end
  64. --更新寻星次数
  65. function UpdateZhuanPanTimes(human, val)
  66. updateDiffClutterData(human, ClutterDataDefine.CLUTTER_TYPE6, val)
  67. QueryZhuanPanTimes(human)
  68. end
  69. --上线
  70. function onLogin(human)
  71. local clutterData = getAllClutterData(human)
  72. if not clutterData then
  73. initAllClutterData(human)
  74. end
  75. end
  76. --跨天
  77. function updateDaily(human)
  78. initAllClutterData(human)
  79. end
  80. -------------------------------------------Respone----------------------------------
  81. --请求不同类型抽奖次数
  82. function QueryDiffLotteryTimes(human, lotteryType)
  83. if not lotteryType then
  84. return Broadcast.sendErr(human, Lang.COMMON_TYPE_ERROR)
  85. end
  86. --临时处理下, 后续再看看怎么把类型对应起来
  87. local targetType = lotteryType
  88. if lotteryType == 6 then
  89. elseif lotteryType == 8 then
  90. targetType = ClutterDataDefine.CLUTTER_TYPE5
  91. end
  92. local lotteryTimes = getDiffClutterData(human, targetType)
  93. if not lotteryTimes then
  94. return Broadcast.sendErr(human, Lang.COMMON_TYPE_ERROR)
  95. end
  96. local msgRet = Msg.gc.GC_QUERY_DAILYLOTTERYLIMIT
  97. msgRet.lotteryType = lotteryType
  98. msgRet.lotteryTimes = math.max(0, lotteryTimes)
  99. Msg.send(msgRet, human.fd)
  100. end
  101. --请求寻星次数
  102. function QueryZhuanPanTimes(human)
  103. local zhuanpanTimes = getDiffClutterData(human, ClutterDataDefine.CLUTTER_TYPE6) or 0
  104. if not zhuanpanTimes then
  105. return
  106. end
  107. local msgRet = Msg.gc.GC_QUERY_DAY_ZHUANPAN_TIMES
  108. msgRet.zhuanpanTimes = math.max(0, zhuanpanTimes)
  109. Msg.send(msgRet, human.fd)
  110. end