コード例 #1
0
    WeightedRandomBuffer <CurrencyData> getDogSpecialGiftChances(DogDescriptor dog)
    {
        float affectionFraction;

        /*
         * Affection determines whether dog can return souvenir
         * IF dog already hsa souvenir, assume affection is 0
         * (no chance of returning souvenir)
         */
        if (eligibleForSouvenir(dog))
        {
            affectionFraction = dog.FractionOfMaxAffection;
        }
        else
        {
            affectionFraction = k.NONE_VALUE;
        }
        CurrencyData[] specialGiftOptions = giftFactory.CreateGroup(tuning.SpecialGiftTypes);
        float[]        specialGiftOdds    = new float[specialGiftOptions.Length];
        for (int i = 0; i < specialGiftOdds.Length; i++)
        {
            specialGiftOdds[i] = Mathf.Lerp(
                tuning.SpecialGiftMinAffectionChances[i],
                tuning.SpecialGiftMaxAffectionChances[i],
                affectionFraction);
            // Check to prevent a DogVoucher from being given out if all dogs have already been adopted:
            if (specialGiftOptions[i] is DogVoucherData && dataController.AllDogsAdopted(DogDatabase.GetInstance))
            {
                specialGiftOdds[i] = k.NONE_VALUE;
            }
        }
        return(new WeightedRandomBuffer <CurrencyData>(specialGiftOptions, specialGiftOdds));
    }
コード例 #2
0
    WeightedRandomBuffer <CurrencyData> populateGifts(
        string[] giftTypes,
        int[] giftAmounts,
        float[] giftChances,
        float discountPercent)
    {
        ParallelArray <string, int> giftData    = new ParallelArray <string, int>(giftTypes, giftAmounts);
        CurrencyFactory             giftFactory = new CurrencyFactory();

        CurrencyData[] gifts = giftFactory.CreateGroup(giftData, discountPercent);
        return(new WeightedRandomBuffer <CurrencyData>(gifts, giftChances));
    }