public void EstablishRelationship(TransportPodsArrivalAction_GiveGift actionInstance, int senderTileID) { if (!internalMapping.ContainsKey(actionInstance)) { internalMapping.Add(actionInstance, senderTileID); } }
private static void SyncGiveGifts(SyncWorker sync, ref TransportPodsArrivalAction_GiveGift transportPodAction) { if (sync.isWriting) { sync.Write((Settlement)giveGiftSettlementField.GetValue(transportPodAction)); } else { transportPodAction = new TransportPodsArrivalAction_GiveGift(sync.Read <Settlement>()); } }
public Map SafelyGetMapOfGivenAction(TransportPodsArrivalAction_GiveGift actionInstance) { if (!internalMapping.ContainsKey(actionInstance)) { return(null); } Map result = Current.Game.FindMap(internalMapping[actionInstance]); internalMapping.Remove(actionInstance); return(result); }
public static void PostFix(TransportPodsArrivalAction_GiveGift __instance, List <ActiveDropPodInfo> pods) { Map mapOfSender = DesynchronizedMain.ArrivalActionAndSenderLinker.SafelyGetMapOfGivenAction(__instance); for (int i = 0; i < pods.Count; i++) { for (int j = 0; j < pods[i].innerContainer.Count; j++) { Pawn victim = pods[i].innerContainer[j] as Pawn; if (victim != null && victim.RaceProps.Humanlike) { Handler_PawnSold.HandlePawnSold_ByGiftingViaPods(victim, mapOfSender); } } } }
public static bool CheckAndSignalRelevantHandlers(TransportPodsArrivalAction_GiveGift __instance, List <ActiveDropPodInfo> pods) { var settlement = Traverse.Create(__instance).Field("settlement").GetValue <Settlement>(); var unused = DesynchronizedMain.ArrivalActionAndSenderLinker.SafelyGetMapOfGivenAction(__instance); foreach (var activeDropPodInfo in pods) { foreach (var thing in activeDropPodInfo.innerContainer) { if (!(thing is Pawn)) { } } } FactionGiftUtility.GiveGift(pods, settlement); // Original method need not be called. return(false); }
public static bool CheckAndSignalRelevantHandlers(TransportPodsArrivalAction_GiveGift __instance, List <ActiveDropPodInfo> pods) { Settlement settlement = Traverse.Create(__instance).Field("settlement").GetValue <Settlement>(); Map mapOfSender = DesynchronizedMain.ArrivalActionAndSenderLinker.SafelyGetMapOfGivenAction(__instance); for (int i = 0; i < pods.Count; i++) { for (int j = 0; j < pods[i].innerContainer.Count; j++) { Pawn pawn = pods[i].innerContainer[j] as Pawn; if (pawn == null) { continue; } } } FactionGiftUtility.GiveGift(pods, settlement); // Original method need not be called. return(false); }
public static IEnumerable <FloatMenuOption> GetGIFTFloatMenuOptions( CompLaunchableSRTS representative, IEnumerable <IThingHolder> pods, SettlementBase settlement, Caravan car) { if (settlement.Faction == Faction.OfPlayer) { return(Enumerable.Empty <FloatMenuOption>()); } return(SRTSArrivalActionUtility.GetFloatMenuOptions <TransportPodsArrivalAction_GiveGift>((Func <FloatMenuAcceptanceReport>)(() => TransportPodsArrivalAction_GiveGift.CanGiveGiftTo(pods, settlement)), (Func <TransportPodsArrivalAction_GiveGift>)(() => new TransportPodsArrivalAction_GiveGift(settlement)), "GiveGiftViaTransportPods".Translate((object)settlement.Faction.Name, (object)FactionGiftUtility.GetGoodwillChange(pods, settlement).ToStringWithSign()), representative, settlement.Tile, car)); }
private static void SyncGiveGift(ThingComp compLaunchableSrts, int destinationTile, TransportPodsArrivalAction_GiveGift arrivalAction, Caravan caravanMethodParameter, Caravan caravanFieldValue) => SyncedUniversalArrivalAction(compLaunchableSrts, destinationTile, arrivalAction, caravanMethodParameter, caravanFieldValue);