Exemple #1
0
    private List <ChestRewardConfig> RandomRewards(int amount, ChestEnum correctChest)
    {
        IEnumerable <WeightedObject <ChestRewardConfig> > enumerable = from chest in PersistentSingleton <Economies> .Instance.KeyChest
                                                                       where IsApplicable(chest.Value.Reward.Type)
                                                                       select chest;

        switch (correctChest)
        {
        case ChestEnum.KeyChest:
            enumerable = from chest in PersistentSingleton <Economies> .Instance.KeyChest
                         where IsApplicable(chest.Value.Reward.Type)
                         select chest;
            break;

        case ChestEnum.BronzeChest:
            enumerable = from chest in PersistentSingleton <Economies> .Instance.BronzeChest
                         where IsApplicable(chest.Value.Reward.Type)
                         select chest;
            break;

        case ChestEnum.SilverChest:
            enumerable = from chest in PersistentSingleton <Economies> .Instance.SilverChest
                         where IsApplicable(chest.Value.Reward.Type)
                         select chest;
            break;

        case ChestEnum.GoldChest:
            enumerable = from chest in PersistentSingleton <Economies> .Instance.GoldChest
                         where IsApplicable(chest.Value.Reward.Type)
                         select chest;
            break;
        }
        List <ChestRewardConfig> list = new List <ChestRewardConfig>();

        for (int i = 0; i < amount; i++)
        {
            ChestRewardConfig reward = enumerable.AllotObject();
            if (reward.Reward.Type == RewardEnum.AddToRelics)
            {
                BigDouble a = Singleton <EconomyHelpers> .Instance.GetRelicsFromBoss(PlayerData.Instance.LifetimeChunk.Value) * PersistentSingleton <GameSettings> .Instance.ChestRelicMultiplier;

                BigDouble right = BigDouble.Max(a, new BigDouble(1.0)).Round();
                reward = new ChestRewardConfig(new RewardData(reward.Reward.Type, reward.Reward.Amount * right), reward.Rarity);
            }
            if (reward.Reward.Type == RewardEnum.AddToSkillAutoMine || reward.Reward.Type == RewardEnum.AddToSkillGoldfinger || reward.Reward.Type == RewardEnum.AddToSkillTapBoost || reward.Reward.Type == RewardEnum.AddToSkillTeamBoost || reward.Reward.Type == RewardEnum.AddToSkillTNT)
            {
                enumerable = from x in enumerable
                             where x.Value.Reward.Type != reward.Reward.Type
                             select x;
            }
            list.Add(reward);
        }
        return(list);
    }
Exemple #2
0
    public void BuyChestWithGems(int gems, int rewardAmount, ChestEnum chest)
    {
        if (PlayerData.Instance.Gems.Value < gems)
        {
            NotEnoughGemsForChest(gems);
            BindingManager.Instance.NotEnoughGemsOverlay.SetActive(value: true);
        }
        else
        {
            Singleton <FundRunner> .Instance.RemoveGems(gems, chest.ToString(), "chests");

            GenerateAndOpenChest(rewardAmount, chest);
        }
    }
Exemple #3
0
    private void GenerateAndOpenChest(int rewardAmount, ChestEnum chest)
    {
        Singleton <FundRunner> .Instance.OpenChests(1);

        Singleton <FakeFundRunner> .Instance.CopyFunds();

        List <ChestRewardConfig> rewards = CreateChestRewards(rewardAmount, chest);

        RewardActions = RewardFactory.ToRewardActions(rewards, PlayerData.Instance.LifetimeCreatures.Value);
        foreach (RewardAction rewardAction in RewardActions)
        {
            rewardAction.GiveReward();
        }
        ShowChestOpening();
    }
Exemple #4
0
    public static List <WeightedObject <ChestRewardConfig> > ParseChests(string text, ChestEnum chest)
    {
        IEnumerable <string[]> source = TSVParser.Parse(text).Skip(1);

        return((from line in source
                select new WeightedObject <ChestRewardConfig>
        {
            Value = new ChestRewardConfig(line.asCustom(0, RewardParser.ParseReward, line.toError <RewardData>()), line.asEnum(1, line.toError <RarityEnum>())),
            Weight = line.asFloat((int)(chest + 2), line.toError <float>())
        }).ToList());
    }
Exemple #5
0
 public List <ChestRewardConfig> CreateChestRewards(int amount, ChestEnum chest)
 {
     return(RandomRewards(amount, chest));
 }