-- <*
|
|
-- @Author: Saber
|
|
-- @Description: 圣物左侧佩戴装备节点
|
|
-- *>
|
|
PsionicArmorEquipItem = PsionicArmorEquipItem or BaseClass(BaseItem)
|
|
local PsionicArmorEquipItem = PsionicArmorEquipItem
|
|
|
|
function PsionicArmorEquipItem:__init(parent_wnd,prefab_asset,layer_name)
|
|
self.base_file = "psionic"
|
|
self.layout_file = "PsionicArmorEquipItem"
|
|
self.parent_wnd = parent_wnd
|
|
self.layer_name = layer_name
|
|
|
|
self.model = PsionicModel:getInstance()
|
|
self.goods_model = GoodsModel:getInstance()
|
|
|
|
self.is_selected = false
|
|
self:Load()
|
|
end
|
|
|
|
function PsionicArmorEquipItem:Load_callback()
|
|
local nodes = {
|
|
"add_btn:obj",
|
|
"red_dot:obj",
|
|
"item_con",
|
|
"selected:obj",
|
|
-- "slot_flag:tmp",
|
|
"equip_effect_con"
|
|
}
|
|
self:GetChildren(nodes)
|
|
|
|
self.circle_item = PsionicArmorCircleItem.New(self.item_con, false, self.layer_name)
|
|
self.circle_item:SetAnchoredPosition(0, 0)
|
|
self.circle_item:SetItemSize(78, 78)
|
|
self.circle_item:SetVisible(false)
|
|
self.circle_item:OverrideClickEvent(function(target,x,y)
|
|
self:ClickHandler(target,x,y)
|
|
end)
|
|
|
|
self:AddEvents()
|
|
if self.need_refreshData then
|
|
self:UpdateView()
|
|
end
|
|
end
|
|
|
|
-- 需特殊处理隐藏时的特效表现
|
|
function PsionicArmorEquipItem:SetVisible(state, force_hide)
|
|
BaseItem.SetVisible(self, state, force_hide)
|
|
if not state then
|
|
self:ClearUIEffect(self.equip_effect_con)
|
|
self.showing_equip_effect = false
|
|
end
|
|
end
|
|
|
|
function PsionicArmorEquipItem:AddEvents( )
|
|
local function click_event(target)
|
|
if target == self.add_btn_obj then
|
|
self:OnAddBtnClick()
|
|
end
|
|
end
|
|
AddClickEvent(self.add_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
|
|
|
|
-- 对应装备位置的属性更新之后刷新数据
|
|
local function update_equip_data(slot)
|
|
if self.slot == slot then
|
|
self:UpdateView()
|
|
if self.data then -- 存在数据的情况
|
|
-- 魂力球激活特效
|
|
if not self.showing_equip_effect then
|
|
local function call_back( )
|
|
self.showing_equip_effect = false
|
|
end
|
|
self:ClearUIEffect(self.equip_effect_con)
|
|
self:AddUIEffect("ui_hunliqiudianliang", self.equip_effect_con, self.layer_name, Vector3(0,0,0), 3, true, 0.6, nil, call_back)
|
|
self.showing_equip_effect = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
self:BindEvent(self.model, PsionicConst.UPDATE_PISIONIC_EQUIP_ARMOR, update_equip_data)
|
|
|
|
local function update_armor_red(tab_id)
|
|
if not tab_id or
|
|
tab_id == PsionicConst.TabId.PArmor or
|
|
tab_id == PsionicConst.TabId.PAdvance or
|
|
tab_id == PsionicConst.TabId.PWash or
|
|
tab_id == PsionicConst.TabId.PSkill then
|
|
self:UpdateArmorRed()
|
|
end
|
|
end
|
|
self:BindEvent(self.model, PsionicConst.UPDATE_RED_BY_TABID, update_armor_red)
|
|
end
|
|
|
|
function PsionicArmorEquipItem:SetData( slot, flag, show_flag, equip_callback, skill_callback )
|
|
-- self.data = data
|
|
self.slot = slot + 3 -- 槽位即道具子id,从4开始,需要+3映射
|
|
self.flag = flag or PsionicConst.ArmorItemFlag.Equiped -- 决定这个装备要展示的Tip操作按钮的内容
|
|
self.show_flag = show_flag -- 根据当前主界面页签不同,来区分点击逻辑的不同
|
|
self.equip_callback = equip_callback -- 装备进阶回调
|
|
self.skill_callback = skill_callback -- 技能页签回调
|
|
|
|
if self.is_loaded then
|
|
self.need_refreshData = false
|
|
self:UpdateView()
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function PsionicArmorEquipItem:UpdateView( )
|
|
self.data = self.goods_model:GetPsionicEquipBySlot(self.slot)
|
|
-- self.slot_flag_tmp.text = PsionicConst.EquipSlotName[self.slot]
|
|
if not self.data then
|
|
self.circle_item:SetVisible(false)
|
|
self.add_btn_obj:SetActive(true)
|
|
self.circle_item:SetSlotName(false)
|
|
else
|
|
self.add_btn_obj:SetActive(false)
|
|
-- print("Saber:PsionicArmorEquipItem [62] self.data.goods_id: ",self.data.goods_id)
|
|
self.circle_item:SetData(self.data.type_id, 1, nil, self.data.equip_lv)
|
|
self.circle_item:SetVisible(true)
|
|
self.circle_item:SetSlotName(self.show_flag ~= PsionicConst.TabId.PArmor and self.data.subtype or false)
|
|
end
|
|
self:UpdateArmorRed()
|
|
self:SetSelected(self.is_selected)
|
|
end
|
|
|
|
-- 修改节点的展示标志
|
|
function PsionicArmorEquipItem:ChangeShowFlag(show_flag)
|
|
self.show_flag = show_flag
|
|
self:SetSelected(self.is_selected)
|
|
self:UpdateArmorRed()
|
|
end
|
|
|
|
function PsionicArmorEquipItem:ClickHandler(target, x, y)
|
|
if not self.data then return end
|
|
-- 不同情况的点击回调,不做骚套路,严格区分
|
|
if self.show_flag == PsionicConst.TabId.PArmor then
|
|
local has_slot_red = self.model:GetPsionicEquipSlotRed(self.slot)
|
|
if has_slot_red then -- 该位置有装备穿戴红点就要获取能提升的装备
|
|
local power_equip = self.model:GetTopPowerUpEquipInBag(self.slot, true)
|
|
if power_equip then
|
|
UIToolTipMgr:getInstance():AppendPsionicTips(power_equip, x, y, PsionicConst.ArmorItemFlag.Bag)
|
|
else
|
|
UIToolTipMgr:getInstance():AppendPsionicTips(self.data, x, y, self.flag)
|
|
end
|
|
else
|
|
UIToolTipMgr:getInstance():AppendPsionicTips(self.data, x, y, self.flag)
|
|
end
|
|
elseif self.show_flag == PsionicConst.TabId.PAdvance
|
|
or self.show_flag == PsionicConst.TabId.PWash then
|
|
if self.equip_callback then
|
|
self.equip_callback(self.slot)
|
|
end
|
|
elseif self.show_flag == PsionicConst.TabId.PSkill then
|
|
if self.skill_callback then
|
|
self.skill_callback(self.slot)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 根据不同的情况展示不同的红点
|
|
function PsionicArmorEquipItem:UpdateArmorRed( )
|
|
if not self.is_loaded then return end
|
|
if self.show_flag == PsionicConst.TabId.PArmor then
|
|
self.red_dot_obj:SetActive(self.model:GetPsionicEquipSlotRed(self.slot))
|
|
elseif self.show_flag == PsionicConst.TabId.PAdvance then
|
|
self.red_dot_obj:SetActive(self.model:GetPsionicAdvanceRed(self.slot))
|
|
elseif self.show_flag == PsionicConst.TabId.PWash then
|
|
self.red_dot_obj:SetActive(self.model:GetPsionicWashSlotRed(self.slot))
|
|
elseif self.show_flag == PsionicConst.TabId.PSkill then
|
|
self.red_dot_obj:SetActive(self.model:GetPsionicSkillSlotRedCache(self.slot))
|
|
end
|
|
end
|
|
|
|
function PsionicArmorEquipItem:OnAddBtnClick( )
|
|
local has_slot_red = self.model:GetPsionicEquipSlotRed(self.slot)
|
|
if has_slot_red then -- 该位置有装备穿戴红点就要获取能提升的装备
|
|
local power_equip = self.model:GetTopPowerUpEquipInBag(self.slot, true)
|
|
if power_equip then
|
|
UIToolTipMgr:getInstance():AppendPsionicTips(power_equip, x, y, PsionicConst.ArmorItemFlag.Bag)
|
|
else
|
|
OpenFun.Open(139, 7)
|
|
end
|
|
else
|
|
OpenFun.Open(139, 7)
|
|
end
|
|
end
|
|
|
|
function PsionicArmorEquipItem:SetSelected(selected)
|
|
self.is_selected = selected
|
|
if self.is_loaded then
|
|
self.selected_obj:SetActive(self.is_selected and self.show_flag ~= PsionicConst.TabId.PArmor)
|
|
end
|
|
end
|
|
|
|
function PsionicArmorEquipItem:__delete( )
|
|
if self.circle_item then
|
|
self.circle_item:DeleteMe()
|
|
self.circle_item = nil
|
|
end
|
|
self:ClearUIEffect(self.equip_effect_con)
|
|
end
|