FuliDownloadView = FuliDownloadView or BaseClass(BaseItem) local FuliDownloadView = FuliDownloadView function FuliDownloadView:__init() self.base_file = "fuli" self.layout_file = "FuliDownloadView" self.model = FuliModel:GetInstance() self.stepPackModule = StepPackModule:getInstance() self.Progress_width = 300 self.download_state = 0 self:Load() end function FuliDownloadView:Load_callback() self.nodes = { "text1:tmp","text3:tmp","progress_text:tmp","reward_scroll","reward_scroll/Viewport/reward_con", "download_btn_text:tmp","get_btn_red:obj","progress_image/proEndImg", "get_btn/get_btn_text:tmp","text2:tmp","download_btn:obj:img","progress_image:img","get_btn:obj:img", } self:GetChildren(self.nodes) self.text1_tmp.text = "未更新资源显示为小黑影,下载后自动更新" self.text2_tmp.text = "下载资源过大,建议在WIFI环境下进行" self.text3_tmp.text = "资源下载完毕后,可领取丰厚奖励" self.progress_image_img.fillAmount = 0 self:UpdateProDesc()--初始化 self:AddEvents() if self.need_refreshData then self:UpdateView() end end function FuliDownloadView:UpdateProDesc( state ) -- 状态: 0 未开始 1 暂停 2 下载中 3 已下载完成 local state = state or self.stepPackModule:CurrentPackState() local progress_text = "未开始" if state == 1 then progress_text = "暂停" elseif state == 2 then progress_text = "下载中" elseif state == 3 then progress_text = "已下载完成" self.progress_image_img.fillAmount = 1 end self.progress_text_tmp.text = progress_text end function FuliDownloadView:AddEvents( ) local function click_receive( ) if self.download_state == 3 then self.model:Fire(FuliConst.REQ_FULI_SCMD, 16008) else Message.show("请先等待资源下载完成哦~") end end AddClickEvent(self.get_btn_obj,click_receive) local function click_down() if self.download_state == 0 then if not StepPackModule:getInstance():IsSupport() then Message.show("没有资源可下载喔") return end self.stepPackModule:Start() if self.stepPackModule:IsResCheckState() then Message.show("资源更新检测中,请稍后") end elseif self.download_state == 1 then self.stepPackModule:SetPauseState(false) elseif self.download_state == 2 then self.stepPackModule:SetPauseState(true) end self:UpdateProDesc() self:SetDownState(self.stepPackModule:CurrentPackState()) end AddClickEvent(self.download_btn_obj,click_down) local function update_resourse_state(now_size,all_size,speed,isdone) self:UpdateProgressBar(speed,now_size,all_size,isdone) end self.speed_event = self.model:Bind(FuliConst.SHOW_FULI_DOWN_RES_NUM, update_resourse_state) local function on_update_view( ) self:UpdateView() end self.on_update_view_id = self.model:BindOne("fuli_download_state", on_update_view) end function FuliDownloadView:UpdateView( ) local ret = self.model.cur_down_load or 0 self.progress_image_img.fillAmount = ret SetAnchoredPositionX(self.proEndImg,ret*436) self:UpdateProDesc() self:SetDownState(self.stepPackModule:CurrentPackState()) local get_state = self.model:GetFuliDownState() if get_state == 0 and self.download_state == 3 then get_state = 2 end self:SetReceiveState(get_state)--0没领 1已领 2可领 self:ShowReward() end function FuliDownloadView:ShowReward( ) if not self.item_list_com then self.item_list_com = self:AddUIComponent(UI.ItemListCreator) end self.item_list_com:Reset() local reward = stringtotable(Config.Welfarekv["download_award"].value_content) local info = { data_list = reward, item_con = self.reward_con, scroll_view = self.reward_scroll, obj_pool_type = UIObjPool.UIType.AwardItem, item_width = 84, space_x = 8, space_y = 4, -- start_x = 20, create_frequency = 0, on_update_item = function(item, i, v) item:SetData(v[2], v[3], nil, nil) item:SetItemSize(84, 84) end, } self.item_list_com:UpdateItems(info) end -- 状态: 0 未开始 1 暂停 2 下载中 3 已下载完成 function FuliDownloadView:SetDownState(state) self.download_state = state if state == 0 then self.download_btn_text_tmp.text = "点击下载" elseif state == 1 then self.download_btn_text_tmp.text = "继续下载" elseif state == 2 then self.download_btn_text_tmp.text = "暂停下载" elseif state == 3 then self.download_btn_text_tmp.text = HtmlColorTxt("下载完成",ColorUtil.GRAY_DARK) end SetImageGray(self.download_btn_img,(state == 3 or not StepPackModule:getInstance():IsSupport())) end function FuliDownloadView:SetData( data ) self.data = data if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function FuliDownloadView:UpdateProgressBar(speed,now_size,all_size,isdone)--进度条系数,速度,当前下载量,总下载量 if isdone then self.progress_image_img.fillAmount = 1 self:SetDownState(3) self:SetReceiveState(2) self:UpdateProDesc(3) return end if self.download_state == 2 then local speed_str = "0 Kb/s" if tonumber(speed) > 1024 then speed_str = self:ByteKilo2Mega(speed,1) .. "M/s" else speed_str = speed .. "Kb/s" end local value = now_size/all_size self.progress_image_img.fillAmount = value self.model.cur_down_load = value now_size = self:ByteKilo2Mega(now_size,0) .. "M" all_size = self:ByteKilo2Mega(all_size,0) .. "M" self.progress_text_tmp.text = string.format("%s / %s (%s)",now_size,all_size,speed_str) SetAnchoredPositionX(self.proEndImg,value*436) else self:UpdateProDesc() end end function FuliDownloadView:ByteKilo2Mega(nNum,n) nNum = tonumber(nNum) nNum = nNum/1024 local fmt = "%." .. n .. "f" local nRet = string.format(fmt, nNum) return nRet end function FuliDownloadView:SetReceiveState( get_state ) SetImageGray(self.get_btn_img,true) if get_state == 0 then self.get_btn_red_obj:SetActive(false) self.get_btn_text_tmp.text = "未达到" SetTMPSharedMaterial(self.get_btn_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) elseif get_state == 1 then self.get_btn_red_obj:SetActive(false) self.get_btn_text_tmp.text = "已领取" SetTMPSharedMaterial(self.get_btn_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) elseif get_state == 2 then SetImageGray(self.get_btn_img,false) self.get_btn_text_tmp.text = "领取" self.get_btn_red_obj:SetActive(true) SetTMPSharedMaterial(self.get_btn_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn) end end function FuliDownloadView:__delete( ) if self.speed_event then self.model:UnBind(self.speed_event) self.speed_event = nil end if self.on_update_view_id then self.model:UnBind(self.on_update_view_id) self.on_update_view_id = nil end end