local UIDynamicHintParent = UIViewClass() local DynamicType = { GuildNewMember = 1, WorldBossHelpRemind = 2, RivalRemind = 3, } -------------------- function UIDynamicHintParent:OnCreated() self.openCountByType = { [DynamicType.GuildNewMember] = 0, [DynamicType.WorldBossHelpRemind] = 0, [DynamicType.RivalRemind] = 0, } end function UIDynamicHintParent:OnOpened(context) self:RegistSystemEvent(EventID.UI_Guild_GuildNewMemberNotice, self.OnGuildNewMemberNotice) self:RegistSystemEvent(EventID.UI_WorldBoss_OpenHelpRemind, self.OnWorldBossHelpRemind) self:RegistSystemEvent(EventID.UI_Rival_OpenRemind, self.OnRivalRemind) self:SetPushStyle(LuaConst.PushStyleEnum.CLOSENOTRECOVER) end -------------------- function UIDynamicHintParent:OnGuildNewMemberNotice(roleInfo) local levelFeatureData = DataSheetManager.LevelFeatureData:GetDataByLevelFeatureID(BattleDataGetter.GetCurLevelType()) if not levelFeatureData.IsShowGuildNewcomer or UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIActivitiesMain) then return end local context = { roleInfo = roleInfo, parentView = self, dynamicType = DynamicType.GuildNewMember } local view = self:OpenSubView(context, Const_UI_Lua.UIEnum.UIGuildWelcome, "Guild/UIGuildWelcome", DynamicType.GuildNewMember) view.gameObject.transform:SetAsFirstSibling() end function UIDynamicHintParent:OnWorldBossHelpRemind() local levelFeatureData = DataSheetManager.LevelFeatureData:GetDataByLevelFeatureID(BattleDataGetter.GetCurLevelType()) if not levelFeatureData.IsShowGuildHelp or UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIActivitiesMain) then return end local context = { parentView = self, dynamicType = DynamicType.WorldBossHelpRemind } local view = self:OpenSubView(context, Const_UI_Lua.UIEnum.UIWorldBossHelpRemind, "Dynamic/UIDynamicHint", DynamicType.WorldBossHelpRemind) -- WorldBossHelpRemind 在所有 GuildNewMemberNotice 上面 local index = self.openCountByType[DynamicType.GuildNewMember] view.gameObject.transform:SetSiblingIndex(index) end function UIDynamicHintParent:OnRivalRemind() local levelFeatureData = DataSheetManager.LevelFeatureData:GetDataByLevelFeatureID(BattleDataGetter.GetCurLevelType()) if not levelFeatureData.IsShowGuildHelp or UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIActivitiesMain) then return end local firstTracking = MDL.Rival.GetLastRivalTrackingAndAllCount() if firstTracking == nil then return end local context = { parentView = self, dynamicType = DynamicType.RivalRemind } local view = self:OpenSubView(context, Const_UI_Lua.UIEnum.UIRivalRemind, "Dynamic/UIDynamicHint", DynamicType.RivalRemind) -- RivalRemind 在所有 WorldBossHelpRemind 和 GuildNewMemberNotice 上面 local index = self.openCountByType[DynamicType.GuildNewMember] + self.openCountByType[DynamicType.WorldBossHelpRemind] view.gameObject.transform:SetSiblingIndex(index) end function UIDynamicHintParent:OpenSubView(context, luaViewName, uiPath, dynamicType) local view = self.subView:OpenView(GetViewClass(luaViewName), context, uiPath) self.openCountByType[dynamicType] = self.openCountByType[dynamicType] + 1 return view end function UIDynamicHintParent:OnSubViewClosed(dynamicType) self.openCountByType[dynamicType] = self.openCountByType[dynamicType] - 1 -- 如果还有开着的界面则退出该函数,不关闭此界面 for _, v in pairs(self.openCountByType) do if v ~= 0 then return end end self:CloseView() end return UIDynamicHintParent