Example #1
0
 public override void SpawnSetup(Map map, bool bla)
 {
     compTransporterPawn = this.TryGetComp <CompTransporterPawn>();
     compLaunchablePawn  = this.TryGetComp <CompLaunchablePawn>();
     DecrementMapIndex();
     base.SpawnSetup(map, bla);
 }
Example #2
0
        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;
        }
Example #3
0
        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));
        }
Example #4
0
        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);
        }
Example #5
0
 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();
     }));
 }
Example #6
0
        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;
        }
Example #7
0
        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);
            }
        }
Example #8
0
 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));
 }
Example #9
0
        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());
        }
Example #10
0
        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));
 }
Example #12
0
        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));
 }
Example #14
0
        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;
        }