Ejemplo n.º 1
0
        private Wallet DenormalizeInternal(int copper, Coin.Types preferredType = Coin.Types.Gold)
        {
            int platinum = ConvertIfPreferred(copper, Coin.Types.Copper, Coin.Types.Platinum, preferredType, out copper);
            int gold     = ConvertIfPreferred(copper, Coin.Types.Copper, Coin.Types.Gold, preferredType, out copper);
            int silver   = ConvertIfPreferred(copper, Coin.Types.Copper, Coin.Types.Silver, preferredType, out copper);

            return(new Wallet(platinum, gold, silver, copper));
        }
Ejemplo n.º 2
0
 public int ConvertIfPreferred(int sourceAmount, Coin.Types sourceType, Coin.Types targetType, Coin.Types preferredType, out int remainderAmount)
 {
     if (targetType != preferredType && Coin.IsHigher(targetType, preferredType))
     {
         remainderAmount = sourceAmount;
         return(0);
     }
     else
     {
         return(Convert(sourceAmount, sourceType, targetType, out remainderAmount));
     }
 }
Ejemplo n.º 3
0
        public int Convert(int sourceAmount, Coin.Types sourceType, Coin.Types targetType, out int remainderAmount)
        {
            if (sourceType == targetType)
            {
                remainderAmount = 0;
                return(sourceAmount);
            }

            double conversionRate = Coin.GetConversionRate(sourceType, targetType);

            if (conversionRate < 1)
            {
                remainderAmount = (int)(sourceAmount % (1d / conversionRate));
                return((int)Math.Floor(sourceAmount / (1d / conversionRate)));
            }
            else
            {
                remainderAmount = 0;
                return((int)(sourceAmount * conversionRate));
            }
        }
Ejemplo n.º 4
0
 public Wallet Denormalize(int?copper, Coin.Types preferredType = Coin.Types.Gold)
 {
     return(copper == null
         ? new Wallet(0, 0, 0, 0)
         : DenormalizeInternal(copper.Value, preferredType));
 }