UIVoyageRobberyView.lua 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. local UIVoyageRobberyView = require("UIVoyage/UIVoyageRobberyView_Generate")
  2. function UIVoyageRobberyView:OnAwake(data)
  3. self.controller = require("UIVoyage/UIVoyageRobberyCtr"):new()
  4. self.controller:Init(self)
  5. self.controller:SetData(data)
  6. end
  7. function UIVoyageRobberyView:AddEventListener()
  8. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.VOYAGE_CHALLENGE_NUM_CHANGED, self, self.RefreshRobNum)
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.VOYAGE_CHECK_AIRSHIP_CHANGED, self, self.OnCheckAirShipChanged)
  10. end
  11. function UIVoyageRobberyView:FillContent(data, uiBase)
  12. self.uiBase = uiBase
  13. local gameObject = self.uiBase:GetRoot()
  14. if gameObject ~= nil then
  15. self.gameObject = gameObject
  16. self.transform = gameObject.transform
  17. end
  18. self:InitGenerate(self.transform, data)
  19. self:Init()
  20. end
  21. function UIVoyageRobberyView:Init()
  22. local trans = self.transform:Find('UIAnimator/Window/BG/Content/ShipHolder/AirShipItem')
  23. local item = {}
  24. item.gameObject = trans.gameObject
  25. item.transform = trans
  26. item.animator = trans:GetComponent(Enum.TypeInfo.Animator)
  27. item.me = trans:Find("Me").gameObject
  28. item.fan = trans:Find("Ship/Fan").gameObject
  29. item.switchSprite = trans:Find("Ship/Body"):GetComponent(Enum.TypeInfo.UIImageSwitchSprite)
  30. self.airShipItem = item
  31. self.controller:InitData()
  32. self:RefreshView()
  33. self:RefreshRobNum()
  34. self.box:SetActive(false)
  35. --self.robNum:SetActive(false)
  36. self.transform:Find("UIAnimator/Window/BG/Title").gameObject:SetActive(false)
  37. end
  38. function UIVoyageRobberyView:RemoveEventListener()
  39. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  40. end
  41. function UIVoyageRobberyView:AddUIEventListener()
  42. self.uiBase:AddButtonUniqueEventListener(self.AnyBtn.button,self, self.OnClickCloseBtn)
  43. self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, self.OnClickCloseBtn)
  44. self.uiBase:AddButtonUniqueEventListener(self.btnCancle.button, self, self.OnClickCloseBtn)
  45. self.uiBase:AddButtonUniqueEventListener(self.btnChallenge.button, self, self.OnClickChallengeBtn)
  46. end
  47. function UIVoyageRobberyView:OnHide()
  48. end
  49. function UIVoyageRobberyView:OnShow(data)
  50. self.controller:SetData(data)
  51. self.box:SetActive(false)
  52. self.robNum:SetActive(false)
  53. end
  54. function UIVoyageRobberyView:OnClose()
  55. end
  56. function UIVoyageRobberyView:OnDispose()
  57. if self.endTimer then
  58. self.endTimer:Stop()
  59. self.endTimer = nil
  60. end
  61. self.airShipItem = nil
  62. self.controller:OnDispose()
  63. end
  64. function UIVoyageRobberyView:OnCheckAirShipChanged(uid)
  65. local airShipData = self.controller:GetAirShipData()
  66. if airShipData and airShipData.uid == uid then
  67. local name = airShipData:GetName()
  68. if not name then
  69. self.nameSp:SetActive(false)
  70. else
  71. self.nameSp:SetActive(true)
  72. self.nameTxt.text.text = string.formatbykey('RobShipName', airShipData:GetServerId() -1, name)
  73. end
  74. end
  75. end
  76. function UIVoyageRobberyView:OnClickCloseBtn()
  77. self:UIClose()
  78. end
  79. function UIVoyageRobberyView:OnClickChallengeBtn()
  80. local airShipData = self.controller:GetAirShipData()
  81. if not airShipData then
  82. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('VoyageErrorTips01')
  83. return
  84. end
  85. local selfuid = ManagerContainer.DataMgr.UserData:GetUserId()
  86. if airShipData.uid == selfuid then
  87. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('VoyageErrorTips02')
  88. return
  89. end
  90. local cfgData = ManagerContainer.CfgMgr:GetVoyageAirShipCfgById(airShipData.quality)
  91. local curTime = ManagerContainer.LuaTimerMgr:CurLuaServerTime()
  92. local sec = (airShipData.endTime - curTime) / 1000
  93. sec = type(sec) == "number" and sec or #sec
  94. local time = airShipData.duration or 1
  95. if sec > time then
  96. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('VoyageErrorTips03')
  97. return
  98. elseif sec <= 0 then
  99. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('VoyageFinishTips')
  100. return
  101. end
  102. local errorCode = self.controller:SendChallengeReq(airShipData.uid, airShipData.endTime)
  103. if errorCode ~= 0 then
  104. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  105. end
  106. end
  107. function UIVoyageRobberyView:RefreshRobNum()
  108. self.robNum.text.text = tostring(self.controller:GetRemindRobNum())
  109. end
  110. function UIVoyageRobberyView:RefreshView()
  111. if self.endTimer then
  112. self.endTimer:Stop()
  113. end
  114. local airShipData = self.controller:GetAirShipData()
  115. if airShipData then
  116. local cfgData = ManagerContainer.CfgMgr:GetVoyageAirShipCfgById(airShipData.quality)
  117. if cfgData then
  118. local rewards = cfgData.RobberyReward
  119. if rewards then
  120. self:RefreshCurrencyItem(self.currency1, rewards[1])
  121. self:RefreshCurrencyItem(self.currency2, rewards[2])
  122. self:RefreshCurrencyItem(self.currency3, rewards[3])
  123. else
  124. self:RefreshCurrencyItem(self.currency1, nil)
  125. self:RefreshCurrencyItem(self.currency2, nil)
  126. self:RefreshCurrencyItem(self.currency3, nil)
  127. end
  128. self.airShipItem.gameObject:SetActive(true)
  129. self.timer:SetActive(true)
  130. self:RefreshEndTimer()
  131. local name = airShipData:GetName()
  132. if not name then
  133. self.nameSp:SetActive(false)
  134. self.controller:SendCheckInfoReq(airShipData.uid, airShipData.endTime)
  135. else
  136. self.nameSp:SetActive(true)
  137. self.nameTxt.text.text = string.formatbykey('RobShipName', airShipData:GetServerId() -1, name)
  138. end
  139. return
  140. end
  141. end
  142. self:RefreshCurrencyItem(self.currency1, nil)
  143. self:RefreshCurrencyItem(self.currency2, nil)
  144. self:RefreshCurrencyItem(self.currency3, nil)
  145. self.beRobNum.text.text = '0/0'
  146. self.airShipItem.gameObject:SetActive(false)
  147. self.nameSp:SetActive(false)
  148. self.timer:SetActive(false)
  149. self.btnChallenge:SetActive(false)
  150. end
  151. function UIVoyageRobberyView:RefreshEndTimer()
  152. local airShipData = self.controller:RefreshAndGetAirShipData()
  153. if not airShipData then
  154. self:RefreshView()
  155. return
  156. end
  157. local cfgData = ManagerContainer.CfgMgr:GetVoyageAirShipCfgById(airShipData.quality)
  158. if not cfgData then
  159. self:RefreshView()
  160. return
  161. end
  162. self.airShipItem.animator:Play('AirShipRun')
  163. local quality = self.controller:RefreshQuality()
  164. local beChallengeNum = self.controller:RefreshBeChallengeNum()
  165. if beChallengeNum then
  166. self.beRobNum.text.text = tostring(beChallengeNum) .. '/' .. tostring(cfgData.RobberyTimes)
  167. if beChallengeNum >= cfgData.RobberyTimes then
  168. quality = 0
  169. end
  170. end
  171. if quality then
  172. self.airShipItem.switchSprite:ChangeSprite(quality)
  173. self.airShipItem.fan:SetActive(quality > 0)
  174. end
  175. local remainTime = (airShipData.endTime - ManagerContainer.LuaTimerMgr:CurLuaServerTime()) / 1000
  176. remainTime = type(remainTime) == "number" and remainTime or #remainTime
  177. self.timerTxt.text.text = DateTimeUtil.convertSeconds2TimeStr1(remainTime, true, true, false)
  178. if remainTime <= 0 then
  179. if self.endTimer then
  180. self.endTimer:Stop()
  181. end
  182. else
  183. if not self.endTimer then
  184. self.endTimer = Timer.New(slot(self.RefreshEndTimer, self), 1, -1)
  185. end
  186. if not self.endTimer.running then
  187. self.endTimer:Start()
  188. end
  189. end
  190. end
  191. function UIVoyageRobberyView:RefreshCurrencyItem(currency, reward)
  192. if not currency then return end
  193. currency.icon.image.enabled = false
  194. currency.icon.image.sprite = nil
  195. if reward then
  196. local cfgId = reward[1] or 0
  197. local num = reward[2] or 0
  198. local cfgData = ManagerContainer.CfgMgr:GetItemById(cfgId)
  199. if cfgData then
  200. CommonUtil.LoadIcon(self, cfgData.MiniIcon, function(sprite)
  201. currency.icon.image.sprite = sprite
  202. currency.icon.image.enabled = true
  203. end)
  204. end
  205. currency.text.text.text = tostring(num)
  206. currency:SetActive(true)
  207. else
  208. currency:SetActive(false)
  209. end
  210. end
  211. return UIVoyageRobberyView