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(); } } }
private static void SyncGiveToCaravan(ThingComp compLaunchableSrts, int destinationTile, TransportPodsArrivalAction_GiveToCaravan arrivalAction, Caravan caravanMethodParameter, Caravan caravanFieldValue) => SyncedUniversalArrivalAction(compLaunchableSrts, destinationTile, arrivalAction, caravanMethodParameter, caravanFieldValue);