public static int TotalStackCountForOrderRequestInContainer(this ThingOrderRequest request, ThingOwner thingOwner) { if (request == null) { return(0); } if (thingOwner.Count <= 0) { return(0); } int result = 0; if (request.HasThing) { result += thingOwner.Where(thing => thing == request.thing)?.Select(thing => thing.stackCount)?.Sum() ?? 0; } if (request.HasThingFilter) { foreach (ThingDef def in request.thingFilter.AllowedThingDefs) { result += thingOwner.TotalStackCountOfDef(def); } } return(result); }
public ThingOrderRequest(ThingOrderRequest other) { customLabel = other.customLabel; thing = other.thing; amount = other.amount; if (other.HasThingFilter) { ThingFilter filter = new ThingFilter(); filter.CopyAllowancesFrom(other.thingFilter); thingFilter = filter; } Initialize(); }
public static void FillOrderProcessorFromVatGrowerRecipe(ThingOrderProcessor orderProcessor, GrowerRecipeDef recipeDef) { foreach (IngredientCount ingredientCount in recipeDef.ingredients) { ThingFilter filterCopy = new ThingFilter(); filterCopy.CopyAllowancesFrom(ingredientCount.filter); ThingOrderRequest copy = new ThingOrderRequest(filterCopy); copy.amount = (int)ingredientCount.GetBaseCount(); orderProcessor.desiredIngredients.Add(copy); } }