private static List <PlayerstatisticExtended> FilterByRiverTextureCondition(List <PlayerstatisticExtended> playerStatistics, NoteSettingsObject settings)
        {
            if (!settings.RiverTextureSettings.IsFlushCardFilter && !settings.RiverTextureSettings.IsPossibleStraightsFilter && !settings.RiverTextureSettings.IsHighcardFilter && !settings.RiverTextureSettings.IsCardTextureFilter && !settings.RiverTextureSettings.IsPairedFilter)
            {
                return(playerStatistics);
            }

            List <PlayerstatisticExtended> fileteredList = new List <PlayerstatisticExtended>();

            foreach (var playerstatistic in playerStatistics)
            {
                //filters for river flush
                if (settings.RiverTextureSettings.IsFlushCardFilter)
                {
                    //filter for no possible flush
                    if (settings.RiverTextureSettings.FlushCard == RiverFlushCardsEnum.NoFlush && !new NoPossibleFlushTextureAnalyzer().Analyze(playerstatistic.Playerstatistic.Board, Street.River))
                    {
                        continue;
                    }
                    //filter for three of one suit
                    if (settings.RiverTextureSettings.FlushCard == RiverFlushCardsEnum.ThreeCardsOneSuit && !new ThreeOfOneSuitFlushTextureAnalyzer().Analyze(playerstatistic.Playerstatistic.Board, Street.River))
                    {
                        continue;
                    }
                    //filter for four of one suit
                    if (settings.RiverTextureSettings.FlushCard == RiverFlushCardsEnum.FourCardsOneSuit && !new FourOfOneSuitFlushTextureAnalyzer().Analyze(playerstatistic.Playerstatistic.Board, Street.River))
                    {
                        continue;
                    }
                    //filter for five of one suit
                    if (settings.RiverTextureSettings.FlushCard == RiverFlushCardsEnum.FiveCardsOneSuit && !new FiveOfOneSuitFlushTextureAnalyzer().Analyze(playerstatistic.Playerstatistic.Board, Street.River))
                    {
                        continue;
                    }
                }

                //filter for possible straights and according < > or ==
                if (settings.RiverTextureSettings.IsPossibleStraightsFilter)
                {
                    if (!BoardTextureAnalyzerHelpers.CheckEquality(settings.RiverTextureSettings.PossibleStraightsCompare, new PossibleStraightTextureAnalyzer().Analyze(playerstatistic.Playerstatistic.Board, Street.River), settings.RiverTextureSettings.PossibleStraights))
                    {
                        continue;
                    }
                }

                //filter for the highest card
                if (settings.RiverTextureSettings.IsHighcardFilter)
                {
                    if (BoardTextureAnalyzerHelpers.HighestBoardCardRank(playerstatistic.Playerstatistic.Board, Street.River) != DataTypes.Card.GetCardRank(settings.RiverTextureSettings.HighestCard))
                    {
                        continue;
                    }
                }

                //filter for exact river texture
                if (settings.RiverTextureSettings.IsCardTextureFilter)
                {
                    if (!BoardTextureAnalyzerHelpers.BoardContainsExactTextureCards(playerstatistic.Playerstatistic.Board, settings.RiverTextureSettings.SelectedCardTextureList, Street.River))
                    {
                        continue;
                    }
                }

                //filter for river is Paired
                if (settings.RiverTextureSettings.IsPairedFilter)
                {
                    if (!BoardTextureAnalyzerHelpers.BoardContainsAPair(playerstatistic.Playerstatistic.Board, Street.River))
                    {
                        continue;
                    }
                }

                fileteredList.Add(playerstatistic);
            }


            return(fileteredList);
        }
        private static List <PlayerstatisticExtended> FilterByTurnTextureCondition(List <PlayerstatisticExtended> playerStatistics, NoteSettingsObject settings)
        {
            if (!settings.TurnTextureSettings.IsFlushCardFilter && !settings.TurnTextureSettings.IsOpenEndedStraightDrawsFilter && !settings.TurnTextureSettings.IsPossibleStraightsFilter && !settings.TurnTextureSettings.IsGutshotsFilter && !settings.TurnTextureSettings.IsHighcardFilter && !settings.TurnTextureSettings.IsCardTextureFilter && !settings.TurnTextureSettings.IsPairedFilter)
            {
                return(playerStatistics);
            }

            List <PlayerstatisticExtended> fileteredList = new List <PlayerstatisticExtended>();

            foreach (var playerstatistic in playerStatistics)
            {
                //filters for turn flush
                if (settings.TurnTextureSettings.IsFlushCardFilter)
                {
                    //filter for rainbow flush
                    if (settings.TurnTextureSettings.FlushCard == TurnFlushCardsEnum.Rainbow && !new NoPossibleFlushTextureAnalyzer().Analyze(playerstatistic.Playerstatistic.Board, Street.Turn))
                    {
                        continue;
                    }
                    //filter for two of two suits
                    if (settings.TurnTextureSettings.FlushCard == TurnFlushCardsEnum.TwoOfTwoSuits && !new TwoOfTwoSuitFlushTextureAnalyzer().Analyze(playerstatistic.Playerstatistic.Board, Street.Turn))
                    {
                        continue;
                    }
                    //filter for two of one suit
                    if (settings.TurnTextureSettings.FlushCard == TurnFlushCardsEnum.TwoOfOneSuit && !new TwoOfOneSuitFlushTextureAnalyzer().Analyze(playerstatistic.Playerstatistic.Board, Street.Turn))
                    {
                        continue;
                    }
                    //filter for three of one suit
                    if (settings.TurnTextureSettings.FlushCard == TurnFlushCardsEnum.ThreeOfOneSuit && !new ThreeOfOneSuitFlushTextureAnalyzer().Analyze(playerstatistic.Playerstatistic.Board, Street.Turn))
                    {
                        continue;
                    }
                    //filter for four of one suit
                    if (settings.TurnTextureSettings.FlushCard == TurnFlushCardsEnum.FourOfOneSuit && !new FourOfOneSuitFlushTextureAnalyzer().Analyze(playerstatistic.Playerstatistic.Board, Street.Turn))
                    {
                        continue;
                    }
                }

                //filter for open-ended straights
                //if number of open ended straigths is not equal to the number we need, then we skip such playerstatistic
                if (settings.TurnTextureSettings.IsOpenEndedStraightDrawsFilter)
                {
                    if (new OpenEndedStraightTextureAnalyzer().Analyze(playerstatistic.Playerstatistic.Board, Street.Turn) != settings.TurnTextureSettings.OpenEndedStraightDraws)
                    {
                        continue;
                    }
                }

                //filter for possible straights and according < > or ==
                if (settings.TurnTextureSettings.IsPossibleStraightsFilter)
                {
                    if (!BoardTextureAnalyzerHelpers.CheckEquality(settings.TurnTextureSettings.PossibleStraightsCompare, new PossibleStraightTextureAnalyzer().Analyze(playerstatistic.Playerstatistic.Board, Street.Turn), settings.TurnTextureSettings.PossibleStraights))
                    {
                        continue;
                    }
                }

                //filter for gutshot straights
                if (settings.TurnTextureSettings.IsGutshotsFilter)
                {
                    if (new GutShotBeatNutsTextureAnalyzer().Analyze(playerstatistic.Playerstatistic.Board, Street.Turn) != settings.TurnTextureSettings.Gutshots)
                    {
                        continue;
                    }
                }

                //filter for the highest card
                if (settings.TurnTextureSettings.IsHighcardFilter)
                {
                    if (BoardTextureAnalyzerHelpers.HighestBoardCardRank(playerstatistic.Playerstatistic.Board, Street.Turn) != DataTypes.Card.GetCardRank(settings.TurnTextureSettings.HighestCard))
                    {
                        continue;
                    }
                }

                //filter for exact turn texture
                if (settings.TurnTextureSettings.IsCardTextureFilter)
                {
                    if (!BoardTextureAnalyzerHelpers.BoardContainsExactTextureCards(playerstatistic.Playerstatistic.Board, settings.TurnTextureSettings.SelectedCardTextureList, Street.Turn))
                    {
                        continue;
                    }
                }

                //filter for Turn is Paired
                if (settings.TurnTextureSettings.IsPairedFilter)
                {
                    if (!BoardTextureAnalyzerHelpers.BoardContainsAPair(playerstatistic.Playerstatistic.Board, Street.Turn))
                    {
                        continue;
                    }
                }


                fileteredList.Add(playerstatistic);
            }

            return(fileteredList);
        }