Пример #1
0
 public void RemoveFromFundsOrZero(CraftingRequirement req)
 {
     for (int i = 0; i < 7; i++)
     {
         PlayerData.Instance.BlocksCollected[i].Value = Math.Max(0L, PlayerData.Instance.BlocksCollected[i].Value - req.Resources[i]);
     }
 }
Пример #2
0
    public void UpgradeGearWithGems(int gear)
    {
        GearRunner orCreateGearRunner = Singleton <GearCollectionRunner> .Instance.GetOrCreateGearRunner(gear);

        CraftingRequirement gearUpgradeCost = Singleton <EconomyHelpers> .Instance.GetGearUpgradeCost(orCreateGearRunner.GearIndex, orCreateGearRunner.Level.Value);

        if (!orCreateGearRunner.MaxLevelReached.Value)
        {
            if (orCreateGearRunner.Level.Value == 0)
            {
                GearUnlockTriggered.SetValueAndForceNotify(orCreateGearRunner.GearIndex);
            }
            int craftingGemCost = Singleton <EconomyHelpers> .Instance.GetCraftingGemCost(AsCraftingRequirement(PlayerData.Instance.BlocksCollected), gearUpgradeCost);

            if (craftingGemCost > PlayerData.Instance.Gems.Value)
            {
                NotEnoughGemsForUpgrade(gear);
                BindingManager.Instance.NotEnoughGemsOverlay.SetActive(value: true);
            }
            else
            {
                Singleton <FundRunner> .Instance.RemoveFromFundsOrZero(gearUpgradeCost);

                Singleton <FundRunner> .Instance.RemoveGems(craftingGemCost, "gear_" + gear.ToString(), "gears");

                orCreateGearRunner.Level.Value++;
            }
        }
    }
Пример #3
0
 public void RemoveFromFunds(CraftingRequirement req)
 {
     for (int i = 0; i < 7; i++)
     {
         PlayerData.Instance.BlocksCollected[i].Value -= req.Resources[i];
     }
 }
Пример #4
0
    public CraftingRequirement GetGearUpgradeCost(int id, int level)
    {
        CraftingRequirement    craftingRequirement    = new CraftingRequirement();
        CraftingMaterialConfig craftingMaterialConfig = PersistentSingleton <Economies> .Instance.CraftingMaterial[id];

        craftingRequirement.Resources = new long[7]
        {
            0L,
            0L,
            0L,
            0L,
            0L,
            0L,
            GetRelicCost(id, level)
        };
        if (craftingMaterialConfig.JellyStartingpoint >= 0 && level == 0)
        {
            craftingRequirement.Resources[6] = PersistentSingleton <Economies> .Instance.Crafting[craftingMaterialConfig.JellyStartingpoint].Relics;
        }
        if (craftingMaterialConfig.Material1 != null)
        {
            craftingRequirement.Resources[(int)craftingMaterialConfig.Material1.Type] = PersistentSingleton <Economies> .Instance.Crafting[level + craftingMaterialConfig.Material1.StartingPoint].Materials[(int)craftingMaterialConfig.Material1.Type];
        }
        if (craftingMaterialConfig.Material2 != null)
        {
            craftingRequirement.Resources[(int)craftingMaterialConfig.Material2.Type] = PersistentSingleton <Economies> .Instance.Crafting[level + craftingMaterialConfig.Material2.StartingPoint].Materials[(int)craftingMaterialConfig.Material2.Type];
        }
        if (craftingMaterialConfig.Material3 != null)
        {
            craftingRequirement.Resources[(int)craftingMaterialConfig.Material3.Type] = PersistentSingleton <Economies> .Instance.Crafting[level + craftingMaterialConfig.Material3.StartingPoint].Materials[(int)craftingMaterialConfig.Material3.Type];
        }
        return(craftingRequirement);
    }
Пример #5
0
    private static CraftingRequirement AsCraftingRequirement(List <ReactiveProperty <long> > blocks)
    {
        CraftingRequirement craftingRequirement = new CraftingRequirement();

        for (int i = 0; i < 7; i++)
        {
            craftingRequirement.Resources[i] = blocks[i].Value;
        }
        return(craftingRequirement);
    }
Пример #6
0
 public bool Satisfies(CraftingRequirement req)
 {
     for (int i = 0; i < Resources.Length; i++)
     {
         if (Resources[i] < req.Resources[i])
         {
             return(false);
         }
     }
     return(true);
 }
