/// <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;
            }
        }
示例#2
0
        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);
                }
            }
        }