源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

334 lines
8.6 KiB

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