Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #3
0
        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));
        }