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>十分钟刷新一次" 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>五分钟刷新一次" 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