源战役客户端
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 
 

129 рядки
4.6 KiB

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