|
|
- 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 = "资源下载完毕后,可领取<color=#fdffc2>丰厚奖励</color>"
- 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 <color=#a9c1e1>(%s)</color>",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
|