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

235 rivejä
6.2 KiB

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