UIGuildWarCtr.lua 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. local UIGuildWarCtr = class("UIGuildWarCtr", require("UICtrBase"))
  2. function UIGuildWarCtr:Init(view)
  3. self.view = view
  4. end
  5. function UIGuildWarCtr:SetData(data)
  6. self.asyncIdx = 0
  7. if data == nil then return end
  8. self.data = data
  9. end
  10. function UIGuildWarCtr:GetAsyncIdx()
  11. self.asyncIdx = self.asyncIdx + 1
  12. return self.asyncIdx
  13. end
  14. function UIGuildWarCtr:GetData()
  15. return self.data
  16. end
  17. function UIGuildWarCtr:OnDispose()
  18. self.battleIdx = nil
  19. self.rebornMaxTime = nil
  20. self.buyChallengeCosts = nil
  21. self.buyRebornCosts = nil
  22. self.showRawIdxs = nil
  23. self.lastAttackAreaId = nil
  24. local battleFieldData = self:GetBattleFieldData()
  25. if battleFieldData then
  26. battleFieldData:Clear()
  27. end
  28. self.data = nil
  29. self.view = nil
  30. end
  31. function UIGuildWarCtr:InitData()
  32. self.battleIdx = self.data
  33. self.rebornMaxTime = GlobalConfig.Instance:GetConfigIntValue(291)
  34. local costStr = GlobalConfig.Instance:GetConfigStrValue(295)
  35. self.buyChallengeCosts = CommonUtil.DeserializeGlobalStrToNumberTable(costStr)
  36. costStr = GlobalConfig.Instance:GetConfigStrValue(296)
  37. self.buyRebornCosts = CommonUtil.DeserializeGlobalStrToNumberTable(costStr)
  38. self.defaultHeroCute = GlobalConfig.Instance:GetConfigStrValue(259)
  39. self.showRawIdxs = {}
  40. local guildWarDataMgr = ManagerContainer.DataMgr.GuildWarDataMgr
  41. if guildWarDataMgr then
  42. self.lastAttackAreaId = guildWarDataMgr:GetLastAttackAreaId()
  43. guildWarDataMgr:ClearLastAttackInfo()
  44. else
  45. self.lastAttackAreaId = nil
  46. end
  47. end
  48. function UIGuildWarCtr:GetDefaultHeroCute()
  49. return self.defaultHeroCute
  50. end
  51. function UIGuildWarCtr:GetRebornMaxTime()
  52. return self.rebornMaxTime
  53. end
  54. function UIGuildWarCtr:GetBuyChallengeCountCost()
  55. if self.buyChallengeCosts then
  56. local buyCost = self.buyChallengeCosts[1]
  57. if buyCost then
  58. return buyCost[1], buyCost[2]
  59. end
  60. end
  61. return 1, 100
  62. end
  63. function UIGuildWarCtr:GetBuyRebornCost()
  64. if self.buyRebornCosts then
  65. local buyCost = self.buyRebornCosts[1]
  66. if buyCost then
  67. return buyCost[1], buyCost[2]
  68. end
  69. end
  70. return 1, 100
  71. end
  72. function UIGuildWarCtr:GetBattleFieldData()
  73. return ManagerContainer.DataMgr.GuildWarDataMgr:GetBattleFieldData()
  74. end
  75. function UIGuildWarCtr:GetCurGuildData()
  76. return ManagerContainer.DataMgr.GuildDataMgr:GetCurGuildData()
  77. end
  78. function UIGuildWarCtr:ResetBattleIdx()
  79. local battleFieldData = self:GetBattleFieldData()
  80. if not battleFieldData then
  81. return
  82. end
  83. self.battleIdx = battleFieldData.id
  84. end
  85. function UIGuildWarCtr:GetBattleIdx()
  86. return self.battleIdx
  87. end
  88. function UIGuildWarCtr:GetUserNickname()
  89. return ManagerContainer.DataMgr.UserData:GetUserNickname()
  90. end
  91. function UIGuildWarCtr:GetTotalFightPower()
  92. return ManagerContainer.DataMgr.UserData:GetTotalFightPower()
  93. end
  94. function UIGuildWarCtr:GetUserRoleId()
  95. return ManagerContainer.DataMgr.UserData:GetUserRoleId()
  96. end
  97. function UIGuildWarCtr:IsSelfArea(id)
  98. local battleFieldData = self:GetBattleFieldData()
  99. if battleFieldData then
  100. local areaData = battleFieldData:GetAreaDataById(id)
  101. if areaData and areaData:IsValidData() then
  102. return areaData:IsPeopleUid() == battleFieldData.uid
  103. end
  104. end
  105. return false
  106. end
  107. function UIGuildWarCtr:IsSameGuildArea(id)
  108. local battleFieldData = self:GetBattleFieldData()
  109. if battleFieldData then
  110. local areaData = battleFieldData:GetAreaDataById(id)
  111. if areaData and areaData:IsValidData() then
  112. return areaData:GetGuildId() == battleFieldData.guildId
  113. end
  114. end
  115. return false
  116. end
  117. function UIGuildWarCtr:GetAreaDataById(id)
  118. local battleFieldData = self:GetBattleFieldData()
  119. if battleFieldData then
  120. return battleFieldData:GetAreaDataById(id)
  121. end
  122. return nil
  123. end
  124. function UIGuildWarCtr:GetLastAttackAreaId()
  125. return self.lastAttackAreaId
  126. end
  127. function UIGuildWarCtr:GetAreaMaxId()
  128. local battleFieldData = self:GetBattleFieldData()
  129. if battleFieldData then
  130. return battleFieldData:GetAreaMaxId()
  131. end
  132. return 0
  133. end
  134. function UIGuildWarCtr:GetRawCount()
  135. local areaMaxId = self:GetAreaMaxId()
  136. local rawCount = Mathf.Floor(areaMaxId / 5)
  137. local remain = (areaMaxId - rawCount * 5)
  138. rawCount = rawCount * 2
  139. if remain > 2 then
  140. rawCount = rawCount + 2
  141. elseif remain > 0 then
  142. rawCount = rawCount + 1
  143. end
  144. return rawCount
  145. end
  146. function UIGuildWarCtr:GetRawAreaStartAndEnd(rawIdx)
  147. local normalRawIdx = rawIdx + 1
  148. local count = Mathf.Floor(normalRawIdx / 2) * 5
  149. local remain = normalRawIdx % 2
  150. local startId, endId
  151. if remain == 1 then
  152. startId = count + 1
  153. endId = count + 2
  154. else
  155. startId = count - 2
  156. endId = count
  157. end
  158. local areaMaxId = self:GetAreaMaxId()
  159. if startId > areaMaxId then
  160. startId = areaMaxId
  161. end
  162. if endId > areaMaxId then
  163. endId = areaMaxId
  164. end
  165. return startId, endId
  166. end
  167. function UIGuildWarCtr:GetRawIdxByAreaId(areaId)
  168. local rawIdx = Mathf.Floor(areaId / 5)
  169. local remain = (areaId - rawIdx * 5)
  170. rawIdx = rawIdx * 2
  171. if remain > 2 then
  172. rawIdx = rawIdx + 1
  173. remain = remain - 2
  174. elseif remain == 0 then
  175. rawIdx = rawIdx - 1
  176. remain = 3
  177. elseif remain < 0 then
  178. LogError('[wboy] calc error ' .. tostring(areaId))
  179. end
  180. return rawIdx, remain
  181. end
  182. function UIGuildWarCtr:GetShowRawIdxs()
  183. return self.showRawIdxs
  184. end
  185. function UIGuildWarCtr:AddShowRawIdx(rawIdx)
  186. if not CommonUtil.EleInTable(rawIdx, self.showRawIdxs) then
  187. self.showRawIdxs[#self.showRawIdxs+1] = rawIdx
  188. end
  189. end
  190. function UIGuildWarCtr:RemoveShowRawIdx(rawIdx)
  191. for k,v in pairs(self.showRawIdxs) do
  192. if v == rawIdx then
  193. table.remove(self.showRawIdxs, k)
  194. break
  195. end
  196. end
  197. end
  198. function UIGuildWarCtr:GetOwnResCountByItemId(itemCfgId)
  199. return CommonUtil.GetOwnResCountByItemId(itemCfgId)
  200. end
  201. function UIGuildWarCtr:SendGuildWarInfoReq()
  202. if not ManagerContainer.DataMgr.GuildWarDataMgr:SendGuildWarInfoReq(self.battleIdx) then
  203. return 100007
  204. end
  205. return 0
  206. end
  207. function UIGuildWarCtr:SendGuildWarScoreDataReq()
  208. if not ManagerContainer.DataMgr.GuildWarDataMgr:SendGuildWarScoreDataReq(self.battleIdx) then
  209. return 100007
  210. end
  211. return 0
  212. end
  213. function UIGuildWarCtr:SendGuildWarAreaDatasReq(areaIds)
  214. if not ManagerContainer.DataMgr.GuildWarDataMgr:SendGuildWarAreaDatasReq(self.battleIdx, areaIds) then
  215. return 100007
  216. end
  217. return 0
  218. end
  219. function UIGuildWarCtr:SendGuildWarChallengeReq(areaId)
  220. if not ManagerContainer.DataMgr.GuildWarDataMgr:SendGuildWarChallengeReq(self.battleIdx, areaId) then
  221. return 100007
  222. end
  223. return 0
  224. end
  225. function UIGuildWarCtr:SendGuildWarSettingReq(autoChallenge, autoReborn)
  226. local battleFieldData = self:GetBattleFieldData()
  227. if not battleFieldData then
  228. return 'GuildWarBattle10'
  229. end
  230. if not battleFieldData:IsBattlingMy() then
  231. return 'GuildWarBattle11'
  232. end
  233. if autoChallenge then
  234. local costCfgId, costNum = self:GetBuyChallengeCountCost()
  235. local ownNum = self:GetOwnResCountByItemId(costCfgId)
  236. if ownNum < costNum then
  237. return 1, costCfgId
  238. end
  239. elseif autoChallenge == nil then
  240. autoChallenge = battleFieldData.autoChallenge
  241. end
  242. if autoReborn then
  243. local costCfgId, costNum = self:GetBuyRebornCost()
  244. local ownNum = self:GetOwnResCountByItemId(costCfgId)
  245. if ownNum < costNum then
  246. return 1, costCfgId
  247. end
  248. elseif autoReborn == nil then
  249. autoReborn = battleFieldData.autoReborn
  250. end
  251. if not ManagerContainer.DataMgr.GuildWarDataMgr:SendGuildWarSettingReq(self.battleIdx, autoChallenge, autoReborn) then
  252. return 100007
  253. end
  254. return 0
  255. end
  256. function UIGuildWarCtr:SendGuildWarBuyChallengeNumReq()
  257. local costCfgId, costNum = self:GetBuyChallengeCountCost()
  258. local ownNum = self:GetOwnResCountByItemId(costCfgId)
  259. if ownNum < costNum then
  260. return 1, costCfgId
  261. end
  262. if not ManagerContainer.DataMgr.GuildWarDataMgr:SendGuildWarBuyChallengeNumReq(self.battleIdx) then
  263. return 100007, nil
  264. end
  265. return 0, nil
  266. end
  267. function UIGuildWarCtr:SendGuildWarBuyRebornReq()
  268. local costCfgId, costNum = self:GetBuyRebornCost()
  269. local ownNum = self:GetOwnResCountByItemId(costCfgId)
  270. if ownNum < costNum then
  271. return 1, costCfgId
  272. end
  273. if not ManagerContainer.DataMgr.GuildWarDataMgr:SendGuildWarBuyRebornReq(self.battleIdx) then
  274. return 100007, nil
  275. end
  276. return 0, nil
  277. end
  278. return UIGuildWarCtr