Пример #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);
    }
Пример #2
0
    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);
    }
Пример #3
0
    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);
    }
Пример #4
0
    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();
    }
Пример #5
0
    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);
    }
Пример #6
0
    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);
    }
Пример #7
0
    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);
        }
    }
Пример #8
0
 public void RemoveChunkHealth(BigDouble amount)
 {
     Singleton <ChunkRunner> .Instance.CurrentChunkHealth.Value = BigDouble.Max(BigDouble.ZERO, Singleton <ChunkRunner> .Instance.CurrentChunkHealth.Value - amount);
 }