コード例 #1
0
 private void Arrived()
 {
     if (!arrived)
     {
         arrived = true;
         if (arrivalAction == null || !(bool)arrivalAction.StillValid(pods.Cast <IThingHolder>(), destinationTile))
         {
             arrivalAction = null;
             List <Map> maps = Find.Maps;
             for (int i = 0; i < maps.Count; i++)
             {
                 if (maps[i].Tile == destinationTile)
                 {
                     if (destinationCell != default(IntVec3))
                     {
                         arrivalAction = new WorldTransport.TM_TransportPodsArrivalAction_LandAtExactCell(maps[i].Parent, destinationCell, draftFlag);
                         break;
                     }
                     arrivalAction = new TransportPodsArrivalAction_LandInSpecificCell(maps[i].Parent, DropCellFinder.RandomDropSpot(maps[i]));
                     break;
                 }
             }
             if (arrivalAction == null)
             {
                 if (TransportPodsArrivalAction_FormCaravan.CanFormCaravanAt(pods.Cast <IThingHolder>(), destinationTile))
                 {
                     arrivalAction = new TransportPodsArrivalAction_FormCaravan();
                 }
                 else
                 {
                     List <Caravan> caravans = Find.WorldObjects.Caravans;
                     for (int j = 0; j < caravans.Count; j++)
                     {
                         if (caravans[j].Tile == destinationTile && (bool)TransportPodsArrivalAction_GiveToCaravan.CanGiveTo(pods.Cast <IThingHolder>(), caravans[j]))
                         {
                             arrivalAction = new TransportPodsArrivalAction_GiveToCaravan(caravans[j]);
                             break;
                         }
                     }
                 }
             }
         }
         if (arrivalAction != null && arrivalAction.ShouldUseLongEvent(pods, destinationTile))
         {
             LongEventHandler.QueueLongEvent(delegate
             {
                 DoArrivalAction();
             }, "GeneratingMapForNewEncounter", false, null);
         }
         else
         {
             DoArrivalAction();
         }
     }
 }
コード例 #2
0
 private static void SyncGiveToCaravan(ThingComp compLaunchableSrts, int destinationTile, TransportPodsArrivalAction_GiveToCaravan arrivalAction, Caravan caravanMethodParameter, Caravan caravanFieldValue)
 => SyncedUniversalArrivalAction(compLaunchableSrts, destinationTile, arrivalAction, caravanMethodParameter, caravanFieldValue);