源战役客户端
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

217 rindas
6.7 KiB

pirms 4 nedēļām
  1. FuliDownloadView = FuliDownloadView or BaseClass(BaseItem)
  2. local FuliDownloadView = FuliDownloadView
  3. function FuliDownloadView:__init()
  4. self.base_file = "fuli"
  5. self.layout_file = "FuliDownloadView"
  6. self.model = FuliModel:GetInstance()
  7. self.stepPackModule = StepPackModule:getInstance()
  8. self.Progress_width = 300
  9. self.download_state = 0
  10. self:Load()
  11. end
  12. function FuliDownloadView:Load_callback()
  13. self.nodes = {
  14. "text1:tmp","text3:tmp","progress_text:tmp","reward_scroll","reward_scroll/Viewport/reward_con",
  15. "download_btn_text:tmp","get_btn_red:obj","progress_image/proEndImg",
  16. "get_btn/get_btn_text:tmp","text2:tmp","download_btn:obj:img","progress_image:img","get_btn:obj:img",
  17. }
  18. self:GetChildren(self.nodes)
  19. self.text1_tmp.text = "未更新资源显示为小黑影,下载后自动更新"
  20. self.text2_tmp.text = "下载资源过大,建议在WIFI环境下进行"
  21. self.text3_tmp.text = "资源下载完毕后,可领取<color=#fdffc2>丰厚奖励</color>"
  22. self.progress_image_img.fillAmount = 0
  23. self:UpdateProDesc()--初始化
  24. self:AddEvents()
  25. if self.need_refreshData then
  26. self:UpdateView()
  27. end
  28. end
  29. function FuliDownloadView:UpdateProDesc( state )
  30. -- 状态: 0 未开始 1 暂停 2 下载中 3 已下载完成
  31. local state = state or self.stepPackModule:CurrentPackState()
  32. local progress_text = "未开始"
  33. if state == 1 then
  34. progress_text = "暂停"
  35. elseif state == 2 then
  36. progress_text = "下载中"
  37. elseif state == 3 then
  38. progress_text = "已下载完成"
  39. self.progress_image_img.fillAmount = 1
  40. end
  41. self.progress_text_tmp.text = progress_text
  42. end
  43. function FuliDownloadView:AddEvents( )
  44. local function click_receive( )
  45. if self.download_state == 3 then
  46. self.model:Fire(FuliConst.REQ_FULI_SCMD, 16008)
  47. else
  48. Message.show("请先等待资源下载完成哦~")
  49. end
  50. end
  51. AddClickEvent(self.get_btn_obj,click_receive)
  52. local function click_down()
  53. if self.download_state == 0 then
  54. if not StepPackModule:getInstance():IsSupport() then
  55. Message.show("没有资源可下载喔")
  56. return
  57. end
  58. self.stepPackModule:Start()
  59. if self.stepPackModule:IsResCheckState() then
  60. Message.show("资源更新检测中,请稍后")
  61. end
  62. elseif self.download_state == 1 then
  63. self.stepPackModule:SetPauseState(false)
  64. elseif self.download_state == 2 then
  65. self.stepPackModule:SetPauseState(true)
  66. end
  67. self:UpdateProDesc()
  68. self:SetDownState(self.stepPackModule:CurrentPackState())
  69. end
  70. AddClickEvent(self.download_btn_obj,click_down)
  71. local function update_resourse_state(now_size,all_size,speed,isdone)
  72. self:UpdateProgressBar(speed,now_size,all_size,isdone)
  73. end
  74. self.speed_event = self.model:Bind(FuliConst.SHOW_FULI_DOWN_RES_NUM, update_resourse_state)
  75. local function on_update_view( )
  76. self:UpdateView()
  77. end
  78. self.on_update_view_id = self.model:BindOne("fuli_download_state", on_update_view)
  79. end
  80. function FuliDownloadView:UpdateView( )
  81. local ret = self.model.cur_down_load or 0
  82. self.progress_image_img.fillAmount = ret
  83. SetAnchoredPositionX(self.proEndImg,ret*436)
  84. self:UpdateProDesc()
  85. self:SetDownState(self.stepPackModule:CurrentPackState())
  86. local get_state = self.model:GetFuliDownState()
  87. if get_state == 0 and self.download_state == 3 then
  88. get_state = 2
  89. end
  90. self:SetReceiveState(get_state)--0没领 1已领 2可领
  91. self:ShowReward()
  92. end
  93. function FuliDownloadView:ShowReward( )
  94. if not self.item_list_com then
  95. self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
  96. end
  97. self.item_list_com:Reset()
  98. local reward = stringtotable(Config.Welfarekv["download_award"].value_content)
  99. local info = {
  100. data_list = reward,
  101. item_con = self.reward_con,
  102. scroll_view = self.reward_scroll,
  103. obj_pool_type = UIObjPool.UIType.AwardItem,
  104. item_width = 84,
  105. space_x = 8,
  106. space_y = 4,
  107. -- start_x = 20,
  108. create_frequency = 0,
  109. on_update_item = function(item, i, v)
  110. item:SetData(v[2], v[3], nil, nil)
  111. item:SetItemSize(84, 84)
  112. end,
  113. }
  114. self.item_list_com:UpdateItems(info)
  115. end
  116. -- 状态: 0 未开始 1 暂停 2 下载中 3 已下载完成
  117. function FuliDownloadView:SetDownState(state)
  118. self.download_state = state
  119. if state == 0 then
  120. self.download_btn_text_tmp.text = "点击下载"
  121. elseif state == 1 then
  122. self.download_btn_text_tmp.text = "继续下载"
  123. elseif state == 2 then
  124. self.download_btn_text_tmp.text = "暂停下载"
  125. elseif state == 3 then
  126. self.download_btn_text_tmp.text = HtmlColorTxt("下载完成",ColorUtil.GRAY_DARK)
  127. end
  128. SetImageGray(self.download_btn_img,(state == 3 or not StepPackModule:getInstance():IsSupport()))
  129. end
  130. function FuliDownloadView:SetData( data )
  131. self.data = data
  132. if self.is_loaded then
  133. self.need_refreshData = false
  134. self:UpdateView()
  135. else
  136. self.need_refreshData = true
  137. end
  138. end
  139. function FuliDownloadView:UpdateProgressBar(speed,now_size,all_size,isdone)--进度条系数,速度,当前下载量,总下载量
  140. if isdone then
  141. self.progress_image_img.fillAmount = 1
  142. self:SetDownState(3)
  143. self:SetReceiveState(2)
  144. self:UpdateProDesc(3)
  145. return
  146. end
  147. if self.download_state == 2 then
  148. local speed_str = "0 Kb/s"
  149. if tonumber(speed) > 1024 then
  150. speed_str = self:ByteKilo2Mega(speed,1) .. "M/s"
  151. else
  152. speed_str = speed .. "Kb/s"
  153. end
  154. local value = now_size/all_size
  155. self.progress_image_img.fillAmount = value
  156. self.model.cur_down_load = value
  157. now_size = self:ByteKilo2Mega(now_size,0) .. "M"
  158. all_size = self:ByteKilo2Mega(all_size,0) .. "M"
  159. self.progress_text_tmp.text = string.format("%s / %s <color=#a9c1e1>(%s)</color>",now_size,all_size,speed_str)
  160. SetAnchoredPositionX(self.proEndImg,value*436)
  161. else
  162. self:UpdateProDesc()
  163. end
  164. end
  165. function FuliDownloadView:ByteKilo2Mega(nNum,n)
  166. nNum = tonumber(nNum)
  167. nNum = nNum/1024
  168. local fmt = "%." .. n .. "f"
  169. local nRet = string.format(fmt, nNum)
  170. return nRet
  171. end
  172. function FuliDownloadView:SetReceiveState( get_state )
  173. SetImageGray(self.get_btn_img,true)
  174. if get_state == 0 then
  175. self.get_btn_red_obj:SetActive(false)
  176. self.get_btn_text_tmp.text = "未达到"
  177. SetTMPSharedMaterial(self.get_btn_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
  178. elseif get_state == 1 then
  179. self.get_btn_red_obj:SetActive(false)
  180. self.get_btn_text_tmp.text = "已领取"
  181. SetTMPSharedMaterial(self.get_btn_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
  182. elseif get_state == 2 then
  183. SetImageGray(self.get_btn_img,false)
  184. self.get_btn_text_tmp.text = "领取"
  185. self.get_btn_red_obj:SetActive(true)
  186. SetTMPSharedMaterial(self.get_btn_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
  187. end
  188. end
  189. function FuliDownloadView:__delete( )
  190. if self.speed_event then
  191. self.model:UnBind(self.speed_event)
  192. self.speed_event = nil
  193. end
  194. if self.on_update_view_id then
  195. self.model:UnBind(self.on_update_view_id)
  196. self.on_update_view_id = nil
  197. end
  198. end