public static IEnumerable <FloatMenuOption> GetFloatMenuOptions <T>(Func <FloatMenuAcceptanceReport> acceptanceReportGetter, Func <T> arrivalActionGetter, string label, CompDropship 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 FloatMenuAcceptanceReport CanVisit(IEnumerable <IThingHolder> pods, Site site) { FloatMenuAcceptanceReport result; if (site == null || !site.Spawned || !site.core.def.transportPodsCanLandAndGenerateMap) { result = false; } else if (!TransportPodsArrivalActionUtility.AnyNonDownedColonist(pods)) { result = false; } else if (site.EnterCooldownBlocksEntering()) { result = FloatMenuAcceptanceReport.WithFailMessage("MessageEnterCooldownBlocksEntering".Translate(new object[] { site.EnterCooldownDaysLeft().ToString("0.#") })); } else { result = true; } return(result); }
public static FloatMenuAcceptanceReport CanAttack(IEnumerable <IThingHolder> pods, SettlementBase settlement) { FloatMenuAcceptanceReport result; if (settlement == null || !settlement.Spawned || !settlement.Attackable) { result = false; } else if (!TransportPodsArrivalActionUtility.AnyNonDownedColonist(pods)) { result = false; } else if (settlement.EnterCooldownBlocksEntering()) { result = FloatMenuAcceptanceReport.WithFailMessage("MessageEnterCooldownBlocksEntering".Translate(new object[] { settlement.EnterCooldownDaysLeft().ToString("0.#") })); } else { result = true; } return(result); }
public bool MoveNext() { uint num = (uint)this.$PC; this.$PC = -1; switch (num) { case 0u: rep = acceptanceReportGetter(); if (rep.Accepted || !rep.FailReason.NullOrEmpty() || !rep.FailMessage.NullOrEmpty()) { if (!rep.FailReason.NullOrEmpty()) { this.$current = new FloatMenuOption(label + " (" + rep.FailReason + ")", null, MenuOptionPriority.Default, null, null, 0f, null, null); if (!this.$disposing) { this.$PC = 1; } return(true); } string text = label; Action action = delegate() { FloatMenuAcceptanceReport floatMenuAcceptanceReport = acceptanceReportGetter(); if (floatMenuAcceptanceReport.Accepted) { caravan.pather.StartPath(pathDestination, arrivalActionGetter(), true, true); } else if (!floatMenuAcceptanceReport.FailMessage.NullOrEmpty()) { Messages.Message(floatMenuAcceptanceReport.FailMessage, new GlobalTargetInfo(pathDestination), MessageTypeDefOf.RejectInput, false); } }; WorldObject worldObject = revalidateWorldClickTarget; this.$current = new FloatMenuOption(text, action, MenuOptionPriority.Default, null, null, 0f, null, worldObject); if (!this.$disposing) { this.$PC = 2; } return(true); } break; case 1u: break; case 2u: if (Prefs.DevMode) { string text = label + " (Dev: instantly)"; Action action = delegate() { FloatMenuAcceptanceReport floatMenuAcceptanceReport = < GetFloatMenuOptions > c__AnonStorey.acceptanceReportGetter(); if (floatMenuAcceptanceReport.Accepted) { < GetFloatMenuOptions > c__AnonStorey.caravan.Tile = < GetFloatMenuOptions > c__AnonStorey.pathDestination; < GetFloatMenuOptions > c__AnonStorey.caravan.pather.StopDead(); T t = < GetFloatMenuOptions > c__AnonStorey.arrivalActionGetter(); t.Arrived(< GetFloatMenuOptions > c__AnonStorey.caravan); }
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> GetFloatMenuOptions <T>(Func <FloatMenuAcceptanceReport> acceptanceReportGetter, Func <T> arrivalActionGetter, string label, CompLaunchable representative, int destinationTile) where T : TransportPodsArrivalAction { _003CGetFloatMenuOptions_003Ec__Iterator0 <T> _003CGetFloatMenuOptions_003Ec__Iterator = (_003CGetFloatMenuOptions_003Ec__Iterator0 <T>) /*Error near IL_0036: stateMachine*/; FloatMenuAcceptanceReport rep = acceptanceReportGetter(); if (rep.Accepted || !rep.FailReason.NullOrEmpty() || !rep.FailMessage.NullOrEmpty()) { if (rep.FailReason.NullOrEmpty()) { yield return(new FloatMenuOption(label, delegate { FloatMenuAcceptanceReport floatMenuAcceptanceReport = acceptanceReportGetter(); if (floatMenuAcceptanceReport.Accepted) { representative.TryLaunch(destinationTile, arrivalActionGetter()); } else if (!floatMenuAcceptanceReport.FailMessage.NullOrEmpty()) { Messages.Message(floatMenuAcceptanceReport.FailMessage, new GlobalTargetInfo(destinationTile), MessageTypeDefOf.RejectInput, historical: false); } })); /*Error: Unable to find new state assignment for yield return*/; } yield return(new FloatMenuOption(label + " (" + rep.FailReason + ")", null)); /*Error: Unable to find new state assignment for yield return*/; } }
public static IEnumerable <FloatMenuOption> GetFloatMenuOptions <T>(Func <FloatMenuAcceptanceReport> acceptanceReportGetter, Func <T> arrivalActionGetter, string label, Caravan caravan, int pathDestination, WorldObject revalidateWorldClickTarget) where T : CaravanArrivalAction { _003CGetFloatMenuOptions_003Ec__Iterator0 <T> _003CGetFloatMenuOptions_003Ec__Iterator = (_003CGetFloatMenuOptions_003Ec__Iterator0 <T>) /*Error near IL_003a: stateMachine*/; FloatMenuAcceptanceReport rep = acceptanceReportGetter(); if (rep.Accepted || !rep.FailReason.NullOrEmpty() || !rep.FailMessage.NullOrEmpty()) { if (rep.FailReason.NullOrEmpty()) { Action action = delegate { FloatMenuAcceptanceReport floatMenuAcceptanceReport = acceptanceReportGetter(); if (floatMenuAcceptanceReport.Accepted) { caravan.pather.StartPath(pathDestination, arrivalActionGetter(), repathImmediately: true); } else if (!floatMenuAcceptanceReport.FailMessage.NullOrEmpty()) { Messages.Message(floatMenuAcceptanceReport.FailMessage, new GlobalTargetInfo(pathDestination), MessageTypeDefOf.RejectInput, historical: false); } }; yield return(new FloatMenuOption(label, action, MenuOptionPriority.Default, null, null, 0f, null, revalidateWorldClickTarget)); /*Error: Unable to find new state assignment for yield return*/; } yield return(new FloatMenuOption(label + " (" + rep.FailReason + ")", null)); /*Error: Unable to find new state assignment for yield return*/; } }
public static IEnumerable <FloatMenuOption> GetFloatMenuOptions <T>(Func <FloatMenuAcceptanceReport> acceptanceReportGetter, Func <T> arrivalActionGetter, string label, Action <int, TransportPodsArrivalAction> launchAction, int destinationTile) where T : TransportPodsArrivalAction { FloatMenuAcceptanceReport floatMenuAcceptanceReport = acceptanceReportGetter(); if (!floatMenuAcceptanceReport.Accepted && floatMenuAcceptanceReport.FailReason.NullOrEmpty() && floatMenuAcceptanceReport.FailMessage.NullOrEmpty()) { yield break; } if (!floatMenuAcceptanceReport.Accepted && !floatMenuAcceptanceReport.FailReason.NullOrEmpty()) { label = label + " (" + floatMenuAcceptanceReport.FailReason + ")"; } yield return(new FloatMenuOption(label, delegate { FloatMenuAcceptanceReport floatMenuAcceptanceReport2 = acceptanceReportGetter(); if (floatMenuAcceptanceReport2.Accepted) { launchAction(destinationTile, arrivalActionGetter()); } else if (!floatMenuAcceptanceReport2.FailMessage.NullOrEmpty()) { Messages.Message(floatMenuAcceptanceReport2.FailMessage, new GlobalTargetInfo(destinationTile), MessageTypeDefOf.RejectInput, historical: false); } })); }
public static FloatMenuAcceptanceReport WithFailReason(string failReason) { FloatMenuAcceptanceReport result = default(FloatMenuAcceptanceReport); result.acceptedInt = false; result.failReasonInt = failReason; return(result); }
public static FloatMenuAcceptanceReport WithFailMessage(string failMessage) { FloatMenuAcceptanceReport result = default(FloatMenuAcceptanceReport); result.acceptedInt = false; result.failMessageInt = failMessage; return(result); }
public override FloatMenuAcceptanceReport StillValid(Caravan caravan, int destinationTile) { if (Quest.AttackFail) { return(FloatMenuAcceptanceReport.WithFailReason("CaravanArrivalAction_EnterToRebelMap_AlreadyStart".Translate())); } return(base.StillValid(caravan, destinationTile)); }
static bool Prefix(ref FloatMenuAcceptanceReport __result, Caravan caravan, Settlement settlement) { if (settlement is City city && city.Abandoned) { __result = false; return(false); } return(true); }
public override FloatMenuAcceptanceReport CanVisit(Caravan caravan, MapParent mapParent) { if (Quest.AttackFail) { return(FloatMenuAcceptanceReport.WithFailReason("CaravanArrivalAction_EnterToRebelMap_AlreadyStart".Translate())); } return(base.CanVisit(caravan, mapParent)); }
public FloatMenuAcceptanceReport CanUse(Caravan caravan) { if (Quest.Started) { return(FloatMenuAcceptanceReport.WithFailReason("CaravanArrivalAction_StartResearchSharing_Already".Translate())); } return(true); }
public override FloatMenuAcceptanceReport StillValid(Caravan caravan, int destinationTile) { if (mapParent != null && mapParent.Tile != destinationTile) { return(FloatMenuAcceptanceReport.WithFailReason("NotEnoughItemsToQuest".Translate())); } return(CanGiveItems(caravan, mapParent)); }
public override FloatMenuAcceptanceReport StillValid(IEnumerable <IThingHolder> pods, int destinationTile) { FloatMenuAcceptanceReport floatMenuAcceptanceReport = base.StillValid(pods, destinationTile); if (!floatMenuAcceptanceReport) { return(floatMenuAcceptanceReport); } return(CanFormCaravanAt(pods, destinationTile)); }
public bool MoveNext() { uint num = (uint)this.$PC; this.$PC = -1; switch (num) { case 0u: rep = acceptanceReportGetter(); if (rep.Accepted || !rep.FailReason.NullOrEmpty() || !rep.FailMessage.NullOrEmpty()) { if (!rep.FailReason.NullOrEmpty()) { this.$current = new FloatMenuOption(label + " (" + rep.FailReason + ")", null, MenuOptionPriority.Default, null, null, 0f, null, null); if (!this.$disposing) { this.$PC = 1; } } else { this.$current = new FloatMenuOption(label, delegate() { FloatMenuAcceptanceReport floatMenuAcceptanceReport = acceptanceReportGetter(); if (floatMenuAcceptanceReport.Accepted) { representative.TryLaunch(destinationTile, arrivalActionGetter()); } else if (!floatMenuAcceptanceReport.FailMessage.NullOrEmpty()) { Messages.Message(floatMenuAcceptanceReport.FailMessage, new GlobalTargetInfo(destinationTile), MessageTypeDefOf.RejectInput, false); } }, MenuOptionPriority.Default, null, null, 0f, null, null); if (!this.$disposing) { this.$PC = 2; } } return(true); } break; case 1u: break; case 2u: break; default: return(false); } this.$PC = -1; return(false); }
public static FloatMenuAcceptanceReport CanAttack(Caravan caravan, Settlement settlement) { if (settlement == null || !settlement.Spawned || !settlement.Attackable) { return(false); } if (settlement.EnterCooldownBlocksEntering()) { return(FloatMenuAcceptanceReport.WithFailMessage("MessageEnterCooldownBlocksEntering".Translate(settlement.EnterCooldownTicksLeft().ToStringTicksToPeriod()))); } return(true); }
public static bool CanLandInSpecificCell(IEnumerable <IThingHolder> pods, MapParent mapParent) { if (mapParent == null || !mapParent.Spawned || !mapParent.HasMap) { return(false); } if (mapParent.EnterCooldownBlocksEntering()) { return(FloatMenuAcceptanceReport.WithFailMessage("MessageEnterCooldownBlocksEntering".Translate(mapParent.EnterCooldownDaysLeft().ToString("0.#")))); } return(true); }
public static IEnumerable <FloatMenuOption> GetFloatMenuOptions <T>(Func <FloatMenuAcceptanceReport> acceptanceReportGetter, Func <T> arrivalActionGetter, string label, VehiclePawn vehicle, int destinationTile, Action <Action> uiConfirmationCallback = null) where T : AerialVehicleArrivalAction { FloatMenuAcceptanceReport floatMenuAcceptanceReport = acceptanceReportGetter(); if (!floatMenuAcceptanceReport.Accepted && floatMenuAcceptanceReport.FailReason.NullOrEmpty() && floatMenuAcceptanceReport.FailMessage.NullOrEmpty()) { yield break; } if (!floatMenuAcceptanceReport.FailReason.NullOrEmpty()) { yield return(new FloatMenuOption(label + " (" + floatMenuAcceptanceReport.FailReason + ")", null)); yield break; } yield return(new FloatMenuOption(label, delegate { FloatMenuAcceptanceReport floatMenuAcceptanceReport2 = acceptanceReportGetter(); if (floatMenuAcceptanceReport2.Accepted) { if (uiConfirmationCallback == null) { if (!vehicle.Spawned && VehicleWorldObjectsHolder.Instance.AerialVehicleObject(vehicle) is AerialVehicleInFlight aerialVehicle) { aerialVehicle.OrderFlyToTiles(LaunchTargeter.FlightPath, aerialVehicle.DrawPos, arrivalActionGetter()); } else { vehicle.CompVehicleLauncher.TryLaunch(destinationTile, arrivalActionGetter()); } } else { if (!vehicle.Spawned && VehicleWorldObjectsHolder.Instance.AerialVehicleObject(vehicle) is AerialVehicleInFlight aerialVehicle) { uiConfirmationCallback(delegate { aerialVehicle.OrderFlyToTiles(LaunchTargeter.FlightPath, aerialVehicle.DrawPos, arrivalActionGetter()); }); } else { uiConfirmationCallback(delegate { vehicle.CompVehicleLauncher.TryLaunch(destinationTile, arrivalActionGetter()); }); } } } else if (!floatMenuAcceptanceReport2.FailMessage.NullOrEmpty()) { Messages.Message(floatMenuAcceptanceReport2.FailMessage, new GlobalTargetInfo(destinationTile), MessageTypeDefOf.RejectInput, historical: false); } }));
public static FloatMenuAcceptanceReport CanVisit(Caravan caravan, Site site) { if (site == null || !site.Spawned) { return(false); } if (site.EnterCooldownBlocksEntering()) { return(FloatMenuAcceptanceReport.WithFailMessage("MessageEnterCooldownBlocksEntering".Translate(site.EnterCooldownTicksLeft().ToStringTicksToPeriod()))); } return(true); }
public static FloatMenuAcceptanceReport CanEnter(Caravan caravan, MapParent mapParent) { if (mapParent == null || !mapParent.Spawned || !mapParent.HasMap) { return(false); } if (mapParent.EnterCooldownBlocksEntering()) { return(FloatMenuAcceptanceReport.WithFailMessage("MessageEnterCooldownBlocksEntering".Translate(mapParent.EnterCooldownDaysLeft().ToString("0.#")))); } return(true); }
public static FloatMenuAcceptanceReport CanVisit(Caravan caravan, MapParent escapeShip) { if (escapeShip == null || !escapeShip.Spawned || escapeShip.GetComponent <EscapeShipComp>() == null) { return(false); } if (escapeShip.EnterCooldownBlocksEntering()) { return(FloatMenuAcceptanceReport.WithFailMessage("MessageEnterCooldownBlocksEntering".Translate(escapeShip.EnterCooldownTicksLeft().ToStringTicksToPeriod()))); } return(true); }
public override FloatMenuAcceptanceReport StillValid(Caravan caravan, int destinationTile) { FloatMenuAcceptanceReport floatMenuAcceptanceReport = base.StillValid(caravan, destinationTile); if (!floatMenuAcceptanceReport) { return floatMenuAcceptanceReport; } if (this.settlement != null && this.settlement.Tile != destinationTile) { return false; } return CaravanArrivalAction_AttackSettlement.CanAttack(caravan, this.settlement); }
public static IEnumerable <FloatMenuOption> GetFloatMenuOptions <T>(Func <FloatMenuAcceptanceReport> acceptanceReportGetter, Func <T> arrivalActionGetter, string label, Caravan caravan, int pathDestination, WorldObject revalidateWorldClickTarget, Action <Action> confirmActionProxy = null) where T : CaravanArrivalAction { FloatMenuAcceptanceReport floatMenuAcceptanceReport = acceptanceReportGetter(); if (!floatMenuAcceptanceReport.Accepted && floatMenuAcceptanceReport.FailReason.NullOrEmpty() && floatMenuAcceptanceReport.FailMessage.NullOrEmpty()) { yield break; } if (!floatMenuAcceptanceReport.FailReason.NullOrEmpty()) { yield return(new FloatMenuOption(label + " (" + floatMenuAcceptanceReport.FailReason + ")", null)); yield break; } Action action = delegate { FloatMenuAcceptanceReport floatMenuAcceptanceReport3 = acceptanceReportGetter(); if (floatMenuAcceptanceReport3.Accepted) { caravan.pather.StartPath(pathDestination, arrivalActionGetter(), repathImmediately: true); } else if (!floatMenuAcceptanceReport3.FailMessage.NullOrEmpty()) { Messages.Message(floatMenuAcceptanceReport3.FailMessage, new GlobalTargetInfo(pathDestination), MessageTypeDefOf.RejectInput, historical: false); } }; yield return(new FloatMenuOption(label, (confirmActionProxy == null) ? action : ((Action) delegate { confirmActionProxy(action); }), MenuOptionPriority.Default, null, null, 0f, null, revalidateWorldClickTarget)); if (!Prefs.DevMode) { yield break; } yield return(new FloatMenuOption(label + " (Dev: instantly)", delegate { FloatMenuAcceptanceReport floatMenuAcceptanceReport2 = acceptanceReportGetter(); if (floatMenuAcceptanceReport2.Accepted) { caravan.Tile = pathDestination; caravan.pather.StopDead(); arrivalActionGetter().Arrived(caravan); } else if (!floatMenuAcceptanceReport2.FailMessage.NullOrEmpty()) { Messages.Message(floatMenuAcceptanceReport2.FailMessage, new GlobalTargetInfo(pathDestination), MessageTypeDefOf.RejectInput, historical: false); } }, MenuOptionPriority.Default, null, null, 0f, null, revalidateWorldClickTarget)); }
public override FloatMenuAcceptanceReport StillValid(IEnumerable <IThingHolder> pods, int destinationTile) { FloatMenuAcceptanceReport floatMenuAcceptanceReport = base.StillValid(pods, destinationTile); if (!floatMenuAcceptanceReport) { return(floatMenuAcceptanceReport); } if (this.caravan != null && !Find.WorldGrid.IsNeighborOrSame(this.caravan.Tile, destinationTile)) { return(false); } return(TransportPodsArrivalAction_GiveToCaravan.CanGiveTo(pods, this.caravan)); }
public override FloatMenuAcceptanceReport StillValid(IEnumerable <IThingHolder> pods, int destinationTile) { FloatMenuAcceptanceReport floatMenuAcceptanceReport = base.StillValid(pods, destinationTile); if (!floatMenuAcceptanceReport) { return(floatMenuAcceptanceReport); } if (mapParent != null && mapParent.Tile != destinationTile) { return(false); } return(CanLandInSpecificCell(pods, mapParent)); }
public override FloatMenuAcceptanceReport StillValid(Caravan caravan, int destinationTile) { FloatMenuAcceptanceReport floatMenuAcceptanceReport = base.StillValid(caravan, destinationTile); if (!floatMenuAcceptanceReport) { return(floatMenuAcceptanceReport); } if (settlement != null && settlement.Tile != destinationTile) { return(false); } return(CanOfferGiftsTo(caravan, settlement)); }
public override FloatMenuAcceptanceReport StillValid(IEnumerable <IThingHolder> pods, int destinationTile) { FloatMenuAcceptanceReport floatMenuAcceptanceReport = base.StillValid(pods, destinationTile); if (!floatMenuAcceptanceReport) { return(floatMenuAcceptanceReport); } if (this.site != null && this.site.Tile != destinationTile) { return(false); } return(TransportPodsArrivalAction_VisitSite.CanVisit(pods, this.site)); }
public override FloatMenuAcceptanceReport StillValid(Caravan caravan, int destinationTile) { FloatMenuAcceptanceReport floatMenuAcceptanceReport = base.StillValid(caravan, destinationTile); if (!floatMenuAcceptanceReport) { return(floatMenuAcceptanceReport); } if (this.target != null && this.target.Tile != destinationTile) { return(false); } return(CaravanArrivalAction_VisitEscapeShip.CanVisit(caravan, this.target)); }