// Token: 0x06000027 RID: 39 RVA: 0x00002C28 File Offset: 0x00000E28
        public override void Tick()
        {
            base.Tick();
            AdjustPowerNeed();
            if (flickableComp != null && (flickableComp == null || !flickableComp.SwitchIsOn))
            {
                return;
            }

            switch (crafterStatus)
            {
            case CrafterStatus.Filling:
            {
                ExtraCrafterTickAction();
                var enumerable   = orderProcessor.PendingRequests();
                var isEnumerable = enumerable == null || !enumerable.Any();

                if (isEnumerable)
                {
                    StartPrinting();
                }

                break;
            }

            case CrafterStatus.Crafting:
                ExtraCrafterTickAction();
                if (powerComp.PowerOn)
                {
                    nextResourceTick--;
                    if (nextResourceTick <= 0)
                    {
                        nextResourceTick     = crafterProperties.resourceTick;
                        using var enumerator = orderProcessor.requestedItems.GetEnumerator();
                        while (enumerator.MoveNext())
                        {
                            var thingOrderRequest = enumerator.Current;
                            if (ingredients.All(thing => thing.def != thingOrderRequest?.thingDef))
                            {
                                continue;
                            }

                            var thing2 = ingredients.First(thing =>
                                                           thing.def == thingOrderRequest?.thingDef);

                            if (thingOrderRequest == null)
                            {
                                continue;
                            }

                            var count = Math.Min(
                                (int)Math.Ceiling(thingOrderRequest.amount /
                                                  (crafterProperties.ticksToCraft /
                                                   (float)crafterProperties.resourceTick)),
                                thing2.stackCount);
                            ingredients.Take(thing2, count).Destroy();
                        }
                    }

                    if (craftingTicksLeft > 0)
                    {
                        craftingTicksLeft--;
                        return;
                    }

                    crafterStatus = CrafterStatus.Finished;
                }

                break;

            case CrafterStatus.Finished:
                if (pawnBeingCrafted != null)
                {
                    ExtraCrafterTickAction();
                    ingredients.ClearAndDestroyContents();
                    FinishAction();
                    pawnBeingCrafted = null;
                    crafterStatus    = CrafterStatus.Idle;
                }

                break;

            default:
                return;
            }
        }