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

177 rivejä
6.3 KiB

-- <*
-- @Author: Saber
-- @Description: 本国团战排行界面节点GuildCSGRRankItem
-- *>
GuildCSGRRankItem = GuildCSGRRankItem or BaseClass(BaseItem)
local GuildCSGRRankItem = GuildCSGRRankItem
function GuildCSGRRankItem:__init(parent_wnd,prefab_asset,layer_name)
self.base_file = "guildCSGR"
self.layout_file = "GuildCSGRRankItem"
self.parent_wnd = parent_wnd
self.layer_name = layer_name
self.award_list = {}
self.model = GuildModel:getInstance()
self:Load()
end
function GuildCSGRRankItem:Load_callback()
local nodes = {
-- 头像,社团标志节点
"role_head:obj", "guild_flag:img",
-- 排行节点
"rank_icon:img", "rank_lb:tmp",
-- 奖励节点
"reward_scroll:scroll",
"reward_scroll/reward_vp:img",
"reward_scroll/reward_vp/reward_con",
-- 玩家/社团信息节点
"data_con",
"data_con/vip:obj",
"data_con/gender:obj:img",
"data_con/name:tmp",
-- 积分
"score:tmp",
"line:obj",
}
self:GetChildren(nodes)
-- 加载vip节点
self.vipItem = RoleVipItem.New(self.vip)
self.vipItem:SetAnchoredPosition(0, 0)
-- 头像节点
self.role_head_item = HeadRoleItem.New(self.role_head)
self.role_head_item:SetItemSize(57, 57)
self:AddEvents()
if self.need_refreshData then
self:UpdateView()
end
end
function GuildCSGRRankItem:AddEvents( )
end
function GuildCSGRRankItem:SetData( rank_type, rank, rank_data, reward_data, is_mine )
-- rank_type:0个人排行 1社团排行
self.rank_type = rank_type
self.rank = rank
self.rank_data = rank_data
self.reward_data = reward_data
self.is_mine = is_mine or false -- 是否是玩家自己的信息节点item
if self.is_loaded then
self.need_refreshData = false
self:UpdateView()
else
self.need_refreshData = true
end
end
function GuildCSGRRankItem:UpdateView( )
self.line_obj:SetActive(not self.is_mine)
local is_role_rank = self.rank_type == 0
-- 排行表现
self.rank_icon_img.enabled = self.rank and self.rank <= 3 or false
if self.rank and self.rank <= 3 then
lua_resM:setImageSprite(self, self.rank_icon_img, "guildCSGR_asset", "csgr_rank" .. self.rank, true)
end
self.rank_lb_tmp.text = self.rank and (self.rank <= 3 and "" or self.rank) or "榜外"
-- 排行数据
if self.rank_data then
-- 名称信息
self.name_tmp.text = string.format("s%s.%s", self.rank_data.server_num, self.rank_data.name)
if is_role_rank then -- 个人排行,要展示vip和玩家性别
self.vip_obj:SetActive(true)
self.role_head_obj:SetActive(true)
self.gender_img.enabled = true
self.guild_flag_img.enabled = false
self.vipItem:SetData(self.rank_data.vip,self.rank_data.svip_type)
lua_resM:setImageSprite(self, self.gender_img, "common_asset", self.rank_data.gender == 1 and "com_boy" or "com_girl", true)
local vip_offset = self.rank_data.vip > 0 and 40 or 5
SetAnchoredPositionX(self.name, vip_offset)
local gender_pos_x = vip_offset + self.name_tmp.preferredWidth + 6
SetAnchoredPositionX(self.gender, gender_pos_x)
local head_data = {
vo = {
role_id = self.rank_data.id or 0,
server_id = self.rank_data.server_num or 0,
sex = self.rank_data.gender or 0,
profile_photo_id = self.rank_data.profile_photo_id or 0,
level = self.rank_data.lv or nil,
profile_photo_id = self.rank_data.photo_profile_id,
dress_board_id = self.rank_data.dress_id or nil,
},
show_tip = true,
}
self.role_head_item:SetData(head_data)
else
self.role_head_obj:SetActive(false)
self.vip_obj:SetActive(false)
self.guild_flag_img.enabled = true
lua_resM:setImageSprite(self, self.guild_flag_img, "guildIcon_asset", "guild_icon" .. self.rank_data.guild_flag, true)
self.gender_img.enabled = false
SetAnchoredPositionX(self.name, 5)
end
-- 积分
self.score_tmp.text = string.format("伤害:<color=#fdffc2>%s</color>", self.rank_data.val)
else
self.name_tmp.text = "虚位以待"
self.role_head_obj:SetActive(false)
self.vip_obj:SetActive(false)
self.gender_img.enabled = false
self.guild_flag_img.enabled = false
SetAnchoredPositionX(self.name, 5)
self.score_tmp.text = "伤害:<color=#fdffc2>0</color>"
end
-- 加载奖励内容
self:UpdateRewards()
end
function GuildCSGRRankItem:UpdateRewards( )
for k, v in ipairs(self.award_list) do
v:SetVisible(false)
end
if self.reward_data.is_empty then -- 空奖励列表什么也不做
return
end
self.reward_scroll_scroll.enabled = false
self.reward_vp_img.raycastTarget = false
-- 加载奖励信息
local reward_list = self.reward_data.rewards
-- 设置容器宽度
SetSizeDeltaX(self.reward_con, 72 * #reward_list)
SetAnchoredPositionX(self.reward_con, self.reward_con.sizeDelta.x > self.reward_scroll.sizeDelta.x and self.reward_con.sizeDelta.x - self.reward_scroll.sizeDelta.x or 0)
-- 加载奖励内容
local item
for k, v in ipairs(reward_list) do
item = self.award_list[k]
if not item then
item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.reward_con)
self.award_list[k] = item
end
item:SetVisible(true)
item:SetItemSize(62, 62)
item:SetAnchoredPosition(self.reward_con.sizeDelta.x - 70 * k, -5)
local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2])
item:SetData(typeId, v[3], nil, nil, lock)
end
end
function GuildCSGRRankItem:__delete( )
if self.vipItem then
self.vipItem:DeleteMe()
self.vipItem = nil
end
if self.role_head_item then
self.role_head_item:DeleteMe()
self.role_head_item = nil
end
for k, v in pairs(self.award_list) do
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, v)
end
self.award_list = nil
end