CareerSkillView = CareerSkillView or BaseClass(BaseItem) function CareerSkillView:__init(parent_wnd, prefab_asset, layer_name) self.base_file = "skillUI" self.layout_file = "CareerSkillView" -- self.full_screen = true -- self.ani_right = 400 -- self.adjust_mid = {left = 0, right = 650} self.model = SkillManager:getInstance() self.skillui_model = SkillUIModel:getInstance() self.skill_list_item = false self.detail_item = false self.skill_id_list = false self.view_index = false self.ui_type = false self.selet_skill = false self.is_pre_view = false self.last_ui_cache = {} self.is_open_select_up_skill = false self:Load() end --清除界面 function CareerSkillView:__delete() self:Remove() end function CareerSkillView:Load_callback() self:LoadSuccess() self:InitEvent() end function CareerSkillView:Remove() if self.skill_list_item then self.skill_list_item:DeleteMe() self.skill_list_item = false end if self.detail_item then self.detail_item:DeleteMe() self.detail_item = false end end function CareerSkillView:LoadSuccess() local nodes = { "right/skill_detail_con", "right/config_btn:obj", "mid/skill_list_con", } self:GetChildren(nodes) self.skill_list_item = SkillUIListItem.New(self.skill_list_con, nil, self.maskID) if self.need_refreshData then self:SetData(self.skill_id_list, self.view_index, self.ui_type, self.is_open_select_up_skill) end end function CareerSkillView:InitEvent() local function onBtnClickHandler(target) if target == self.config_btn_obj then local level = 50 if level > RoleManager.Instance.mainRoleInfo.level then Message.show(string.format("达到%d级,才可自由上阵技能哦~", level)) return end self.skillui_model:Fire(SkillUIModel.OPEN_SKILL_CONFIG_VIEW) end end AddClickEvent(self.config_btn_obj,onBtnClickHandler) local function onClickSkillItem(view_index, skill_id, pos) if view_index ~= SkillUIModel.Click_SkillItem.ConfigSolt and view_index ~= SkillUIModel.Click_SkillItem.SkillLevelShow then local _, is_pre_view = self:GetLastUICache(self.view_index) self:SetLastUICache(self.view_index, skill_id, is_pre_view) self:UpdateSkillDetail(skill_id) end end self:BindEvent(self.skillui_model,SkillUIModel.CLICK_SKILL_ITEM, onClickSkillItem) local function onUpdateSkillList() self:UpdateView() end self:BindEvent(self.model,SkillManager.UPDATE_SKILL_LIST, onUpdateSkillList) local function onChangeNextUpSkill(skill_id) self:ChangeNextUpSkill(skill_id) end self:BindEvent(self.skillui_model, SkillUIModel.SKILL_UP_SUCCESS, onChangeNextUpSkill) local function onChangeAutoDailySkillState() self:UpdateView() end self:BindEvent(self.skillui_model,SkillUIModel.CHANGE_AUTO_DAILY_SKILL_STATE, onChangeAutoDailySkillState) end function CareerSkillView:UpdateView() if not self.skill_id_list then return end self.selet_skill, self.is_pre_view = self:GetOpenUpSkill() or self:GetLastUICache(self.view_index) self.skill_list_item:SetData(self.skill_id_list, self.selet_skill, self.view_index) self:UpdateSkillDetail(self.selet_skill) end function CareerSkillView:SetData(skill_id_list, view_index, ui_type, is_open_select_up_skill) self.skill_id_list = skill_id_list self.view_index = view_index self.ui_type = ui_type self.is_open_select_up_skill = is_open_select_up_skill if self.is_loaded then self:UpdateView() else self.need_refreshData = true end end function CareerSkillView:GetLastUICache(index) if not index then return end local t = self.last_ui_cache if not t[index] then t[index] = {} t[index].last_skill_id = self.skillui_model:GetSelectSkillIdByIdList(self.skill_id_list) t[index].last_pre_view = false end return t[index].last_skill_id, t[index].last_pre_view end function CareerSkillView:SetLastUICache(index, skill_id, pre_view) if not index then return end local t = self.last_ui_cache t[index] = t[index] or {} t[index].last_skill_id = skill_id t[index].last_pre_view = pre_view end function CareerSkillView:UpdateSkillDetail(skill_id) if not self.detail_item then self.detail_item = SkillUIDetailItem.New(self.skill_detail_con) end local skill_vo = self.model:getSkill(skill_id) self.detail_item:SetData(skill_vo) end function CareerSkillView:ChangeNextUpSkill(skill_id) if not self.skill_id_list then return end local skill_vo = self.model:getSkill(skill_id) if not skill_vo or skill_vo:CanUp() then return end local next_select_skill_id = false for i,list in ipairs(self.skill_id_list) do for k,id in ipairs(list) do skill_vo = self.model:getSkill(id) if skill_vo and skill_vo:CanUp() then next_select_skill_id = id break end if next_select_skill_id then break end end end if next_select_skill_id then self.skillui_model:Fire(SkillUIModel.CLICK_SKILL_ITEM, SkillUIModel.Click_SkillItem.CareerList, next_select_skill_id) end end --第一次打开时,是否选中可升级的技能 function CareerSkillView:GetOpenUpSkill() if not self.is_open_select_up_skill then return end if not self.skill_id_list then return end self.is_open_select_up_skill = false local current_select_skill_id = false for i,list in ipairs(self.skill_id_list) do for k,id in ipairs(list) do skill_vo = self.model:getSkill(id) if skill_vo and skill_vo:CanUp() then current_select_skill_id = id break end if current_select_skill_id then break end end end if current_select_skill_id then self:SetLastUICache(self.view_index, current_select_skill_id, self.is_pre_view) end return current_select_skill_id end