Пример #1
0
    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();
    }
Пример #2
0
    public int GetBoosterCost(int boosterIndex, int boostersBought)
    {
        BoosterConfig boosterConfig = PersistentSingleton <Economies> .Instance.Boosters[boosterIndex];

        return(boosterConfig.InitialGemCost + boosterConfig.GemCostIncrease * boostersBought);
    }