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

209 行
5.5 KiB

  1. CareerSkillView = CareerSkillView or BaseClass(BaseItem)
  2. function CareerSkillView:__init(parent_wnd, prefab_asset, layer_name)
  3. self.base_file = "skillUI"
  4. self.layout_file = "CareerSkillView"
  5. -- self.full_screen = true
  6. -- self.ani_right = 400
  7. -- self.adjust_mid = {left = 0, right = 650}
  8. self.model = SkillManager:getInstance()
  9. self.skillui_model = SkillUIModel:getInstance()
  10. self.skill_list_item = false
  11. self.detail_item = false
  12. self.skill_id_list = false
  13. self.view_index = false
  14. self.ui_type = false
  15. self.selet_skill = false
  16. self.is_pre_view = false
  17. self.last_ui_cache = {}
  18. self.is_open_select_up_skill = false
  19. self:Load()
  20. end
  21. --清除界面
  22. function CareerSkillView:__delete()
  23. self:Remove()
  24. end
  25. function CareerSkillView:Load_callback()
  26. self:LoadSuccess()
  27. self:InitEvent()
  28. end
  29. function CareerSkillView:Remove()
  30. if self.skill_list_item then
  31. self.skill_list_item:DeleteMe()
  32. self.skill_list_item = false
  33. end
  34. if self.detail_item then
  35. self.detail_item:DeleteMe()
  36. self.detail_item = false
  37. end
  38. end
  39. function CareerSkillView:LoadSuccess()
  40. local nodes = {
  41. "right/skill_detail_con",
  42. "right/config_btn:obj",
  43. "mid/skill_list_con",
  44. }
  45. self:GetChildren(nodes)
  46. self.skill_list_item = SkillUIListItem.New(self.skill_list_con, nil, self.maskID)
  47. if self.need_refreshData then
  48. self:SetData(self.skill_id_list, self.view_index, self.ui_type, self.is_open_select_up_skill)
  49. end
  50. end
  51. function CareerSkillView:InitEvent()
  52. local function onBtnClickHandler(target)
  53. if target == self.config_btn_obj then
  54. local level = 50
  55. if level > RoleManager.Instance.mainRoleInfo.level then
  56. Message.show(string.format("达到%d级,才可自由上阵技能哦~", level))
  57. return
  58. end
  59. self.skillui_model:Fire(SkillUIModel.OPEN_SKILL_CONFIG_VIEW)
  60. end
  61. end
  62. AddClickEvent(self.config_btn_obj,onBtnClickHandler)
  63. local function onClickSkillItem(view_index, skill_id, pos)
  64. if view_index ~= SkillUIModel.Click_SkillItem.ConfigSolt and view_index ~= SkillUIModel.Click_SkillItem.SkillLevelShow then
  65. local _, is_pre_view = self:GetLastUICache(self.view_index)
  66. self:SetLastUICache(self.view_index, skill_id, is_pre_view)
  67. self:UpdateSkillDetail(skill_id)
  68. end
  69. end
  70. self:BindEvent(self.skillui_model,SkillUIModel.CLICK_SKILL_ITEM, onClickSkillItem)
  71. local function onUpdateSkillList()
  72. self:UpdateView()
  73. end
  74. self:BindEvent(self.model,SkillManager.UPDATE_SKILL_LIST, onUpdateSkillList)
  75. local function onChangeNextUpSkill(skill_id)
  76. self:ChangeNextUpSkill(skill_id)
  77. end
  78. self:BindEvent(self.skillui_model, SkillUIModel.SKILL_UP_SUCCESS, onChangeNextUpSkill)
  79. local function onChangeAutoDailySkillState()
  80. self:UpdateView()
  81. end
  82. self:BindEvent(self.skillui_model,SkillUIModel.CHANGE_AUTO_DAILY_SKILL_STATE, onChangeAutoDailySkillState)
  83. end
  84. function CareerSkillView:UpdateView()
  85. if not self.skill_id_list then return end
  86. self.selet_skill, self.is_pre_view = self:GetOpenUpSkill() or self:GetLastUICache(self.view_index)
  87. self.skill_list_item:SetData(self.skill_id_list, self.selet_skill, self.view_index)
  88. self:UpdateSkillDetail(self.selet_skill)
  89. end
  90. function CareerSkillView:SetData(skill_id_list, view_index, ui_type, is_open_select_up_skill)
  91. self.skill_id_list = skill_id_list
  92. self.view_index = view_index
  93. self.ui_type = ui_type
  94. self.is_open_select_up_skill = is_open_select_up_skill
  95. if self.is_loaded then
  96. self:UpdateView()
  97. else
  98. self.need_refreshData = true
  99. end
  100. end
  101. function CareerSkillView:GetLastUICache(index)
  102. if not index then return end
  103. local t = self.last_ui_cache
  104. if not t[index] then
  105. t[index] = {}
  106. t[index].last_skill_id = self.skillui_model:GetSelectSkillIdByIdList(self.skill_id_list)
  107. t[index].last_pre_view = false
  108. end
  109. return t[index].last_skill_id, t[index].last_pre_view
  110. end
  111. function CareerSkillView:SetLastUICache(index, skill_id, pre_view)
  112. if not index then return end
  113. local t = self.last_ui_cache
  114. t[index] = t[index] or {}
  115. t[index].last_skill_id = skill_id
  116. t[index].last_pre_view = pre_view
  117. end
  118. function CareerSkillView:UpdateSkillDetail(skill_id)
  119. if not self.detail_item then
  120. self.detail_item = SkillUIDetailItem.New(self.skill_detail_con)
  121. end
  122. local skill_vo = self.model:getSkill(skill_id)
  123. self.detail_item:SetData(skill_vo)
  124. end
  125. function CareerSkillView:ChangeNextUpSkill(skill_id)
  126. if not self.skill_id_list then
  127. return
  128. end
  129. local skill_vo = self.model:getSkill(skill_id)
  130. if not skill_vo or skill_vo:CanUp() then
  131. return
  132. end
  133. local next_select_skill_id = false
  134. for i,list in ipairs(self.skill_id_list) do
  135. for k,id in ipairs(list) do
  136. skill_vo = self.model:getSkill(id)
  137. if skill_vo and skill_vo:CanUp() then
  138. next_select_skill_id = id
  139. break
  140. end
  141. if next_select_skill_id then
  142. break
  143. end
  144. end
  145. end
  146. if next_select_skill_id then
  147. self.skillui_model:Fire(SkillUIModel.CLICK_SKILL_ITEM, SkillUIModel.Click_SkillItem.CareerList, next_select_skill_id)
  148. end
  149. end
  150. --第一次打开时,是否选中可升级的技能
  151. function CareerSkillView:GetOpenUpSkill()
  152. if not self.is_open_select_up_skill then
  153. return
  154. end
  155. if not self.skill_id_list then
  156. return
  157. end
  158. self.is_open_select_up_skill = false
  159. local current_select_skill_id = false
  160. for i,list in ipairs(self.skill_id_list) do
  161. for k,id in ipairs(list) do
  162. skill_vo = self.model:getSkill(id)
  163. if skill_vo and skill_vo:CanUp() then
  164. current_select_skill_id = id
  165. break
  166. end
  167. if current_select_skill_id then
  168. break
  169. end
  170. end
  171. end
  172. if current_select_skill_id then
  173. self:SetLastUICache(self.view_index, current_select_skill_id, self.is_pre_view)
  174. end
  175. return current_select_skill_id
  176. end