|
|
- -- <*
- -- @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
|