Exemplo n.º 1
0
 static void Postfix(Dialog_LoadTransporters __instance, bool __result, ref List <TransferableOneWay> ___transferables)
 {
     if (__result)
     {
         ___transferables = Utilities.LinkPortablePlatforms(___transferables);
     }
 }
Exemplo n.º 2
0
        //private bool CheckForErrors(List<Pawn> pawns)
        public static void Postfix(ref bool __result, Dialog_LoadTransporters __instance, List <CompTransporter> ___transporters)
        {
            if (!__result)
            {
                return;
            }

            if (!___transporters.All(t => t.parent.def == SmallPodDefOf.TransportPodSmall))
            {
                return;
            }

            float maxMass = ___transporters[0].Props.massCapacity;

            Log.Message($"maxMass is {maxMass}");

            List <TransferableOneWay> transferables = (List <TransferableOneWay>)transferablesInfo.GetValue(__instance);

            Log.Message($"transferables are {transferables}");
            if (transferables.Any(t => t.CountToTransfer > 0 && t.AnyThing is Pawn))
            {
                Messages.Message("TD.SmallTransportPodItemsOnly".Translate(), MessageTypeDefOf.RejectInput);
                __result = false;
            }
            else if (transferables.Any(t => t.CountToTransfer > 0 && t.AnyThing.GetStatValue(StatDefOf.Mass) > maxMass))
            {
                Messages.Message("TD.SmallTransportPodTooLarge".Translate(maxMass), MessageTypeDefOf.RejectInput);
                __result = false;
            }
        }
Exemplo n.º 3
0
 static void Postfix(Dialog_LoadTransporters __instance, bool __result)
 {
     if (__result)
     {
         List <TransferableOneWay> transferables = Traverse.Create(__instance).Field("transferables").GetValue <List <TransferableOneWay> >();
         Traverse.Create(__instance).Field("transferables").SetValue(Utilities.LinkPortablePlatforms(transferables));
     }
 }
 public static void Postfix(Dialog_LoadTransporters __instance, Map ___map)
 {
     //Add manifest
     if (Mod.settings.caravanSaveManifest && !SaveManifest.caravan &&
         ___map == SaveManifest.savedMap && SaveManifest.savedMap != null)
     {
         LoadManifest.Load(PodsSaveManifest.Transferables(__instance));
     }
     //No selection like caravans - you're already selecting pods!
 }
Exemplo n.º 5
0
        static bool Prefix(Dialog_LoadTransporters __instance)
        {
            if (Multiplayer.ShouldSync && __instance is MpLoadTransportersWindow dialog)
            {
                dialog.Session?.DebugTryLoadInstantly();
                return(false);
            }

            return(true);
        }
Exemplo n.º 6
0
        static bool Prefix(Dialog_LoadTransporters __instance)
        {
            if (__instance is MpLoadTransportersWindow mp && mp.itemsReady)
            {
                mp.transferables = mp.Session.transferables;
                return(false);
            }

            return(true);
        }
Exemplo n.º 7
0
        static bool Prefix(Dialog_LoadTransporters __instance)
        {
            if (Multiplayer.ShouldSync && __instance is TransporterLoadingProxy dialog)
            {
                dialog.Session?.TryAccept();
                return(false);
            }

            return(true);
        }
Exemplo n.º 8
0
        static bool Prefix(Dialog_LoadTransporters __instance)
        {
            if (__instance is TransporterLoadingProxy mp && mp.itemsReady)
            {
                // Sets the transferables list back to the session list
                // as it gets reset in CalculateAndRecacheTransferables
                mp.transferables = mp.Session.transferables;
                return(false);
            }

            return(true);
        }
Exemplo n.º 9
0
 public static void Postfix(Dialog_LoadTransporters __instance, Map ___map)
 {
     //Add manifest
     if (Mod.settings.caravanSaveManifest && !SaveManifest.caravan &&
         ___map == SaveManifest.savedMap && SaveManifest.savedMap != null)
     {
         foreach (ThingCountUNLIMITED thingCount in SaveManifest.savedManifest)
         {
             Log.Message($"Loading {thingCount.thing}:{thingCount.count}");
             TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatching <TransferableOneWay>(thingCount.thing, __instance.Transferables(), TransferAsOneMode.PodsOrCaravanPacking);
             transferableOneWay?.AdjustTo(transferableOneWay.ClampAmount(transferableOneWay.CountToTransfer + thingCount.count));
         }
     }
     //No selection like caravans - you're already selecting pods!
 }
