static void Postfix(Dialog_LoadTransporters __instance, bool __result, ref List <TransferableOneWay> ___transferables) { if (__result) { ___transferables = Utilities.LinkPortablePlatforms(___transferables); } }
//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; } }
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! }
static bool Prefix(Dialog_LoadTransporters __instance) { if (Multiplayer.ShouldSync && __instance is MpLoadTransportersWindow dialog) { dialog.Session?.DebugTryLoadInstantly(); return(false); } return(true); }
static bool Prefix(Dialog_LoadTransporters __instance) { if (__instance is MpLoadTransportersWindow mp && mp.itemsReady) { mp.transferables = mp.Session.transferables; return(false); } return(true); }
static bool Prefix(Dialog_LoadTransporters __instance) { if (Multiplayer.ShouldSync && __instance is TransporterLoadingProxy dialog) { dialog.Session?.TryAccept(); return(false); } return(true); }
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); }
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! }
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(); } } }
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); }
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); }
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); }
static void Postfix(Dialog_LoadTransporters __instance) { List <TransferableOneWay> transferables = Traverse.Create(__instance).Field("transferables").GetValue <List <TransferableOneWay> >(); Utilities.CalcDaysOfFuel(transferables); }
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; }
public static bool Prefix(Dialog_LoadTransporters __instance) { return(true); }
public static List <TransferableOneWay> Transferables(this Dialog_LoadTransporters dialog) => (List <TransferableOneWay>)transferablesInfo.GetValue(dialog);
public static Map Map(this Dialog_LoadTransporters dialog) => (Map)mapInfo.GetValue(dialog);