コード例 #1
0
        // converts the currency amount to its base currency and returns it
        public static int GetConvertedValue(Currency currency, int currencyAmount)
        {
            CurrencyGroup currencyGroup = FindCurrencyGroup(currency);

            if (currencyGroup != null)
            {
                // attemp redistribution
                Currency baseCurrency = currencyGroup.MyBaseCurrency;
                // convert everything in the group to the base amount
                if (SystemResourceManager.MatchResource(currency.MyName, currencyGroup.MyBaseCurrency.MyName))
                {
                    return(currencyAmount);
                }
                // the currency needs conversion
                foreach (CurrencyGroupRate currencyGroupRate in currencyGroup.MyCurrencyGroupRates)
                {
                    if (SystemResourceManager.MatchResource(currencyGroupRate.MyCurrency.MyName, currency.MyName))
                    {
                        return(currencyGroupRate.MyBaseMultiple * currencyAmount);
                    }
                }
                return(currencyAmount);
            }
            return(currencyAmount);
        }
コード例 #2
0
        // converts the currency amount to its base currency and returns it
        public int GetBaseCurrencyAmount(Currency currency, int currencyAmount)
        {
            //Debug.Log("CurrencyConverter.GetBaseCurrencyAmount(" + currency.DisplayName + ", " + currencyAmount + ")");
            CurrencyGroup currencyGroup = FindCurrencyGroup(currency);

            if (currencyGroup != null)
            {
                // attemp redistribution
                Currency baseCurrency = currencyGroup.MyBaseCurrency;
                // convert everything in the group to the base amount
                if (SystemDataFactory.MatchResource(currency.DisplayName, currencyGroup.MyBaseCurrency.DisplayName))
                {
                    //Debug.Log("CurrencyConverter.GetBaseCurrencyAmount(" + currency.DisplayName + ", " + currencyAmount + ") return: " + currencyAmount);
                    return(currencyAmount);
                }
                // the currency needs conversion
                foreach (CurrencyGroupRate currencyGroupRate in currencyGroup.MyCurrencyGroupRates)
                {
                    if (SystemDataFactory.MatchResource(currencyGroupRate.Currency.DisplayName, currency.DisplayName))
                    {
                        //Debug.Log("CurrencyConverter.GetBaseCurrencyAmount(" + currency.DisplayName + ", " + currencyAmount + ") return: " + (currencyGroupRate.MyBaseMultiple * currencyAmount));
                        return(currencyGroupRate.BaseMultiple * currencyAmount);
                    }
                }
                //Debug.Log("CurrencyConverter.GetBaseCurrencyAmount(" + currency.DisplayName + ", " + currencyAmount + ") return: " + currencyAmount);
                return(currencyAmount);
            }
            //Debug.Log("CurrencyConverter.GetBaseCurrencyAmount(" + currency.DisplayName + ", " + currencyAmount + ") return: " + currencyAmount);
            return(currencyAmount);
        }
コード例 #3
0
        // returns the base currency for any given currency if it is part of a group, otherwise, just returns itself
        public static Currency GetBaseCurrency(Currency currency)
        {
            CurrencyGroup currencyGroup = FindCurrencyGroup(currency);

            if (currencyGroup != null)
            {
                return(currencyGroup.MyBaseCurrency);
            }
            return(currency);
        }
コード例 #4
0
        /*
         * public int GetCurrencyAmountFromList(Currency currency, List<KeyValuePair<Currency, int>>) {
         *  //Debug.Log(gameObject.name + ".PlayerCurrencyManager.GetCurrency(" + currency.MyName + ")");
         *  //bool foundReputation = false;
         *  string keyName = SystemResourceManager.prepareStringForMatch(currency.MyName);
         *  if (MyCurrencyList.ContainsKey(keyName)) {
         *      return MyCurrencyList[keyName].MyAmount;
         *  }
         *
         *  // default return
         *  return 0;
         * }
         */

        // returns a list of the redistribution of any currency into its group components
        public static Dictionary <Currency, int> RedistributeCurrency(Currency currency, int currencyAmount)
        {
            // create return dictionary
            Dictionary <Currency, int> returnDictionary = new Dictionary <Currency, int>();

            CurrencyGroup currencyGroup = FindCurrencyGroup(currency);

            if (currencyGroup == null)
            {
                returnDictionary.Add(currency, currencyAmount);
                // base currency was the same as input currency or input currency was not part of group, return it directly
                return(returnDictionary);
            }

            // attemp redistribution
            Currency baseCurrency = currencyGroup.MyBaseCurrency;

            // convert incoming currency to the base amount
            int baseCurrencyAmount = GetConvertedValue(currency, currencyAmount);

            // create a sorted list of the redistribution of this base currency amount into the higher currencies in the group
            SortedDictionary <int, Currency> sortList = new SortedDictionary <int, Currency>();

            foreach (CurrencyGroupRate currencyGroupRate in currencyGroup.MyCurrencyGroupRates)
            {
                sortList.Add(currencyGroupRate.MyBaseMultiple, currencyGroupRate.MyCurrency);
            }
            foreach (KeyValuePair <int, Currency> currencyGroupRate in sortList.Reverse())
            {
                int exchangedAmount = 0;
                if (currencyGroupRate.Key <= baseCurrencyAmount)
                {
                    // we can add this currency
                    exchangedAmount     = (int)Mathf.Floor((float)baseCurrencyAmount / (float)currencyGroupRate.Key);
                    baseCurrencyAmount -= (exchangedAmount * currencyGroupRate.Key);
                }
                returnDictionary.Add(currencyGroupRate.Value, exchangedAmount);
            }
            returnDictionary.Add(currencyGroup.MyBaseCurrency, baseCurrencyAmount);

            return(returnDictionary);
        }