local Recount = _G.Recount local revision = tonumber(string.sub("$Revision: 1445 $", 12, -3)) if Recount.Version < revision then Recount.Version = revision end local C_Scenario = C_Scenario local GetZonePVPInfo = GetZonePVPInfo local IsInInstance = IsInInstance local UnitIsGhost = UnitIsGhost function Recount:SetZoneFilter(instanceType) if not instanceType then return end if Recount.db.profile.ZoneFilters[instanceType] then if Recount.db.profile.HideCollect and not Recount.CurrentDataCollect and Recount.db.profile.GlobalDataCollect then Recount.MainWindow:Show() Recount:RefreshMainWindow() end Recount.CurrentDataCollect = true else if Recount.db.profile.HideCollect and (Recount.CurrentDataCollect or not Recount.db.profile.GlobalDataCollect) then Recount.MainWindow:Hide() end Recount.CurrentDataCollect = false end end -- Elsia: This handles filters for groupings -- groupType: 1 solo, 2 party, 3 raid function Recount:SetGroupFilter(groupType) if Recount.db.profile.GroupFilters[groupType] then if Recount.db.profile.HideCollect and not Recount.CurrentDataCollect and Recount.db.profile.GlobalDataCollect then Recount.MainWindow:Show() Recount:RefreshMainWindow() end Recount.CurrentDataCollect = true else if Recount.db.profile.HideCollect and (Recount.CurrentDataCollect or not Recount.db.profile.GlobalDataCollect) then Recount.MainWindow:Hide() end Recount.CurrentDataCollect = false end end -- Elsia: This handles the combined case of group/zone filtering function Recount:SetZoneGroupFilter(instanceType, groupType) if not instanceType or not groupType then return end if Recount.db.profile.ZoneFilters[instanceType] and Recount.db.profile.GroupFilters[groupType] then if Recount.db.profile.HideCollect and not Recount.MainWindow:IsShown() and Recount.db.profile.GlobalDataCollect then Recount.MainWindow:Show() Recount:RefreshMainWindow() end Recount.CurrentDataCollect = true else if Recount.db.profile.HideCollect and Recount.MainWindow:IsShown() or not Recount.db.profile.GlobalDataCollect then Recount.MainWindow:Hide() end Recount.CurrentDataCollect = false end end -- Elsia: Main entry, call this to update main window visibility based on collection filters function Recount:UpdateZoneGroupFilter() local groupType if Recount.inRaid then groupType = 3 elseif Recount.inGroup then groupType = 2 else groupType = 1 end local _, instanceType = IsInInstance() if not instanceType then _, instanceType = C_Scenario.IsInScenario() end if instanceType == "none" then -- Check if we are in an open area combat zone (ala Wintergrasp) local pvpType = GetZonePVPInfo() if pvpType == "combat" then instanceType = "pvp" end end if not UnitIsGhost(Recount.PlayerName) then Recount:SetZoneGroupFilter(instanceType, groupType) end -- Use zone-based filters end function Recount:GetGroupState(groupType) if groupType == 3 then return Recount.inRaid elseif groupType == 2 then return not Recount.inRaid and Recount.inGroup else return not Recount.inRaid and not Recount.inGroup end end