-- <* -- @Author: Saber -- @Description: 圣物系统魂环装备界面 -- *> PsionicEffectEquipView = PsionicEffectEquipView or BaseClass(BaseView) local PsionicEffectEquipView = PsionicEffectEquipView function PsionicEffectEquipView:__init() self.base_file = "psionic" self.layout_file = "PsionicEffectEquipView" self.layer_name = "Activity" self.destroy_imm = true self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置 self.model = PsionicModel:getInstance() self.load_callback = function () self:LoadSuccess() self:AddEvent() end self.open_callback = function ( ) self:UpdateView() end self.destroy_callback = function ( ) self:DestroySuccess() end end function PsionicEffectEquipView:Open( ) --self.data = data BaseView.Open(self) end function PsionicEffectEquipView:LoadSuccess() local nodes = { "content", -- 魂环1 "content/node1", "content/node1/role_con1", "content/node1/equip_btn1:obj:img", "content/node1/equip_btn1/equip_btn1_lb:tmp", "content/node1/equip_btn1/equip_btn1_red:obj", "content/node1/cond_bg1:img", "content/node1/equip_cond1:tmp", "content/node1/effect_name1:tmp", -- 魂环2 "content/node2", "content/node2/role_con2", "content/node2/equip_btn2:obj:img", "content/node2/equip_btn2/equip_btn2_lb:tmp", "content/node2/equip_btn2/equip_btn2_red:obj", "content/node2/cond_bg2:img", "content/node2/equip_cond2:tmp", "content/node2/effect_name2:tmp", -- 魂环3 "content/node3", "content/node3/role_con3", "content/node3/equip_btn3:obj:img", "content/node3/equip_btn3/equip_btn3_lb:tmp", "content/node3/equip_btn3/equip_btn3_red:obj", "content/node3/cond_bg3:img", "content/node3/equip_cond3:tmp", "content/node3/effect_name3:tmp", } self:GetChildren(nodes) local close_callback = function() self:Close() end self.tabWindowComponent = UITabWindow.New(self.transform, nil, nil, close_callback, self.background_wnd, self.transform, UITabWindow.SizeSmallNoTab) self.tabWindowComponent:SetBackgroundRes("ps_effect_equip_bg") self.tabWindowComponent:SetTitleText("圣环激活") end function PsionicEffectEquipView:AddEvent() local function click_event(target) if target == self.equip_btn1_obj then self:OnEquipEffectBtnClick(1) elseif target == self.equip_btn2_obj then self:OnEquipEffectBtnClick(2) elseif target == self.equip_btn3_obj then self:OnEquipEffectBtnClick(3) end end AddClickEvent(self.equip_btn1_obj, click_event) AddClickEvent(self.equip_btn2_obj, click_event) AddClickEvent(self.equip_btn3_obj, click_event) local function update_effect_status() self:UpdateEffectStatus() end self:BindEvent(self.model, PsionicConst.UPDATE_PSIONIC_EFFECT, update_effect_status) local function update_btns_red(tab_id) if tab_id and tab_id == PsionicConst.TabId.PArmor then self:UpdateBtnsRed() end end self:BindEvent(self.model, PsionicConst.UPDATE_RED_BY_TABID, update_btns_red) end function PsionicEffectEquipView:UpdateView() self:UpdateBasicData() self:UpdateEffectStatus() self:UpdateBtnsRed() end function PsionicEffectEquipView:UpdateBasicData( ) -- 加载模型 local function create_role_model(index) local res_data = { father_node = self, layer_name = self.layer_name, transform = self["role_con" .. index], fashion_type = FuncOpenModel.TypeId.Clothes, size = Vector2(720,720), raycast_size = Vector2(240, 380), scale = 160, position = Vector3(-10, 10, -500), ui_model_type = UIModelCommon.ModelType.Model, psionic_effect = "effect_hunhuan_00" .. index, } FuncOpenModel:getInstance():SetModelRes(res_data) end create_role_model(1) create_role_model(2) create_role_model(3) -- 加载名称 self.effect_name1_tmp.text = PsionicConst.EffectName[1] self.effect_name2_tmp.text = PsionicConst.EffectName[2] self.effect_name3_tmp.text = PsionicConst.EffectName[3] end -- 更新圣环当前状态 function PsionicEffectEquipView:UpdateEffectStatus( ) local stage, color_list = self.model:GetPsionicEffectStage() local status_cookie = self.model:GetPsionicEffectShowStatus() local cur_effect_index = status_cookie and status_cookie[1] or 0 local function update_status(index) if stage >= index then -- 可以佩戴 self["cond_bg" .. index .. "_img"].enabled = false self["equip_cond" .. index .. "_tmp"].text = "" self["equip_btn" .. index .. "_obj"]:SetActive(true) self["equip_btn" .. index .. "_lb_tmp"].text = cur_effect_index == index and "卸下" or "穿戴" SetTMPSharedMaterial(self["equip_btn" .. index .. "_lb_tmp"], cur_effect_index == index and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn or ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn) lua_resM:setImageSprite(self, self["equip_btn" .. index .."_img"], "alphaCommon_asset", cur_effect_index == index and "tyui_middlel_btn1" or "tyui_middlel_btn2") else -- 装备品质达不到要求 local condition = PsionicConst.EffectCondition[index] self["cond_bg" .. index .. "_img"].enabled = true self["equip_cond" .. index .. "_tmp"].text = string.format("穿戴%s/4件%s圣物可激活", ColorUtil.RED_DARK, color_list[condition.color], condition.color_hex, condition.str) self["equip_btn" .. index .. "_obj"]:SetActive(false) end end update_status(1) update_status(2) update_status(3) end function PsionicEffectEquipView:UpdateBtnsRed( ) local status_cookie = self.model:GetPsionicEffectShowStatus() local red_list = status_cookie and status_cookie[3] or {} self.equip_btn1_red_obj:SetActive(red_list[1] and true or false) self.equip_btn2_red_obj:SetActive(red_list[2] and true or false) self.equip_btn3_red_obj:SetActive(red_list[3] and true or false) end function PsionicEffectEquipView:OnEquipEffectBtnClick(index) local status_cookie = self.model:GetPsionicEffectShowStatus() local cur_effect_index = status_cookie and status_cookie[1] or 0 if status_cookie and status_cookie[3] and status_cookie[3][index] then -- 存在红点,则需要消除红点并存储缓存 self.model:SavePsionicEffectStatusRed(index, false, true) end self.model:SavePsionicEffectShowStatus(cur_effect_index == index and 0 or index) Message.show(cur_effect_index == index and "卸下成功" or "穿戴成功", "success") end function PsionicEffectEquipView:DestroySuccess( ) if self.tabWindowComponent then self.tabWindowComponent:DeleteMe() self.tabWindowComponent = nil end end