源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

333 行
8.6 KiB

  1. SkillUIModel = SkillUIModel or BaseClass(BaseVo, true)
  2. local SkillUIModel = SkillUIModel
  3. SkillUIModel.Skill_Type =
  4. {
  5. Goods = 1,
  6. Skill = 2,
  7. }
  8. SkillUIModel.Hook_Type =
  9. {
  10. NoAuto = 0,
  11. Auto = 1,
  12. }
  13. SkillUIModel.Click_SkillItem =
  14. {
  15. CareerList = 1,
  16. ConfigList = 2,
  17. ConfigSolt = 3,
  18. SkillLevelShow = 4,
  19. }
  20. SkillUIModel.UPDATE_TAB_DOT = "SkillUIModel.UPDATE_TAB_DOT"
  21. SkillUIModel.OPEN_SKILL_UPLEVEL_PREVIEW = "SkillUIModel.OPEN_SKILL_UPLEVEL_PREVIEW"
  22. SkillUIModel.CLOSE_SKILL_UPLEVEL_PREVIEW = "SkillUIModel.CLOSE_SKILL_UPLEVEL_PREVIEW"
  23. SkillUIModel.OPEN_SKILL_CONFIG_VIEW = "SkillUIModel.OPEN_SKILL_CONFIG_VIEW"
  24. SkillUIModel.CLICK_SKILL_ITEM = "SkillUIModel.CLICK_SKILL_ITEM"
  25. SkillUIModel.DRAG_SKILL_ITEM_BEGIN = "SkillUIModel.DRAG_SKILL_ITEM_BEGIN"
  26. SkillUIModel.DRAG_SKILL_ITEM_END = "SkillUIModel.DRAG_SKILL_ITEM_END"
  27. SkillUIModel.SKILL_UP_SUCCESS = "SkillUIModel.SKILL_UP_SUCCESS"
  28. SkillUIModel.CHANGE_AUTO_DAILY_SKILL_STATE = "SkillUIModel.CHANGE_AUTO_DAILY_SKILL_STATE"
  29. SkillUIModel.CLOSE_AUTO_DAILY_TISP = "SkillUIModel.CLOSE_AUTO_DAILY_TISP"
  30. function SkillUIModel:__init()
  31. SkillUIModel.Instance = self
  32. --红点
  33. self.skill_red = {}
  34. self.is_level_up = false
  35. self.skill_cfg = false
  36. end
  37. function SkillUIModel:getInstance()
  38. if SkillUIModel.Instance == nil then
  39. SkillUIModel.New()
  40. end
  41. return SkillUIModel.Instance
  42. end
  43. --获取职业基本的技能信息。不跟快捷栏挂钩
  44. function SkillUIModel:GetCareerBaseSkillList()
  45. local skill_vo
  46. local skill_list = {}
  47. local skill_mgr = SkillManager:getInstance()
  48. local key = RoleManager.Instance.mainRoleInfo.career .. "@" .. RoleManager.Instance.mainRoleInfo.sex
  49. local config_list = Config.ConfigSkillUI.shortCutSkill_list[key]
  50. if config_list then
  51. for id,_ in pairs(config_list) do
  52. skill_vo = skill_mgr:getSkill(id)
  53. if skill_vo then
  54. table.insert(skill_list, skill_vo)
  55. end
  56. end
  57. end
  58. local sort_func = function ( a,b )
  59. return a.id < b.id
  60. end
  61. table.sort(skill_list,sort_func) --升序排序
  62. return skill_list
  63. end
  64. --获取职业基本的技能id列表
  65. function SkillUIModel:GetCareerSkillListByTurn(turn)
  66. local skill_list = {}
  67. local key = RoleManager.Instance.mainRoleInfo.career .. "@" .. RoleManager.Instance.mainRoleInfo.sex
  68. local config_list = Config.ConfigSkillUI.shortCutSkill_list[key]
  69. if config_list then
  70. for id,_ in pairs(config_list) do
  71. table.insert(skill_list, id)
  72. end
  73. end
  74. local sort_func = function ( a,b )
  75. return a < b
  76. end
  77. table.sort(skill_list,sort_func) --升序排序
  78. return skill_list
  79. end
  80. --获取职业主动技能id列表
  81. function SkillUIModel:GetAllCareerSkillList()
  82. local career = RoleManager.Instance.mainRoleInfo.career or 1
  83. return Config.ConfigSkillUI.CareerSkill[career]
  84. end
  85. --获取职业特殊技能id列表
  86. function SkillUIModel:GetAllSpecialSkillList()
  87. local career = RoleManager.Instance.mainRoleInfo.career or 1
  88. return Config.ConfigSkillUI.SpecialSkill[career]
  89. end
  90. --获取传说技能id列表
  91. function SkillUIModel:GetAllLegendlSkillSkillList()
  92. local career = RoleManager.Instance.mainRoleInfo.career or 1
  93. return Config.ConfigSkillUI.LegendlSkill[career]
  94. end
  95. --获取主动技能列表(上阵)
  96. function SkillUIModel:GetMyInitiativeSkillList()
  97. local t = {}
  98. local list = self:GetAllCareerSkillList()
  99. local skill_mgr = SkillManager:getInstance()
  100. local turn = 1
  101. for i,v in ipairs(list) do
  102. t[turn] = {}
  103. for ii,id in ipairs(v) do
  104. local skill_vo = skill_mgr:getSkill(id)
  105. if skill_vo and skill_vo:GetSkillType() == 1 then
  106. table.insert(t[turn], id)
  107. end
  108. end
  109. turn = turn + 1
  110. end
  111. local my_turn = RoleManager:getInstance():GetMainRoleVo().turn
  112. if my_turn >= 2 then
  113. local list = self:GetAllLegendlSkillSkillList()
  114. for i,v in ipairs(list) do
  115. t[turn] = {}
  116. for ii,id in ipairs(v) do
  117. local skill_vo = skill_mgr:getSkill(id)
  118. if skill_vo and skill_vo:GetSkillType() == 1 then
  119. table.insert(t[turn], id)
  120. end
  121. end
  122. turn = turn + 1
  123. end
  124. end
  125. return t
  126. end
  127. --获取职业被动技能id列表
  128. function SkillUIModel:GetSKillUITab(enum)
  129. local career = RoleManager.Instance.mainRoleInfo.career or 1
  130. return Config.ConfigSkillUI.UITab[enum][career]
  131. end
  132. function SkillUIModel:CheckRedDot()
  133. self.skill_red = {}
  134. local function call_backack()
  135. local b = false
  136. for k,v in pairs(Config.ConfigSkillUI.TabEnum) do
  137. local can_up = self:CheckSkillRedDot(true, v)
  138. b = b or can_up
  139. end
  140. GlobalEventSystem:Fire(EventName.SHOW_FUNCTION_RED_POINT,3, b)
  141. self:Fire(SkillUIModel.UPDATE_TAB_DOT)
  142. end
  143. TimeManager.GetInstance():StartTime("SkillUIModel_CheckRedDot", 0.5, call_backack)
  144. end
  145. function SkillUIModel:IsSkillTypeUnLock( type_id )
  146. local tab_info = Config.ConfigSkillUI.Tab[type_id]
  147. local turn = RoleManager:getInstance():GetMainRoleVo().turn
  148. if tab_info and turn < tab_info.turn then
  149. return false
  150. else
  151. return true
  152. end
  153. end
  154. function SkillUIModel:CheckSkillRedDot(check_new, type_id)
  155. if not type_id then return false end
  156. if not self:IsSkillTypeUnLock(type_id) then
  157. return false
  158. end
  159. if check_new or self.skill_red[type_id] == nil then
  160. local skill_mgr = SkillManager:getInstance()
  161. local t = {}
  162. if type_id == Config.ConfigSkillUI.TabEnum.CareerSkill then
  163. t = self:GetAllCareerSkillList()
  164. elseif type_id == Config.ConfigSkillUI.TabEnum.SpecialSkill then
  165. t = self:GetAllSpecialSkillList()
  166. elseif type_id == Config.ConfigSkillUI.TabEnum.LegendlSkill then
  167. t = self:GetAllLegendlSkillSkillList()
  168. else
  169. return false
  170. end
  171. local b = false
  172. local list = {}
  173. for i,v in ipairs(t) do
  174. if type(v) == "table" then
  175. for ii,vv in ipairs(v) do
  176. table.insert(list, vv)
  177. end
  178. else
  179. table.insert(list, v)
  180. end
  181. end
  182. for i,v in ipairs(list) do
  183. local skill_vo = skill_mgr:getSkill(v)
  184. if skill_vo then
  185. local can_up = skill_vo:CanUp()
  186. if can_up then
  187. b = true
  188. break
  189. end
  190. end
  191. end
  192. self.skill_red[type_id] = b
  193. end
  194. return self.skill_red[type_id]
  195. end
  196. function SkillUIModel:GetRowCol(num, col_num)
  197. local row = 0
  198. local col = 0
  199. if col_num and col_num > 0 and num and num > 0 then
  200. row = math.floor((num - 1) / col_num ) + 1
  201. col = (num - 1) % col_num +1
  202. end
  203. return row, col
  204. end
  205. function SkillUIModel:GetSelectSkillIdByIdList(skill_id_list)
  206. if skill_id_list then
  207. for i,v in ipairs(skill_id_list) do
  208. if type(v) == "table" then
  209. for ii,vv in ipairs(v) do
  210. return vv
  211. end
  212. else
  213. return v
  214. end
  215. end
  216. end
  217. return 0
  218. end
  219. --获取技能方案
  220. function SkillUIModel:GetSkillPlan(plan)
  221. local t = {0, 0, 0, 0, 0, 0 , 0 , 0}
  222. local all_skill = SkillManager:getInstance().all_plan_skill
  223. if all_skill and all_skill[plan] and all_skill[plan].shortcutList then
  224. for k,v in pairs(all_skill[plan].shortcutList) do
  225. t[k] = v.id
  226. end
  227. end
  228. return t
  229. end
  230. --获取激活幻光技能的道具
  231. function SkillUIModel:GetDailySkillItem(skill_id, level)
  232. local config = Config.Visus
  233. local t = false
  234. for k,v in pairs(config) do
  235. local skillinfo = stringtotable(v.skill)
  236. if skillinfo and skillinfo[1] == skill_id and skillinfo[2] == level then
  237. t = v
  238. end
  239. end
  240. return t
  241. end
  242. --获取转生职业名字
  243. function SkillUIModel:GetTurnName(turn)
  244. local career = RoleManager:getInstance():GetMainRoleVo().career
  245. local cfg = Config.Transfercareer
  246. local career_name = ""
  247. for k,v in pairs(cfg) do
  248. if v.career == career and v.transfer_id == turn then
  249. career_name = Trim(v.name)
  250. break
  251. end
  252. end
  253. return career_name
  254. end
  255. --获取当前场景推荐幻光技能
  256. function SkillUIModel:GetRecommendDailySkillId()
  257. local skill_id = 0
  258. local info = SceneManager.Instance:GetSceneInfo()
  259. local cfg = Config.Visusskill
  260. if info and cfg then
  261. for k,v in pairs(cfg) do
  262. if v.scene_type == info.type then
  263. skill_id = v.skill_id
  264. break
  265. end
  266. end
  267. end
  268. return skill_id
  269. end
  270. --获取当前场景推荐幻光技能
  271. function SkillUIModel:IsAutoChangeDailySkillid()
  272. local cfg = self:GetAutoDailySkillCookie()
  273. return cfg.auto_change_daily_skill_state
  274. end
  275. --获取当前场景推荐幻光技能
  276. function SkillUIModel:SetAutoChangeDailyState(b)
  277. local cfg = self:GetAutoDailySkillCookie()
  278. cfg.auto_change_daily_skill_state = b
  279. self:Fire(SkillUIModel.CHANGE_AUTO_DAILY_SKILL_STATE)
  280. self:SetAutoDailySkillCookie()
  281. end
  282. --设置集字红点提示cookie
  283. function SkillUIModel:SetAutoDailySkillCookie( )
  284. self.skill_cfg = self.skill_cfg or {}
  285. CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.AUTO_CHNAGE_DAILY_SKILL,self.skill_cfg)
  286. CookieWrapper.Instance:WriteAll()
  287. end
  288. --获得集字红点提示cookie
  289. function SkillUIModel:GetAutoDailySkillCookie( )
  290. if not self.skill_cfg then
  291. self.skill_cfg = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.AUTO_CHNAGE_DAILY_SKILL) or {}
  292. end
  293. return self.skill_cfg
  294. end