Example #1
0
    void feedDogs(DogFoodData food)
    {
        int amountFoodNeeded = calculateDogFoodNeeded();

        if (amountFoodNeeded <= k.NONE_VALUE)
        {
            return;
        }
        DogFoodData foodNeeded = food.Copy();

        foodNeeded.SetAmount(-amountFoodNeeded);
        if (dataController.HasFood(food.FoodType, amountFoodNeeded) && !IsCurrentlyFeeding)
        {
            dataController.ChangeCurrencyAmount(foodNeeded);
            buttonReference.interactable = false;
            EventController.Event(k.GetPlayEvent(k.ADD_FOOD));
            dataController.RefillDogFood();
            giveDogsFood(foodNeeded);
            foodBowlImage.color = food.Color;
            currentFood         = foodNeeded;
            feedingTimer.Reset();
            feedingTimer.Begin();
            foodSelector.Hide();
        }
        else
        {
            EventController.Event(k.GetPlayEvent(k.EMPTY));
            foodSelector.SetDescription(LanguageDatabase.GetInstance.GetTerm(k.BUY_MORE_FOOD));
            foodSelector.SetDelegate(loadFoodShop);
        }
    }
Example #2
0
 void updateFoodDisplay(DogFoodData food)
 {
     foodBowlIcon.SetImageColor(food.Color);
     foodAmount.SetText(food.Amount.ToString());
     descriptionDisplay.SetText(food.Description);
     SetDelegate(defaultClickYes);
 }
Example #3
0
    public DogFoodData DigestFood()
    {
        DogFoodData food = this.eatenFood;

        this.eatenFood = null;
        return(food);
    }
Example #4
0
    public DogFoodData GetPiece()
    {
        DogFoodData piece = Copy();

        piece.amount = k.SINGLE_VALUE;
        return(piece);
    }
Example #5
0
    public void SetAmount(int amount, string type = k.DEFAULT_FOOD_TYPE)
    {
        DogFoodData food       = GetFood(type);
        int         difference = amount - food.Amount;

        food.ChangeBy(difference);
    }
Example #6
0
 void giveDogsFood(DogFoodData food)
 {
     foreach (DogDescriptor dog in dataController.HomeDogs)
     {
         DogFoodData pieceOfFood = food.GetPiece();
         dog.EatFood(pieceOfFood);
     }
 }
Example #7
0
 public DogFoodData GetLastUsedFood()
 {
     if (lastUsedFood == null)
     {
         lastUsedFood = GetFood();
     }
     return(lastUsedFood);
 }
Example #8
0
    public void ChangeBy(int delta, string type = k.DEFAULT_FOOD_TYPE)
    {
        DogFoodData food = GetFood(type);

        food.ChangeBy(delta);
        if (delta < k.NONE_VALUE)
        {
            this.lastUsedFood = food;
        }
    }
Example #9
0
    public DogFoodData Get(string foodType)
    {
        DogFoodData food;

        if (!dogFoodLookup.TryGetValue(foodType, out food))
        {
            food = DogFoodData.Default();
        }
        return(food);
    }
Example #10
0
 CurrencyType defaultRandomType(DogDescriptor dog, DogFoodData food)
 {
     return(new WeightedRandomBuffer <CurrencyType>(
                new CurrencyType[]
     {
         CurrencyType.Coins,
         CurrencyType.DogFood,
         CurrencyType.SpecialGift
     },
                getWeights(food, hasSpecialization: false)).GetRandom());
 }
Example #11
0
    public static DogFoodData Default()
    {
        DogFoodData defaultFood = new DogFoodData(k.NONE_VALUE);

        defaultFood.foodType       = k.DEFAULT_FOOD_TYPE;
        defaultFood.amountMod      = k.NONE_VALUE;
        defaultFood.specialGiftMod = k.NONE_VALUE;
        defaultFood.colorHex       = k.DEFAULT_FOOD_COLOR_HEX;
        defaultFood.color          = k.DEFAULT_FOOD_COLOR;
        return(defaultFood);
    }
