Esempio n. 1
0
        /// <summary>
        /// Calculates required piece count to finish for selected cue as series.
        /// </summary>
        /// <param name="cue"></param>
        /// <returns></returns>
        private byte RequiredPieceCountColorSeries(OkeyCue cue, List <SeriesPiece> series, List <OkeyPiece> notInPerPieces)
        {
            // create series list for each color
            ColorSeries colorSeries = new ColorSeries();

            // select and fill pieces into series
            foreach (OkeyPiece piece in cue.Pieces)
            {
                foreach (SeriesPiece s in colorSeries.Series)
                {
                    if (piece.PieceColor == s.Color)
                    {
                        s.Pieces.Add(piece);
                    }
                }
            }

            int perCountInSeries = CalculatePerCountInSeries(colorSeries, series, notInPerPieces);

            return(Convert.ToByte(cue.Pieces.Count - (perCountInSeries * 3)));
        }
Esempio n. 2
0
        private int CalculatePerCountInSeries(ColorSeries colorSeries, List <SeriesPiece> series, List <OkeyPiece> notInPerPieces)
        {
            int totalPerCount = 0;

            foreach (SeriesPiece s in colorSeries.Series)
            {
                // sort pieces in series
                if (s.Pieces.Count >= 3)
                {
                    s.Pieces       = s.Pieces.OrderBy(o => o.PieceValue).ToList();
                    totalPerCount += CalculatePerCountInSerie(s.Pieces, series, notInPerPieces);
                }
                else
                {
                    foreach (OkeyPiece p in s.Pieces)
                    {
                        notInPerPieces.Add(p);
                    }
                }
            }

            return(totalPerCount);
        }