public override void SpawnSetup(Map map, bool bla) { compTransporterPawn = this.TryGetComp <CompTransporterPawn>(); compLaunchablePawn = this.TryGetComp <CompLaunchablePawn>(); DecrementMapIndex(); base.SpawnSetup(map, bla); }
public static IEnumerable <FloatMenuOption> GetFloatMenuOptions(CompLaunchablePawn representative, IEnumerable <IThingHolder> pods, Settlement settlement) { if (ByakheeArrivalAction_AttackSettlement.CanAttack(pods, settlement)) { yield break; } Func <FloatMenuAcceptanceReport> acceptanceReportGetter = new Func <FloatMenuAcceptanceReport>(() => CanAttack(pods, settlement)); Func <ByakheeArrivalAction_AttackSettlement> dropAtEdge = new Func <ByakheeArrivalAction_AttackSettlement>(() => arrivalActionEdgeDrop(settlement)); Func <FloatMenuAcceptanceReport> idunno = null; foreach (FloatMenuOption floatMenuOption in ByakheeArrivalActionUtility.GetFloatMenuOptions <ByakheeArrivalAction_AttackSettlement>(acceptanceReportGetter, dropAtEdge, "AttackAndDropAtEdge".Translate(settlement.Label), representative, settlement.Tile, null)) { yield return(floatMenuOption); } Func <ByakheeArrivalAction_AttackSettlement> dropAtCenter = new Func <ByakheeArrivalAction_AttackSettlement>(() => arrivalActionCenterDrop(settlement)); foreach (FloatMenuOption floatMenuOption2 in ByakheeArrivalActionUtility.GetFloatMenuOptions <ByakheeArrivalAction_AttackSettlement>(acceptanceReportGetter, dropAtCenter, "AttackAndDropInCenter".Translate(settlement.Label), representative, settlement.Tile, null)) { yield return(floatMenuOption2); } yield break; }
public override void ProcessInput(Event ev) { base.ProcessInput(ev); if (this.transporters == null) { this.transporters = new List <CompTransporterPawn>(); } if (!this.transporters.Contains(this.transComp)) { this.transporters.Add(this.transComp); } CompLaunchablePawn launchable = this.transComp.Launchable; for (int j = 0; j < this.transporters.Count; j++) { if (this.transporters[j] != this.transComp) { if (!this.transComp.Map.reachability.CanReach(this.transComp.parent.Position, this.transporters[j].parent, PathEndMode.Touch, TraverseParms.For(TraverseMode.PassDoors, Danger.Deadly, false))) { Messages.Message("MessageTransporterUnreachable".Translate(), this.transporters[j].parent, MessageTypeDefOf.RejectInput); return; } } } Find.WindowStack.Add(new Dialog_LoadTransportersPawn(this.transComp.Map, this.transporters)); }
public void StartChoosingDestination() { CameraJumper.TryJump(CameraJumper.GetWorldTarget(this.parent)); Find.WorldSelector.ClearSelection(); int tile = this.parent.Map.Tile; Find.WorldTargeter.BeginTargeting(new Func <GlobalTargetInfo, bool>(this.ChoseWorldTarget), true, CompLaunchable.TargeterMouseAttachment, true, delegate { GenDraw.DrawWorldRadiusRing(tile, this.MaxLaunchDistance); }, (GlobalTargetInfo target) => CompLaunchablePawn.TargetingLabelGetter(target, tile, this.MaxLaunchDistance, this.TransportersInGroup.Cast <IThingHolder>(), new Action <int, TransportPodsArrivalAction>(this.TryLaunch), this), null); }
public static IEnumerable <FloatMenuOption> GetFloatMenuOptions(CompLaunchablePawn representative, IEnumerable <IThingHolder> pods, Settlement settlement) { if (settlement.Faction == Faction.OfPlayer) { return(Enumerable.Empty <FloatMenuOption>()); } return(ByakheeArrivalActionUtility.GetFloatMenuOptions <ByakheeArrivalAction_GiveGift>(() => ByakheeArrivalAction_GiveGift.CanGiveGiftTo(pods, settlement), () => new ByakheeArrivalAction_GiveGift(settlement), "GiveGiftViaTransportPods".Translate(settlement.Faction.Name, FactionGiftUtility.GetGoodwillChange(pods, settlement).ToStringWithSign()), representative, settlement.Tile, delegate(Action action) { TradeRequestComp tradeReqComp = settlement.GetComponent <TradeRequestComp>(); if (tradeReqComp.ActiveRequest && pods.Any((IThingHolder p) => p.GetDirectlyHeldThings().Contains(tradeReqComp.requestThingDef))) { Find.WindowStack.Add(new Dialog_MessageBox("GiveGiftViaTransportPodsTradeRequestWarning".Translate(), "Yes".Translate(), delegate() { action(); }, "No".Translate(), null, null, false, null, null, WindowLayer.Dialog)); return; } action(); })); }
public override IEnumerable <Gizmo> GetGizmos() { IEnumerator <Gizmo> enumerator = base.GetGizmos().GetEnumerator(); while (enumerator.MoveNext()) { Gizmo current = enumerator.Current; yield return(current); } if (this.Faction == Faction.OfPlayer && !this.Dead && !this.Dead) { if (compTransporterPawn.LoadingInProgressOrReadyToLaunch) { Command_Action command_Action = new Command_Action(); command_Action.defaultLabel = "CommandLaunchGroup".Translate(); command_Action.defaultDesc = "CommandLaunchGroupDesc".Translate(); command_Action.icon = ContentFinder <Texture2D> .Get("UI/Icons/Commands/FlyingTarget", true); command_Action.action = delegate { if (compTransporterPawn.AnyInGroupHasAnythingLeftToLoad) { Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmSendNotCompletelyLoadedPods".Translate( compTransporterPawn.FirstThingLeftToLoadInGroup.LabelCap ), new Action(compLaunchablePawn.StartChoosingDestination), false, null)); } else { compLaunchablePawn.StartChoosingDestination(); } }; if (compLaunchablePawn.AnyInGroupIsUnderRoof) { command_Action.Disable("CommandLaunchGroupFailUnderRoof".Translate()); } yield return(command_Action); } if (compTransporterPawn.LoadingInProgressOrReadyToLaunch) { yield return(new Command_Action { defaultLabel = "CommandCancelLoad".Translate(), defaultDesc = "CommandCancelLoadDesc".Translate(), icon = CompTransporterPawn.CancelLoadCommandTex, action = delegate { SoundDefOf.Designate_Cancel.PlayOneShotOnCamera(); compTransporterPawn.CancelLoad(); } }); } Command_LoadToTransporterPawn command_LoadToTransporter = new Command_LoadToTransporterPawn(); int num = 0; for (int i = 0; i < Find.Selector.NumSelected; i++) { Thing thing = Find.Selector.SelectedObjectsListForReading[i] as Thing; if (thing != null && thing.def == this.def) { CompLaunchablePawn compLaunchable = thing.TryGetComp <CompLaunchablePawn>(); if (compLaunchable != null) { num++; } } } command_LoadToTransporter.defaultLabel = "CommandLoadTransporter".Translate( num.ToString() ); command_LoadToTransporter.defaultDesc = "CommandLoadTransporterDesc".Translate(); command_LoadToTransporter.icon = CompTransporterPawn.LoadCommandTex; command_LoadToTransporter.transComp = compTransporterPawn; CompLaunchablePawn launchable = compTransporterPawn.Launchable; yield return(command_LoadToTransporter); } yield break; }
public static bool ChoseWorldTarget(GlobalTargetInfo target, int tile, IEnumerable <IThingHolder> pods, int maxLaunchDistance, Action <int, TransportPodsArrivalAction> launchAction, CompLaunchablePawn launchable) { if (!target.IsValid) { Messages.Message("MessageTransportPodsDestinationIsInvalid".Translate(), MessageTypeDefOf.RejectInput, false); return(false); } int num = Find.WorldGrid.TraversalDistanceBetween(tile, target.Tile, true, int.MaxValue); if (maxLaunchDistance > 0 && num > maxLaunchDistance) { Messages.Message("TransportPodDestinationBeyondMaximumRange".Translate(), MessageTypeDefOf.RejectInput, false); return(false); } IEnumerable <FloatMenuOption> source = (launchable != null) ? launchable.GetTransportPodsFloatMenuOptionsAt(target.Tile) : CompLaunchable.GetOptionsForTile(target.Tile, pods, launchAction); if (!source.Any <FloatMenuOption>()) { if (Find.World.Impassable(target.Tile)) { Messages.Message("MessageTransportPodsDestinationIsInvalid".Translate(), MessageTypeDefOf.RejectInput, false); return(false); } launchAction(target.Tile, null); return(true); } else { if (source.Count <FloatMenuOption>() != 1) { Find.WindowStack.Add(new FloatMenu(source.ToList <FloatMenuOption>())); return(false); } if (!source.First <FloatMenuOption>().Disabled) { source.First <FloatMenuOption>().action(); return(true); } return(false); } }
private bool ChoseWorldTarget(GlobalTargetInfo target) { return(!this.LoadingInProgressOrReadyToLaunch || CompLaunchablePawn.ChoseWorldTarget(target, this.parent.Map.Tile, this.TransportersInGroup.Cast <IThingHolder>(), this.MaxLaunchDistance, new Action <int, TransportPodsArrivalAction>(this.TryLaunch), this)); }
public static string TargetingLabelGetter(GlobalTargetInfo target, int tile, int maxLaunchDistance, IEnumerable <IThingHolder> pods, Action <int, TransportPodsArrivalAction> launchAction, CompLaunchablePawn launchable) { if (!target.IsValid) { return(null); } int num = Find.WorldGrid.TraversalDistanceBetween(tile, target.Tile, true, int.MaxValue); if (maxLaunchDistance > 0 && num > maxLaunchDistance) { GUI.color = ColorLibrary.RedReadable; return("TransportPodDestinationBeyondMaximumRange".Translate()); } IEnumerable <FloatMenuOption> source = (launchable != null) ? launchable.GetTransportPodsFloatMenuOptionsAt(target.Tile) : CompLaunchable.GetOptionsForTile(target.Tile, pods, launchAction); if (!source.Any <FloatMenuOption>()) { return(string.Empty); } if (source.Count <FloatMenuOption>() == 1) { if (source.First <FloatMenuOption>().Disabled) { GUI.color = ColorLibrary.RedReadable; } return(source.First <FloatMenuOption>().Label); } MapParent mapParent; if ((mapParent = (target.WorldObject as MapParent)) != null) { return("ClickToSeeAvailableOrders_WorldObject".Translate(mapParent.LabelCap)); } return("ClickToSeeAvailableOrders_Empty".Translate()); }
public static IEnumerable <FloatMenuOption> GetFloatMenuOptions <T>(Func <FloatMenuAcceptanceReport> acceptanceReportGetter, Func <T> arrivalActionGetter, string label, CompLaunchablePawn representative, int destinationTile, Action <Action> uiConfirmationCallback = null) where T : TransportPodsArrivalAction { FloatMenuAcceptanceReport floatMenuAcceptanceReport = acceptanceReportGetter(); if (floatMenuAcceptanceReport.Accepted || !floatMenuAcceptanceReport.FailReason.NullOrEmpty() || !floatMenuAcceptanceReport.FailMessage.NullOrEmpty()) { if (!floatMenuAcceptanceReport.FailReason.NullOrEmpty()) { yield return(new FloatMenuOption(label + " (" + floatMenuAcceptanceReport.FailReason + ")", null, MenuOptionPriority.Default, null, null, 0f, null, null, true, 0)); } else { //Action <> 9__1; yield return(new FloatMenuOption(label, delegate() { FloatMenuAcceptanceReport floatMenuAcceptanceReport2 = acceptanceReportGetter(); if (!floatMenuAcceptanceReport2.Accepted) { if (!floatMenuAcceptanceReport2.FailMessage.NullOrEmpty()) { Messages.Message(floatMenuAcceptanceReport2.FailMessage, new GlobalTargetInfo(destinationTile), MessageTypeDefOf.RejectInput, false); } return; } if (uiConfirmationCallback == null) { representative.TryLaunch(destinationTile, arrivalActionGetter()); return; } //Action<Action> uiConfirmationCallback2 = uiConfirmationCallback; //Action obj; //if ((obj = <> 9__1) == null) //{ // obj = (<> 9__1 = delegate () // { representative.TryLaunch(destinationTile, arrivalActionGetter()); // }); //} //uiConfirmationCallback2(obj); }, MenuOptionPriority.Default, null, null, 0f, null, null, true, 0)); } } yield break; }
public static IEnumerable <FloatMenuOption> GetFloatMenuOptions(CompLaunchablePawn representative, IEnumerable <IThingHolder> pods, Settlement settlement) { return(ByakheeArrivalActionUtility.GetFloatMenuOptions <ByakheeArrivalAction_VisitSettlement>(() => ByakheeArrivalAction_VisitSettlement.CanVisit(pods, settlement), () => new ByakheeArrivalAction_VisitSettlement(settlement), "VisitSettlement".Translate(settlement.Label), representative, settlement.Tile, null)); }
public override IEnumerable <Gizmo> GetGizmos() { IEnumerator <Gizmo> enumerator = base.GetGizmos().GetEnumerator(); while (enumerator.MoveNext()) { Gizmo current = enumerator.Current; yield return(current); } if (this.Faction == Faction.OfPlayer && !this.Dead && !this.Dead) { if (compTransporterPawn.LoadingInProgressOrReadyToLaunch) { Command_Action command_Action = new Command_Action(); command_Action.defaultLabel = "CommandLaunchGroup".Translate(); command_Action.defaultDesc = "CommandLaunchGroupDesc".Translate(); command_Action.icon = ContentFinder <Texture2D> .Get("UI/Icons/Commands/FlyingTarget", true); command_Action.action = delegate { DoLaunchGroup(); }; if (compLaunchablePawn.AnyInGroupIsUnderRoof) { command_Action.Disable("CommandLaunchGroupFailUnderRoof".Translate()); } yield return(command_Action); } if (compTransporterPawn.LoadingInProgressOrReadyToLaunch) { yield return(new Command_Action { defaultLabel = "CommandCancelLoad".Translate(), defaultDesc = "CommandCancelLoadDesc".Translate(), icon = CompTransporterPawn.CancelLoadCommandTex, action = delegate { DoCancelLoad(); } }); } Command_LoadToTransporterPawn command_LoadToTransporter = new Command_LoadToTransporterPawn(); int num = 0; for (int i = 0; i < Find.Selector.NumSelected; i++) { Thing thing = Find.Selector.SelectedObjectsListForReading[i] as Thing; if (thing != null && thing.def == this.def) { CompLaunchablePawn compLaunchable = thing.TryGetComp <CompLaunchablePawn>(); if (compLaunchable != null) { num++; } } } command_LoadToTransporter.defaultLabel = "CommandLoadTransporter".Translate(new object[] { num.ToString() }); command_LoadToTransporter.defaultDesc = "CommandLoadTransporterDesc".Translate(); command_LoadToTransporter.icon = CompTransporterPawn.LoadCommandTex; command_LoadToTransporter.transComp = compTransporterPawn; CompLaunchablePawn launchable = compTransporterPawn.Launchable; yield return(command_LoadToTransporter); } yield break; }
public static IEnumerable <FloatMenuOption> GetFloatMenuOptions(CompLaunchablePawn representative, IEnumerable <IThingHolder> pods, Caravan caravan) { return(ByakheeArrivalActionUtility.GetFloatMenuOptions <ByakheeArrivalAction_GiveToCaravan>(() => ByakheeArrivalAction_GiveToCaravan.CanGiveTo(pods, caravan), () => new ByakheeArrivalAction_GiveToCaravan(caravan), "GiveToCaravan".Translate(caravan.Label), representative, caravan.Tile, null)); }
public override IEnumerable <Gizmo> CompGetGizmosExtra() { IEnumerator <Gizmo> enumerator = base.CompGetGizmosExtra().GetEnumerator(); while (enumerator.MoveNext()) { Gizmo current = enumerator.Current; yield return(current); } if (this.LoadingInProgressOrReadyToLaunch) { yield return(new Command_Action { defaultLabel = "CommandCancelLoad".Translate(), defaultDesc = "CommandCancelLoadDesc".Translate(), icon = CompTransporterPawn.CancelLoadCommandTex, action = delegate { SoundDefOf.Designate_Cancel.PlayOneShotOnCamera(); this.CancelLoad(); } }); } Command_LoadToTransporterPawn Command_LoadToTransporterPawn = new Command_LoadToTransporterPawn(); int num = 0; for (int i = 0; i < Find.Selector.NumSelected; i++) { Thing thing = Find.Selector.SelectedObjectsListForReading[i] as Thing; if (thing != null && thing.def == this.parent.def) { CompLaunchablePawn CompLaunchablePawn = thing.TryGetComp <CompLaunchablePawn>(); if (CompLaunchablePawn == null) { num++; } } } Command_LoadToTransporterPawn.defaultLabel = "CommandLoadTransporter".Translate(new object[] { num.ToString() }); Command_LoadToTransporterPawn.defaultDesc = "CommandLoadTransporterDesc".Translate(); Command_LoadToTransporterPawn.icon = CompTransporterPawn.LoadCommandTex; Command_LoadToTransporterPawn.transComp = this; CompLaunchablePawn launchable = this.Launchable; //if (launchable != null) //{ // if (!launchable.ConnectedToFuelingPort) // { // Command_LoadToTransporterPawn.Disable("CommandLoadTransporterFailNotConnectedToFuelingPort".Translate()); // } // else if (!launchable.FuelingPortSourceHasAnyFuel) // { // Command_LoadToTransporterPawn.Disable("CommandLoadTransporterFailNoFuel".Translate()); // } //} yield return(Command_LoadToTransporterPawn); yield break; }