源战役客户端
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 

988 Zeilen
36 KiB

RankView = RankView or BaseClass(BaseView)
local RankView = RankView
--Alert:排行榜页签顺序必须遵循123456递进排序,如果要后面新增排行榜,直接加就行,如果要插入排行榜,务必保证id顺序无误
--Alert:添加或插入排行榜后,需要同步修改索引的地方如下:
--RankModel | RankModel.TabId | 索引值,改好后从上到下调好顺序
--RankView | RankView.TabData | 从上到下调好顺序
--ConfigRank | Config.ConfigRank.RankTab | 修改id,并从上到下调好顺序
RankView.TabData = {
--前三个页签为开服冲榜专用,不要进行注释屏蔽操作,如果要屏蔽去RankModel:GetFinalRankTabData操作
{id = RankModel.TabId.KfRush_1, name = "---", abName = "rank_asset", open_lv = GetModuleOpenLevel(221,5) , open_task = 0},
{id = RankModel.TabId.KfRush_2, name = "---", abName = "rank_asset", open_lv = GetModuleOpenLevel(221,5) , open_task = 0},
{id = RankModel.TabId.KfRush_3, name = "---", abName = "rank_asset", open_lv = GetModuleOpenLevel(221,5) , open_task = 0},
{id = RankModel.TabId.Power, name = "战力", abName = "rank_asset", open_lv = GetModuleOpenLevel(221,1) , open_task = 0},
{id = RankModel.TabId.Level, name = "等级", abName = "rank_asset", open_lv = GetModuleOpenLevel(221,2) , open_task = 0},
{id = RankModel.TabId.Equip, name = "装备", abName = "rank_asset", open_lv = GetModuleOpenLevel(221,3) , open_task = 0},
{id = RankModel.TabId.WarSoul, name = "战魂", abName = "rank_asset", open_lv = GetModuleOpenLevel(221,0) , open_task = 0},
{id = RankModel.TabId.Advance, name = "进阶", abName = "rank_asset", open_lv = GetModuleOpenLevel(221,5) , open_task = 0},
{id = RankModel.TabId.AIGirl, name = "AI娘", abName = "rank_asset", open_lv = GetModuleOpenLevel(221,6) , open_task = 0},
{id = RankModel.TabId.Fashion, name = "收集", abName = "rank_asset", open_lv = GetModuleOpenLevel(221,4) , open_task = 0},
{id = RankModel.TabId.Charm, name = "魅力", abName = "rank_asset", open_lv = GetModuleOpenLevel(221,7) , open_task = 0},
}
RankView.CSTabData = {
{id = RankModel.CSTabId.Power, name = "战力", abName = "rank_asset", open_lv = GetModuleOpenLevel(221,1) , open_task = 0},
{id = RankModel.CSTabId.Level, name = "等级", abName = "rank_asset", open_lv = GetModuleOpenLevel(221,2) , open_task = 0},
}
function RankView:__init()
self.base_file = "rank"
self.layout_file = "RankView"
self.layer_name = "UI"
self.destroy_imm = true
self.use_background = true
self.change_scene_close = true
self.model_activity_bg = true
self.model_activity_bg_pos = Vector2(-294,100)
self.full_screen = true
self.ani_left = -200
self.ani_right = 200
self.hide_maincancas = true --是否隐藏主界面
self.append_to_ctl_queue = true --是否要添加进界面堆栈
self.need_show_money = false --是否要显示顶部的金钱栏
self.model = RankModel:getInstance()
self.need_tab_id = self.model:GetRankSubTypeData(false) --打开界面前获取一次排行榜子类型列表(Config.ConfigRank)
self.cur_need_tab_data = false
self.cur_tab_index = 1
self.item_list = {} -- 左侧子类型按钮列表
self.top_item_list = {}
self.now_select_rank_data = nil -- 当前选中的玩家的排行榜信息
self.kf_rush_rank_tab_item_list = {}
self.hide_clear_role_model = false
self.fire_change_visible_event = true
self.rank_equip_view = false
self.load_callback = function ()
self:LoadSuccess()
self:AddEvent()
end
self.open_callback = function ( )
self.tabWindowComponent:SetTabBarIndex(self.current_index or 1,self.current_sub_id or 1)
self:ShowTabRedPointState()
end
self.switch_callback = function(index,sub_id)
self:SwitchTab(index or 1,sub_id or 1)
end
self.close_win_callback = function ( )
self:Close()
end
self.destroy_callback = function ( )
self:DestroySuccess()
end
end
function RankView:Open(index,sub_id)
self.current_index = index or 1
self.current_sub_id = sub_id or 1
BaseView.Open(self)
end
function RankView:LoadSuccess()
local nodes = {
"winCon",
"mid/figureCon/figure_bg:raw:obj",
------ 左边子类型选择栏
"left/subTypeScrollView/Viewport/subTypeCon:obj",
"left/kfRankIcon:obj:img",
"left/kfRankIcon/kfEffect",
"left/fosterIcon:obj:img",
------ 中间形象展示栏
"mid/figureCon:obj",
"mid/figureCon/equip_con:obj", --装备栏
"mid/figureCon/warSoul_con:obj", --战魂栏
"mid/figureCon/role_Con:obj",--模型展示容器
"mid/figureCon/like_red:obj:imgex",--点赞按钮
"mid/figureCon/rank_power:txt",--排行分数,不一定就是战力
"mid/figureCon/like_num:tmp",--点赞数
"mid/figureCon/designation_con:obj",--称号栏
"mid/figureCon/designation_con/designation_image:img:obj",
"mid/figureCon/designation_con/name_text:tmp",
"mid/figureCon/designation_con/effect",
"mid/figureCon/designation_con/designation_small_image:img:obj",
"mid/figureCon/power_type_label:tmp",
------ 右侧排行榜栏
"right/rankCon/my_rank_num:tmp",--排名txt
"right/rankCon/ScrollView/Viewport/Content","right/rankCon/ScrollView",--排行榜容器
"right/rankCon/my_rank_power:tmp",--我的当前排行榜类型分数
"right/emptyCon:obj",
"right/rankCon/my_vip_icon", "right/rankCon/my_sex_icon:img", "right/rankCon/my_name:tmp",
"right/rankCon/topCon",
"right/rankCon/title_top_bg:img",
"left/mainTypeCon:obj",
"left/mainTypeCon/rankTypeBtn:obj:img", "left/mainTypeCon/csTypeBtn:obj:img",
"left/mainTypeCon/rankTypeBtn/rankTypeBtnText:tmp", "left/mainTypeCon/csTypeBtn/csBtnText:tmp",
"right/tipCon",
"right/tipCon/refreshTip:tmp",
"right/kfRushCon:obj",
}
self:GetChildren(nodes)
self.myVipItem = RoleVipItem.New(self.my_vip_icon)
lua_resM:setOutsideRawImage(self, self.figure_bg_raw, GameResPath.GetRankBg("rank_role_di"))
lua_resM:setOutsideImageSprite(self, self.title_top_bg_img, GameResPath.GetRankBg("rank_di"))
lua_resM:setImageSprite(self, self.kfRankIcon_img, "activityIcon_asset","icon_99_99001")
lua_resM:setImageSprite(self, self.fosterIcon_img, "activityIcon_asset","icon_146_0_1")
local final_rank_tab_data = self.model:GetFinalRankTabData()
local now_rank_tab_data = self.model.is_cs_rank and RankView.CSTabData or final_rank_tab_data
self.need_tab_id = self.model:GetRankSubTypeData(self.model.is_cs_rank)
self.tabWindowComponent = UITabWindow.New(self.transform,now_rank_tab_data,self.switch_callback,
self.close_win_callback,self.background_wnd,self.winCon, UITabWindow.SizeLarge, false,6,true)
self.tabWindowComponent:SetTitleText("排行")
self.tabWindowComponent:SetUIBack({target = self, bg1 = GameResPath.GetViewBigBg("default_bg_2")})
-- self:MoveUIToBack(self.figure_bg)
self:UpdateMainTypeTabCon()
end
function RankView:UpdateKfRushCon( )
local rush_tab_list = self.model:GetTodayKfRushTabList()
if #rush_tab_list == 0 or self.model.is_cs_rank then
self.kfRushCon_obj:SetActive(false)
else
self.kfRushCon_obj:SetActive(true)
local function click_call_back(index,sub_id)
self:SwitchTab(index,sub_id)
end
for k,v in pairs(self.kf_rush_rank_tab_item_list) do
v:SetVisible(false)
end
for i,v in ipairs(rush_tab_list) do
local item = self.kf_rush_rank_tab_item_list[i]
if not item then
item = RankKfRushTabItem.New(self.kfRushCon)
self.kf_rush_rank_tab_item_list[i] = item
end
item:SetVisible(true)
item:SetData(v,click_call_back)
if i == 1 then
item:SetAnchoredPosition(0, 0)
elseif i == 2 then
item:SetAnchoredPosition(0, -52)
end
end
end
end
function RankView:UpdateMainTypeTabCon( )
if self.model.is_cs_rank then
lua_resM:setImageSprite(self, self.rankTypeBtn_img, "uiComponent_asset","com_empty")
lua_resM:setImageSprite(self, self.csTypeBtn_img, "rank_asset","rank_cs_tab_select")
self.refreshTip_tmp.text = "榜单每<#f3fcff>十分钟</color>刷新一次"
else
lua_resM:setImageSprite(self, self.rankTypeBtn_img, "rank_asset","rank_cs_tab_select")
lua_resM:setImageSprite(self, self.csTypeBtn_img, "uiComponent_asset","com_empty")
self.refreshTip_tmp.text = "榜单每<#f3fcff>五分钟</color>刷新一次"
end
local csTypeBtnMat = self.model.is_cs_rank and ShaderTools.TMPSharedMaterialType.HKYTW7OutlineBlueTab or ShaderTools.TMPSharedMaterialType.HKYTW7FFDefault
local rankTypeBtnMat = self.model.is_cs_rank and ShaderTools.TMPSharedMaterialType.HKYTW7FFDefault or ShaderTools.TMPSharedMaterialType.HKYTW7OutlineBlueTab
SetTMPSharedMaterial(self.csBtnText_tmp, csTypeBtnMat)
SetTMPSharedMaterial(self.rankTypeBtnText_tmp, rankTypeBtnMat)
local csBtnColor = self.model.is_cs_rank and "#ffffff" or "#9eb3cf"
local rankBtnColor = self.model.is_cs_rank and "#9eb3cf" or "#ffffff"
self.csBtnText_tmp.color = ColorUtil:ConvertHexToRGBColor(csBtnColor)
self.rankTypeBtnText_tmp.color = ColorUtil:ConvertHexToRGBColor(rankBtnColor)
-- self:UpdateKfRushCon()
end
function RankView:AddEvent()
local on_click = function ( click_obj )
if self.like_red_obj == click_obj then
--点赞
if self.now_select_rank_data then
if self.model.selectId == 407 then--社团点赞
self.model:Fire(RankModel.REQUEST_CCMD_EVENT,22104,self.now_select_rank_data.guild_id,self.model.selectId)
else
self.model:Fire(RankModel.REQUEST_CCMD_EVENT,22104,self.now_select_rank_data.role_id,self.model.selectId)
end
end
elseif self.rankTypeBtn_obj == click_obj then
if self.model.is_cs_rank then
self.model:Fire(RankModel.CHANGE_RANK_MIAN_TYPE)
end
elseif self.csTypeBtn_obj == click_obj then
local is_kf_state = true
local info = KfWorldModel:GetInstance():GetKfWorldInfo()
if IsTableEmpty(info) then
is_kf_state = false
end
if info and info.stage and info.stage == 0 then
is_kf_state = false
end
if not is_kf_state then
Message.show("跨服暂未开启")
return
end
if not self.model.is_cs_rank then
self.model:Fire(RankModel.CHANGE_RANK_MIAN_TYPE)
end
elseif self.kfRankIcon_obj == click_obj then
self:Close()
OpenFun.Open(331,10)
elseif self.fosterIcon_obj == click_obj then
if self.model.selectId == 1461 then--座驾
self:Close()
OpenFun.Open(146,1)
elseif self.model.selectId == 1462 then--炫翼
self:Close()
OpenFun.Open(146,2)
elseif self.model.selectId == 1463 then--宝具
self:Close()
OpenFun.Open(146,3)
elseif self.model.selectId == 1464 then--武器
self:Close()
OpenFun.Open(146,4)
elseif self.model.selectId == 1465 then--AI娘
self:Close()
OpenFun.Open(146,5)
elseif self.model.selectId == 1466 then--磁炮
self:Close()
OpenFun.Open(146,6)
elseif self.model.selectId == 1467 then--星翼
self:Close()
OpenFun.Open(146,7)
elseif self.model.selectId == 1468 then--幻甲
self:Close()
OpenFun.Open(146,8)
end
-- self:Close()
end
end
AddClickEvent(self.like_red_obj, on_click)
AddClickEvent(self.rankTypeBtn_obj, on_click)
AddClickEvent(self.csTypeBtn_obj, on_click)
AddClickEvent(self.kfRankIcon_obj, on_click)
AddClickEvent(self.fosterIcon_obj, on_click)
--切换跨服排行和本服排行
local function on_change_rank_main_type()
if self.tabWindowComponent then
self.tabWindowComponent:DeleteMe()
self.tabWindowComponent = nil
end
self.model.is_cs_rank = not self.model.is_cs_rank
local final_rank_tab_data = self.model:GetFinalRankTabData()
local now_rank_tab_data = self.model.is_cs_rank and RankView.CSTabData or final_rank_tab_data
self.need_tab_id = self.model:GetRankSubTypeData(self.model.is_cs_rank)
self.tabWindowComponent = UITabWindow.New(self.transform,now_rank_tab_data,self.switch_callback,
self.close_win_callback,self.background_wnd,self.winCon, UITabWindow.SizeLarge, false,6,true)
self.tabWindowComponent:SetTitleText("排行")
self.tabWindowComponent:SetUIBack({target = self, bg1 = GameResPath.GetViewBigBg("default_bg_2")})
-- self:MoveUIToBack(self.figure_bg)
self:ShowTabRedPointState()
--清空当前榜单信息,重新请求协议
self.model.selectId = 0
self.model.rank_info = nil
self.tabWindowComponent:SetTabBarIndex(1,1)
self:UpdateMainTypeTabCon()
end
self:BindEvent(self.model,RankModel.CHANGE_RANK_MIAN_TYPE,on_change_rank_main_type)
--刷新排行列表 每次打开一个榜单时都会请求协议刷新列表
local function on_update_rank_content()
self:CreateRankItems()
end
self:BindEvent(self.model,RankModel.UPDATE_RANK_CONTENT,on_update_rank_content)
--刷新点赞栏状态
local function on_update_like_con()
if self.model.selectId and self.now_select_rank_data then
local is_liked = self.model:GetRankLikeStateByTypeId(self.model.selectId, self.now_select_rank_data.role_id)
self.like_red_imgex.gray = not is_liked
end
end
self:BindEvent(self.model,RankModel.UPDATE_LIKE_CON,on_update_like_con)
--刷新点赞数
local function on_update_rank_like_num(rank_type,role_id,praise_num)
if self.model.selectId == 407 then
if rank_type == self.model.selectId and self.now_select_rank_data and self.now_select_rank_data.guild_id == role_id then
self.like_num_tmp.text = praise_num
end
else
if rank_type == self.model.selectId and self.now_select_rank_data and self.now_select_rank_data.role_id == role_id then
self.like_num_tmp.text = praise_num
end
end
end
self:BindEvent(self.model,RankModel.UPDATE_LIKE_NUM,on_update_rank_like_num)
--刷新跨服人物形象展示
local function on_update_cs_role_show(vo)
if self.model.is_cs_rank and self.now_select_rank_data and self.now_select_rank_data.player_id and self.now_select_rank_data.player_id == vo.role_id then
self:UpdateCSRoleShow(vo)
end
end
self:BindEvent(self.model,RankModel.UPDATE_CS_ROLE_SHOW,on_update_cs_role_show)
local function on_ans_update_red_dot()
self:ShowTabRedPointState()
end
self:BindEvent(self.model, RankModel.ANS_UPDATE_RED_DOT, on_ans_update_red_dot)
local function ChangeVisible( flag )
if not flag then
return
end
self:UpdateRoleShow(self.now_choose_rank_item_index)
end
self:BindEvent(GlobalEventSystem, BaseView.ChangeVisible, ChangeVisible)
end
function RankView:ShowTabRedPointState()
if self.model.is_cs_rank then
for k,v in pairs(Config.ConfigRank.CSRankTab) do
self.tabWindowComponent:ShowRedPoint(v.id, false)
end
else
local red_info = self.model:GetAllRedDot()
for k,v in pairs(Config.ConfigRank.RankTab) do
if v.id >= 1 and v.id <= 3 then
self.tabWindowComponent:ShowRedPoint(v.id, false)
else
self.tabWindowComponent:ShowRedPoint(v.id, red_info[v.id])
end
end
end
end
--创建排行榜列表并自动选中第一位,展示第一位的形象
function RankView:CreateRankItems()
local rank_info = self.model.rank_info
if rank_info == nil then
return
end
local top_data = {}
if self.model.is_cs_rank then
for i=1,3 do
if rank_info.top_three and rank_info.top_three[i] then
table.insert(top_data,rank_info.top_three[i])
else
local temp = {empty_data = true}
table.insert(top_data,temp)
end
end
else
for i=1,3 do
if rank_info.rank_list and rank_info.rank_list[i] then
table.insert(top_data,rank_info.rank_list[i])
else
local temp = {empty_data = true}
table.insert(top_data,temp)
end
end
end
for k,v in pairs(self.top_item_list) do
v:SetVisible(false)
end
for i,v in ipairs(top_data) do
local item = self.top_item_list[i]
if not item then
item = RankTopItem.New(self.topCon)
self.top_item_list[i] = item
end
item:SetVisible(true)
item:SetData(v,i)
if i == 1 then
item:SetAnchoredPosition(168, -14)
elseif i == 2 then
item:SetAnchoredPosition(-2, -14)
elseif i == 3 then
item:SetAnchoredPosition(338, -14)
end
end
local tar_index = 1
local update_item_fun = function (item, i, v)
local call_back = function (index)
tar_index = index
self:UpdateRoleShow(index)
self:UpdateEquipCon(index)
self:UpdateWarSoulCon(index)
self.rankitem_list_com:IterateItems(function( item, i )
item:SetSelect(i == tar_index)
end)
end
item:SetData(i,v,call_back, self.cur_need_tab_data, self.cur_tab_index)
item:SetSelect(i == tar_index)
end
self.rankitem_list_com = self.rankitem_list_com or self:AddUIComponent(UI.ItemListCreator)
self.rankitem_list_com:Reset()
local rankitem_all_info = {
data_list = rank_info.rank_list,
item_con = self.Content,
item_class = RankItem,
item_width = 511,
item_height = 51,
space_x = 0,
space_y = 0,
scroll_view = self.ScrollView,
create_frequency = 0.01,
reuse_item_num = 16,
on_update_item = update_item_fun,
}
self.rankitem_list_com:UpdateItems(rankitem_all_info)
--默认选中
if rank_info.rank_list[1] then
self.figureCon_obj:SetActive(true)
self.emptyCon_obj:SetActive(false)
self:UpdateRoleShow(1)
self:UpdateEquipCon(1)
self:UpdateWarSoulCon(1)
else
self.figureCon_obj:SetActive(false)
self.emptyCon_obj:SetActive(true)
end
--刷新个人排行栏
self:UpdateMyRank(rank_info)
end
--刷新我的排名栏
function RankView:UpdateMyRank(rank_info)
--自己的排行分数
local rank_score = 0
rank_score = rank_info.sel_val
self.myVipItem:SetData(RoleManager.Instance.mainRoleInfo.vip_flag,RoleManager.Instance.mainRoleInfo.sup_vip_type)
if self.model.is_cs_rank then
self.my_name_tmp.text = GetCSLongName(RoleManager.Instance.mainRoleInfo.name, RoleManager.Instance.mainRoleInfo.server_num)
else
self.my_name_tmp.text = RoleManager.Instance.mainRoleInfo.name
end
lua_resM:setImageSprite(self, self.my_sex_icon_img, "common_asset", RoleManager.Instance.mainRoleInfo.sex == 1 and "com_boy" or "com_girl",true)
local pos_x, pox_y = GetAnchoredPosition(self.my_name)
SetAnchoredPositionX(self.my_sex_icon,pos_x + self.my_name_tmp.preferredWidth -18)
--排名
if rank_info.role_rank >= 1 then
self.my_rank_num_tmp.fontSize = 22
self.my_rank_num_tmp.text = rank_info.role_rank
elseif rank_info.role_rank == 0 then
self.my_rank_num_tmp.fontSize = 16
self.my_rank_num_tmp.text = "榜外"
end
if self.model.selectId >= 2000 and self.model.selectId <= 2004 then--战力榜
self.my_rank_power_tmp.text = "战力:"..rank_score
elseif self.model.selectId >= 3000 and self.model.selectId <= 3004 then--等级榜
self.my_rank_power_tmp.text = "等级:"..rank_score
elseif self.model.selectId >= 1520 and self.model.selectId <= 1524 then--装备榜
self.my_rank_power_tmp.text = "战力:"..rank_score
elseif self.model.selectId == 411 or self.model.selectId == 413 or self.model.selectId == 112 then--称号&时装&聊天装扮
local my_suit_num = 0
if rank_info.sel_sec_val then
my_suit_num = rank_info.sel_sec_val
end
if self.model.selectId == 112 then
my_suit_num = rank_info.sel_val
end
self.my_rank_power_tmp.text = "收集数:"..my_suit_num
elseif self.model.selectId >= 1461 and self.model.selectId <= 1464 then--进阶
local foster_type_id = self.model.selectId - 1460
local my_grade, my_star = FosterModel:getInstance():GetGradeStarByType(foster_type_id)
self.my_rank_power_tmp.text = string.format(" %s阶%s星", my_grade, my_star)
elseif self.model.selectId >= 1465 and self.model.selectId <= 1468 then--ai娘
self.my_rank_power_tmp.text = "等级:"..rank_info.sel_sec_val
elseif self.model.selectId == 2231 then--人气值
self.my_rank_power_tmp.text = "人气:"..rank_score
elseif self.model.selectId == 2232 then--壕气值
self.my_rank_power_tmp.text = "壕气:"..rank_score
elseif self.model.selectId == 143 then--战魂
self.my_rank_power_tmp.text = "战力:"..rank_score
elseif self.model.selectId == 14600 then--进阶战力榜
self.my_rank_power_tmp.text = "战力:"..rank_score
elseif self.model.selectId == 14601 then--ai娘战力榜
self.my_rank_power_tmp.text = "战力:"..rank_score
end
end
--选中rankitem后展示形象的总入口
function RankView:UpdateRoleShow(index)
if not self.model.rank_info then return end
if not self.model.rank_info.rank_list then return end
local rank_data = self.model.rank_info.rank_list[index] -- 拿到排行榜数据列表
if not rank_data then return end
self.now_select_rank_data = rank_data
self.now_choose_rank_item_index = index
if self.model.is_cs_rank then--跨服排行榜不能直接拿到figure数据,需要单独请求
local cs_role_id = rank_data.player_id
self.model:Fire(RankModel.REQUEST_CCMD_EVENT, 22109, cs_role_id)
return
end
self:UpdateRankPower(rank_data)--形象栏战力 (跨服等级榜拿了figure再执行)
self:UpdateNameCon(rank_data)--名字栏
self:UpdateLikeCon(rank_data)--点赞栏 (跨服榜隐藏)
self.role_Con_obj:SetActive(true)
self.figure_bg_obj:SetActive(false)
if self.model.selectId >= 2000 and self.model.selectId <= 2004 then--战力榜
self:UpdateFigureShow(rank_data)--刷新人物模型
elseif self.model.selectId >= 3000 and self.model.selectId <= 3004 then--等级榜
self:UpdateFigureShow(rank_data)--刷新人物模型
elseif self.model.selectId >= 1520 and self.model.selectId <= 1524 then--装备榜
self.role_Con_obj:SetActive(false)--隐藏人物con
-- self.figure_bg_obj:SetActive(true)
elseif self.model.selectId == 411 or self.model.selectId == 413 or self.model.selectId == 112 then--称号&时装&聊天装扮
self:UpdateFigureShow(rank_data)--刷新人物模型
elseif self.model.selectId == 163 then--孩子
self:UpdateOtherFigureShow(rank_data)--刷新非人模型
elseif self.model.selectId >= 1461 and self.model.selectId <= 1468 then--进阶
self:UpdateOtherFigureShow(rank_data)--刷新非人模型
elseif self.model.selectId >= 2231 and self.model.selectId <= 2232 then--魅力
self:UpdateFigureShow(rank_data)--刷新人物模型
elseif self.model.selectId == 143 then--战魂
self.role_Con_obj:SetActive(false)--隐藏人物con
elseif self.model.selectId == 14600 then--进阶战力榜
self:UpdateFigureShow(rank_data)--刷新人物模型
elseif self.model.selectId == 14601 then--ai娘战力榜
self:UpdateOtherFigureShow(rank_data)--刷新非人模型
end
end
function RankView:UpdateCSRoleShow(vo)
self.role_Con_obj:SetActive(true)
self.figure_bg_obj:SetActive(false)
self:UpdateRankPower(self.now_select_rank_data,vo)--形象栏战力 (跨服等级榜拿了figure再执行)
self:UpdateLikeCon(self.now_select_rank_data)--点赞栏 (跨服榜隐藏)
if self.model.selectId >= 2000 and self.model.selectId <= 2004 then--战力榜
self:UpdateFigureShow(vo)--刷新人物模型
elseif self.model.selectId >= 3000 and self.model.selectId <= 3004 then--等级榜
self:UpdateFigureShow(vo)--刷新人物模型
end
end
function RankView:UpdateEquipCon(index)
if self.model.selectId >= 1520 and self.model.selectId <= 1524 then--装备榜 then
self.equip_con_obj:SetActive(true)
else
self.equip_con_obj:SetActive(false)
return
end
local rank_data = self.model.rank_info.rank_list[index] -- 拿到排行榜数据列表
self.now_select_rank_data = rank_data
if not self.rank_equip_view then
self.rank_equip_view = RankEquipView.New(self.equip_con)
end
self.rank_equip_view:SetData(self.now_select_rank_data)
end
function RankView:UpdateWarSoulCon(index)
if self.model.selectId == 143 then
self.warSoul_con_obj:SetActive(true)
else
self.warSoul_con_obj:SetActive(false)
return
end
local rank_data = self.model.rank_info.rank_list[index] -- 拿到排行榜数据列表
self.now_select_rank_data = rank_data
if not self.rank_warSoul_view then
self.rank_warSoul_view = RankWarSoulView.New(self.warSoul_con)
end
self.rank_warSoul_view:SetAnchoredPosition(-15,0)
self.rank_warSoul_view:SetData(rank_data)
end
--刷新称号栏
function RankView:UpdateNameCon(rank_data)
self.designation_con_obj:SetActive(false)
if self.model.selectId >= 2000 and self.model.selectId <= 2004 --战力榜
or self.model.selectId >= 3000 and self.model.selectId <= 3004 --等级榜
or self.model.selectId == 2231 --人气值
or self.model.selectId == 407 --社团
or self.model.selectId == 2232 then--壕气值
--无
elseif self.model.selectId >= 1520 and self.model.selectId <= 1524 then --装备榜
--无
elseif self.model.selectId == 411 or self.model.selectId == 413 or self.model.selectId == 112 then--称号&时装&聊天装扮
self.designation_con_obj:SetActive(true)
self.designation_small_image_obj:SetActive(false)
self.designation_image_obj:SetActive(false)
self.name_text_tmp.text = ""
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.designation_image)
local dsgt_cfg = Config.Dsgt[rank_data.dsgt_id]
if self.dynamic_image_obj then
self.dynamic_image_obj:SetActive(false)
end
if dsgt_cfg then
if dsgt_cfg.type == 1 then--文字称号(文字称号也用图片了)
lua_resM:setOutsideImageSprite(self, self.designation_small_image_img, GameResPath.GetDesignImage(dsgt_cfg.id), true)
self.designation_small_image_obj:SetActive(true)
elseif dsgt_cfg.type == 2 then
lua_resM:setOutsideImageSprite(self, self.designation_image_img, GameResPath.GetDesignImage(dsgt_cfg.id), true)
self.designation_image_obj:SetActive(true)
elseif dsgt_cfg.type == 3 then
if not self.dynamic_image_obj then
self.dynamic_image_obj = UiFactory.createChild(self.designation_image, UIType.Image, "dynamic_image")
self.dynamic_image_img = self.dynamic_image_obj:GetComponent("Image")
self.dynamic_image = self.dynamic_image_obj.transform
SetAnchoredPosition(self.dynamic_image,0,0)
else
self.dynamic_image_obj:SetActive(true)
end
SetSizeDelta(self.designation_image, 210*0.8,90*0.8)
self.designation_image_obj:SetActive(true)
local data = DeepCopy(DesignationModel:GetInstance():GetDynamicDesignationCFG(dsgt_cfg.id))
for i,v in ipairs(data) do
v.not_auto_size = true
end
local res = Split(data[1].res,"_")--分割出来配置 然后取文字
local font_res = res[1] or ""
lua_resM:setImageSprite(self, self.dynamic_image_img, data[1].ab, font_res.."_font", false)
local action = cc.Animation.New(data,0.15)
cc.ActionManager:getInstance():addAction(cc.RepeatForever.New(action),self.designation_image.transform)
end
end
elseif self.model.selectId == 143 then--战魂
--无
elseif self.model.selectId >= 1461 and self.model.selectId <= 1468 then--进阶
--无
elseif self.model.selectId == 14600 then--进阶战力榜
--无
elseif self.model.selectId == 14601 then--ai娘战力榜
--无
end
end
function RankView:GetFosterName(pet_type,id)
local foster_type = pet_type - 1460
for k,v in pairs(Config.Foster) do
if foster_type == v.type and id == v.grade then
return Trim(v.name)
end
end
return "暂无数据"
end
function RankView:GetFosterResource(pet_type,id)
id = id > 10 and 10 or id
local foster_type = pet_type - 1460
for k,v in pairs(Config.Foster) do
if foster_type == v.type and id == v.grade then
return v.resource
end
end
return 1000
end
--刷新点赞栏
function RankView:UpdateLikeCon(rank_data)
if self.model.is_cs_rank then
self.like_red_obj:SetActive(false)
self.like_num_tmp.text = ""
else
self.like_red_obj:SetActive(true)
local is_liked = self.model:GetRankLikeStateByTypeId(self.model.selectId, self.now_select_rank_data.role_id)
self.like_red_imgex.gray = not is_liked
self.like_num_tmp.text = rank_data.praise_num
end
end
--刷新排行榜分数栏
function RankView:UpdateRankPower(rank_data,figure)
local power_type_label = "战力"
if not self.model.is_cs_rank then
if self.model.selectId >= 2000 and self.model.selectId <= 2004 then--战力榜
self.rank_power_txt.text = rank_data.first_value
elseif self.model.selectId >= 3000 and self.model.selectId <= 3004 then--等级榜
self.rank_power_txt.text = rank_data.power
elseif self.model.selectId >= 1520 and self.model.selectId <= 1524 then--装备榜
self.rank_power_txt.text = rank_data.first_value
elseif self.model.selectId == 411 or self.model.selectId == 413 or self.model.selectId == 112 then--称号&时装&聊天装扮
self.rank_power_txt.text = rank_data.second_value
elseif self.model.selectId >= 1461 and self.model.selectId <= 1468 then--进阶和ai娘
self.rank_power_txt.text = rank_data.third_value
local rank_tab_data = self.model:GetRankTabDataByType(self.model.selectId)
if rank_tab_data then
power_type_label = rank_tab_data.name.."战力"
end
elseif self.model.selectId == 2231 then--人气值
self.rank_power_txt.text = rank_data.power
elseif self.model.selectId == 2232 then--壕气值
self.rank_power_txt.text = rank_data.power
elseif self.model.selectId == 143 then--战魂
self.rank_power_txt.text = rank_data.first_value
elseif self.model.selectId == 14600 then--进阶战力榜
self.rank_power_txt.text = rank_data.first_value
elseif self.model.selectId == 14601 then--ai娘战力榜
self.rank_power_txt.text = rank_data.first_value
end
elseif self.model.is_cs_rank and figure then
if self.model.selectId >= 2000 and self.model.selectId <= 2004 then--战力榜
self.rank_power_txt.text = rank_data.first_value
elseif self.model.selectId >= 3000 and self.model.selectId <= 3004 then--等级榜
self.rank_power_txt.text = figure.power
end
end
if self.model.selectId >= 1461 and self.model.selectId <= 1468 then
SetAnchoredPositionX(self.rank_power, 55)
SetAnchoredPositionX(self.power_type_label, 55 - self.rank_power_txt.preferredWidth/2 -25 )
else
SetAnchoredPositionX(self.rank_power, 32)
SetAnchoredPositionX(self.power_type_label, 32 - self.rank_power_txt.preferredWidth/2 -25 )
end
self.power_type_label_tmp.text = power_type_label
end
--展示人物模型(战力等级装备外观魅力等榜都需要展示人物模型)
function RankView:UpdateFigureShow(rank_data)
if self.model.selectId == 14600 then--进阶总战力榜 人物身上的翅膀武器宝具要替换成阶数对应的
local f_grade_data = stringtotable(rank_data.extra_values)
local talisman_id = nil
local wing_id = nil
local weapon_res_id = nil
if f_grade_data then
for k,v in pairs(f_grade_data) do
if v[1] == FosterConst.ModuleId.FWing then--炫翼
wing_id = self:GetFosterResource(v[1]+1460,v[2])
elseif v[1] == FosterConst.ModuleId.FPearl then--宝具
talisman_id = self:GetFosterResource(v[1]+1460,v[2])
elseif v[1] == FosterConst.ModuleId.FWeapon then--武器
weapon_res_id = GameResPath:GetFWeaponResName( rank_data.career,self:GetFosterResource(v[1]+1460,v[2]) )
end
end
end
local res_data = {
father_node = self,
transform = self.role_Con,
fashion_type = FuncOpenModel.TypeId.Clothes,
role_vo = rank_data,
scale = 255,
raycast_size = Vector2(340,460),
ui_model_type = UIModelCommon.ModelType.BackModel,
talisman_id = talisman_id,
wing_id = wing_id,
weapon_res_id = weapon_res_id,
light_id = rank_data.light_id,
-- position = Vector3(0,30,0)
}
FuncOpenModel:getInstance():SetModelRes(res_data)
else
local talisman_id = GetTalismanClotheId(rank_data)
local res_data = {
father_node = self,
transform = self.role_Con,
fashion_type = FuncOpenModel.TypeId.Clothes,
role_vo = rank_data,
scale = 255,
raycast_size = Vector2(340,460),
ui_model_type = UIModelCommon.ModelType.BackModel,
talisman_id = talisman_id,
light_id = rank_data.light_id,
-- position = Vector3(0,30,0)
}
FuncOpenModel:getInstance():SetModelRes(res_data)
end
end
--展示非人物模型
function RankView:UpdateOtherFigureShow(rank_data)
if self.model.selectId == 14601 then--ai娘战力榜 这个榜要展示ai娘的全套装备,要传一个show_jarvis_all_figure_data进去
local f_grade_data = stringtotable(rank_data.extra_values)
local show_jarvis_all_figure_data = nil
if f_grade_data then
show_jarvis_all_figure_data = {}
for k,v in pairs(f_grade_data) do
if v[1] == FosterConst.ModuleId.FJarvis then--AI娘
show_jarvis_all_figure_data.f_jarvis_figure_id = self:GetFosterResource(v[1]+1460,v[2])
elseif v[1] == FosterConst.ModuleId.FGun then--磁炮
show_jarvis_all_figure_data.f_gun_figure_id = self:GetFosterResource(v[1]+1460,v[2])
elseif v[1] == FosterConst.ModuleId.FCloud then--星翼
show_jarvis_all_figure_data.f_cloud_figure_id = self:GetFosterResource(v[1]+1460,v[2])
elseif v[1] == FosterConst.ModuleId.FArmour then--幻甲
show_jarvis_all_figure_data.f_armour_figure_id = self:GetFosterResource(v[1]+1460,v[2])
end
end
end
local res_data = {
father_node = self,
transform = self.role_Con,
fashion_type = 1005,
figure_id = show_jarvis_all_figure_data and show_jarvis_all_figure_data.f_jarvis_figure_id or 0,
show_jarvis_all_figure_data = show_jarvis_all_figure_data,
-- scale = 255,
raycast_size = Vector2(340,460),
ui_model_type = UIModelCommon.ModelType.BackModel,
}
FuncOpenModel:getInstance():SetModelRes(res_data)
else
local res_data = {
father_node = self,
transform = self.role_Con,
fashion_type = self.model.selectId-1460+1000,
figure_id = self:GetFosterResource(self.model.selectId,rank_data.first_value),
career = rank_data.career,
-- scale = 255,
raycast_size = Vector2(340,460),
ui_model_type = UIModelCommon.ModelType.BackModel,
}
FuncOpenModel:getInstance():SetModelRes(res_data)
end
end
--切换页签时候同时切换到该榜单的子类型榜单
function RankView:SwitchTab(index,sub_id)
--先创建子类型列表
for k,v in pairs(self.item_list) do
v:SetVisible(false)
end
--要是传进来的index所属的排行榜未开放,换一个榜显示
if not self.need_tab_id[index] then
-- local new_index = 0
-- for k,v in pairs(self.need_tab_id) do
-- new_index = v.id
-- end
-- if new_index ~= 0 then
-- index = new_index
-- else
-- return
-- end
index = RankModel.TabId.Power
end
self.cur_tab_index = index
self:DoOpenAni(index)
self.tabWindowComponent:SetTabBarIndex(self.cur_tab_index,false,true)
local function call_back(data)
self.cur_need_tab_data = data
if self.model.selectId == 407 then
self.subTypeCon_obj:SetActive(false)
else
self.subTypeCon_obj:SetActive(true)
end
end
for i,v in ipairs(self.need_tab_id[index].sub_tab) do
local item = self.item_list[i]
if not item then
item = RankSubTypeItem.New(self.subTypeCon)
self.item_list[i] = item
end
if self.model.is_cs_rank then
item:SetVisible(true)
else
item:SetVisible(index > 3)
end
item:SetData(i,v,call_back,self.cur_tab_index)
item:OnClick(sub_id)
end
self.kfRankIcon_obj:SetActive(index <= 3 and not self.model.is_cs_rank)
self:AddUIEffect("ui_bianqiang", self.kfEffect, self.layer_name, nil, {x=1,y=1}, true, nil,nil,nil,nil,nil)
self.fosterIcon_obj:SetActive(index <= 3 and not self.model.is_cs_rank)
if self.model.is_cs_rank then
self.mainTypeCon_obj:SetActive(true)
else
self.mainTypeCon_obj:SetActive(index > 3)
end
SetSizeDeltaY(self.subTypeCon, 72*#self.need_tab_id[index].sub_tab+2)
end
function RankView:DestroySuccess( )
self.model:Reset()
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.designation_image)
self:ClearUIEffect(self.kfEffect)
if self.tabWindowComponent then
self.tabWindowComponent:DeleteMe()
self.tabWindowComponent = nil
end
for i, v in ipairs(self.item_list) do
v:DeleteMe()
end
self.item_list = {}
for i, v in ipairs(self.kf_rush_rank_tab_item_list) do
v:DeleteMe()
end
self.kf_rush_rank_tab_item_list = {}
for i, v in ipairs(self.top_item_list) do
v:DeleteMe()
end
self.top_item_list = {}
if self.rank_equip_view then
self.rank_equip_view:DeleteMe()
self.rank_equip_view = nil
end
if self.rank_warSoul_view then
self.rank_warSoul_view:DeleteMe()
self.rank_warSoul_view = nil
end
if self.myVipItem then
self.myVipItem:DeleteMe()
self.myVipItem = nil
end
end