RankTargetView = RankTargetView or BaseClass(BaseView)
|
|
local RankTargetView = RankTargetView
|
|
|
|
|
|
function RankTargetView:__init()
|
|
self.base_file = "rank"
|
|
self.layout_file = "RankTargetView"
|
|
self.layer_name = "Activity"
|
|
self.destroy_imm = true
|
|
self.use_background = true
|
|
self.change_scene_close = true
|
|
self.hide_maincancas = true --是否隐藏主界面
|
|
self.append_to_ctl_queue = false --是否要添加进界面堆栈
|
|
self.need_show_money = false --是否要显示顶部的金钱栏
|
|
|
|
self.click_bg_toClose = true
|
|
|
|
self.is_set_zdepth = true
|
|
|
|
self.blur_activity_bg = true
|
|
|
|
self.model = RankModel:getInstance()
|
|
|
|
self.tab_item_list = {}
|
|
|
|
self.now_select_rank_type = 0
|
|
|
|
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:AddEvent()
|
|
end
|
|
self.open_callback = function ( )
|
|
self:OpenSuccess()
|
|
end
|
|
self.close_win_callback = function ( )
|
|
self:Close()
|
|
end
|
|
self.destroy_callback = function ( )
|
|
self:DestroySuccess()
|
|
end
|
|
end
|
|
|
|
function RankTargetView:Open(rank_tab_id)
|
|
self.rank_tab_id = rank_tab_id
|
|
self.rank_type_list = self.model:GetRankTargetTabListByTabId(self.rank_tab_id)
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function RankTargetView:LoadSuccess()
|
|
local nodes = {
|
|
"container",
|
|
"tabCon",
|
|
"ScrollView", "ScrollView/Viewport/Content",
|
|
"empty_add:obj", "empty_add/image:raw",
|
|
}
|
|
self:GetChildren(nodes)
|
|
|
|
self.tabWindowComponent = UITabWindow.New(self.transform, nil, nil, self.close_win_callback, self.background_wnd,
|
|
self.container,UITabWindow.SizeSmallNoTab,nil,nil,nil)
|
|
self.tabWindowComponent:SetBackgroundRes("rank_target_bg")
|
|
self.tabWindowComponent:SetTitleText("排行榜目标奖励")
|
|
|
|
lua_resM:setOutsideRawImage(self, self.image_raw, GameResPath.GetViewBigBg("com_empty_bg1"))
|
|
|
|
|
|
|
|
end
|
|
|
|
function RankTargetView:AddEvent()
|
|
local function update_target_view(rank_type)
|
|
if self.is_loaded and self.now_select_rank_type == rank_type then
|
|
self:UpdateTargetItem(rank_type,true)
|
|
end
|
|
end
|
|
self:BindEvent(self.model,RankModel.UPDATE_RANK_TARGET_VIEW,update_target_view)
|
|
end
|
|
|
|
function RankTargetView:OpenSuccess()
|
|
self:UpdateTabList()
|
|
end
|
|
|
|
function RankTargetView:UpdateTabList( )
|
|
local function tab_click_back(rank_type,is_history)
|
|
self.now_select_rank_type = rank_type
|
|
for k,v in pairs(self.tab_item_list) do
|
|
v:SetSelect(rank_type)
|
|
end
|
|
if not is_history then
|
|
self:UpdateTargetItem(rank_type)
|
|
else
|
|
self:UpdateHistoryList(rank_type)
|
|
end
|
|
end
|
|
|
|
for k,v in pairs(self.tab_item_list) do
|
|
v:SetVisible(false)
|
|
end
|
|
for i,v in ipairs(self.rank_type_list) do
|
|
local item = self.tab_item_list[i]
|
|
if not item then
|
|
item = RankTargetTabItem.New(self.tabCon)
|
|
self.tab_item_list[i] = item
|
|
end
|
|
item:SetVisible(true)
|
|
item:SetData(v.rank_type, tab_click_back, v.is_history)
|
|
item:SetAnchoredPosition(126*(i-1)+1,-0.5)
|
|
end
|
|
|
|
local jump_to_rank_type = self.rank_type_list[1].rank_type
|
|
for i,v in ipairs(self.rank_type_list) do
|
|
local red = self.model:IsRankTypeNeedRed(rank_type)
|
|
if red then
|
|
jump_to_rank_type = v.rank_type
|
|
break
|
|
end
|
|
end
|
|
tab_click_back(jump_to_rank_type)
|
|
end
|
|
|
|
--allow_change_to_next_tab:是否允许在领取完当前页时,跳转到下一个可领奖励的页签
|
|
function RankTargetView:UpdateTargetItem(rank_type,allow_change_to_next_tab)
|
|
local target_cfg = DeepCopy(self.model:GetRankTargetCfgByType(rank_type))
|
|
|
|
--排序 0|不可领 1|可领取 2|已领完
|
|
local target_server_data = self.model:GetRankTargetData(rank_type) and self.model:GetRankTargetData(rank_type).top_list or {}
|
|
local have_reward_can_get = false --是否有奖励可以领取
|
|
for i,v in ipairs(target_server_data) do
|
|
if target_cfg[i] then
|
|
if v.award_state == 0 then
|
|
target_cfg[i].sort_rank = 2
|
|
elseif v.award_state == 1 then
|
|
have_reward_can_get = true
|
|
target_cfg[i].sort_rank = 1
|
|
elseif v.award_state == 2 then
|
|
target_cfg[i].sort_rank = 3
|
|
end
|
|
end
|
|
end
|
|
|
|
if allow_change_to_next_tab and not have_reward_can_get then--没有奖励领取时,跳到下一个页签去
|
|
local jump_to_rank_type = 0
|
|
for i,v in ipairs(self.rank_type_list) do
|
|
local red = self.model:IsRankTypeNeedRed(v.rank_type)
|
|
if red then
|
|
jump_to_rank_type = v.rank_type
|
|
break
|
|
end
|
|
end
|
|
|
|
local function tab_click_back(rank_type)
|
|
self.now_select_rank_type = rank_type
|
|
for k,v in pairs(self.tab_item_list) do
|
|
v:SetSelect(rank_type)
|
|
end
|
|
self:UpdateTargetItem(rank_type)
|
|
end
|
|
|
|
if jump_to_rank_type ~= 0 then
|
|
tab_click_back(jump_to_rank_type)
|
|
return
|
|
end
|
|
end
|
|
|
|
local arg = {"sort_rank","index"}
|
|
local condition = {Array.LOWER,Array.LOWER}
|
|
SortTools.MoreKeysSorter(target_cfg, arg, condition)
|
|
|
|
|
|
self:UpdateTargetScrollView(target_cfg,false)
|
|
|
|
end
|
|
|
|
function RankTargetView:UpdateHistoryList(rank_type)
|
|
local true_rank_type = rank_type/1000
|
|
local target_cfg = DeepCopy(self.model:GetRankTargetCfgByType(true_rank_type))
|
|
|
|
--排序 0|不可领 1|可领取 2|已领完
|
|
local hostory_list = {}
|
|
local target_server_data = self.model:GetRankTargetData(true_rank_type) and self.model:GetRankTargetData(true_rank_type).top_list or {}
|
|
for i,v in ipairs(target_server_data) do
|
|
if target_cfg[i] then
|
|
if v.award_state ~= 0 and target_cfg[i].index == v.target then
|
|
table.insert(hostory_list,target_cfg[i])
|
|
end
|
|
end
|
|
end
|
|
|
|
local arg = {"index"}
|
|
local condition = {Array.UPPER}
|
|
SortTools.MoreKeysSorter(hostory_list, arg, condition)
|
|
|
|
self:UpdateTargetScrollView(hostory_list,true)
|
|
end
|
|
|
|
function RankTargetView:UpdateTargetScrollView(data,is_history)
|
|
if not self.item_list_com then
|
|
self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
|
|
end
|
|
self.item_list_com:Reset()
|
|
local info = {
|
|
data_list = data,
|
|
item_con = self.Content,
|
|
item_class = RankTargetItem,
|
|
item_width = 899,
|
|
item_height = 137,
|
|
space_y = 3,
|
|
start_x = 5,
|
|
start_y = -5,
|
|
-- create_frequency = 0.01,
|
|
scroll_view = self.ScrollView,
|
|
on_update_item = function(item, i, v)
|
|
item:SetData(v,i,is_history)
|
|
end,
|
|
}
|
|
self.item_list_com:UpdateItems(info)
|
|
|
|
|
|
self.empty_add_obj:SetActive(#data==0)
|
|
end
|
|
|
|
function RankTargetView:UpdateRed( )
|
|
|
|
end
|
|
|
|
function RankTargetView:DestroySuccess( )
|
|
if self.tabWindowComponent then
|
|
self.tabWindowComponent:DeleteMe()
|
|
end
|
|
self.tabWindowComponent = nil
|
|
for i, v in ipairs(self.tab_item_list) do
|
|
v:DeleteMe()
|
|
end
|
|
self.tab_item_list = {}
|
|
end
|