SkillUIModel = SkillUIModel or BaseClass(BaseVo, true) local SkillUIModel = SkillUIModel SkillUIModel.Skill_Type = { Goods = 1, Skill = 2, } SkillUIModel.Hook_Type = { NoAuto = 0, Auto = 1, } SkillUIModel.Click_SkillItem = { CareerList = 1, ConfigList = 2, ConfigSolt = 3, SkillLevelShow = 4, } SkillUIModel.UPDATE_TAB_DOT = "SkillUIModel.UPDATE_TAB_DOT" SkillUIModel.OPEN_SKILL_UPLEVEL_PREVIEW = "SkillUIModel.OPEN_SKILL_UPLEVEL_PREVIEW" SkillUIModel.CLOSE_SKILL_UPLEVEL_PREVIEW = "SkillUIModel.CLOSE_SKILL_UPLEVEL_PREVIEW" SkillUIModel.OPEN_SKILL_CONFIG_VIEW = "SkillUIModel.OPEN_SKILL_CONFIG_VIEW" SkillUIModel.CLICK_SKILL_ITEM = "SkillUIModel.CLICK_SKILL_ITEM" SkillUIModel.DRAG_SKILL_ITEM_BEGIN = "SkillUIModel.DRAG_SKILL_ITEM_BEGIN" SkillUIModel.DRAG_SKILL_ITEM_END = "SkillUIModel.DRAG_SKILL_ITEM_END" SkillUIModel.SKILL_UP_SUCCESS = "SkillUIModel.SKILL_UP_SUCCESS" SkillUIModel.CHANGE_AUTO_DAILY_SKILL_STATE = "SkillUIModel.CHANGE_AUTO_DAILY_SKILL_STATE" SkillUIModel.CLOSE_AUTO_DAILY_TISP = "SkillUIModel.CLOSE_AUTO_DAILY_TISP" function SkillUIModel:__init() SkillUIModel.Instance = self --红点 self.skill_red = {} self.is_level_up = false self.skill_cfg = false end function SkillUIModel:getInstance() if SkillUIModel.Instance == nil then SkillUIModel.New() end return SkillUIModel.Instance end --获取职业基本的技能信息。不跟快捷栏挂钩 function SkillUIModel:GetCareerBaseSkillList() local skill_vo local skill_list = {} local skill_mgr = SkillManager:getInstance() local key = RoleManager.Instance.mainRoleInfo.career .. "@" .. RoleManager.Instance.mainRoleInfo.sex local config_list = Config.ConfigSkillUI.shortCutSkill_list[key] if config_list then for id,_ in pairs(config_list) do skill_vo = skill_mgr:getSkill(id) if skill_vo then table.insert(skill_list, skill_vo) end end end local sort_func = function ( a,b ) return a.id < b.id end table.sort(skill_list,sort_func) --升序排序 return skill_list end --获取职业基本的技能id列表 function SkillUIModel:GetCareerSkillListByTurn(turn) local skill_list = {} local key = RoleManager.Instance.mainRoleInfo.career .. "@" .. RoleManager.Instance.mainRoleInfo.sex local config_list = Config.ConfigSkillUI.shortCutSkill_list[key] if config_list then for id,_ in pairs(config_list) do table.insert(skill_list, id) end end local sort_func = function ( a,b ) return a < b end table.sort(skill_list,sort_func) --升序排序 return skill_list end --获取职业主动技能id列表 function SkillUIModel:GetAllCareerSkillList() local career = RoleManager.Instance.mainRoleInfo.career or 1 return Config.ConfigSkillUI.CareerSkill[career] end --获取职业特殊技能id列表 function SkillUIModel:GetAllSpecialSkillList() local career = RoleManager.Instance.mainRoleInfo.career or 1 return Config.ConfigSkillUI.SpecialSkill[career] end --获取传说技能id列表 function SkillUIModel:GetAllLegendlSkillSkillList() local career = RoleManager.Instance.mainRoleInfo.career or 1 return Config.ConfigSkillUI.LegendlSkill[career] end --获取主动技能列表(上阵) function SkillUIModel:GetMyInitiativeSkillList() local t = {} local list = self:GetAllCareerSkillList() local skill_mgr = SkillManager:getInstance() local turn = 1 for i,v in ipairs(list) do t[turn] = {} for ii,id in ipairs(v) do local skill_vo = skill_mgr:getSkill(id) if skill_vo and skill_vo:GetSkillType() == 1 then table.insert(t[turn], id) end end turn = turn + 1 end local my_turn = RoleManager:getInstance():GetMainRoleVo().turn if my_turn >= 2 then local list = self:GetAllLegendlSkillSkillList() for i,v in ipairs(list) do t[turn] = {} for ii,id in ipairs(v) do local skill_vo = skill_mgr:getSkill(id) if skill_vo and skill_vo:GetSkillType() == 1 then table.insert(t[turn], id) end end turn = turn + 1 end end return t end --获取职业被动技能id列表 function SkillUIModel:GetSKillUITab(enum) local career = RoleManager.Instance.mainRoleInfo.career or 1 return Config.ConfigSkillUI.UITab[enum][career] end function SkillUIModel:CheckRedDot() self.skill_red = {} local function call_backack() local b = false for k,v in pairs(Config.ConfigSkillUI.TabEnum) do local can_up = self:CheckSkillRedDot(true, v) b = b or can_up end GlobalEventSystem:Fire(EventName.SHOW_FUNCTION_RED_POINT,3, b) self:Fire(SkillUIModel.UPDATE_TAB_DOT) end TimeManager.GetInstance():StartTime("SkillUIModel_CheckRedDot", 0.5, call_backack) end function SkillUIModel:IsSkillTypeUnLock( type_id ) local tab_info = Config.ConfigSkillUI.Tab[type_id] local turn = RoleManager:getInstance():GetMainRoleVo().turn if tab_info and turn < tab_info.turn then return false else return true end end function SkillUIModel:CheckSkillRedDot(check_new, type_id) if not type_id then return false end if not self:IsSkillTypeUnLock(type_id) then return false end if check_new or self.skill_red[type_id] == nil then local skill_mgr = SkillManager:getInstance() local t = {} if type_id == Config.ConfigSkillUI.TabEnum.CareerSkill then t = self:GetAllCareerSkillList() elseif type_id == Config.ConfigSkillUI.TabEnum.SpecialSkill then t = self:GetAllSpecialSkillList() elseif type_id == Config.ConfigSkillUI.TabEnum.LegendlSkill then t = self:GetAllLegendlSkillSkillList() else return false end local b = false local list = {} for i,v in ipairs(t) do if type(v) == "table" then for ii,vv in ipairs(v) do table.insert(list, vv) end else table.insert(list, v) end end for i,v in ipairs(list) do local skill_vo = skill_mgr:getSkill(v) if skill_vo then local can_up = skill_vo:CanUp() if can_up then b = true break end end end self.skill_red[type_id] = b end return self.skill_red[type_id] end function SkillUIModel:GetRowCol(num, col_num) local row = 0 local col = 0 if col_num and col_num > 0 and num and num > 0 then row = math.floor((num - 1) / col_num ) + 1 col = (num - 1) % col_num +1 end return row, col end function SkillUIModel:GetSelectSkillIdByIdList(skill_id_list) if skill_id_list then for i,v in ipairs(skill_id_list) do if type(v) == "table" then for ii,vv in ipairs(v) do return vv end else return v end end end return 0 end --获取技能方案 function SkillUIModel:GetSkillPlan(plan) local t = {0, 0, 0, 0, 0, 0 , 0 , 0} local all_skill = SkillManager:getInstance().all_plan_skill if all_skill and all_skill[plan] and all_skill[plan].shortcutList then for k,v in pairs(all_skill[plan].shortcutList) do t[k] = v.id end end return t end --获取激活幻光技能的道具 function SkillUIModel:GetDailySkillItem(skill_id, level) local config = Config.Visus local t = false for k,v in pairs(config) do local skillinfo = stringtotable(v.skill) if skillinfo and skillinfo[1] == skill_id and skillinfo[2] == level then t = v end end return t end --获取转生职业名字 function SkillUIModel:GetTurnName(turn) local career = RoleManager:getInstance():GetMainRoleVo().career local cfg = Config.Transfercareer local career_name = "" for k,v in pairs(cfg) do if v.career == career and v.transfer_id == turn then career_name = Trim(v.name) break end end return career_name end --获取当前场景推荐幻光技能 function SkillUIModel:GetRecommendDailySkillId() local skill_id = 0 local info = SceneManager.Instance:GetSceneInfo() local cfg = Config.Visusskill if info and cfg then for k,v in pairs(cfg) do if v.scene_type == info.type then skill_id = v.skill_id break end end end return skill_id end --获取当前场景推荐幻光技能 function SkillUIModel:IsAutoChangeDailySkillid() local cfg = self:GetAutoDailySkillCookie() return cfg.auto_change_daily_skill_state end --获取当前场景推荐幻光技能 function SkillUIModel:SetAutoChangeDailyState(b) local cfg = self:GetAutoDailySkillCookie() cfg.auto_change_daily_skill_state = b self:Fire(SkillUIModel.CHANGE_AUTO_DAILY_SKILL_STATE) self:SetAutoDailySkillCookie() end --设置集字红点提示cookie function SkillUIModel:SetAutoDailySkillCookie( ) self.skill_cfg = self.skill_cfg or {} CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.AUTO_CHNAGE_DAILY_SKILL,self.skill_cfg) CookieWrapper.Instance:WriteAll() end --获得集字红点提示cookie function SkillUIModel:GetAutoDailySkillCookie( ) if not self.skill_cfg then self.skill_cfg = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.AUTO_CHNAGE_DAILY_SKILL) or {} end return self.skill_cfg end