예제 #1
0
    public void Sell(Recipe recipe, Invoice invoice)
    {
        if (!GameController.instance.player.inventory.CheckIfWarehouseContains(recipe.description.Name) || invoice.quantity + area.soldItems > area.maxQuotum)
        {
            return;
        }

        bool soldSuccesfully = GameController.instance.player.inventory.Remove(recipe.description.Name, invoice.quantity);

        if (soldSuccesfully)
        {
            if (!tutorial.isTutorialCompleted)
            {
                tutorial.ContinueTutorial();
            }
            view.returnBtn.gameObject.SetActive(true);
            var messageBox = GameController.instance.buttons.messageBox;
            messageBox.Show(
                "x" + invoice.quantity.ToString() + " "
                + RecipeSelector.recipeHolderSelected.recipe.description.Name + " sold",
                RecipeSelector.recipeHolderSelected.recipe.description.sprite
                );
            GameController.instance.player.GainExperience(invoice.quantity * 10 * (area.experienceMultiplier + (recipe.Talents.Count) / 4));
            GameController.instance.player.resources.ChangeBalance(invoice.Summary, true);
            int healAmount = recipe.characteristics.healingRate * invoice.quantity;
            area.health    += healAmount; area.health = Mathf.Clamp(area.health, 0, area.maxHealth);
            area.soldItems += invoice.quantity;
            // refresh dead/alive rate
            int    alive  = 0;
            int    dead   = 0;
            Reaper reaper = new Reaper();
            dead               = reaper.GetDeadAliveRate(recipe, invoice.quantity, out alive);
            area.dead         += dead;
            area.cured        += alive;
            area.health       -= dead * 10;
            recipe.soldAmount += invoice.quantity;
            recipe.deadAmount += dead;
            recipe.RecalculatePrice();
            view.onSell.Play();
            // achieve quest's objective if it exists
            EventManager.TriggerEvent("OnSell", invoice.quantity);
            EventManager.TriggerEvent("OnKill", dead);
            EventManager.TriggerEvent("OnCure", alive);
            EventManager.TriggerEvent("OnHeal", healAmount);
            // increment achievement
            PlayGameScript.IncrementAchievement(GPGSIds.achievement_life_saver, alive);
            PlayGameScript.IncrementAchievement(GPGSIds.achievement_grim_reaper, dead);
            GameController.instance.audio.MakeSound(onSellSound);
        }
        view.SetViewToArea(area);
        view.RemoveCheckmarks();

        ListPopulator.PopulateRecipeList(view.recipeView, view.recipePrefab, GameController.instance.player.inventory.recipes.Where(x => x.GetDeathRating() <= area.deathRatingAllowed &&
                                                                                                                                    GameController.instance.player.inventory.GetQuantity(x.description.Name) > 0).ToList());
    }
예제 #2
0
 public void SaleOn(Area area, int transferCost)
 {
     this.area         = area;
     this.transferCost = transferCost;
     view.gameObject.SetActive(true);
     view.SetViewToArea(area);
     EventManager.StartListening("OnRecipeRemove", view.RemoveCheckmarks);
     GameController.instance.time.Pause();
     RecipeSelector.UnSelectRecipe();
     GameController.instance.IsGameSceneEnabled = false;
     ListPopulator.PopulateRecipeList(view.recipeView, view.recipePrefab, GameController.instance.player.inventory.recipes.Where(x => x.GetDeathRating() <= area.deathRatingAllowed &&
                                                                                                                                 GameController.instance.player.inventory.GetQuantity(x.description.Name) > 0).ToList());
     if (!tutorial.isTutorialCompleted)
     {
         tutorial.ContinueTutorial();
     }
     if (!GameController.instance.generalTutorial.isTutorialCompleted)
     {
         view.returnBtn.gameObject.SetActive(false);
     }
 }
예제 #3
0
 public void PopulateRecipeList(Transform panel, GameObject recipePrefab)
 {
     ListPopulator.PopulateRecipeList(panel, recipePrefab, GameController.instance.player.inventory.recipes.Where(x => !x.isDeleted).ToList());
 }