Пример #1
0
        private void PerformRoll()
        {
            if (Number > MAX_DICE_COUNT)
            {
                throw new TooManyDicesException(Number);
            }

            RollResult = Add;

            Random random = new Random();

            diceResults = new List <BigInteger>();

            if (Faces == 1)
            {
                RollResult += Number;
            }
            else
            {
                byte[] bytes = Faces.ToByteArray();
                for (int i = 0; i < Number; i++)
                {
                    random.NextBytes(bytes);
                    bytes[bytes.Length - 1] &= (byte)0x7F;
                    BigInteger roll = new BigInteger(bytes) % Faces + 1;
                    if (Number <= MAX_DICE_RESULT_COUNT)
                    {
                        DiceResults.Add(roll);
                    }
                    RollResult += roll;
                }
            }
        }