源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

140 lines
4.2 KiB

FuliAIItem = FuliAIItem or BaseClass(BaseItem)
local FuliAIItem = FuliAIItem
function FuliAIItem:__init()
self.base_file = "fuli"
self.layout_file = "FuliAIItem"
self.model = FuliModel:GetInstance()
self.awardItem_list = {}
self:Load()
end
function FuliAIItem:Load_callback()
self.nodes = {
"click_con:obj","bg_image:obj","time_text:tmp","item_con",
"icon_can_get:obj",
}
self:GetChildren(self.nodes)
-- self.awardItem = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.item_con)
-- self.awardItem:SetEnableClick(false)
-- self.awardItem:SetItemSize(84, 84)
-- self.awardItem:SetVisible(false)
self:AddEvents()
if self.need_refreshData then
self:UpdateView()
end
end
function FuliAIItem:AddEvents( )
local function on_click( ... )
self.model:Fire(FuliConst.REQ_FULI_SCMD, 16004, self.index)
if self.is_get then
self.model:Fire(FuliConst.AI_TALK_SHOW, FuliConst.AI_TALK_TYPE.IS_GET)
else
if not self.can_get then
self.model:Fire(FuliConst.AI_TALK_SHOW, FuliConst.AI_TALK_TYPE.CAN_NOT_GET)
end
end
end
AddClickEvent(self.click_con_obj, on_click)
end
function FuliAIItem:UpdateView( )
local award_list = stringtotable(self.data.award)
for i,v in ipairs(award_list) do
self.awardItem_list[i] = self.awardItem_list[i] or UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.item_con)
local item = self.awardItem_list[i]
item:SetData(v[2], v[3],nil)
item:SetVisible(true)
item:SetEnableClick(false)
item:SetItemSize(62, 62)
item:SetAnchoredPosition((i - 1) * (62 + 10), 0)
end
-- self.awardItem:SetData(award_list[1][2], award_list[1][3],nil)
-- self.awardItem:SetVisible(true)
self.bg_image_obj:SetActive(true)
self.can_get = false
if TableSize(self.server_data) > 0 then
local rest_time = self.data.duration - self.server_data.duration_time--时间还没到
local rest_time_index = self.model:GetFuliAICountTimeIndex()
if rest_time > 0 and rest_time_index == self.index then
self:SetTimer(rest_time)
else
local min = math.floor(self.data.duration/60)
self.time_text_tmp.text = "在线"..min.."分钟"
-- self.bg_image_obj:SetActive(false)
end
if rest_time <= 0 and self.server_data.my_receive[self.index] ~= 1 then
self.can_get = true
-- self.red_dot_obj:SetActive(true)
self.time_text_tmp.text = HtmlColorTxt("点击领取", ColorUtil.GREEN_TIPS)
-- self.awardItem:SetGray(false)
self:SetAwardItemGray( false )
self.icon_can_get_obj:SetActive(true)
else
self.is_get = self.server_data.my_receive[self.index] == 1
-- self.get_image_obj:SetActive(self.is_get)
if self.is_get then
self.time_text_tmp.text = HtmlColorTxt("已领取", ColorUtil.WHITE)
-- self.awardItem:SetGray(true)
self:SetAwardItemGray( true )
end
self.icon_can_get_obj:SetActive(false)
end
else
self.time_text_tmp.text = ""
end
end
function FuliAIItem:SetAwardItemGray( bool )
for k,v in pairs(self.awardItem_list) do
v:SetGray(bool)
end
end
function FuliAIItem:SetTimer( time )
local function time_down()
time = self.data.duration - self.server_data.duration_time
if time > 0 then
self.time_text_tmp.text = HtmlColorTxt(TimeUtil:timeConvert13(time), ColorUtil.GREEN_TIPS)
else
self.model:Fire(FuliConst.REQ_FULI_SCMD, 16003)
self.model:DeleteFuncCallBack("FuliAIItem:SetTimer"..self.index)
end
end
self.model:SetFuncCallBack(time_down, "FuliAIItem:SetTimer"..self.index)
-- self.timer_id = GlobalTimerQuest:AddPeriodQuest(time_down, 1, -1)
end
function FuliAIItem:StopTimer( )
-- if self.timer_id then
-- GlobalTimerQuest:CancelQuest(self.timer_id)
-- self.timer_id = nil
-- end
end
function FuliAIItem:SetData(index, data,server_data )
self.index = index
self.data = data
self.server_data = server_data
if self.is_loaded then
self.need_refreshData = false
self:UpdateView()
else
self.need_refreshData = true
end
end
function FuliAIItem:__delete( )
self.model:DeleteFuncCallBack("FuliAIItem:SetTimer"..self.index)
-- if self.awardItem then
-- UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem)
-- self.awardItem = nil
-- end
self:StopTimer()
for i,item in pairs(self.awardItem_list) do
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, item)
end
self.awardItem_list = {}
end