源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

217 行
6.7 KiB

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