public BoosterRunner(int booster) { SceneLoader instance = SceneLoader.Instance; BoosterIndex = booster; m_boosterConfig = PersistentSingleton <Economies> .Instance.Boosters[BoosterIndex]; if (BoosterIndex == 0) { m_maxBoosterAmount = PersistentSingleton <GameSettings> .Instance.MaxDamageBoosterPurchaseAmount; } else { m_maxBoosterAmount = PersistentSingleton <GameSettings> .Instance.MaxBoosterPurchaseAmount; } BoosterMaxReached = (from currentAmount in PlayerData.Instance.BoostersBought[BoosterIndex] select currentAmount >= m_maxBoosterAmount).TakeUntilDestroy(instance).ToReadOnlyReactiveProperty(); BoosterCost = (from amount in PlayerData.Instance.BoostersBought[BoosterIndex] select Singleton <EconomyHelpers> .Instance.GetBoosterCost(BoosterIndex, amount)).TakeUntilDestroy(instance).ToReadOnlyReactiveProperty(); BoosterAvailable = BoosterCost.CombineLatest(PlayerData.Instance.Gems, (int cost, int gems) => cost <= gems).TakeUntilDestroy(instance).ToSequentialReadOnlyReactiveProperty(); BoosterName.Value = PersistentSingleton <LocalizationService> .Instance.Text("GemBooster.Title." + (BoosterEnum)BoosterIndex); BoosterDescription.Value = PersistentSingleton <LocalizationService> .Instance.Text("GemBooster.Desc." + (BoosterEnum)BoosterIndex); BoosterBonus = (from _ in PlayerData.Instance.BoostersEffect[BoosterIndex] select BoosterCollectionRunner.GetBoosterBonusString((BoosterEnum)BoosterIndex)).TakeUntilDestroy(instance).ToReadOnlyReactiveProperty(); BoosterNextUpgrade = (from _ in BoosterCost select BoosterCollectionRunner.GetBoosterNextUpgradeString((BoosterEnum)BoosterIndex)).TakeUntilDestroy(instance).ToReadOnlyReactiveProperty(); ActiveBooster = (from active in Singleton <BoosterCollectionRunner> .Instance.ActiveBooster select active == BoosterIndex).TakeUntilDestroy(instance).ToReadOnlyReactiveProperty(); }
public int GetBoosterCost(int boosterIndex, int boostersBought) { BoosterConfig boosterConfig = PersistentSingleton <Economies> .Instance.Boosters[boosterIndex]; return(boosterConfig.InitialGemCost + boosterConfig.GemCostIncrease * boostersBought); }