UIHundredDojoCtr.lua 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. local UIHundredDojoCtr = class("UIHundredDojoCtr", require("UICtrBase"))
  2. function UIHundredDojoCtr:Init(view)
  3. self.view = view
  4. end
  5. function UIHundredDojoCtr:SetData(data)
  6. self.asyncIdx = 0
  7. if data == nil then return end
  8. self.data = data
  9. end
  10. function UIHundredDojoCtr:GetAsyncIdx()
  11. self.asyncIdx = self.asyncIdx + 1
  12. return self.asyncIdx
  13. end
  14. function UIHundredDojoCtr:GetData()
  15. return self.data
  16. end
  17. function UIHundredDojoCtr:OnDispose()
  18. self.areaMaxId = nil
  19. self.rawCount = nil
  20. self.rewardMaxTime = nil
  21. self.rewardInterval = nil
  22. self.rewardRate = nil
  23. self.baseRewards = nil
  24. self.buyCosts = nil
  25. self.defaultHeroCute = nil
  26. self.robotHeroCute = nil
  27. self.showRawIdxs = nil
  28. self.sloganStartTime = nil
  29. self.sloganShowTime = nil
  30. self.sloganHideTime = nil
  31. self.sloganNumMax = nil
  32. self.lastAttackAreaId = nil
  33. self.data = nil
  34. self.view = nil
  35. end
  36. function UIHundredDojoCtr:InitData()
  37. self.areaMaxId = ManagerContainer.DataMgr.HundredDojoDataMgr:GetAreaMaxId()
  38. self:CalcRawCount()
  39. self.rewardMaxTime = GlobalConfig.Instance:GetConfigIntValue(255) * 3600
  40. self.rewardInterval = GlobalConfig.Instance:GetConfigIntValue(252)
  41. if self.rewardInterval <= 0 then self.rewardInterval = 1 end
  42. self.rewardRate = 60 / self.rewardInterval
  43. local baseRewardStr = GlobalConfig.Instance:GetConfigStrValue(301)
  44. self.baseRewards = CommonUtil.DeserializeGlobalStrToNumberTable(baseRewardStr)
  45. local costStr = GlobalConfig.Instance:GetConfigStrValue(265)
  46. self.buyCosts = CommonUtil.DeserializeGlobalStrToNumberTable(costStr)
  47. self.defaultHeroCute = GlobalConfig.Instance:GetConfigStrValue(259)
  48. self.robotHeroCute = GlobalConfig.Instance:GetConfigStrValue(258)
  49. local sloganShowStr = GlobalConfig.Instance:GetConfigStrValue(277)
  50. local sloganShowInfos = CommonUtil.DeserializeGlobalStrToNumberTable(sloganShowStr)
  51. self.sloganStartTime = 2
  52. self.sloganShowTime = 5
  53. self.sloganHideTime = 5
  54. if sloganShowInfos then
  55. if sloganShowInfos[1] then
  56. self.sloganStartTime = sloganShowInfos[1]
  57. end
  58. if sloganShowInfos[2] then
  59. self.sloganShowTime = sloganShowInfos[2]
  60. end
  61. if sloganShowInfos[3] then
  62. self.sloganHideTime = sloganShowInfos[3]
  63. end
  64. end
  65. self.sloganNumMax = GlobalConfig.Instance:GetConfigIntValue(278) or 5
  66. self.showRawIdxs = {}
  67. self.lastAttackAreaId = ManagerContainer.DataMgr.HundredDojoDataMgr:GetLastAttackAreaId()
  68. ManagerContainer.DataMgr.HundredDojoDataMgr:ClearLastAttackAreaId()
  69. end
  70. function UIHundredDojoCtr:GetChallengeCount()
  71. return ManagerContainer.DataMgr.HundredDojoDataMgr:GetChallengeCount()
  72. end
  73. function UIHundredDojoCtr:GetBuyChallengeCount()
  74. return ManagerContainer.DataMgr.HundredDojoDataMgr:GetBuyChallengeCount()
  75. end
  76. function UIHundredDojoCtr:GetBuyChallengeCountCost()
  77. local buyCount = self:GetBuyChallengeCount()
  78. if self.buyCosts then
  79. buyCount = Mathf.Clamp(buyCount + 1, 1, #self.buyCosts)
  80. local buyCost = self.buyCosts[buyCount]
  81. if buyCost then
  82. return buyCost[1], buyCost[2]
  83. end
  84. end
  85. return 1, 100
  86. end
  87. function UIHundredDojoCtr:GetAreaMaxId()
  88. return self.areaMaxId
  89. end
  90. function UIHundredDojoCtr:CalcRawCount()
  91. local normalAreaMaxId = (self.areaMaxId - 1)
  92. local rawCount = Mathf.Floor(normalAreaMaxId / 5)
  93. local remain = (normalAreaMaxId - rawCount * 5)
  94. rawCount = rawCount * 2
  95. if remain > 2 then
  96. rawCount = rawCount + 2
  97. elseif remain > 0 then
  98. rawCount = rawCount + 1
  99. end
  100. self.rawCount = rawCount + 1
  101. end
  102. function UIHundredDojoCtr:GetRawCount()
  103. return self.rawCount
  104. end
  105. function UIHundredDojoCtr:GetRawAreaStartAndEnd(rawIdx)
  106. if rawIdx == 0 then
  107. return 1, 1
  108. end
  109. local count = Mathf.Floor(rawIdx / 2) * 5 + 1
  110. local remain = rawIdx % 2
  111. local startId, endId
  112. if remain == 1 then
  113. startId = count + 1
  114. endId = count + 2
  115. else
  116. startId = count - 2
  117. endId = count
  118. end
  119. if startId > self.areaMaxId then
  120. startId = self.areaMaxId
  121. end
  122. if endId > self.areaMaxId then
  123. endId = self.areaMaxId
  124. end
  125. return startId, endId
  126. end
  127. function UIHundredDojoCtr:GetRawIdxByAreaId(areaId)
  128. if areaId == 1 then
  129. return 0, 1
  130. end
  131. local normalAreaMaxId = (areaId - 1)
  132. local rawIdx = Mathf.Floor(normalAreaMaxId / 5)
  133. local remain = (normalAreaMaxId - rawIdx * 5)
  134. rawIdx = rawIdx * 2
  135. if remain > 2 then
  136. rawIdx = rawIdx + 1
  137. remain = remain - 2
  138. elseif remain == 0 then
  139. rawIdx = rawIdx - 1
  140. remain = 3
  141. elseif remain < 0 then
  142. LogError('[wboy] calc error ' .. tostring(areaId))
  143. end
  144. return rawIdx + 1, remain
  145. end
  146. function UIHundredDojoCtr:AddShowRawIdx(rawIdx)
  147. if not CommonUtil.EleInTable(rawIdx, self.showRawIdxs) then
  148. self.showRawIdxs[#self.showRawIdxs+1] = rawIdx
  149. end
  150. end
  151. function UIHundredDojoCtr:RemoveShowRawIdx(rawIdx)
  152. for k,v in pairs(self.showRawIdxs) do
  153. if v == rawIdx then
  154. table.remove(self.showRawIdxs, k)
  155. break
  156. end
  157. end
  158. end
  159. function UIHundredDojoCtr:GetShowRawIdxs()
  160. return self.showRawIdxs
  161. end
  162. function UIHundredDojoCtr:IsSelfArea(id)
  163. local selfAreaData = self:GetSelfAreaData()
  164. if selfAreaData and selfAreaData:IsValidData() and (selfAreaData.id == id) then
  165. return true
  166. end
  167. return false
  168. end
  169. function UIHundredDojoCtr:IsLastBeAtkArea(uid)
  170. if not uid then
  171. return false
  172. end
  173. local lastBeAtkUid = ManagerContainer.DataMgr.HundredDojoDataMgr:GetLastBeAttackUid()
  174. if not lastBeAtkUid then
  175. return false
  176. end
  177. return int64.equals(lastBeAtkUid, uid)
  178. end
  179. function UIHundredDojoCtr:IsSameGuild(guildId)
  180. local guildData = ManagerContainer.DataMgr.GuildDataMgr:GetCurGuildData()
  181. if guildData then
  182. return guildData:IsSameGuild(guildId)
  183. end
  184. return false
  185. end
  186. function UIHundredDojoCtr:ForceHandleRewardRedPoint()
  187. ManagerContainer.DataMgr.HundredDojoDataMgr:HandleRewardRedPoint()
  188. end
  189. function UIHundredDojoCtr:GetUserNickname()
  190. return ManagerContainer.DataMgr.UserData:GetUserNickname()
  191. end
  192. function UIHundredDojoCtr:GetTotalFightPower()
  193. return ManagerContainer.DataMgr.UserData:GetTotalFightPower()
  194. end
  195. function UIHundredDojoCtr:GetUserRoleId()
  196. return ManagerContainer.DataMgr.UserData:GetUserRoleId()
  197. end
  198. function UIHundredDojoCtr:GetSelfAreaData()
  199. return ManagerContainer.DataMgr.HundredDojoDataMgr:GetSelfAreaData()
  200. end
  201. function UIHundredDojoCtr:GetAreaDataById(id)
  202. return ManagerContainer.DataMgr.HundredDojoDataMgr:GetAreaDataById(id)
  203. end
  204. function UIHundredDojoCtr:GetBaseRewardStartTime()
  205. return ManagerContainer.DataMgr.HundredDojoDataMgr:GetBaseRewardStartTime()
  206. end
  207. function UIHundredDojoCtr:GetLastAttackAreaId()
  208. return self.lastAttackAreaId
  209. end
  210. function UIHundredDojoCtr:GetRewardMaxTime()
  211. return self.rewardMaxTime
  212. end
  213. function UIHundredDojoCtr:GetRewardInterval()
  214. return self.rewardInterval
  215. end
  216. function UIHundredDojoCtr:GetRewardRate()
  217. return self.rewardRate
  218. end
  219. function UIHundredDojoCtr:GetBaseRewards()
  220. return self.baseRewards
  221. end
  222. function UIHundredDojoCtr:GetDefaultHeroCute()
  223. return self.defaultHeroCute
  224. end
  225. function UIHundredDojoCtr:GetRobotHeroCute()
  226. return self.robotHeroCute
  227. end
  228. function UIHundredDojoCtr:GetSloganStartTime()
  229. return self.sloganStartTime
  230. end
  231. function UIHundredDojoCtr:GetSloganShowTime()
  232. return self.sloganShowTime
  233. end
  234. function UIHundredDojoCtr:GetSloganHideTime()
  235. return self.sloganHideTime
  236. end
  237. function UIHundredDojoCtr:GetSloganNumMax()
  238. return self.sloganNumMax
  239. end
  240. function UIHundredDojoCtr:IsTreasureShow()
  241. if (ManagerContainer.DataMgr.CompetitionData:GetCurMaxSeason() == 3) then
  242. local stage = ManagerContainer.DataMgr.CompetitionData:GetCurStageAndNextTime(true)
  243. return (stage == 2)
  244. end
  245. return false
  246. end
  247. function UIHundredDojoCtr:GetSelfSlogan()
  248. return ManagerContainer.DataMgr.HundredDojoDataMgr:GetSlogan()
  249. end
  250. function UIHundredDojoCtr:GetOwnResCountByItemId(itemCfgId)
  251. return CommonUtil.GetOwnResCountByItemId(itemCfgId)
  252. end
  253. function UIHundredDojoCtr:SendGetSelfInfoReq()
  254. if not ManagerContainer.DataMgr.HundredDojoDataMgr:SendGetAreaInfoReq(ManagerContainer.DataMgr.UserData:GetUserId()) then
  255. return 100007
  256. end
  257. return 0
  258. end
  259. function UIHundredDojoCtr:SendGetOtherInfosReq(areaIds)
  260. if not ManagerContainer.DataMgr.HundredDojoDataMgr:SendGetOtherInfosReq(areaIds) then
  261. return 100007
  262. end
  263. return 0
  264. end
  265. function UIHundredDojoCtr:SendGetRewardReq()
  266. local baseRewardTime = self:GetBaseRewardStartTime()
  267. local remainTime = 0
  268. if baseRewardTime then
  269. remainTime = ManagerContainer.LuaTimerMgr:CurLuaServerTime() - baseRewardTime
  270. remainTime = remainTime / 1000
  271. if type(remainTime) == 'userdata' then
  272. remainTime = #remainTime
  273. end
  274. end
  275. if remainTime < self:GetRewardInterval() then
  276. return 250
  277. end
  278. if not ManagerContainer.DataMgr.HundredDojoDataMgr:SendGetRewardReq() then
  279. return 100007
  280. end
  281. return 0
  282. end
  283. function UIHundredDojoCtr:SendBuyChallengeNumReq()
  284. local costCfgId, costNum = self:GetBuyChallengeCountCost()
  285. local ownNum = self:GetOwnResCountByItemId(costCfgId)
  286. if ownNum < costNum then
  287. return 1, costCfgId
  288. end
  289. if not ManagerContainer.DataMgr.HundredDojoDataMgr:SendBuyChallengeNumReq() then
  290. return 100007, nil
  291. end
  292. return 0, nil
  293. end
  294. return UIHundredDojoCtr