Пример #7
0
    public void NotEnoughGemsForUpgrade(int gear)
    {
        GearRunner orCreateGearRunner = Singleton <GearCollectionRunner> .Instance.GetOrCreateGearRunner(gear);

        CraftingRequirement gearUpgradeCost = Singleton <EconomyHelpers> .Instance.GetGearUpgradeCost(orCreateGearRunner.GearIndex, orCreateGearRunner.Level.Value);

        int craftingGemCost = Singleton <EconomyHelpers> .Instance.GetCraftingGemCost(AsCraftingRequirement(PlayerData.Instance.BlocksCollected), gearUpgradeCost);

        int missingGems = craftingGemCost - PlayerData.Instance.Gems.Value;

        Singleton <NotEnoughGemsRunner> .Instance.NotEnoughGems(missingGems);
    }
Пример #8
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);
    }
Пример #9
0
 public static UniRx.IObservable <CraftingRequirement> CreateBlocksObservable()
 {
     return(PlayerData.Instance.BlocksCollected[6].CombineLatest(PlayerData.Instance.BlocksCollected[0], PlayerData.Instance.BlocksCollected[1], PlayerData.Instance.BlocksCollected[2], PlayerData.Instance.BlocksCollected[3], PlayerData.Instance.BlocksCollected[4], PlayerData.Instance.BlocksCollected[5], delegate(long relics, long grass, long dirt, long wood, long stone, long metal, long gold)
     {
         CraftingRequirement craftingRequirement = new CraftingRequirement();
         craftingRequirement.Resources[6] = relics;
         craftingRequirement.Resources[0] = grass;
         craftingRequirement.Resources[1] = dirt;
         craftingRequirement.Resources[2] = wood;
         craftingRequirement.Resources[3] = stone;
         craftingRequirement.Resources[4] = metal;
         craftingRequirement.Resources[5] = gold;
         return craftingRequirement;
     }));
 }
Пример #10
0
 public static UniRx.IObservable <CraftingRequirement> CreateAfterPrestigeBlocksObservable()
 {
     return(Singleton <AfterPrestigeFundCollector> .Instance.FundsAfterPrestige[0].CombineLatest(Singleton <AfterPrestigeFundCollector> .Instance.FundsAfterPrestige[1], Singleton <AfterPrestigeFundCollector> .Instance.FundsAfterPrestige[2], Singleton <AfterPrestigeFundCollector> .Instance.FundsAfterPrestige[3], Singleton <AfterPrestigeFundCollector> .Instance.FundsAfterPrestige[4], Singleton <AfterPrestigeFundCollector> .Instance.FundsAfterPrestige[5], Singleton <AfterPrestigeFundCollector> .Instance.FundsAfterPrestige[6], delegate(long grass, long dirt, long wood, long stone, long metal, long gold, long relics)
     {
         CraftingRequirement craftingRequirement = new CraftingRequirement();
         craftingRequirement.Resources[0] = grass;
         craftingRequirement.Resources[1] = dirt;
         craftingRequirement.Resources[2] = wood;
         craftingRequirement.Resources[3] = stone;
         craftingRequirement.Resources[4] = metal;
         craftingRequirement.Resources[5] = gold;
         craftingRequirement.Resources[6] = relics;
         return craftingRequirement;
     }));
 }
Пример #11
0
    public void UpgradeGear(int gear)
    {
        GearRunner orCreateGearRunner = Singleton <GearCollectionRunner> .Instance.GetOrCreateGearRunner(gear);

        if (orCreateGearRunner.UpgradeAvailable.Value && !orCreateGearRunner.MaxLevelReached.Value)
        {
            if (orCreateGearRunner.Level.Value == 0)
            {
                GearUnlockTriggered.SetValueAndForceNotify(orCreateGearRunner.GearIndex);
            }
            CraftingRequirement gearUpgradeCost = Singleton <EconomyHelpers> .Instance.GetGearUpgradeCost(orCreateGearRunner.GearIndex, orCreateGearRunner.Level.Value);

            Singleton <FundRunner> .Instance.RemoveFromFunds(gearUpgradeCost);

            orCreateGearRunner.Level.Value++;
        }
    }
Пример #12
0
 private void SetupResources(CraftingRequirement req)
 {
     base.transform.DestroyChildrenImmediate();
     if (req.Resources[6] > 0)
     {
         AddCard(BigString.ToString(new BigDouble(req.Resources[6])), "Relics", PlayerData.Instance.BlocksCollected[6].Value >= req.Resources[6]);
     }
     for (int i = 0; i < 6; i++)
     {
         if (req.Resources[i] > 0)
         {
             string    text      = BigString.ToString(new BigDouble(req.Resources[i]));
             BlockType blockType = (BlockType)i;
             AddCard(text, blockType.ToString(), PlayerData.Instance.BlocksCollected[i].Value >= req.Resources[i]);
         }
     }
 }