public static float ApproxDaysWorthOfFood_Ship(ShipBase ship, List <TransferableOneWay> transferables, bool canEatPlants) { tmpTransferables.Clear(); for (int i = 0; i < transferables.Count; i++) { TransferableOneWay oneWay = new TransferableOneWay(); oneWay.things.AddRange(transferables[i].things); oneWay.AdjustTo(transferables[i].CountToTransfer); Pawn pawn = oneWay.AnyThing as Pawn; tmpTransferables.Add(oneWay); } foreach (Pawn current in ship.GetDirectlyHeldThings().Where(x => x is Pawn)) { DropShipUtility.AddThingsToTransferables(tmpTransferables, current); } for (int i = 0; i < ship.GetDirectlyHeldThings().Count; i++) { if (!(ship.GetDirectlyHeldThings()[i] is Pawn)) { DropShipUtility.AddThingsToTransferables(tmpTransferables, ship.GetDirectlyHeldThings()[i]); } } return(DaysWorthOfFoodCalculator.ApproxDaysWorthOfFood(tmpTransferables, canEatPlants, IgnorePawnsInventoryMode.DontIgnore)); }
public static float ApproxDaysWorthOfFood_Ship(ShipBase ship, List <TransferableOneWay> transferables) { List <TransferableOneWay> tmp = new List <TransferableOneWay>(); tmp.AddRange(transferables); List <TransferableOneWay> tmpPawns = new List <TransferableOneWay>(); List <TransferableOneWay> tmpItems = new List <TransferableOneWay>(); foreach (Pawn current in ship.GetInnerContainer().Where(x => x is Pawn)) { if (!current.RaceProps.Eats(FoodTypeFlags.Plant)) { DropShipUtility.AddThingsToTransferables(tmp, current); } } for (int i = 0; i < ship.GetInnerContainer().Count; i++) { if (!(ship.GetInnerContainer()[i] is Pawn)) { DropShipUtility.AddThingsToTransferables(tmp, ship.GetInnerContainer()[i]); } } return(DaysWorthOfFoodCalculator.ApproxDaysWorthOfFood(tmp)); }
public static float ApproxDaysWorthOfFood_Ship(ShipBase ship, List <TransferableOneWay> transferables, bool canEatPlants) { tmpTransferables.Clear(); for (int i = 0; i < transferables.Count; i++) { TransferableOneWay oneWay = new TransferableOneWay(); oneWay.things.AddRange(transferables[i].things); oneWay.AdjustTo(transferables[i].CountToTransfer); Pawn pawn = oneWay.AnyThing as Pawn; tmpTransferables.Add(oneWay); } foreach (Pawn current in ship.GetDirectlyHeldThings().Where(x => x is Pawn)) { DropShipUtility.AddThingsToTransferables(tmpTransferables, current); } for (int i = 0; i < ship.GetDirectlyHeldThings().Count; i++) { if (!(ship.GetDirectlyHeldThings()[i] is Pawn)) { DropShipUtility.AddThingsToTransferables(tmpTransferables, ship.GetDirectlyHeldThings()[i]); } } var potentialFood = tmpTransferables.Where(t => (t.AnyThing is Pawn) == false).SelectMany(x => x.things).ToList(); var pawns = tmpTransferables.Where(t => t.AnyThing is Pawn).SelectMany(x => x.things).Cast <Pawn>().ToList(); return(DaysWorthOfFoodCalculator.ApproxDaysWorthOfFood(pawns, potentialFood, 0, IgnorePawnsInventoryMode.DontIgnore, ship.Faction)); }