Example #12
0
    public void AddFood(DogFoodData newFood)
    {
        DogFoodData existingFood;

        if (foods.TryGetValue(newFood.FoodType, out existingFood))
        {
            existingFood.ChangeBy(newFood.Amount);
        }
        else
        {
            foods[newFood.FoodType] = newFood;
        }
    }
Example #13
0
 void setFood(DogFoodData food, bool calculateIndex = true)
 {
     selectedFood = food;
     if (calculateIndex)
     {
         try
         {
             currentFoodIndex = ArrayUtil.IndexOf(foodOptions, selectedFood);
         }
         catch
         {
             currentFoodIndex = k.NONE_VALUE;
             selectedFood     = foodOptions[currentFoodIndex];
         }
     }
     updateFoodDisplay(food);
 }
Example #14
0
    CurrencyData generateGift(DogDescriptor dog)
    {
    #if UNITY_EDITOR
        // CHEAT: Returns the souvenir first for testing purposes:
        if (alwaysReturnSouvenirFirst && !dog.SouvenirCollected)
        {
            return(dog.Souvenir);
        }
        else if (alwaysReturnSpecialGift)
        {
            return(getSpecialGift(dog));
        }
    #endif

        DogFoodData food = dog.DigestFood();
        if (food == null)
        {
            food = dataController.DogFood;
        }
        CurrencyType specialization = dog.Breed.ISpecialization;
        int          amount         = randomAmount();
        CurrencyType type;
        if (specialization == CurrencyType.None)
        {
            type = defaultRandomType(dog, food);
        }
        else
        {
            type = getRandomizerBySpecialization(dog, food, specialization).GetRandom();
        }
        if (type == CurrencyType.SpecialGift)
        {
            return(getSpecialGift(dog));
        }
        else
        {
            CurrencyData gift = giftFactory.Create(type, amount);
            if (food.AmountMod != k.NONE_VALUE)
            {
                gift.MultiplyBy(food.AmountMod);
            }
            return(gift);
        }
    }
Example #15
0
    float[] getWeights(DogFoodData dogFood, bool hasSpecialization)
    {
        float difference;
        float halfDifference;
        float specialGiftChance;

        if (dogFood.SpecialGiftMod != k.NONE_VALUE)
        {
            difference        = dogFood.SpecialGiftMod - tuning.ChanceOfSpecialGift;
            specialGiftChance = dogFood.SpecialGiftMod;
        }
        else
        {
            difference        = k.NONE_VALUE;
            specialGiftChance = tuning.ChanceOfSpecialGift;
        }
        halfDifference = difference / 2f;
        float[] weights;
        if (hasSpecialization)
        {
            weights = new float[]
            {
                tuning.ChanceOfSpecialization - halfDifference,
                tuning.ChanceOfSecondary - halfDifference,
                specialGiftChance,
            };
        }
        else
        {
            weights = new float[]
            {
                tuning.DefaultChanceOfCollectingDogFood - halfDifference,
                tuning.DefaultChanceOfCollectingMoney - halfDifference,
                specialGiftChance,
            };
        }
        return(weights);
    }
Example #16
0
 public void EatFood(DogFoodData food)
 {
     this.eatenFood = food;
 }
Example #17
0
 WeightedRandomBuffer <CurrencyType> getRandomizerBySpecialization(DogDescriptor dog, DogFoodData food, CurrencyType specialization)
 {
     CurrencyType[] currencies = new CurrencyType[]
     {
         specialization,
         getSecondary(specialization),
         CurrencyType.SpecialGift,
     };
     float[] weights = getWeights(food, hasSpecialization: true);
     return(new WeightedRandomBuffer <CurrencyType>(currencies, weights));
 }
Example #18
0
 void loadFoodShop(DogFoodData selectedFood)
 {
     PPSceneController.Instance.LoadShop();
 }