示例#1
0
    public void AddScrap(int addScrapAmount = 0)
    {
        this.queuedAddScrapActions++;
        if (this.IsMachineLocked)
        {
            return;
        }
        this.queuedAddScrapActions--;
        int num   = GameProgress.ScrapCount();
        int num2  = GameProgress.GetInt("Machine_scrap_amount", 0, GameProgress.Location.Local, null);
        int num3  = num - num2;
        int value = Singleton <GameConfigurationManager> .Instance.GetValue <int>(WorkshopMenu.CRAFT_PRICE_CONFIG_KEY, BasePart.PartTier.Common.ToString());

        int value2 = Singleton <GameConfigurationManager> .Instance.GetValue <int>(WorkshopMenu.CRAFT_PRICE_CONFIG_KEY, BasePart.PartTier.Rare.ToString());

        int value3 = Singleton <GameConfigurationManager> .Instance.GetValue <int>(WorkshopMenu.CRAFT_PRICE_CONFIG_KEY, BasePart.PartTier.Epic.ToString());

        int  price = AlienCustomizationManager.GetPrice();
        bool flag  = CustomizationManager.CustomizationCount(BasePart.PartTier.Common, CustomizationManager.PartFlags.Locked | CustomizationManager.PartFlags.Craftable) <= 0;
        bool flag2 = CustomizationManager.CustomizationCount(BasePart.PartTier.Rare, CustomizationManager.PartFlags.Locked | CustomizationManager.PartFlags.Craftable) <= 0;
        bool flag3 = CustomizationManager.CustomizationCount(BasePart.PartTier.Epic, CustomizationManager.PartFlags.Locked | CustomizationManager.PartFlags.Craftable) <= 0;
        bool flag4 = CustomizationManager.CustomizationCount(BasePart.PartTier.Legendary, CustomizationManager.PartFlags.Locked | CustomizationManager.PartFlags.Craftable) <= 0;

        BasePart.PartTier nextTier = BasePart.PartTier.Regular;
        int num4 = 0;
        int num5;

        if (addScrapAmount > 0)
        {
            num4 = addScrapAmount;
            if (num4 + num2 < value)
            {
                num5 = 0;
            }
            else if (num4 + num2 < value2)
            {
                num5 = 1;
            }
            else if (num4 + num2 < value3)
            {
                num5 = 2;
            }
            else if (this.IsAlienMachine && num4 + num2 < price)
            {
                num5 = 2;
            }
            else
            {
                num5 = 3;
            }
            if (!this.IsAlienMachine && num4 + num2 > value3)
            {
                num4 = value3 - num2;
            }
            else if (this.IsAlienMachine && num4 + num2 > price)
            {
                num4 = price - num2;
            }
        }
        else if (!flag && num2 < value)
        {
            nextTier = BasePart.PartTier.Common;
            num4     = value - num2;
            num5     = 0;
        }
        else if (!flag2 && num2 < value2)
        {
            nextTier = BasePart.PartTier.Rare;
            num4     = value2 - num2;
            num5     = 1;
        }
        else if (!flag3 && num2 < value3)
        {
            nextTier = BasePart.PartTier.Epic;
            num4     = value3 - num2;
            num5     = 2;
        }
        else if (this.IsAlienMachine && !flag4 && num2 < price)
        {
            nextTier = BasePart.PartTier.Legendary;
            num4     = price - num2;
            num5     = 0;
        }
        else
        {
            num5 = 3;
        }
        if (num4 > 0 && num3 > 0)
        {
            if (num4 > num3)
            {
                this.ShowGetMoreScrapDialog(num4 - num3, nextTier);
                num4 = num3;
            }
            int partTierFromAmount = (int)this.GetPartTierFromAmount(num2);
            num2 += num4;
            GameProgress.SetInt("Machine_scrap_amount", num2, GameProgress.Location.Local);
            EventManager.Send(new CraftingMachineEvent(WorkshopMenu.CraftingMachineAction.AddScrap, GameProgress.GetInt("Machine_scrap_amount", 0, GameProgress.Location.Local, null)));
            num5 = (int)this.GetPartTierFromAmount(num2);
            if (num5 >= 0)
            {
                this.SetMachineAnimation(this.chainPullAnimationName, false, true, false);
                this.SetMachineAnimation(this.feedAnimationNames[num5], false, false, true);
                this.SetMachineAnimation(this.idleAnimationNames[num5], true, true, true);
                if (num5 != partTierFromAmount)
                {
                    this.SetMachineIdleSound(num5);
                }
            }
            base.StartCoroutine(this.MoveNuts(this.nutRootUpper, this.nutRootLower, num4, 0.2f));
            Singleton <AudioManager> .Instance.Spawn2dOneShotEffect(this.gameData.commonAudioCollection.insertScrap);
        }
        else
        {
            this.queuedAddScrapActions = 0;
            this.SetMachineAnimation(this.idleAnimationNames[num5], true, true, true);
            this.SetMachineIdleSound(num5);
            if (num4 > 0 && num3 <= 0)
            {
                this.ShowGetMoreScrapDialog(num4, nextTier);
            }
        }
    }