/// <summary> /// again, descriptive name /// Ensures that AllPlayers variable contains the same number of players as parser.Players does /// </summary> private void ensureParserState() { //Add missing players to AllPlayers foreach (var curItem in parser.Players) { if (!AllPlayers.Select(p => p.AssociatedPlayer).Contains(curItem)) { if (DamageParser.IsBlacklistedUsername(curItem.Name)) { continue; } AllPlayers.Add(new AllPlayersTabPlayerVM(parent, curItem)); } } if (parent.IsZanverseSplit) { if (zanversePlayerVM == null && parser.ZanversePlayer != null) //can be null if zanverse is hidden { zanversePlayerVM = new AllPlayersTabPlayerVM(parent, parser.ZanversePlayer); AllPlayers.Add(zanversePlayerVM); } } else if (zanversePlayerVM != null) { if (AllPlayers.Contains(zanversePlayerVM)) { AllPlayers.Remove(zanversePlayerVM); } zanversePlayerVM = null; } }
private void synchronizeTabState() { lock (tabManipulationLock) { if (selfPlayerTab == null && CurrentDamageParser.SelfPlayer != null) { selfPlayerTab = new GraphPlayerTabVM(this, DetailedDamageVisibleSettings, CurrentDamageParser.SelfPlayer); AllTabs.Insert(1, selfPlayerTab); playerTabDict.Add(CurrentDamageParser.SelfPlayer, selfPlayerTab); selfPlayerTab.SetEnabledLineSeries(LineSeriesSettings.GetEnumValue()); if (OpenGraphForSelfAutomatically) { SelectedTab = selfPlayerTab; } } foreach (var player in CurrentDamageParser.Players) //add { if (DamageParser.IsBlacklistedUsername(player.Name)) { continue; //skip blacklisted } if (!playerTabDict.ContainsKey(player)) { var newTab = new GraphPlayerTabVM(this, DetailedDamageVisibleSettings, player); AllTabs.Add(newTab); playerTabDict.Add(player, newTab); newTab.SetEnabledLineSeries(LineSeriesSettings.GetEnumValue()); } } List <GraphPlayerTabVM> toRemove = new List <GraphPlayerTabVM>(); //remove foreach (var tab in AllTabs.Where(t => t is GraphPlayerTabVM).Cast <GraphPlayerTabVM>()) { if (!CurrentDamageParser.DoesPlayerIdExist(tab.Player.ID)) { toRemove.Add(tab); } } foreach (var rem in toRemove) { AllTabs.Remove(rem); playerTabDict.Remove(rem.Player); } } }