-- <* -- @Author: Saber -- @Description: 圣物系统左侧技能装备节点 -- *> PsionicSkillEquipItem = PsionicSkillEquipItem or BaseClass(BaseItem) local PsionicSkillEquipItem = PsionicSkillEquipItem function PsionicSkillEquipItem:__init(parent_wnd,prefab_asset,layer_name) self.base_file = "psionic" self.layout_file = "PsionicSkillEquipItem" self.parent_wnd = parent_wnd self.layer_name = layer_name self.skill_id = 0 self.showing_activate_fun_open_view = false self.model = PsionicModel:getInstance() self.goods_model = GoodsModel:getInstance() self:Load() end function PsionicSkillEquipItem:Load_callback() local nodes = { "bg:obj:imgex", "locked:obj", "skill_icon:obj:imgex", "red_dot:obj", "skill_effect_con", } self:GetChildren(nodes) self:AddEvents() if self.need_refreshData then self:UpdateView() end end -- 需特殊处理隐藏时的特效表现 function PsionicSkillEquipItem:SetVisible(state, force_hide) BaseItem.SetVisible(self, state, force_hide) if not state then self:ClearUIEffect(self.skill_effect_con) self.showing_activate_effect = false end end function PsionicSkillEquipItem:AddEvents( ) local function click_event(target, x, y) if target == self.skill_icon_obj then -- 点击技能图标,弹出对应的技能tips local ab_pos = self.transform:TransformPoint(Vector3.zero) local ui_tf = panelMgr:GetParent("Top").transform local new_pos = ui_tf:InverseTransformPoint(Vector3(ab_pos.x, ab_pos.y, 0)) -- 构造一个数据过去展示技能tips local skill_data = {} skill_data.pos = self.slot skill_data.skill_id = self.skill_id skill_data.skill_lv = self.slot_data.skill_lv self.model:Fire(PsionicConst.OPEN_SKILL_TIPS_VIEW, true, skill_data, new_pos.x, new_pos.y) end end AddClickEvent(self.skill_icon_obj, click_event, LuaSoundManager.SOUND_UI.NONE) -- 对应技能更新之后刷新数据 local function update_skill_data(slot) -- print("Saber:PsionicSkillEquipItem [63] self.slot, slot: ",self.slot, slot) if not slot or self.slot == slot then self:UpdateView() end end self:BindEvent(self.model, PsionicConst.UPDATE_SLOT_SKILL, update_skill_data) local function play_slot_effect(slot) if not slot or self.slot == slot then -- 魂力球激活特效 if not self.showing_activate_effect then local function call_back( ) self.showing_activate_effect = false end self:ClearUIEffect(self.skill_effect_con) self:AddUIEffect("ui_hunliqiudianliang", self.skill_effect_con, self.layer_name, Vector3(35,-35,0), 4, false, 0.6, nil, call_back) self.showing_activate_effect = true end if not self.showing_activate_fun_open_view then self.model:OpenSkillActiveShowView(self.skill_id) self.showing_activate_fun_open_view = true end end end self:BindEvent(self.model, PsionicConst.ACTIVATE_SLOT_SKILL, play_slot_effect) end function PsionicSkillEquipItem:UpdateView( ) self.slot_data = self.model:GetPsionicSlotData(self.slot) self.unlock_cfg = self.model:GetPsionicAwakeUnlockCfg(self.slot) self:UpdateSkillIcon() self:UpdateSkillData() -- self:UpdateSkillSlotRed() end function PsionicSkillEquipItem:SetData( slot ) self.slot = slot + 3 -- 技能位置要做+3映射 if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end -- 更新槽位的技能图标 function PsionicSkillEquipItem:UpdateSkillIcon( ) if self.unlock_cfg then self.skill_id = stringtotable(self.unlock_cfg.skill_id)[1] lua_resM:setOutsideImageSprite(self, self.skill_icon_imgex, GameResPath.GetSkillIcon(self.skill_id), false) end end function PsionicSkillEquipItem:UpdateSkillData( ) local has_data = self.slot_data and self.slot_data.skill_lv > 0 and true or false self.bg_imgex.gray = not has_data self.skill_icon_imgex.gray = not has_data self.locked_obj:SetActive(not has_data) end -- function PsionicSkillEquipItem:UpdateSkillSlotRed( ) -- self.red_dot_obj:SetActive(self.slot_data and self.model:GetPsionicSkillSlotRedCache(self.slot)) -- end function PsionicSkillEquipItem:__delete( ) self:ClearUIEffect(self.skill_effect_con) end