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); }
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); } }
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(); }
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()); }
public List <ChestRewardConfig> CreateChestRewards(int amount, ChestEnum chest) { return(RandomRewards(amount, chest)); }