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