Exemplo n.º 10
0
        static void Prefix(Dialog_LoadTransporters __instance, Map map, List <CompTransporter> transporters)
        {
            if (__instance.GetType() != typeof(Dialog_LoadTransporters))
            {
                return;
            }

            if (Multiplayer.ExecutingCmds || Multiplayer.Ticking)
            {
                var comp = map.MpComp();
                TransporterLoading loading = comp.CreateTransporterLoadingSession(transporters);
                if (TickPatch.currentExecutingCmdIssuedBySelf)
                {
                    loading.OpenWindow();
                }
            }
        }
Exemplo n.º 11
0
        static bool Prefix(Dialog_LoadTransporters __instance, Map map, List <CompTransporter> transporters)
        {
            if (__instance.GetType() != typeof(Dialog_LoadTransporters))
            {
                return(true);
            }

            if (Multiplayer.ExecutingCmds || Multiplayer.Ticking)
            {
                var comp = map.MpComp();
                if (comp.transporterLoading == null)
                {
                    comp.CreateTransporterLoadingSession(transporters);
                }

                return(true);
            }

            return(true);
        }
Exemplo n.º 12
0
        public static bool Prefix(Dialog_LoadTransporters __instance)
        {
            Traverse traverse = Traverse.Create((object)__instance);

            foreach (ThingComp thingComp in traverse.Field("transporters").GetValue <List <CompTransporter> >())
            {
                if (thingComp.parent.TryGetComp <CompLaunchableHelicopter>() != null)
                {
                    List <Pawn> pawnList = CaravanFormingUtility.AllSendablePawns(traverse.Field("map").GetValue <Map>(), true, true, true, true);
                    for (int index = 0; index < pawnList.Count; ++index)
                    {
                        __instance.GetType().GetMethod("AddToTransferables", BindingFlags.Instance | BindingFlags.NonPublic).Invoke((object)__instance, new object[1]
                        {
                            (object)pawnList[index]
                        });
                    }
                    return(false);
                }
            }
            return(true);
        }
Exemplo n.º 13
0
        public static bool Prefix(Dialog_LoadTransporters __instance, List <CompTransporter> ___transporters)
        {
            Traverse tv = Traverse.Create(__instance);

            foreach (CompTransporter lpc in ___transporters)
            {
                if (lpc.parent.TryGetCompFast <CompDropship>() != null)
                {
                    Map         map  = tv.Field("map").GetValue <Map>();
                    List <Pawn> list = CaravanFormingUtility.AllSendablePawns(map, true, true, true, true);
                    for (int i = 0; i < list.Count; i++)
                    {
                        Type       typ   = __instance.GetType();
                        MethodInfo minfo = typ.GetMethod("AddToTransferables", BindingFlags.NonPublic | BindingFlags.Instance);
                        minfo.Invoke(__instance, new object[] { list[i] });
                        // __instance.AddToTransferables(list[i]);
                    }
                    return(false);
                }
            }
            return(true);
        }
Exemplo n.º 14
0
        static void Postfix(Dialog_LoadTransporters __instance)
        {
            List <TransferableOneWay> transferables = Traverse.Create(__instance).Field("transferables").GetValue <List <TransferableOneWay> >();

            Utilities.CalcDaysOfFuel(transferables);
        }
Exemplo n.º 15
0
 public static bool CustomOptionsPawnsToTransportOverride(List<CompTransporter> ___transporters, Map ___map, Dialog_LoadTransporters __instance)
 {
   if (___transporters.Any(x => x.parent.TryGetComp<CompLaunchableSRTS>() != null))
   {
     List<Pawn> pawnlist = CaravanFormingUtility.AllSendablePawns(___map, SRTSMod.mod.settings.allowEvenIfDowned, false, SRTSMod.mod.settings.allowEvenIfPrisonerUnsecured, SRTSMod.mod.settings.allowCapturablePawns);
     foreach (Pawn p in pawnlist)
       AccessTools.Method(type: typeof(Dialog_LoadTransporters), name: "AddToTransferables").Invoke(__instance, new object[] { p });
     return false;
   }
   return true;
 }
Exemplo n.º 16
0
 public static bool Prefix(Dialog_LoadTransporters __instance)
 {
     return(true);
 }
Exemplo n.º 17
0
 public static List <TransferableOneWay> Transferables(this Dialog_LoadTransporters dialog) =>
 (List <TransferableOneWay>)transferablesInfo.GetValue(dialog);
Exemplo n.º 18
0
 public static Map Map(this Dialog_LoadTransporters dialog) =>
 (Map)mapInfo.GetValue(dialog);