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);
        }
示例#4
0
        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);
                    }
                }
            }
        }
示例#5
0
        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);