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

116 lines
4.2 KiB

-- <*
-- @Author: Saber
-- @Description: 成就特权节点item
-- *>
AchievePrivilegeItem = AchievePrivilegeItem or BaseClass(BaseItem)
local AchievePrivilegeItem = AchievePrivilegeItem
function AchievePrivilegeItem:__init(parent_wnd,prefab_asset,layer_name)
self.base_file = "achievement"
self.layout_file = "AchievePrivilegeItem"
self.parent_wnd = parent_wnd
self.layer_name = layer_name
self.is_selected = false
self.model = AchieveModel:getInstance()
self.privilege_data = self.model:GetAchievePrivilegeTabData()
self:Load()
end
function AchievePrivilegeItem:Load_callback()
local nodes = {
"bg:obj:img", "arrow:obj", "selected:obj", "red:obj",
"lv:tmp", "di_bg:raw", "des:tmp", "icon:img", "con_award",
}
self:GetChildren(nodes)
lua_resM:setOutsideImageSprite(self, self.bg_img,
GameResPath.GetAchieveBigPic("achi_privilege_bg"), true)
SetLocalScale(self.icon, 0.8, 0.8, 1)
self:AddEvents()
if self.need_refreshData then
self:UpdateView()
end
end
function AchievePrivilegeItem:AddEvents( )
local function click_event(target)
if target == self.bg_obj then
if self.index and self.callback then
self.callback(self.index)
end
-- 如果当前的特权节点是交换交易券的且红点亮着,要取消掉登录红点并推事件
if self.data.icon == 4 and self.model:GetAchieveCacheRed(AchieveModelRedType.Exchange) then
self.model.exchange_login_red = false
self.model:CheckAchieveRed(AchieveModelRedType.Exchange, true)
end
end
end
AddClickEvent(self.bg_obj, click_event, LuaSoundManager.SOUND_UI.SWITCH)
local function update_privilege_red(type)
if type == AchieveModelRedType.Privilege
or type == AchieveModelRedType.Weekly
or type == AchieveModelRedType.Exchange then
self:UpdatePrivilegeTabRed()
end
end
self:BindEvent(self.model, AchieveModel.UPDATE_ACHIEVE_RED, update_privilege_red)
end
function AchievePrivilegeItem:UpdateView( )
-- self:SetSelected(self.is_selected)
-- lua_resM:setImageSprite(self, self.bg_img, "achievement_asset", "achi_total_privilege_iconBg" .. self.data.icon .. "_pointfilter", true)
lua_resM:setOutsideImageSprite(self, self.icon_img,
GameResPath.GetAchieveBigPic("achi_privilege_icon" .. self.data.icon), true)
self.lv_tmp.text = string.format('%s %s', HtmlColorTxt( "Lv." .. self.data.stage, ColorUtil.YELLOW_DARK), self.data.name)
local str = ChuanWenManager:getInstance():FormatColorTag2(self.data.desc, true)
self.des_tmp.text = " " .. string.gsub( str, [[\n]], "\n" )
-- 更新红点
-- self:UpdatePrivilegeTabRed()
local cur_index = self.model:GetCurPrivilegeStage()
-- self:SetSelected(cur_index == self.index)
self.arrow_obj:SetActive(#self.privilege_data ~= self.index)
self.award_item = self.award_item or UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.con_award)
self.award_item:SetItemSize(62, 62)
local reward = stringtotable(self.data.reward)[1]
self.award_item:SetVisible(reward and true or false)
if reward then
local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(reward[1], reward[2])
self.award_item:SetData(typeId, reward[3], nil, nil, lock)
end
end
function AchievePrivilegeItem:SetData( data, index, callback )
self.data = data
self.index = index
self.callback = callback
if self.is_loaded then
self.need_refreshData = false
self:UpdateView()
else
self.need_refreshData = true
end
end
function AchievePrivilegeItem:SetSelected(bool)
self.is_selected = bool
if self.is_loaded then
self.selected_obj:SetActive(bool)
end
end
function AchievePrivilegeItem:UpdatePrivilegeTabRed( )
if self.data then
local bool
bool = self.model:GetAchieveCacheRed(AchieveModelRedType.Privilege, self.data.stage)
self.red_obj:SetActive(bool)
end
end
function AchievePrivilegeItem:__delete( )
if self.award_item then
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.award_item)
end
self.award_item = nil
end