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