源战役客户端
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 

143 satır
4.3 KiB

CSMainTaskItem = CSMainTaskItem or BaseClass(BaseItem)
local CSMainTaskItem = CSMainTaskItem
function CSMainTaskItem:__init()
self.base_file = "csMain"
self.layout_file = "CSMainTaskItem"
self.model = CSMainModel:getInstance()
self:Load()
end
function CSMainTaskItem:Load_callback()
self.nodes = {
"finishedFlag:obj",
"getBtn:obj", "goBtn:obj", "getBtn/getRed:obj",
"ScrollView", "ScrollView/Viewport/Content",
"taskDes:tmp",
"dot:img",
"bg:img",
}
self:GetChildren(self.nodes)
self.getRed_obj:SetActive(true)
self:AddEvents()
if self.need_refreshData then
self:UpdateView()
end
end
function CSMainTaskItem:AddEvents( )
local on_click = function ( click_obj )
if self.getBtn_obj == click_obj then--领取
self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60304,1,self.data.id)
elseif self.goBtn_obj == click_obj then--前往
if self.data.id == 18 or self.data.id == 32 then
local act_info = GuildModel:getInstance():GetGuildEventByType(GuildEventType.GuildBossNoon)
if act_info and act_info.state <= 1 then --没结束,跳午间
OpenFun.Open(406,1)
else
OpenFun.Open(406,2)
end
return
end
self.model:Fire(CSMainConst.OPEN_CS_MAIN_TASK_VIEW,true)
self.model:Fire(CSMainConst.OPEN_CS_MAIN_BASE_VIEW,true)
-- if self.data.id == 3 or self.data.id == 11 or self.data.id == 26 or self.data.id == 41 then
-- self.model:Fire(CSMainConst.OPEN_CS_MAIN_TASK_VIEW,true)
-- self.model:Fire(CSMainConst.OPEN_CS_MAIN_BASE_VIEW,true)
-- end
local open_fun_data = stringtotable(self.data.link)
OpenFun.Open(open_fun_data[1],open_fun_data[2])
end
end
AddClickEvent(self.getBtn_obj, on_click)
AddClickEvent(self.goBtn_obj, on_click)
local function on_update_task_item(task_id)
self:UpdateView()
end
self:BindEvent(self.model, CSMainConst.UPDATE_CS_MAIN_TASK_ITEM, on_update_task_item)
end
function CSMainTaskItem:UpdateView( )
local server_task_info = self.model:GetCSMainTaskDataById(self.data.id)
if server_task_info then
if server_task_info.state == 0 or server_task_info.state == 1 then
lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetCSMainImage("cs_main_task_bg_yellow"))
lua_resM:setImageSprite(self, self.dot_img, "csMain_asset","cs_main_dot_white",true)
else
lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetCSMainImage("cs_main_task_bg_gray"))
lua_resM:setImageSprite(self, self.dot_img, "csMain_asset","cs_main_dot",true)
end
else
lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetCSMainImage("cs_main_task_bg_yellow"))
lua_resM:setImageSprite(self, self.dot_img, "csMain_asset","cs_main_dot_white",true)
end
--任务描述
local des_color = ColorUtil.RED_DARK
if server_task_info then
if server_task_info.state == 1 or server_task_info.state == 2 then
des_color = ColorUtil.GREEN_TIPS
end
end
local bar = 0
if server_task_info then
bar = server_task_info.bar
end
self.taskDes_tmp.text = string.format("%s(<%s>%s/%s</color>)", Trim(self.data.desc), des_color, bar, stringtotable(self.data.content)[3])
--领取状态
local task_state = 0
if server_task_info then
task_state = server_task_info.state
end
self.goBtn_obj:SetActive(task_state == 0)
self.getBtn_obj:SetActive(task_state == 1)
self.finishedFlag_obj:SetActive(task_state == 2)
--奖励展示
local reward_cfg = DeepCopy(stringtotable(self.data.awards))
--插入一个活跃的awarditem展示
local active_goods_data = {0,100020,self.data.active}
table.insert(reward_cfg,active_goods_data)
if not self.item_list_com then
self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
end
local info = {
data_list = reward_cfg,
item_con = self.Content,
obj_pool_type = UIObjPool.UIType.AwardItem,
item_width = 62,
space_x = 14,
-- space_y = 0,
start_x = 9,
start_y = -9,
scroll_view = self.ScrollView,
create_frequency = 0.01,
on_update_item = function(item, i, v)
item:SetItemSize(62, 62)
SetLocalScale(item.transform,0.8,0.8,0.8)
item:SetData(v[2], v[3])
end,
}
self.item_list_com:UpdateItems(info)
end
function CSMainTaskItem:SetData( data,index)
self.data = data
self.index = index
if self.is_loaded then
self.need_refreshData = false
self:UpdateView()
else
self.need_refreshData = true
end
end
function CSMainTaskItem:__delete( )
end