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 int GetCraftingGemCost(CraftingRequirement have, CraftingRequirement req) { int num = 0; BigDouble relics = BigDouble.Max(0L, req.Resources[6] - have.Resources[6]); num += MissingRelicsToGems.Evaluate(relics); for (int i = 0; i < 6; i++) { long value = Math.Max(0L, req.Resources[i] - have.Resources[i]); num += GetBlockToGems((BlockType)i, value); } return(num); }
protected void Awake() { m_rigidbody = GetComponent <Rigidbody>(); m_damageMesh.mesh.MarkDynamic(); Vector3 size = GetComponent <BoxCollider>().size; m_approximateSize = Mathf.RoundToInt(size.x); (from hp in HitPoints.Pairwise() where hp.Current <hp.Previous && hp.Previous> BigDouble.ZERO select hp).Subscribe(delegate(Pair <BigDouble> hp) { Singleton <ChunkRunner> .Instance.RemoveChunkHealth(hp.Previous - BigDouble.Max(BigDouble.ZERO, hp.Current)); }).AddTo(this); float num = 1f - 0.2f / (float)m_approximateSize; float num2 = 1f + 0.2f / (float)m_approximateSize; m_dmgAnimUp = new Vector3(num, num2, num); m_dmgAnimDown = new Vector3(num2, num, num2); }
public GoldBoosterRunner(int booster) { SceneLoader instance = SceneLoader.Instance; GoldBoosterIndex = booster; BoosterCost.Value = PersistentSingleton <GameSettings> .Instance.GoldBoosterPrices[GoldBoosterIndex]; BoosterName.Value = PersistentSingleton <LocalizationService> .Instance.Text("GemBooster.Title." + (GoldBoosterEnum)GoldBoosterIndex); BoosterDescription.Value = PersistentSingleton <LocalizationService> .Instance.Text("GemBooster.Desc." + (GoldBoosterEnum)GoldBoosterIndex); ReadOnlyReactiveProperty <BiomeConfig> source = (from chunk in PlayerData.Instance.LifetimeChunk select Singleton <EconomyHelpers> .Instance.GetBiomeConfig(chunk)).TakeUntilDestroy(instance).ToReadOnlyReactiveProperty(); BoosterReward = (from biome in source select biome.BlockReward * PersistentSingleton <GameSettings> .Instance.GoldBoosterMultipliers[GoldBoosterIndex] into reward select BigDouble.Max(reward, PersistentSingleton <GameSettings> .Instance.GoldBoosterMinRewards[GoldBoosterIndex])).TakeUntilDestroy(instance).ToReadOnlyReactiveProperty(); BoosterAvailable = BoosterCost.CombineLatest(PlayerData.Instance.Gems, (int cost, int gems) => cost <= gems).TakeUntilDestroy(instance).ToReadOnlyReactiveProperty(); ActiveBooster = (from active in Singleton <GoldBoosterCollectionRunner> .Instance.ActiveBooster select active == GoldBoosterIndex).TakeUntilDestroy(instance).ToReadOnlyReactiveProperty(); }
protected void Start() { Text textField = GetComponent <Text>(); BigDouble[] previousHealth = new BigDouble[5] { BigDouble.ZERO, BigDouble.ZERO, BigDouble.ZERO, BigDouble.ZERO, BigDouble.ZERO }; int current = 0; (from moving in Singleton <CameraMoveRunner> .Instance.IsCameraMoving where !moving select moving).DelayFrame(1).Subscribe(delegate { for (int i = 0; i < previousHealth.Length; i++) { previousHealth[i] = Singleton <ChunkRunner> .Instance.CurrentChunkHealth.Value; } }).AddTo(this); (from _ in TickerService.MasterTicks select BigDouble.Max(BigDouble.ZERO, previousHealth[current] - Singleton <ChunkRunner> .Instance.CurrentChunkHealth.Value) * 2L).Subscribe(delegate(BigDouble dps) { textField.text = BigString.ToString(dps); previousHealth[current] = Singleton <ChunkRunner> .Instance.CurrentChunkHealth.Value; if (current == previousHealth.Length - 1) { current = 0; } else { current++; } }).AddTo(this); }
public BigDouble GetCoinRewardAmount(RewardEnum type, int chunk) { BigDouble bigDouble = Singleton <EconomyHelpers> .Instance.GetBiomeConfig(chunk).BlockReward; switch (type) { case RewardEnum.AddToCoinsSmall: bigDouble *= PersistentSingleton <GameSettings> .Instance.GoldBoosterMultipliers[0]; bigDouble = BigDouble.Max(bigDouble, PersistentSingleton <GameSettings> .Instance.GoldBoosterMinRewards[0]); break; case RewardEnum.AddToCoinsMedium: bigDouble *= PersistentSingleton <GameSettings> .Instance.GoldBoosterMultipliers[1]; bigDouble = BigDouble.Max(bigDouble, PersistentSingleton <GameSettings> .Instance.GoldBoosterMinRewards[1]); break; case RewardEnum.AddToCoinsLarge: bigDouble *= PersistentSingleton <GameSettings> .Instance.GoldBoosterMultipliers[2]; bigDouble = BigDouble.Max(bigDouble, PersistentSingleton <GameSettings> .Instance.GoldBoosterMinRewards[2]); break; } return(bigDouble); }
private void CloudSyncOrUpload(JSONObject json, string reason) { m_cloudSave = null; BigDouble a = -1L; if (json != null && json.HasField("Base")) { json = json.GetField("Base"); if (json != null && json.HasField("Value")) { string val = PlayFabService.JSONUnescape(json.asString("Value", () => string.Empty)); m_cloudSave = JSONObject.Create(val); a = m_cloudSave.asBigDouble("LifetimeCoins", () => - 1L); } } if (m_cloudSave != null && ShouldForceUpdate(m_cloudSave)) { Debug.LogError("Show Force Update"); // ForceUpdateService.ShowForceUpdateDialog(); } else if (m_cloudSave != null && IsCloudNewer(m_cloudSave, PlayerData.Instance)) { LocalProgress.Value = PlayerData.Instance.LifetimeCoins.Value; CloudProgress.Value = BigDouble.Max(a, 0L); Observable.Return(value: true).Delay(TimeSpan.FromSeconds(3.0)).Take(1) .Subscribe(delegate { BindingManager.Instance.CloudSyncPopup.SetActive(value: true); }) .AddTo(SceneLoader.Instance); } else { UploadSaveToCloud(PlayerData.Instance, reason, null, null); } }
public void RemoveChunkHealth(BigDouble amount) { Singleton <ChunkRunner> .Instance.CurrentChunkHealth.Value = BigDouble.Max(BigDouble.ZERO, Singleton <ChunkRunner> .Instance.CurrentChunkHealth.Value - amount); }