Esempio n. 1
0
        public bool Roll(int roll)
        {
            Rolls.Add(roll);

            Score += roll;

            if (IsStrike || IsSpare)
            {
                if (IsLast && Rolls.Count() == MaxRollsPerFrame)
                {
                    return(false);
                }
            }

            if (Previous != null)
            {
                if (Previous.IsSpare && Rolls.Count == 1)
                {
                    Previous.AddSpareScore(roll);
                }
                else if (Previous.IsStrike)
                {
                    Previous.AddSpareScore(roll);
                }

                var prePrevious = Previous.Previous;

                if (!IsLast && prePrevious != null && prePrevious.IsStrike)
                {
                    prePrevious.AddSpareScore(roll);
                }
            }

            return(!IsStrike && !IsLast && Rolls.Count < 2);
        }