SkillMainView = SkillMainView or BaseClass(BaseView) local SkillMainView = SkillMainView SkillMainView.Tab_list = { {id = Config.ConfigSkillUI.TabEnum.CareerSkill, tab_id = Config.ConfigSkillUI.TabEnum.CareerSkill, name = "职业技能", light_res = "icon_jn1_1", dark_res = "icon_jn1_2" }, {id = Config.ConfigSkillUI.TabEnum.SpecialSkill, tab_id = Config.ConfigSkillUI.TabEnum.SpecialSkill, name = "特殊技能", light_res = "icon_bd1_1", dark_res = "icon_bd1_2"}, {id = Config.ConfigSkillUI.TabEnum.LegendlSkill, tab_id = Config.ConfigSkillUI.TabEnum.LegendlSkill, name = "传说技能", light_res = "icon_jn1_1", dark_res = "icon_jn1_2" }, } function SkillMainView:__init() self.base_file = "skillui" self.layout_file = "SkillMainView" self.layer_name = "UI" self.use_background = true self.hide_maincancas = true self.use_background = G_USING_BG self.skillui_model = SkillUIModel:getInstance() self.append_to_ctl_queue = true self.view_index = false self.blur_activity_bg = true self.use_show_anim = true self.use_hide_anim = true self.show_tabs = {} self.tab_name_list = {} self.contaner_list = {} local open_day = ServerTimeModel:getInstance():GetOpenServerDay() local playerLv = RoleManager:getInstance():GetMainRoleVo().level local turn = RoleManager:getInstance():GetMainRoleVo().turn for i, v in ipairs(SkillMainView.Tab_list) do local config = Config.ConfigSkillUI.Tab[v.tab_id] if config and config.open_level <= playerLv and config.open_day <= open_day then table.insert(self.show_tabs, v) table.insert(self.tab_name_list, v) end end self.load_callback = function () self:LoadSuccess() self:InitEvent() end self.open_callback = function () self:SeletedTabbar(self.oepn_index, true) end self.close_callback = function () self:Remove() end end function SkillMainView:Open(index,select_up_skill) self.oepn_index = index or 1 self.select_up_skill = select_up_skill for index, v in ipairs(self.show_tabs) do if self.oepn_index == v.tab_id then self.oepn_index = index break end end BaseView.Open(self) end function SkillMainView:Remove() if self.refresh_red_point_id then self.skillui_model:UnBind(self.refresh_red_point_id) self.refresh_red_point_id = nil end for i, view in pairs(self.contaner_list) do view:DeleteMe() end if self.tabWindowComponent then self.tabWindowComponent:DeleteMe() self.tabWindowComponent = nil end self.contaner_list = nil if self.base_view then self.base_view:DeleteMe() self.base_view = nil end if self.config_view then self.config_view:DeleteMe() self.config_view = nil end if self.special_view then self.special_view:DeleteMe() self.special_view = nil end end function SkillMainView:LoadSuccess() self.winCon = self:GetChild("winCon") local select_callback = function(index) self:SeletedTabbar(index) self:ShowTabRedPointState() end local closeWin_callback = function() self:Close() end self.tabWindowComponent = UITabWindow.New(self.transform,self.tab_name_list,select_callback,closeWin_callback,self.background_wnd,self.winCon, UITabWindow.SizeSmallHall, false,nil,true) self.tabWindowComponent:SetBackgroundRes("skill_main_bg") self.tabWindowComponent:SetTitleText("技能") end function SkillMainView:SeletedTabbar(index, force) if self.select_index == index and not force then return end local tab_info = Config.ConfigSkillUI.Tab[self.show_tabs[index].tab_id] local turn = RoleManager:getInstance():GetMainRoleVo().turn if turn < tab_info.turn then self.select_index = self.select_index or 1 Message.show("达成传说职业后可解锁!") else self.select_index = index end if self.tabWindowComponent ~= nil then self.tabWindowComponent:SetTabBarIndex(self.select_index) self:UpdateView() end end function SkillMainView:InitEvent() local function RedDotRefresh( ) self:ShowTabRedPointState() end self:BindEvent(self.skillui_model, SkillUIModel.UPDATE_TAB_DOT, RedDotRefresh) local function onGetSkillShortCut( ) self:UpdateView() end self:BindEvent(GlobalEventSystem, EventName.GET_SKILL_SHORTCUT, onGetSkillShortCut) end function SkillMainView:UpdateView() local index = self.tabWindowComponent:GetCurrentSelectIndex() if not self.show_tabs[index] then return end if not self.base_view then self.base_view = CareerSkillView.New(self.winCon, nil, self.layer_name) end self.base_view:SetVisible(true) self:ResetView() local tab_id = self.show_tabs[index].tab_id if tab_id == Config.ConfigSkillUI.TabEnum.CareerSkill then self.base_view:SetData(self.skillui_model:GetAllCareerSkillList(), tab_id, SkillUIDetailItem.UIType.PreViewMode, self.select_up_skill) elseif tab_id == Config.ConfigSkillUI.TabEnum.SpecialSkill then self.base_view:SetData(self.skillui_model:GetAllSpecialSkillList(), tab_id, SkillUIDetailItem.UIType.PreViewMode, self.select_up_skill) elseif tab_id == Config.ConfigSkillUI.TabEnum.LegendlSkill then self.base_view:SetData(self.skillui_model:GetAllLegendlSkillSkillList(), tab_id, SkillUIDetailItem.UIType.PreViewMode, self.select_up_skill) end self.select_up_skill = false end function SkillMainView:ShowTabRedPointState() self.tabWindowComponent:ShowRedPoint(Config.ConfigSkillUI.TabEnum.CareerSkill,self.skillui_model:CheckSkillRedDot( false,Config.ConfigSkillUI.TabEnum.CareerSkill )) self.tabWindowComponent:ShowRedPoint(Config.ConfigSkillUI.TabEnum.SpecialSkill,self.skillui_model:CheckSkillRedDot( false,Config.ConfigSkillUI.TabEnum.SpecialSkill )) self.tabWindowComponent:ShowRedPoint(Config.ConfigSkillUI.TabEnum.LegendlSkill,self.skillui_model:CheckSkillRedDot( false,Config.ConfigSkillUI.TabEnum.LegendlSkill )) end function SkillMainView:ResetView() if self.config_view then self.config_view:SetVisible(false) end if self.special_view then self.special_view:SetVisible(false) end end