-- <*
|
|
-- @Author: Saber
|
|
-- @Description: 经验副本路线排行界面
|
|
-- *>
|
|
ExpDunWaveRankView = ExpDunWaveRankView or BaseClass(BaseView)
|
|
local ExpDunWaveRankView = ExpDunWaveRankView
|
|
|
|
function ExpDunWaveRankView:__init()
|
|
self.base_file = "expDun"
|
|
self.layout_file = "ExpDunWaveRankView"
|
|
self.layer_name = "Activity"
|
|
self.destroy_imm = true
|
|
self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
|
|
self.change_scene_close = true --是否切换场景时关闭(弹出界面使用)
|
|
self.model = ExpDunModel:getInstance()
|
|
self.dun_model = BaseDungeonModel:getInstance()
|
|
self.my_rank_item = nil
|
|
-- 排行请求相关
|
|
self.wave_rank_data = {} -- 社团列表
|
|
self.sroll_end_req_evt = false -- 滑动到底时请求协议
|
|
self.cur_page = 1 -- 当前加载了多少页的社团数据
|
|
self.total_page = 0 -- 总页数
|
|
self.page_size = 15 --向服务器发送一页的个数
|
|
self.is_set_zdepth = true
|
|
-- 榜首相关
|
|
self.top_item_pos = {
|
|
[1] = Vector2(1, 9),
|
|
[2] = Vector2(-215.5, 9),
|
|
[3] = Vector2(217.5, 9),
|
|
}
|
|
self.top_item = {}
|
|
self.top_three_head_data = {} -- 榜首头像数据
|
|
|
|
|
|
self.load_callback = function()
|
|
self:LoadSuccess()
|
|
self:AddEvent()
|
|
end
|
|
self.open_callback = function( )
|
|
self:UpdateView()
|
|
end
|
|
self.destroy_callback = function ( )
|
|
self:DestroySuccess()
|
|
end
|
|
end
|
|
|
|
function ExpDunWaveRankView:Open( )
|
|
BaseView.Open(self)
|
|
end
|
|
function ExpDunWaveRankView:LoadSuccess()
|
|
local nodes = {
|
|
"content",
|
|
"content/top_con",
|
|
"content/rank_scroll", "content/rank_scroll/Viewport/rank_con",
|
|
"content/my_rank_con",
|
|
}
|
|
self:GetChildren(nodes)
|
|
|
|
local function close_callback()
|
|
self:Close()
|
|
end
|
|
self.tabWindowComponent = UITabWindow.New(self.transform, nil, nil, close_callback, self.background_wnd, self.content, UITabWindow.SizeSmallNoTab, nil, nil, false)
|
|
self.tabWindowComponent:SetTitleText("波数排行")
|
|
self.tabWindowComponent:SetBackgroundRes("exp_wave_rank_bg")
|
|
end
|
|
|
|
function ExpDunWaveRankView:AddEvent()
|
|
local function update_wave_rank_data(vo)
|
|
self:UpdateRankItem(vo)
|
|
end
|
|
self:BindEvent(self.model, ExpDunModel.UPDATE_WAVE_RANK_DATA, update_wave_rank_data)
|
|
|
|
local function update_top_three_head_data(vo)
|
|
self:UpdateTopThreeItem(vo)
|
|
end
|
|
self:BindEvent(self.model, ExpDunModel.UPDATE_WAVE_TOPTHREE_HEAD_DATA, update_top_three_head_data)
|
|
end
|
|
|
|
function ExpDunWaveRankView:UpdateView()
|
|
-- 第一次调用,请求第一页的排行数据
|
|
self:RequestRankData()
|
|
-- 请求榜首的头像数据
|
|
self.dun_model:Fire(BaseDungeonModel.REQUEST_CCMD_EVENT, 61055)
|
|
end
|
|
|
|
-- 更新前三节点及表现
|
|
function ExpDunWaveRankView:UpdateTopThreeItem(vo)
|
|
-- 处理数据
|
|
self.top_three_head_data = {}
|
|
for k, v in pairs(vo.rank_list) do
|
|
self.top_three_head_data[v.rank] = v
|
|
end
|
|
local data
|
|
-- 固定创建3个节点
|
|
for i = 1, 3 do
|
|
data = self.top_three_head_data[i]
|
|
self.top_item[i] = self.top_item[i] or ExpDunWaveRankTopItem.New(self.top_con)
|
|
local pos = self.top_item_pos[i]
|
|
self.top_item[i]:SetAnchoredPosition(pos.x, pos.y)
|
|
self.top_item[i]:SetData(i, data)
|
|
end
|
|
-- 创建自己的排行数据
|
|
local mainrole = RoleManager.Instance.mainRoleInfo
|
|
local my_rank_data = {
|
|
wave = self.model:GetCurrentWave(),
|
|
rank = vo.my_rank,
|
|
role_id = mainrole.role_id,
|
|
role_name = mainrole.name,
|
|
lv = mainrole.level,
|
|
svip = mainrole.sup_vip_type,
|
|
vip = mainrole.vip_flag,
|
|
sex = mainrole.sex,
|
|
guild_name = mainrole.guild_name
|
|
}
|
|
self.my_rank_item = self.my_rank_item or ExpDunWaveRankItem.New(self.my_rank_con)
|
|
self.my_rank_item:SetAnchoredPosition(0, 0)
|
|
self.my_rank_item:SetData(my_rank_data)
|
|
end
|
|
|
|
-- 更新滚动容器节点
|
|
function ExpDunWaveRankView:UpdateRankItem(vo)
|
|
self.total_page = vo.page_total
|
|
self.cur_page = vo.page_no
|
|
|
|
if vo and #vo.rank_list > 0 then
|
|
for k, data in pairs(vo.rank_list) do
|
|
self.wave_rank_data[#self.wave_rank_data+1] = data
|
|
end
|
|
self.sroll_end_req_evt = false
|
|
end
|
|
-- 排序数据
|
|
local sort_func = function ( a, b )
|
|
return a.rank < b.rank
|
|
end
|
|
table.sort(self.wave_rank_data, sort_func)
|
|
|
|
self.rank_item_creator = self.rank_item_creator or self:AddUIComponent(UI.ItemListCreator)
|
|
local info = {
|
|
data_list = self.wave_rank_data,
|
|
scroll_view = self.rank_scroll,
|
|
item_con = self.rank_con,
|
|
item_class = ExpDunWaveRankItem,
|
|
item_height = 49,
|
|
create_frequency = 0.01,
|
|
alignment = UnityEngine.TextAnchor.UpperLeft,
|
|
reuse_item_num = 7,
|
|
on_update_item = function(item, i, v)
|
|
if i == #self.wave_rank_data - 1 and not self.sroll_end_req_evt and self.cur_page < self.total_page then
|
|
-- 调整标志量,请求协议
|
|
self.sroll_end_req_evt = true
|
|
self.cur_page = self.cur_page + 1
|
|
self:RequestRankData()
|
|
end
|
|
item:SetData(v)
|
|
end,
|
|
}
|
|
self.rank_item_creator:UpdateItems(info)
|
|
end
|
|
|
|
-- 请求排行数据
|
|
function ExpDunWaveRankView:RequestRankData( )
|
|
self.dun_model:Fire(BaseDungeonModel.REQUEST_CCMD_EVENT, 61054, self.page_size, self.cur_page)
|
|
end
|
|
|
|
function ExpDunWaveRankView:DestroySuccess()
|
|
if self.tabWindowComponent then
|
|
self.tabWindowComponent:DeleteMe()
|
|
self.tabWindowComponent = nil
|
|
end
|
|
|
|
if self.my_rank_item ~= nil then
|
|
self.my_rank_item:DeleteMe()
|
|
self.my_rank_item = nil
|
|
end
|
|
|
|
for k, v in pairs(self.top_item) do
|
|
v:DeleteMe()
|
|
v = nil
|
|
end
|
|
self.top_item = {}
|
|
end
|