local UIEntityBasePanel = require "View/Battle/BattleEntityUI/UIEntityBasePanel" local UIEntityNamePanel = UIViewClass(UIEntityBasePanel) local EntityUIBaseModule = require("View/Battle/BattleEntityUI/EntityUIModule/EntityUIBaseModule") local EventSystem = require("Event/EventSystem") local LuaUpdater = require("Main/LuaUpdater") local LuaBit = require("bit") function UIEntityNamePanel:OnCreated() self.uiElementParams = { UseZoom = true, -- 是否使用头顶大小跟随距离变化 MaxDistSqrModelUI = 35 * 35, ModelUIMinDistance = 5, ModelUIMaxDistance = 10, ModelUIMinScale = 0.7, ModelUIMaxScale = 1, } self.enemyHideType = false self.friendHideType = false end function UIEntityNamePanel:OnOpened(context) self:RegistSystemEvent(EventID.UIBattle_NameElement_Create, self.CreateNameElement) -- 创建名字板UI self:RegistSystemEvent(EventID.UI_ChangeName,self.ShowSelfModelUI) -- 创建自身名字 self:RegistSystemEvent(EventID.UI_DelayToTownPlay, self.ShowSelfModelUI) -- 创建自身名字 self:RegistSystemEvent(EventID.UIBattle_Element_TopShowTitle, self.ElementTopShowTitle) -- 设置头顶称号(显隐) self:RegistSystemEvent(EventID.UIBattle_Element_SetHeadUI, self.ElementSetHeadUI) self:RegistSystemEvent(EventID.UIBattle_Element_RemoveHeadUI, self.ElementRemoveHeadUI) self:RegistSystemEvent(EventID.UIBattle_Element_RefreshHeadUI, self.ElementRefreshHeadUI) self:RegistSystemEvent(EventID.UIBattle_Element_OffsetY, self.SetUIOffsetY) -- 修改UI位置Y的偏移 self:RegistSystemEvent(EventID.UIBattle_Element_SetExtendData, self.SetExtendData) end function UIEntityNamePanel:CreateNameElement(expEntity, name, justPet) if expEntity.RenderEntity then if not justPet then local elementData = self:CreateElementData(expEntity) UIUtils.SetLabel(elementData.element.name, name) expEntity:CreateHeadUI() end if expEntity.PetRenderEntity then local petElementData = self:CreatePetElementData(expEntity) --local color = petElementData.isEnemy and UTL.Color.ModelNameColor.Red or UTL.Color.ModelNameColor.Blue UIUtils.SetLabel(petElementData.element.name, expEntity:GetPetName()) expEntity:SetModelUI_PetTitle() end else if BattleDataGetter.IsTownLevel() then EventSystem.Dispatch(EventID.UI_AddBattleModelUI) end end end function UIEntityNamePanel:CreatePetNameElement(expEntity, name) if expEntity.PetRenderEntity then local petElementData = self:CreatePetElementData(expEntity) UIUtils.SetLabel(petElementData.element.name, name) expEntity:SetModelUI_PetTitle() end end function UIEntityNamePanel:SetExtendData(expEntity, key, value) local elementData = self.elementDic[expEntity] if elementData then elementData.extendData = elementData.extendData or {} elementData.extendData[key] = value end end -- 主城显示玩家自身名字 function UIEntityNamePanel:ShowSelfModelUI() if not LogicUpdateManager._curEntity then return end local expEntity = LogicUpdateManager._curEntity.ExpEntity local renderEntity = expEntity.RenderEntity if renderEntity and BattleDataGetter.IsTownLevel() then NotSyncBattleSetter.MainPlayerCreateModelUI() local elementData = self.elementDic[renderEntity] local name = expEntity:GetPlayerModelName() if elementData then self:ElementChangeName(renderEntity, name) else local elementData = self:CreateElementData(expEntity) UIUtils.SetLabel(elementData.element.name, name) expEntity:CreateHeadUI() elementData.uiOffsetY = expEntity:GetCurUINameOffsetY() if expEntity.PetRenderEntity then local petElementData = self:CreatePetElementData(expEntity) UIUtils.SetLabel(petElementData.element.name, expEntity:GetPetName()) expEntity:SetModelUI_PetTitle() end end end end -- 设置隐藏层级(实现基类方法) function UIEntityNamePanel:SetHideType(hideLayer, hide) if hide then if LuaBit.band(hideLayer, LuaBit.lshift(1, LuaConst.Layer.Hero_Friend)) > 0 then self.friendHideType = true end if LuaBit.band(hideLayer, LuaBit.lshift(1, LuaConst.Layer.Hero_Enemy)) > 0 then self.enemyHideType = true end else self.enemyHideType = false self.friendHideType = false end end ---------- Start 具体的子项Element操作 Start ---------- -- 改变名字(实现基类方法) function UIEntityNamePanel:ElementChangeName(renderEntity, name) local elementData = self.elementDic[renderEntity] if elementData then UIUtils.SetLabel(elementData.element.name, name) self:ElementRefreshHeadUI(renderEntity) end end function UIEntityNamePanel:ElementChangeColorName(renderEntity, name) local elementData = self.elementDic[renderEntity] if elementData then UIUtils.SetLabel(elementData.element.name, name) end end function UIEntityNamePanel:GetElementHide(elementData) return (elementData.isEnemy and self.enemyHideType) or (self.friendHideType and not elementData.isEnemy) end function UIEntityNamePanel:GetModelNameTrans(renderEntity) local elementData = self.elementDic[renderEntity] if elementData then return elementData.element.name.transform end end ------------ End 具体的子项Element操作 End ------------ return UIEntityNamePanel