예제 #1
0
        private static void SendShuttle(FCEvent evt)
        {
            Map playerHomeMap = Find.World.GetComponent <FactionFC>().TaxMap;
            List <ShipLandingArea> landingZones = ShipLandingBeaconUtility.GetLandingZones(playerHomeMap);

            IntVec3 landingCell = DropCellFinder.GetBestShuttleLandingSpot(playerHomeMap, Faction.OfPlayer);

            if (!landingZones.Any() || landingZones.Any(zone => zone.Clear))
            {
                MakeDeliveryLetterAndMessage(evt);
                Thing         shuttle       = ThingMaker.MakeThing(ThingDefOf.Shuttle);
                TransportShip transportShip = TransportShipMaker.MakeTransportShip(TransportShipDefOf.Ship_Shuttle, evt.goods, shuttle);

                transportShip.ArriveAt(landingCell, playerHomeMap.Parent);
                transportShip.AddJobs(new ShipJobDef[]
                {
                    ShipJobDefOf.Unload,
                    ShipJobDefOf.FlyAway
                });
            }
            else
            {
                if (!evt.isDelayed)
                {
                    Messages.Message(((string)"shuttleLandingBlockedWithItems".Translate(evt.goods.ToLetterString())).Replace("\n", " "), MessageTypeDefOf.RejectInput);
                    evt.isDelayed = true;
                }

                if (evt.source == -1)
                {
                    evt.source = playerHomeMap.Tile;
                }

                evt.timeTillTrigger = Find.TickManager.TicksGame + 1000;
                CreateDeliveryEvent(evt);
            }
        }