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);
        }
Ejemplo n.º 2
0
 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();
 }
Ejemplo n.º 3
0
        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);
            }
        }