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
|