UIExpeditionView.lua 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. local UIExpeditionView = require("UIExpedition/UIExpeditionView_Generate")
  2. local IconItemCtr = require("Common/IconItemCtr")
  3. function UIExpeditionView:OnAwake(data)
  4. self.controller = require("UIExpedition/UIExpeditionCtr"):new()
  5. self.controller:Init(self)
  6. self.controller:SetData(data)
  7. end
  8. function UIExpeditionView:AddEventListener()
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.EID_Expedition_RefreshData,self,self.SetMapList)
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.EID_Expedition_RefreshScroe,self,self.RefreshSorce)
  11. end
  12. function UIExpeditionView:RemoveEventListener()
  13. ManagerContainer.LuaEventMgr:UnregisterEvent(UIEventNames.EID_Expedition_RefreshData,self,self.SetMapList)
  14. ManagerContainer.LuaEventMgr:UnregisterEvent(UIEventNames.EID_Expedition_RefreshScroe,self,self.RefreshSorce)
  15. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  16. end
  17. function UIExpeditionView:FillContent(data, uiBase)
  18. self.uiBase = uiBase
  19. local gameObject = self.uiBase:GetRoot()
  20. if gameObject ~= nil then
  21. self.gameObject = gameObject
  22. self.transform = gameObject.transform
  23. end
  24. self:InitGenerate(self.transform, data)
  25. self:Init()
  26. end
  27. function UIExpeditionView:Init()
  28. if ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIMain) == false then
  29. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIMain)
  30. end
  31. ManagerContainer.DataMgr.ExpeditionDataMgr:RefreshUnfold()
  32. self.lastViewMapItemLua = nil
  33. self.lastViewMapItemData = nil
  34. self:SetMapList()
  35. self:RefreshLeftTimes(ManagerContainer.DataMgr.ExpeditionDataMgr.leftChanllengeNum)
  36. if self.controller:GetData() then
  37. if ManagerContainer.DataMgr.ExpeditionDataMgr:IsChallenging() then
  38. local mapId = ManagerContainer.DataMgr.ExpeditionDataMgr.curChanllengeMapId
  39. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIExpeditionDungeonInfo, mapId)
  40. elseif ManagerContainer.DataMgr.ExpeditionDataMgr:GetLastFinishedMapState() then
  41. local mapId = ManagerContainer.DataMgr.ExpeditionDataMgr.lastFinishedMap
  42. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIExpeditionDungeonInfo, mapId)
  43. end
  44. end
  45. self:RefreshSorce()
  46. end
  47. function UIExpeditionView:RefreshSorce()
  48. local CurMaxScore = ManagerContainer.DataMgr.ExpeditionDataMgr:GetMaxScore()
  49. if CurMaxScore then
  50. self.text.text.text = tostring(CurMaxScore)
  51. end
  52. end
  53. function UIExpeditionView:AddUIEventListener()
  54. self.uiBase:AddButtonEventListener(self.BtnRank.button,self, self.OnClickRankBtn)
  55. self.uiBase:AddButtonEventListener(self.backBtn.button,self, self.OnClickBackBtn)
  56. self.uiBase:AddButtonEventListener(self.helpLogBtn.button,self, self.OnClickHelpLogBtn)
  57. self.uiBase:AddButtonEventListener(self.ruleBtn.button,self, self.OnClickRuleBtn)
  58. end
  59. function UIExpeditionView:OnHide()
  60. end
  61. function UIExpeditionView:OnShow(data)
  62. self.controller:SetData(data)
  63. end
  64. function UIExpeditionView:OnClose()
  65. end
  66. function UIExpeditionView:OnDispose()
  67. self.controller:OnDispose()
  68. end
  69. function UIExpeditionView:SetMapList()
  70. local mapList = ManagerContainer.DataMgr.ExpeditionDataMgr:GetAllMaps()
  71. if mapList ~= nil then
  72. self.dungeonGroupScrollList:SetActive(true)
  73. CommonUtil.LoopGridViewEleCreateNew(self,
  74. self.dungeonGroupScrollList.loopVerticalScrollRect,
  75. self.dungeonGroupScrollList.content.verticalLayoutGroup,
  76. mapList,
  77. 0,
  78. self, self.SetMapData);
  79. else
  80. self.dungeonGroupScrollList:SetActive(false)
  81. end
  82. self:RefreshLeftTimes(ManagerContainer.DataMgr.ExpeditionDataMgr.leftChanllengeNum)
  83. end
  84. --移动到最后要打得页面(MoveTo 有问题 后续修改后调用)
  85. function UIExpeditionView:MoveScrollToLast()
  86. local mapList = ManagerContainer.DataMgr.ExpeditionDataMgr:GetAllMaps()
  87. local Index = ManagerContainer.DataMgr.ExpeditionDataMgr.lastFinishedMap
  88. Index = Index + 1
  89. if Index >= #mapList then
  90. Index = #mapList
  91. end
  92. self.dungeonGroupScrollList.loopVerticalScrollRect:MoveTo(Index-1)
  93. end
  94. function UIExpeditionView:SetMapData(mapItemLua,idx,mapItemData)
  95. --LogError("=====================ID=="..idx.." mapItemData.mapId =="..mapItemData.mapId)
  96. mapItemLua.lockNode:SetActive(not mapItemData.unlocked)
  97. mapItemLua.lockNode.lbl:SetActive(not mapItemData.unlocked)
  98. if not mapItemData.unlocked then
  99. mapItemLua.lockNode.lbl.text.text = I18N.T( mapItemData.unlockContent)
  100. end
  101. mapItemLua.completedNode:SetActive(mapItemData.isPassed)
  102. if mapItemData.isPassed then
  103. local IsShowReward = not self:IsGetPassReward(mapItemData.mapId)--是否领取
  104. if IsShowReward then
  105. --LogError("=====================ID=="..idx.." 是否领取 是")
  106. mapItemLua.BoxOn:SetActive(true)
  107. mapItemLua.BoxOff:SetActive(false)
  108. self.uiBase:AddButtonUniqueEventListener(mapItemLua.BoxOn.button, self, self.OnClickReward,mapItemData)
  109. else
  110. mapItemLua.BoxOn:SetActive(false)
  111. mapItemLua.BoxOff:SetActive(true)
  112. end
  113. mapItemLua.challengeNode:SetActive(false)
  114. mapItemLua.onNode:SetActive(false)
  115. mapItemLua.offNode:SetActive(false)
  116. mapItemLua.redpoint:SetActive(false)
  117. else
  118. mapItemLua.challengeNode:SetActive(mapItemData.isChallenging)
  119. mapItemLua.onNode:SetActive(mapItemData.isUnfold)
  120. mapItemLua.offNode:SetActive(not mapItemData.isUnfold)
  121. mapItemLua.redpoint:SetActive(mapItemData:HasRedPoint())
  122. end
  123. if mapItemData.isUnfold then
  124. self.lastViewMapItemLua = mapItemLua
  125. self.lastViewMapItemData = mapItemData
  126. end
  127. if mapItemData.bannerImg ~= nil and mapItemData.bannerImg ~= "" then
  128. CommonUtil.LoadIcon(self, mapItemData.bannerImg, function (sprite)
  129. mapItemLua.bannerImg.image.sprite = sprite
  130. end, mapItemLua, "ExpeditionBannerIdx")
  131. else
  132. mapItemLua.bannerImg.image.sprite = nil
  133. end
  134. if mapItemData.showRewards ~= nil and #mapItemData.showRewards > 0 then
  135. mapItemLua.itemListNode:SetActive(true)
  136. for i = 1, 4 do
  137. local iconItem = self:GetIconItem(mapItemLua,i)
  138. if iconItem ~= nil then
  139. iconItem:SetActive(false)
  140. end
  141. end
  142. for i = 1, #mapItemData.showRewards do
  143. if i <= 4 then
  144. local rewardData = {cfgId = mapItemData.showRewards[i][1], num = mapItemData.showRewards[i][2] }
  145. local iconItem = self:GetIconItem(mapItemLua,i)
  146. iconItem:SetActive(true)
  147. IconItemCtr:SetData(self, iconItem, rewardData, nil, self, self.OnClickItem)
  148. end
  149. end
  150. else
  151. mapItemLua.itemListNode:SetActive(false)
  152. end
  153. self.uiBase:AddButtonUniqueEventListener(mapItemLua.button, self, self.OnClickMap, mapItemLua,mapItemData)
  154. self.uiBase:AddButtonUniqueEventListener(mapItemLua.gotoBtn.button, self, self.OnClickEnterMap,mapItemData)
  155. end
  156. --点击领取奖励
  157. function UIExpeditionView:OnClickReward(btn,params)
  158. ManagerContainer.DataMgr.ExpeditionDataMgr:SendPassRewardReq(params[0].mapId)
  159. end
  160. --是否领取奖励
  161. function UIExpeditionView:IsGetPassReward(mapId)
  162. return ManagerContainer.DataMgr.ExpeditionDataMgr:IsGetPassReward(mapId)
  163. end
  164. function UIExpeditionView:OnClickItem(btn,params)
  165. local logicData = params[0]
  166. ManagerContainer.LuaUIMgr:OpenTips(logicData)
  167. end
  168. function UIExpeditionView:GetIconItem(mapItemLua,idx)
  169. if idx == 1 then
  170. return mapItemLua.iconItem1
  171. elseif idx == 2 then
  172. return mapItemLua.iconItem2
  173. elseif idx == 3 then
  174. return mapItemLua.iconItem3
  175. else
  176. return mapItemLua.iconItem4
  177. end
  178. end
  179. function UIExpeditionView:RefreshLeftTimes(leftTimes)
  180. self.timesNode.leftTimesTxt.text.text = tostring(leftTimes)
  181. end
  182. function UIExpeditionView:OnClickHelpLogBtn()
  183. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIExpiditionHelpLog)
  184. end
  185. function UIExpeditionView:OnClickBackBtn()
  186. ManagerContainer.LuaUIMgr:OpenSourceUI(self)
  187. end
  188. function UIExpeditionView:OnClickRankBtn()
  189. if not ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIExpeditionRank) then
  190. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIExpeditionRank)
  191. end
  192. -- ManagerContainer.DataMgr.ExpeditionDataMgr:SendScoreRankListReq(1)
  193. end
  194. function UIExpeditionView:OnClickRuleBtn()
  195. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPlayRule, {'ExpeditionRuleTitle', 'ExpeditionText'})
  196. end
  197. function UIExpeditionView:OnClickMap(btn,params)
  198. local mapItemLua = params[0]
  199. local mapItemData = params[1]
  200. if mapItemData.isPassed then
  201. return
  202. end
  203. if self.lastViewMapItemLua == mapItemLua and mapItemData.isUnfold then
  204. mapItemData:SetUnfold(false)
  205. mapItemLua.offNode:SetActive(true)
  206. mapItemLua.onNode:SetActive(false)
  207. self.lastViewMapItemLua = nil
  208. self.lastViewMapItemData = nil
  209. return
  210. end
  211. if self.lastViewMapItemLua ~= nil then
  212. self.lastViewMapItemLua.offNode:SetActive(true)
  213. self.lastViewMapItemLua.onNode:SetActive(false)
  214. end
  215. if self.lastViewMapItemData ~= nil then
  216. self.lastViewMapItemData:SetUnfold(false)
  217. end
  218. mapItemData:SetUnfold(true)
  219. mapItemLua.offNode:SetActive(false)
  220. mapItemLua.onNode:SetActive(true)
  221. self.lastViewMapItemLua = mapItemLua
  222. self.lastViewMapItemData = mapItemData
  223. end
  224. function UIExpeditionView:OnClickEnterMap(btn,params)
  225. local mapItemData = params[0]
  226. if not mapItemData.unlocked then
  227. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(mapItemData.unlockContent)
  228. return
  229. end
  230. if mapItemData.isPassed then
  231. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIExpeditionDungeonInfo, mapItemData.mapId)
  232. elseif mapItemData.isChallenging then
  233. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIExpeditionDungeonInfo, mapItemData.mapId)
  234. else
  235. if ManagerContainer.DataMgr.ExpeditionDataMgr.curChanllengeMapId > 0 then
  236. ManagerContainer.DataMgr.ExpeditionDataMgr:SendChallengeMapReq(mapItemData.mapId)
  237. else
  238. ManagerContainer.LuaUIMgr:ShowMessageBox("EnterExpeditionMapTip",nil,mapItemData.mapId,self,self.OnConfirmEnterMap,nil)
  239. end
  240. end
  241. end
  242. function UIExpeditionView:OnConfirmEnterMap(mapId)
  243. ManagerContainer.DataMgr.ExpeditionDataMgr:SendChallengeMapReq(mapId)
  244. end
  245. return UIExpeditionView