public static IEnumerable <FloatMenuOption> GetFloatMenuOptions <T>(Func <FloatMenuAcceptanceReport> acceptanceReportGetter, Func <T> arrivalActionGetter, string label, CompLaunchableHelicopter 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, MenuOptionPriority.Default, null, null, 0f, null, null)); } else { yield return(new FloatMenuOption(label, delegate { FloatMenuAcceptanceReport floatMenuAcceptanceReport = acceptanceReportGetter(); if (floatMenuAcceptanceReport.Accepted) { representative.TryLaunch(destinationTile, arrivalActionGetter(), car); } else if (!floatMenuAcceptanceReport.FailMessage.NullOrEmpty()) { Messages.Message(floatMenuAcceptanceReport.FailMessage, new GlobalTargetInfo(destinationTile), MessageTypeDefOf.RejectInput, false); } }, MenuOptionPriority.Default, null, null, 0f, null, null)); } } yield break; }
public static IEnumerable <FloatMenuOption> GetMapParent(MapParent mapparent, IEnumerable <IThingHolder> pods, CompLaunchableHelicopter representative, Caravan car) { /* * foreach (FloatMenuOption o in mapparent.GetFloatMenuOptions()) * { * yield return o; * } */ if (TransportPodsArrivalAction_LandInSpecificCell.CanLandInSpecificCell(pods, mapparent)) { yield return(new FloatMenuOption("LandInExistingMap".Translate(new object[] { mapparent.Label }), delegate { Map myMap; if (car == null) { myMap = representative.parent.Map; } else { myMap = null; } Map map = mapparent.Map; Current.Game.CurrentMap = map; CameraJumper.TryHideWorld(); Find.Targeter.BeginTargeting(TargetingParameters.ForDropPodsDestination(), delegate(LocalTargetInfo x) { representative.TryLaunch(mapparent.Tile, new TransportPodsArrivalAction_LandInSpecificCell(mapparent, x.Cell), car); }, null, delegate { if (myMap != null && Find.Maps.Contains(myMap)) { Current.Game.CurrentMap = myMap; } }, CompLaunchable.TargeterMouseAttachment); }, MenuOptionPriority.Default, null, null, 0f, null, null)); } yield break; }
public static IEnumerable <FloatMenuOption> GetFloatMenuOptions <T>( Func <FloatMenuAcceptanceReport> acceptanceReportGetter, Func <T> arrivalActionGetter, string label, CompLaunchableHelicopter 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 + ")", (Action)null, MenuOptionPriority.Default, (Action)null, (Thing)null, 0.0f, (Func <Rect, bool>)null, (WorldObject)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); } }), MenuOptionPriority.Default, (Action)null, (Thing)null, 0.0f, (Func <Rect, bool>)null, (WorldObject)null)); } } }
public static IEnumerable <FloatMenuOption> GetMapParent( MapParent mapparent, IEnumerable <IThingHolder> pods, CompLaunchableHelicopter representative, Caravan car) { if (TransportPodsArrivalAction_LandInSpecificCell.CanLandInSpecificCell(pods, mapparent)) { yield return(new FloatMenuOption("LandInExistingMap".Translate((object)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)); } }