// 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; } }