源战役客户端
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.
 
 
 
 
 

154 lines
4.1 KiB

MailItem = MailItem or BaseClass(BaseItem)
function MailItem:__init()
self.base_file = "sociality"
self.layout_file = "MailItem"
self.is_delay_callback = true
self.model = MailModel:getInstance()
self.data = nil
self.event_id_list = {}
self.need_refreshData = false
self.need_refreshClick = false
-- self.use_local_view = true
self:Load()
end
function MailItem:Load_callback()
self:LoadSuccess()
self:InitEvent()
if self.need_refreshData then
self:SetData(self.data)
end
if self.need_refreshClick then
self:OnClickHandler(self.click_id)
end
end
function MailItem:LoadSuccess()
self.nodes = {
"mailTitle:tmp",
"mailTime:tmp",
"attachmentIcon:img",
"mailHead:img",
"selectBg:obj",
"redDot:obj",
"importantFlag:obj",
}
self:GetChildren(self.nodes)
end
function MailItem:InitEvent()
local function onBtnClickHandler(target)
if self.data then
if target == self.gameObject then--点击邮件Item
self.model:Fire(MailEvent.CLICK_MAIL_ITEM, self.data.mail_id)
end
end
end
AddClickEvent(self.gameObject, onBtnClickHandler)
--绑定点击item的方法
local click_fun = function(mail_id)
self:OnClickHandler(mail_id)
end
table.insert(self.event_id_list, self.model:Bind(MailEvent.CLICK_MAIL_ITEM, click_fun))
--绑定更新item显示的方法
local update_fun = function(new_data)
if self.data and self.data.mail_id == new_data.mail_id then
self:SetData(new_data)
self.model:Fire(MailEvent.GET_MAIL_INFORM)
end
end
table.insert(self.event_id_list, self.model:Bind(MailEvent.UPDATE_MAIL_ITEM, update_fun))
end
function MailItem:OnClickHandler(click_id)
self.click_id = click_id
if self.is_loaded then
if self.data then
if self.data.mail_id == self.click_id then
self:SetSelect(true)
self.model.now_select_mail = self.data
self.model:Fire(MailEvent.GET_MAIL_DETAIL, self.data.mail_id) --通过邮件ID请求邮件详细信息
else
self:SetSelect(false)
end
end
else
self.need_refreshClick = true
end
end
function MailItem:SetSelect(bool)
if self.selectBg_obj then
self.selectBg_obj:SetActive(bool)
end
end
function MailItem:SetData(data)
self.data = data
if not self.data then return end
if self.is_loaded then
local title_str = self.data.title
if utf8len(title_str) > 9 then
title_str = SubStringUTF8(title_str, 1, 8) .. "..."
end
self.importantFlag_obj:SetActive(self.data.important == 1)
self.mailTitle_tmp.text = title_str
self.mailTime_tmp.text = TimeUtil:timeConversion(self.data.time, "mm-dd hh:MM:ss")
--邮件类型图标
local mail_type = self.model:GetMailType(self.data.mail_id)
if mail_type == 5 then
lua_resM:setImageSprite(self,self.mailHead_img,"sociality_asset","sociality_mail_head_2")
else
lua_resM:setImageSprite(self,self.mailHead_img,"sociality_asset","sociality_mail_head_1")
end
--已读、未读、已领取、未领取
if self.data.state == 3 then --附件已领取
lua_resM:setImageSprite(self,self.attachmentIcon_img,"sociality_asset","sociality_mail_reward_open_pointfilter")
else
if self.data.is_attach == 0 and self.data.state ~= 3 then --无附件
if self.data.state == 1 then --已读
lua_resM:setImageSprite(self,self.attachmentIcon_img,"sociality_asset","sociality_mail_read_pointfilter")
else
lua_resM:setImageSprite(self,self.attachmentIcon_img,"sociality_asset","sociality_mail_unread_pointfilter")
end
elseif self.data.is_attach == 1 then --有附件
lua_resM:setImageSprite(self,self.attachmentIcon_img,"sociality_asset","sociality_mail_reward_unopen_pointfilter")
end
end
if self.data.state == 2 or (self.data.is_attach == 1 and self.data ~= 3) then
self.redDot_obj:SetActive(true)
else
self.redDot_obj:SetActive(false)
end
self.gameObject:SetActive(true)
else
self.need_refreshData = true
end
end
--清除item数据
function MailItem:Hide()
if self.is_loaded then
self.selectBg_obj:SetActive(false)
self.data = nil
-- self:SetVisible(false)
end
end
function MailItem:__delete()
for i, v in ipairs(self.event_id_list) do
self.model:UnBind(v)
end
self.event_id_list = {}
end