public static IEnumerable <FloatMenuOption> GetFloatMenuOptions <T>(Func <FloatMenuAcceptanceReport> acceptanceReportGetter, Func <T> arrivalActionGetter, string label, CompLaunchableSRTS representative, int destinationTile, Caravan car) where T : TransportPodsArrivalAction { FloatMenuAcceptanceReport rep = acceptanceReportGetter(); if (rep.Accepted || !rep.FailReason.NullOrEmpty() || !rep.FailMessage.NullOrEmpty()) { if (!rep.FailReason.NullOrEmpty()) { yield return(new FloatMenuOption(label + " (" + rep.FailReason + ")", null)); } else { yield return(new FloatMenuOption(label, (Action)(() => { FloatMenuAcceptanceReport acceptanceReport = acceptanceReportGetter(); if (acceptanceReport.Accepted) { representative.TryLaunch(destinationTile, (TransportPodsArrivalAction)arrivalActionGetter(), car); } else { if (acceptanceReport.FailMessage.NullOrEmpty()) { return; } Messages.Message(acceptanceReport.FailMessage, (LookTargets) new GlobalTargetInfo(destinationTile), MessageTypeDefOf.RejectInput, false); } }))); } } }
public static IEnumerable <FloatMenuOption> GetMapParent( MapParent mapparent, IEnumerable <IThingHolder> pods, CompLaunchableSRTS representative, Caravan car) { if (TransportPodsArrivalAction_LandInSpecificCell.CanLandInSpecificCell(pods, mapparent)) { yield return(new FloatMenuOption("LandInExistingMap".Translate(mapparent.Label), (Action)(() => { Map myMap = car != null ? (Map)null : representative.parent.Map; Current.Game.CurrentMap = mapparent.Map; CameraJumper.TryHideWorld(); Find.Targeter.BeginTargeting(TargetingParameters.ForDropPodsDestination(), (Action <LocalTargetInfo>)(x => representative.TryLaunch(mapparent.Tile, (TransportPodsArrivalAction) new TransportPodsArrivalAction_LandInSpecificCell(mapparent, x.Cell), car)), (Pawn)null, (Action)(() => { if (myMap == null || !Find.Maps.Contains(myMap)) { return; } Current.Game.CurrentMap = myMap; }), CompLaunchable.TargeterMouseAttachment); }), MenuOptionPriority.Default, (Action)null, (Thing)null, 0.0f, (Func <Rect, bool>)null, (WorldObject)null)); } }