Exemplo n.º 1
0
    public WindowStack CreateWindowStack()
    {
        WindowStack stack = new WindowStack();

        this._stacks.Add(stack);
        return(stack);
    }
Exemplo n.º 2
0
        public static void AddMechPartsOption(WindowStack instance, FloatMenu menu)
        {
            List <FloatMenuOption> options = Traverse.Create(menu).Field("options").GetValue <List <FloatMenuOption> >();
            //options.Add(new FloatMenuOption());
            bool researchComplete = DefDatabase <ResearchProjectDef> .AllDefs.FirstOrDefault((ResearchProjectDef rp) => rp == WTH_DefOf.WTH_LRMSTuning && rp.IsFinished) != null;

            ThingDef mechanoidParts = WTH_DefOf.WTH_MineableMechanoidParts;

            if (researchComplete)
            {
                FloatMenuOption item = new FloatMenuOption("WTH_MechanoidParts_LabelShort".Translate(), delegate
                {
                    foreach (object selectedObject in Find.Selector.SelectedObjects)
                    {
                        Thing selection = selectedObject as Thing;
                        if (selection != null)
                        {
                            CompLongRangeMineralScanner compLongRangeMineralScanner = selection.TryGetComp <CompLongRangeMineralScanner>();
                            if (compLongRangeMineralScanner != null)
                            {
                                Traverse.Create(compLongRangeMineralScanner).Field("targetMineable").SetValue(mechanoidParts);
                            }
                        }
                    }
                }, MenuOptionPriority.Default, null, null, 29f, (Rect rect) => Widgets.InfoCardButton(rect.x + 5f, rect.y + (rect.height - 24f) / 2, mechanoidParts.GetConcreteExample()), null);
                options.Add(item);
            }

            Traverse.Create(menu).Field("options").SetValue(options);
            instance.Add(menu);
        }
        public static void Add_KeepRect(this WindowStack windows, Window window)
        {
            var rect = window.windowRect;

            windows.Add(window);
            window.windowRect = rect;
        }
        private static void <DoMainMenuControls> m__4()
        {
            WindowStack windowStack         = Find.WindowStack;
            string      fullInformationText = Find.Scenario.GetFullInformationText();
            string      name = Find.Scenario.name;

            windowStack.Add(new Dialog_MessageBox(fullInformationText, null, null, null, null, name, false, null, null));
        }
 public static Window Top(this WindowStack stack)
 {
     if (stack.Count > 0)
     {
         return(stack.Windows[0]);
     }
     return(null);
 }
Exemplo n.º 6
0
 static public BotEngine.EveOnline.Interface.MemoryStruct.WindowStack AsOld(
     this WindowStack window,
     Func <object, object> mapDelegate) =>
 window == null ? null :
 new BotEngine.EveOnline.Interface.MemoryStruct.WindowStack(window.AsOldWindowBase())
 {
     Tab = window?.Tab?.Select(AsOld)?.ToArray(),
     TabSelectedWindow = (BotEngine.EveOnline.Interface.MemoryStruct.Window)mapDelegate(window?.TabSelectedWindow),
 };
Exemplo n.º 7
0
        public void PushWindow(AptWindow window)
        {
            CreateSizeDependentResources(window, Game.Panel.ClientBounds.Size);

            window.InputHandler = _inputHandler;
            window.Manager      = this;

            WindowStack.Push(window);
        }
Exemplo n.º 8
0
        public Window PushWindow(Window window)
        {
            window.Size = _game.Panel.ClientBounds.Size;

            WindowStack.Push(window);

            window.LayoutInit?.Invoke(window, _game);

            return(window);
        }
Exemplo n.º 9
0
        public override void LessonOnGUI()
        {
            Rect  mainRect = this.MainRect;
            float alpha    = 1f;

            if (this.doFadeIn)
            {
                alpha = Mathf.Clamp01((float)(base.AgeSeconds / 0.40000000596046448));
            }
            if (this.Expiring)
            {
                float num = this.expiryTime - Time.timeSinceLevelLoad;
                if (num < 1.1000000238418579)
                {
                    alpha = (float)(num / 1.1000000238418579);
                }
            }
            WindowStack windowStack  = Find.WindowStack;
            int         iD           = 134706;
            Rect        rect         = mainRect;
            WindowLayer layer        = WindowLayer.Super;
            Action      doWindowFunc = delegate
            {
                Rect rect2 = mainRect.AtZero();
                Text.Font = GameFont.Small;
                if (!this.Expiring)
                {
                    this.def.HighlightAllTags();
                }
                if (this.doFadeIn || this.Expiring)
                {
                    GUI.color = new Color(1f, 1f, 1f, alpha);
                }
                Widgets.DrawWindowBackgroundTutor(rect2);
                Rect rect3 = rect2.ContractedBy(10f);
                rect3.width = 432f;
                Widgets.Label(rect3, this.def.HelpTextAdjusted);
                Rect      butRect = new Rect((float)(rect2.xMax - 32.0 - 8.0), (float)(rect2.y + 8.0), 32f, 32f);
                Texture2D tex     = (!this.Expiring) ? TexButton.CloseXBig : Widgets.CheckboxOnTex;
                if (Widgets.ButtonImage(butRect, tex, new Color(0.95f, 0.95f, 0.95f), new Color(0.8352941f, 0.6666667f, 0.274509817f)))
                {
                    SoundDefOf.Click.PlayOneShotOnCamera(null);
                    this.CloseButtonClicked();
                }
                if (Time.timeSinceLevelLoad > this.expiryTime)
                {
                    this.CloseButtonClicked();
                }
                GUI.color = Color.white;
            };
            bool  doBackground = false;
            float shadowAlpha  = alpha;

            windowStack.ImmediateWindow(iD, rect, layer, doWindowFunc, doBackground, false, shadowAlpha);
        }
Exemplo n.º 10
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            parms.points *= IncidentPointsFactorRange.RandomInRange;
            Caravan caravan = (Caravan)parms.target;

            if (!PawnGroupMakerUtility.TryGetRandomFactionForCombatPawnGroup(parms.points, out parms.faction))
            {
                return(false);
            }
            List <ThingCount> demands = GenerateDemands(caravan);

            if (demands.NullOrEmpty())
            {
                return(false);
            }
            PawnGroupMakerParms defaultPawnGroupMakerParms = IncidentParmsUtility.GetDefaultPawnGroupMakerParms(PawnGroupKindDefOf.Combat, parms);

            defaultPawnGroupMakerParms.generateFightersOnly            = true;
            defaultPawnGroupMakerParms.dontUseSingleUseRocketLaunchers = true;
            List <Pawn> attackers = PawnGroupMakerUtility.GeneratePawns(defaultPawnGroupMakerParms).ToList();

            if (attackers.Count == 0)
            {
                Log.Error("Caravan demand incident couldn't generate any enemies even though min points have been checked. faction=" + defaultPawnGroupMakerParms.faction + "(" + ((defaultPawnGroupMakerParms.faction == null) ? "null" : defaultPawnGroupMakerParms.faction.def.ToString()) + ") parms=" + parms);
                return(false);
            }
            CameraJumper.TryJumpAndSelect(caravan);
            DiaNode   diaNode   = new DiaNode(GenerateMessageText(parms.faction, attackers.Count, demands, caravan));
            DiaOption diaOption = new DiaOption("CaravanDemand_Give".Translate());

            diaOption.action = delegate
            {
                ActionGive(caravan, demands, attackers);
            };
            diaOption.resolveTree = true;
            diaNode.options.Add(diaOption);
            DiaOption diaOption2 = new DiaOption("CaravanDemand_Fight".Translate());

            diaOption2.action = delegate
            {
                ActionFight(caravan, attackers);
            };
            diaOption2.resolveTree = true;
            diaNode.options.Add(diaOption2);
            string      text               = "CaravanDemandTitle".Translate(parms.faction.Name);
            WindowStack windowStack        = Find.WindowStack;
            DiaNode     nodeRoot           = diaNode;
            Faction     faction            = parms.faction;
            bool        delayInteractivity = true;
            string      title              = text;

            windowStack.Add(new Dialog_NodeTreeWithFactionInfo(nodeRoot, faction, delayInteractivity, radioMode: false, title));
            Find.Archive.Add(new ArchivedDialog(diaNode.text, text, parms.faction));
            return(true);
        }
Exemplo n.º 11
0
 public static void NotifyAllPawnTables_PawnsChanged()
 {
     if (Find.WindowStack != null)
     {
         WindowStack windowStack = Find.WindowStack;
         for (int i = 0; i < windowStack.Count; i++)
         {
             (windowStack[i] as MainTabWindow_PawnTable)?.Notify_PawnsChanged();
         }
     }
 }
Exemplo n.º 12
0
 static public void NotifyPLWindows()
 {
     if (Find.WindowStack != null)
     {
         WindowStack windowStack = Find.WindowStack;
         for (int i = 0; i < windowStack.Count; i++)
         {
             (windowStack[i] as CustomTabWindow)?.Notify_PawnsChanged();
             (windowStack[i] as PrisonerButtonWindow)?.Notify_PawnsChanged();
         }
     }
 }
Exemplo n.º 13
0
        override public void Berecne()
        {
            base.Berecne();

            var AstMainContainer = base.AstMainContainer;

            if (null == AstMainContainer)
            {
                return;
            }

            if (!(true == AstMainContainer.VisibleIncludingInheritance))
            {
                return;
            }

            TabGroupAst =
                Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                    AstMainContainer, (kandidaat) =>
                    string.Equals("TabGroup", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase),
                    4, 1);

            ContentAst =
                Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                    AstMainContainer, (kandidaat) =>
                    kandidaat.PyObjTypNameIsContainer() &&
                    Regex.Match(kandidaat.Name ?? "", "content", RegexOptions.IgnoreCase).Success,
                    2, 1);

            KandidaatWindowAktiivAst =
                Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                    ContentAst, (kandidaat) =>
                    true == kandidaat.VisibleIncludingInheritance && null != kandidaat.Caption,
                    2, 1);

            if (null != TabGroupAst)
            {
                TabGroupAuswert = new SictAuswertGbsTabGroup(TabGroupAst);
                TabGroupAuswert.Berecne();
            }

            var TabGroup =
                (null == TabGroupAuswert) ? null : TabGroupAuswert.Ergeebnis;

            var WindowAktiiv = AuswertGbs.Glob.WindowBerecneScpezTypFürGbsAst(KandidaatWindowAktiivAst);

            ErgeebnisScpezStack = new WindowStack(base.Ergeebnis)
            {
                Tab = TabGroup?.ListTab,
                TabSelectedWindow = WindowAktiiv,
            };
        }
Exemplo n.º 14
0
 public static void HandleSingleWindowDialogs(Window window, WindowStack __instance)
 {
     if (Event.current.type == EventType.MouseDown)
     {
         if (window is null || (!window.GetType().IsAssignableFrom(typeof(SingleWindow)) && (__instance.GetWindowAt(Verse.UI.GUIToScreenPoint(Event.current.mousePosition)) != SingleWindow.CurrentlyOpenedWindow)))
         {
             if (SingleWindow.CurrentlyOpenedWindow != null && SingleWindow.CurrentlyOpenedWindow.closeOnAnyClickOutside)
             {
                 Find.WindowStack.TryRemove(SingleWindow.CurrentlyOpenedWindow);
             }
         }
     }
 }
        void IArchivable.OpenArchived()
        {
            DiaNode   diaNode   = new DiaNode(this.text);
            DiaOption diaOption = new DiaOption("OK".Translate());

            diaOption.resolveTree = true;
            diaNode.options.Add(diaOption);
            WindowStack windowStack = Find.WindowStack;
            DiaNode     nodeRoot    = diaNode;
            Faction     faction     = this.relatedFaction;
            string      text        = this.title;

            windowStack.Add(new Dialog_NodeTreeWithFactionInfo(nodeRoot, faction, false, false, text));
        }
Exemplo n.º 16
0
        public void ShowWindow(IRemoteControl window)
        {
            if (window == null)
            {
                throw new ArgumentException("Window argument cannot be null");
            }

            bool   IsContract           = false;
            bool   IsAirspaceDecoration = false;
            object Control = null;

            try {
                Control = window.GetControl();
            } catch (SerializationException) {
                INativeHandleContract contract = window.GetControl(true) as INativeHandleContract;
                if (contract != null)
                {
                    Control              = FrameworkElementAdapters.ContractToViewAdapter(contract);
                    IsContract           = true;
                    IsAirspaceDecoration = window.EnableAirspaceFix;
                }
            }
            if (Control != null)
            {
                if (CurrentWindow != null)
                {
                    WindowStack.Push(CurrentWindow);
                }

                if (IsContract && IsAirspaceDecoration)
                {
                    Control = new AirspaceDecorator()
                    {
                        AirspaceMode = AirspaceMode.Redirect,
                        IsInputRedirectionEnabled  = true,
                        IsOutputRedirectionEnabled = true,
                        Background = Brushes.White,
                        Content    = Control
                    };
                }

                CurrentWindow = window;
                CurrentWindow.OnShow();
                UpdateTransition(Control, ((IsContract && !IsAirspaceDecoration) || (this.IsContract && !this.IsAirspaceDecoration))
                    ? TransitionType.Normal
                    : DefaultTransition);
                this.IsContract           = IsContract;
                this.IsAirspaceDecoration = IsAirspaceDecoration;
            }
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            if (parms.target is Map)
            {
                return(IncidentDefOf.TravelerGroup.Worker.TryExecute(parms));
            }

            Caravan caravan = (Caravan)parms.target;

            CameraJumper.TryJumpAndSelect(caravan);

            string text = "RealRuins.CaravanFoundRuins".Translate(caravan.Name).CapitalizeFirst();

            DiaNode diaNode = new DiaNode(text);

            DiaOption diaOptionInvestigate = new DiaOption("RealRuins.CaravanFoundRuins.Investigate".Translate());
            DiaOption diaOptionMoveOn      = new DiaOption("CaravanMeeting_MoveOn".Translate());

            diaOptionInvestigate.action = delegate {
                LongEventHandler.QueueLongEvent(delegate {
                    Pawn t = caravan.PawnsListForReading[0];

                    /*Site site = SiteMaker.MakeSite(SiteCoreDefOf.Nothing, (RimWorld.SitePartDef) null, caravan.Tile, null);
                     * site.sitePartsKnown = true;
                     * site.GetComponent<TimeoutComp>().StartTimeout(3 * 60000);
                     * Find.WorldObjects.Add(site);
                     */

                    Map map = CaravanIncidentUtility.GetOrGenerateMapForIncident(caravan, new IntVec3(120, 1, 120),
                                                                                 DefDatabase <WorldObjectDef> .GetNamed("CaravanSmallRuinsWorldObject"));
                    CaravanEnterMapUtility.Enter(caravan, map, CaravanEnterMode.Edge);
                    CameraJumper.TryJumpAndSelect(t);
                    Find.TickManager.Notify_GeneratedPotentiallyHostileMap();
                }, "GeneratingMapForNewEncounter", false, null);
            };

            diaOptionInvestigate.resolveTree = true;
            diaOptionMoveOn.resolveTree      = true;

            diaNode.options.Add(diaOptionInvestigate);
            diaNode.options.Add(diaOptionMoveOn);

            string      diaTitle    = "RealRuins.CaravanFoundRuinsTitle".Translate(caravan.Label);
            WindowStack windowStack = Find.WindowStack;

            windowStack.Add(new Dialog_NodeTree(diaNode, true, false, diaTitle));
            Find.Archive.Add(new ArchivedDialog(diaNode.text, diaTitle));
            return(true);
        }
Exemplo n.º 18
0
        private IRemoteControl PopAvailableWindow()
        {
            bool           IsSuccess = false;
            IRemoteControl control   = null;

            while (!IsSuccess)
            {
                try {
                    WindowStack.TryPop(out control);
                    var boolEnabled = control.EnableAirspaceFix;
                    IsSuccess = true;
                } catch (AppDomainUnloadedException) { }
            }
            return(control);
        }
Exemplo n.º 19
0
        static void Prefix(WindowStack __instance, Window clickedWindow)
        {
            for (int i = Find.WindowStack.Windows.Count - 1; i >= 0; i--)
            {
                Window window = Find.WindowStack.Windows[i];
                __instance.focusedWindow = window;

                if (window == clickedWindow || window.closeOnClickedOutside)
                {
                    return;
                }
                UI.UnfocusCurrentControl();
            }

            __instance.focusedWindow = null;
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Caravan caravan = (Caravan)parms.target;

            if (!PawnGroupMakerUtility.TryGetRandomFactionForNormalPawnGroup(parms.points, out parms.faction, null, false, false, false, true))
            {
                return(false);
            }
            PawnGroupMakerParms defaultPawnGroupMakerParms = IncidentParmsUtility.GetDefaultPawnGroupMakerParms(parms, false);

            defaultPawnGroupMakerParms.generateFightersOnly = true;
            List <Pawn>  attackers = PawnGroupMakerUtility.GeneratePawns(PawnGroupKindDefOf.Normal, defaultPawnGroupMakerParms, true).ToList <Pawn>();
            List <Thing> demands   = this.GenerateDemands(caravan);

            if (demands.Count == 0)
            {
                return(false);
            }
            CameraJumper.TryJumpAndSelect(caravan);
            DiaNode   diaNode   = new DiaNode(this.GenerateMessageText(parms.faction, attackers.Count, demands));
            DiaOption diaOption = new DiaOption("CaravanDemand_Give".Translate());

            diaOption.action = delegate
            {
                this.ActionGive(caravan, demands, attackers);
            };
            diaOption.resolveTree = true;
            diaNode.options.Add(diaOption);
            DiaOption diaOption2 = new DiaOption("CaravanDemand_Fight".Translate());

            diaOption2.action = delegate
            {
                this.ActionFight(caravan, attackers);
            };
            diaOption2.resolveTree = true;
            diaNode.options.Add(diaOption2);
            WindowStack arg_15D_0          = Find.WindowStack;
            DiaNode     nodeRoot           = diaNode;
            bool        delayInteractivity = true;
            string      title = "CaravanDemandTitle".Translate(new object[]
            {
                parms.faction.Name
            });

            arg_15D_0.Add(new Dialog_NodeTree(nodeRoot, delayInteractivity, false, title));
            return(true);
        }
Exemplo n.º 21
0
        public static void NotifyAllPawnTables_PawnsChanged()
        {
            if (Find.WindowStack == null)
            {
                return;
            }
            WindowStack windowStack = Find.WindowStack;

            for (int i = 0; i < windowStack.Count; i++)
            {
                MainTabWindow_PawnTable mainTabWindow_PawnTable = windowStack[i] as MainTabWindow_PawnTable;
                if (mainTabWindow_PawnTable != null)
                {
                    mainTabWindow_PawnTable.Notify_PawnsChanged();
                }
            }
        }
Exemplo n.º 22
0
        internal static bool        _ShouldDoMainMenu_get(this UIRoot_Entry entry)
        {
            if (
                (Controller.Data.RestartWarningIsOpen) ||
                (Controller.Data.ReloadingPlayData)
                )
            {
                return(false);
            }
            WindowStack windowStack = Find.WindowStack;

            for (int index = 0; index < windowStack.Count; ++index)
            {
                if (
                    (windowStack[index].layer == WindowLayer.Dialog) &&
                    (!(windowStack[index] is EditWindow_Log))
                    )
                {
                    return(false);
                }
            }
            return(true);
        }
Exemplo n.º 23
0
        public static bool PreFDoMainMenuControls(Rect rect, bool anyMapFiles)
        {
            // Shape buttons
            float floButtonHeight  = rect.height / 8f;
            float floButtonPadding = floButtonHeight / 6f;
            float floButtonWidth   = rect.width / 2f;

            Rect rectButtonsFrame = new Rect(rect.x, rect.y, (rect.width / 2f) - rect.width * .05f, rect.height);
            Rect rectButtons      = new Rect(0f, 0f, rectButtonsFrame.width, rectButtonsFrame.height);

            GUI.BeginGroup(rectButtonsFrame);

            // make sure font is set to small
            Text.Font = GameFont.Small;

            // Menu Buttons are contained in this List
            List <ProListableOption> listableOptions = new List <ProListableOption>();

            // Tutorial Button and New Colony Button
            string str; // string needed because Tutorial doesn't exist in every language..

            if (Current.ProgramState == ProgramState.Entry)
            {
                str = ("Tutorial".CanTranslate() ? "Tutorial".Translate() : "LearnToPlay".Translate());
                listableOptions.Add(new ProListableOption(str, () => Traverse.Create(typeof(MainMenuDrawer)).Method("InitLearnToPlay"), null));
                listableOptions.Add(new ProListableOption("NewColony".Translate(), () => Find.WindowStack.Add(new ProCWP()), null));
            }

            // In-Game Save Button
            if (Current.ProgramState == ProgramState.Playing && !Current.Game.Info.permadeathMode)
            {
                listableOptions.Add(new ProListableOption("Save".Translate(), () => {
                    Traverse.Create(typeof(MainMenuDrawer)).Method("CloseMainTab");
                    Find.WindowStack.Add(new Dialog_SaveFileList_Save());
                }, null));
            }

            // Load Game Button
            if (anyMapFiles && (Current.ProgramState != ProgramState.Playing || !Current.Game.Info.permadeathMode))
            {
                listableOptions.Add(new ProListableOption("LoadGame".Translate(), () => {
                    Traverse.Create(typeof(MainMenuDrawer)).Method("CloseMainTab");
                    Find.WindowStack.Add(new Dialog_SaveFileList_Load());
                }, null));
            }

            // Review Scenario Button
            if (Current.ProgramState == ProgramState.Playing)
            {
                listableOptions.Add(new ProListableOption("ReviewScenario".Translate(), () => {
                    WindowStack windowStack = Find.WindowStack;
                    string scenario         = Find.Scenario.name;
                    windowStack.Add(new Dialog_MessageBox(Find.Scenario.GetFullInformationText(), null, null, null, null, scenario, false));
                }, null));
            }

            // Options Button
            listableOptions.Add(new ProListableOption("Options".Translate(), () => {
                Traverse.Create(typeof(MainMenuDrawer)).Method("CloseMainTab");
                Find.WindowStack.Add(new Dialog_Options());
            }, "MenuButton-Options"));

            // Mods Button and Credit Button
            if (Current.ProgramState == ProgramState.Entry)
            {
                listableOptions.Add(new ProListableOption("Mods".Translate(), () => Find.WindowStack.Add(new Page_ModsConfig()), null));
                listableOptions.Add(new ProListableOption("Credits".Translate(), () => Find.WindowStack.Add(new Screen_Credits()), null));
            }

            // Quit To OS Button
            if (Current.ProgramState != ProgramState.Playing)
            {
                listableOptions.Add(new ProListableOption("QuitToOS".Translate(), () => Root.Shutdown(), null));
            }

            // Quit Buttons depending on Permadeath setting
            else if (!Current.Game.Info.permadeathMode)
            {
                Action currentGameStateIsValuable = () => {
                    if (!GameDataSaveLoader.CurrentGameStateIsValuable)
                    {
                        GenScene.GoToMainMenu();
                    }
                    else
                    {
                        Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmQuit".Translate(), () => GenScene.GoToMainMenu(), true, null));
                    }
                };
                ProListableOption listableOption = new ProListableOption("QuitToMainMenu".Translate(), currentGameStateIsValuable, null);
                listableOptions.Add(listableOption);
                Action action = () => {
                    if (!GameDataSaveLoader.CurrentGameStateIsValuable)
                    {
                        Root.Shutdown();
                    }
                    else
                    {
                        Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmQuit".Translate(), () => Root.Shutdown(), true, null));
                    }
                };
                listableOption = new ProListableOption("QuitToOS".Translate(), action, null);
                listableOptions.Add(listableOption);
            }
            else
            {
                listableOptions.Add(new ProListableOption("SaveAndQuitToMainMenu".Translate(), () => LongEventHandler.QueueLongEvent(() => {
                    GameDataSaveLoader.SaveGame(Current.Game.Info.permadeathModeUniqueName);
                    MemoryUtility.ClearAllMapsAndWorld();
                }, "Entry", "SavingLongEvent", false, null), null));
                listableOptions.Add(new ProListableOption("SaveAndQuitToOS".Translate(), () => LongEventHandler.QueueLongEvent(() => {
                    GameDataSaveLoader.SaveGame(Current.Game.Info.permadeathModeUniqueName);
                    LongEventHandler.ExecuteWhenFinished(() => Root.Shutdown());
                }, "SavingLongEvent", false, null), null));
            }

            // Draw Menu Buttons
            ProOptionListingUtility.ProDrawOptionListing(rectButtons, listableOptions, UI.screenHeight / 100f);
            GUI.EndGroup();


            // Configure Links
            Text.Font = GameFont.Small;
            List <ProListableOption_WebLink> listableOptions1      = new List <ProListableOption_WebLink>();
            ProListableOption_WebLink        listableOptionWebLink = new ProListableOption_WebLink("FictionPrimer".Translate(), null, "https://docs.google.com/document/d/1pIZyKif0bFbBWten4drrm7kfSSfvBoJPgG9-ywfN8j8/pub", ProTBin.IconBlog);

            listableOptions1.Add(listableOptionWebLink);
            listableOptionWebLink = new ProListableOption_WebLink("LudeonBlog".Translate(), null, "http://ludeon.com/blog", ProTBin.IconBlog);
            listableOptions1.Add(listableOptionWebLink);
            listableOptionWebLink = new ProListableOption_WebLink("Forums".Translate(), null, "http://ludeon.com/forums", ProTBin.IconForums);
            listableOptions1.Add(listableOptionWebLink);
            listableOptionWebLink = new ProListableOption_WebLink("OfficialWiki".Translate(), null, "http://rimworldwiki.com", ProTBin.IconBlog);
            listableOptions1.Add(listableOptionWebLink);
            listableOptionWebLink = new ProListableOption_WebLink("TynansTwitter".Translate(), null, "https://twitter.com/TynanSylvester", ProTBin.IconTwitter);
            listableOptions1.Add(listableOptionWebLink);
            listableOptionWebLink = new ProListableOption_WebLink("TynansDesignBook".Translate(), null, "http://tynansylvester.com/book", ProTBin.IconBook);
            listableOptions1.Add(listableOptionWebLink);
            listableOptionWebLink = new ProListableOption_WebLink("HelpTranslate".Translate(), null, "http://ludeon.com/forums/index.php?topic=2933.0", ProTBin.IconForums);
            listableOptions1.Add(listableOptionWebLink);
            listableOptionWebLink = new ProListableOption_WebLink("BuySoundtrack".Translate(), null, "http://www.lasgameaudio.co.uk/#!store/t04fw", ProTBin.IconSoundtrack);
            listableOptions1.Add(listableOptionWebLink);

            // Shape Links
            Rect rectLinksFrame = new Rect(rect.x + (rect.width / 2f), rect.y, (rect.width / 2f), (rect.height / (listableOptions1.Count + 1)) * (listableOptions1.Count - 1));

            GUI.BeginGroup(rectLinksFrame);
            Rect rectLinks = new Rect(0f, 0f, rectLinksFrame.width, rectLinksFrame.height);

            // Draw Links
            ProOptionListingUtility.ProDrawOptionListing(rectLinks, listableOptions1, (rectLinks.height / 9f) / 7f);
            GUI.EndGroup();

            // Handle language button
            if (Current.ProgramState == ProgramState.Entry)
            {
                // Configure Language button.
                List <FloatMenuOption>       floatMenuOptions = new List <FloatMenuOption>();
                IEnumerator <LoadedLanguage> enumerator       = LanguageDatabase.AllLoadedLanguages.GetEnumerator();
                try
                {
                    while (enumerator.MoveNext())
                    {
                        LoadedLanguage current = enumerator.Current;
                        floatMenuOptions.Add(new FloatMenuOption(current.FriendlyNameNative, () =>
                        {
                            LanguageDatabase.SelectLanguage(current);
                            Prefs.Save();
                        }, MenuOptionPriority.Default, null, null, 0f, null, null));
                    }
                }
                finally
                {
                    if (enumerator == null)
                    {
                    }
                    enumerator.Dispose();
                }

                // Shape language button
                Rect rectLanguageButtonFrame = new Rect(rect.x + (rect.width / 2f), rect.y + rectLinksFrame.height, (rect.width / 2f), (rect.height / (listableOptions1.Count + 1)) * 2f);
                GUI.BeginGroup(rectLanguageButtonFrame);
                float floLanguageButtonPadding = rectLanguageButtonFrame.height * .1f;
                Rect  rectLanguageButton       = new Rect(0f + floLanguageButtonPadding, 0f + floLanguageButtonPadding, rectLanguageButtonFrame.width - (floLanguageButtonPadding * 2f), rectLanguageButtonFrame.height - (floLanguageButtonPadding * 2f));

                // Draw language button
                if (Widgets.ButtonImage(rectLanguageButton, LanguageDatabase.activeLanguage.icon))
                {
                    Find.WindowStack.Add(new FloatMenu(floatMenuOptions));
                }
                GUI.EndGroup();
            }

            return(false);
        }
        public static bool Prefix(MethodBase __originalMethod, WindowStack __instance)
        {
            if (!Active)
            {
                return(true);
            }

            __instance.windowStackOnGUITmpList.Clear();
            __instance.windowStackOnGUITmpList.AddRange(__instance.windows);
            for (var i = __instance.windowStackOnGUITmpList.Count - 1; i >= 0; i--)
            {
                var name = string.Empty;
                if (__instance.windowStackOnGUITmpList[i] is ImmediateWindow)
                {
                    name = string.Intern(
                        $"{__instance.windowStackOnGUITmpList[i].GetType()} ExtraOnGUI {__instance.windowStackOnGUITmpList[i].ID}");
                }
                else
                {
                    name = string.Intern($"{__instance.windowStackOnGUITmpList[i].GetType()} ExtraOnGUI");
                }

                var prof = Analyzer.Start(name, null, null, null, null, __originalMethod);
                __instance.windowStackOnGUITmpList[i].ExtraOnGUI();
                prof.Stop();
            }

            __instance.UpdateImmediateWindowsList();
            __instance.windowStackOnGUITmpList.Clear();
            __instance.windowStackOnGUITmpList.AddRange(__instance.windows);
            for (var j = 0; j < __instance.windowStackOnGUITmpList.Count; j++)
            {
                if (__instance.windowStackOnGUITmpList[j].drawShadow)
                {
                    GUI.color = new Color(1f, 1f, 1f, __instance.windowStackOnGUITmpList[j].shadowAlpha);
                    Widgets.DrawShadowAround(__instance.windowStackOnGUITmpList[j].windowRect);
                    GUI.color = Color.white;
                }

                var name = string.Empty;
                if (__instance.windowStackOnGUITmpList[j] is ImmediateWindow)
                {
                    name = string.Intern(
                        $"{__instance.windowStackOnGUITmpList[j].GetType()} WindowOnGUI {__instance.windowStackOnGUITmpList[j].ID}");
                }
                else
                {
                    name = string.Intern($"{__instance.windowStackOnGUITmpList[j].GetType()} WindowOnGUI");
                }

                var prof = Analyzer.Start(name, null, null, null, null, __originalMethod);
                __instance.windowStackOnGUITmpList[j].WindowOnGUI();
                prof.Stop();
            }

            if (__instance.updateInternalWindowsOrderLater)
            {
                __instance.updateInternalWindowsOrderLater = false;
                __instance.UpdateInternalWindowsOrder();
            }

            return(false);
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            if (parms.target is Map)
            {
                return(IncidentDefOf.TravelerGroup.Worker.TryExecute(parms));
            }
            Caravan caravan = (Caravan)parms.target;
            Faction faction;

            if (!(from x in Find.FactionManager.AllFactionsListForReading
                  where !x.IsPlayer && !x.HostileTo(Faction.OfPlayer) && !x.def.hidden && x.def.humanlikeFaction && x.def.caravanTraderKinds.Any()
                  select x).TryRandomElement <Faction>(out faction))
            {
                return(false);
            }
            CameraJumper.TryJumpAndSelect(caravan);
            List <Pawn> pawns                = this.GenerateCaravanPawns(faction);
            Caravan     metCaravan           = CaravanMaker.MakeCaravan(pawns, faction, -1, false);
            string      text                 = "CaravanMeeting".Translate(faction.Name, PawnUtility.PawnKindsToCommaList(metCaravan.PawnsListForReading));
            DiaNode     diaNode              = new DiaNode(text);
            Pawn        bestPlayerNegotiator = BestCaravanPawnUtility.FindBestNegotiator(caravan);

            if (metCaravan.CanTradeNow)
            {
                DiaOption diaOption = new DiaOption("CaravanMeeting_Trade".Translate());
                diaOption.action = delegate
                {
                    Find.WindowStack.Add(new Dialog_Trade(bestPlayerNegotiator, metCaravan));
                    string empty  = string.Empty;
                    string empty2 = string.Empty;
                    PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter(metCaravan.Goods.OfType <Pawn>(), ref empty, ref empty2, "LetterRelatedPawnsTradingWithOtherCaravan".Translate(), false, true);
                    if (!empty2.NullOrEmpty())
                    {
                        Find.LetterStack.ReceiveLetter(empty, empty2, LetterDefOf.NeutralEvent, new GlobalTargetInfo(caravan.Tile), null);
                    }
                };
                if (bestPlayerNegotiator == null)
                {
                    diaOption.Disable("CaravanMeeting_TradeIncapable".Translate());
                }
                diaNode.options.Add(diaOption);
            }
            DiaOption diaOption2 = new DiaOption("CaravanMeeting_Attack".Translate());

            diaOption2.action = delegate
            {
                LongEventHandler.QueueLongEvent(delegate
                {
                    if (!faction.HostileTo(Faction.OfPlayer))
                    {
                        faction.SetHostileTo(Faction.OfPlayer, true);
                    }
                    Pawn t  = caravan.PawnsListForReading[0];
                    Map map = CaravanIncidentUtility.GetOrGenerateMapForIncident(caravan, new IntVec3(100, 1, 100), WorldObjectDefOf.AttackedCaravan);
                    IntVec3 playerSpot;
                    IntVec3 enemySpot;
                    MultipleCaravansCellFinder.FindStartingCellsFor2Groups(map, out playerSpot, out enemySpot);
                    CaravanEnterMapUtility.Enter(caravan, map, (Pawn p) => CellFinder.RandomClosewalkCellNear(playerSpot, map, 12, null), CaravanDropInventoryMode.DoNotDrop, true);
                    List <Pawn> list = metCaravan.PawnsListForReading.ToList();
                    CaravanEnterMapUtility.Enter(metCaravan, map, (Pawn p) => CellFinder.RandomClosewalkCellNear(enemySpot, map, 12, null), CaravanDropInventoryMode.DoNotDrop, false);
                    LordMaker.MakeNewLord(faction, new LordJob_DefendAttackedTraderCaravan(list[0].Position), map, list);
                    Find.TickManager.CurTimeSpeed = TimeSpeed.Paused;
                    CameraJumper.TryJumpAndSelect(t);
                    Messages.Message("MessageAttackedCaravanIsNowHostile".Translate(faction.Name), new GlobalTargetInfo(list[0].Position, list[0].Map, false), MessageTypeDefOf.ThreatBig);
                }, "GeneratingMapForNewEncounter", false, null);
            };
            diaOption2.resolveTree = true;
            diaNode.options.Add(diaOption2);
            DiaOption diaOption3 = new DiaOption("CaravanMeeting_MoveOn".Translate());

            diaOption3.action = delegate
            {
                this.RemoveAllPawnsAndPassToWorld(metCaravan);
            };
            diaOption3.resolveTree = true;
            diaNode.options.Add(diaOption3);
            string      text2              = "CaravanMeetingTitle".Translate(caravan.Label);
            WindowStack windowStack        = Find.WindowStack;
            DiaNode     nodeRoot           = diaNode;
            bool        delayInteractivity = true;
            string      title              = text2;

            windowStack.Add(new Dialog_NodeTree(nodeRoot, delayInteractivity, false, title));
            return(true);
        }
Exemplo n.º 26
0
        public static void DoMainMenuControls(Rect rect, bool anyMapFiles)
        {
            GUI.BeginGroup(rect);
            Rect rect2 = new Rect(0f, 0f, 170f, rect.height);
            Rect rect3 = new Rect(rect2.xMax + 17f, 0f, 145f, rect.height);

            Text.Font = GameFont.Small;
            List <ListableOption> list = new List <ListableOption>();

            if (Current.ProgramState == ProgramState.Entry)
            {
                string label = "Tutorial".CanTranslate() ? "Tutorial".Translate() : "LearnToPlay".Translate();
                list.Add(new ListableOption(label, delegate
                {
                    InitLearnToPlay();
                }));
                list.Add(new ListableOption("NewColony".Translate(), delegate
                {
                    Find.WindowStack.Add(new Page_SelectScenario());
                }));
            }
            if (Current.ProgramState == ProgramState.Playing && !Current.Game.Info.permadeathMode)
            {
                list.Add(new ListableOption("Save".Translate(), delegate
                {
                    CloseMainTab();
                    Find.WindowStack.Add(new Dialog_SaveFileList_Save());
                }));
            }
            ListableOption item;

            if (anyMapFiles && (Current.ProgramState != ProgramState.Playing || !Current.Game.Info.permadeathMode))
            {
                item = new ListableOption("LoadGame".Translate(), delegate
                {
                    CloseMainTab();
                    Find.WindowStack.Add(new Dialog_SaveFileList_Load());
                });
                list.Add(item);
            }
            if (Current.ProgramState == ProgramState.Playing)
            {
                list.Add(new ListableOption("ReviewScenario".Translate(), delegate
                {
                    WindowStack windowStack    = Find.WindowStack;
                    string fullInformationText = Find.Scenario.GetFullInformationText();
                    string name = Find.Scenario.name;
                    windowStack.Add(new Dialog_MessageBox(fullInformationText, null, null, null, null, name));
                }));
            }
            item = new ListableOption("Options".Translate(), delegate
            {
                CloseMainTab();
                Find.WindowStack.Add(new Dialog_Options());
            }, "MenuButton-Options");
            list.Add(item);
            if (Current.ProgramState == ProgramState.Entry)
            {
                item = new ListableOption("Mods".Translate(), delegate
                {
                    Find.WindowStack.Add(new Page_ModsConfig());
                });
                list.Add(item);
                if (Prefs.DevMode && LanguageDatabase.activeLanguage == LanguageDatabase.defaultLanguage && LanguageDatabase.activeLanguage.anyError)
                {
                    item = new ListableOption("SaveTranslationReport".Translate(), delegate
                    {
                        LanguageReportGenerator.SaveTranslationReport();
                    });
                    list.Add(item);
                }
                item = new ListableOption("Credits".Translate(), delegate
                {
                    Find.WindowStack.Add(new Screen_Credits());
                });
                list.Add(item);
            }
            if (Current.ProgramState == ProgramState.Playing)
            {
                if (Current.Game.Info.permadeathMode)
                {
                    item = new ListableOption("SaveAndQuitToMainMenu".Translate(), delegate
                    {
                        LongEventHandler.QueueLongEvent(delegate
                        {
                            GameDataSaveLoader.SaveGame(Current.Game.Info.permadeathModeUniqueName);
                            MemoryUtility.ClearAllMapsAndWorld();
                        }, "Entry", "SavingLongEvent", doAsynchronously: false, null);
                    });
                    list.Add(item);
                    item = new ListableOption("SaveAndQuitToOS".Translate(), delegate
                    {
                        LongEventHandler.QueueLongEvent(delegate
                        {
                            GameDataSaveLoader.SaveGame(Current.Game.Info.permadeathModeUniqueName);
                            LongEventHandler.ExecuteWhenFinished(delegate
                            {
                                Root.Shutdown();
                            });
                        }, "SavingLongEvent", doAsynchronously: false, null);
                    });
                    list.Add(item);
                }
                else
                {
                    Action action = delegate
                    {
                        if (GameDataSaveLoader.CurrentGameStateIsValuable)
                        {
                            Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmQuit".Translate(), delegate
                            {
                                GenScene.GoToMainMenu();
                            }, destructive: true));
                        }
                        else
                        {
                            GenScene.GoToMainMenu();
                        }
                    };
                    item = new ListableOption("QuitToMainMenu".Translate(), action);
                    list.Add(item);
                    Action action2 = delegate
                    {
                        if (GameDataSaveLoader.CurrentGameStateIsValuable)
                        {
                            Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmQuit".Translate(), delegate
                            {
                                Root.Shutdown();
                            }, destructive: true));
                        }
                        else
                        {
                            Root.Shutdown();
                        }
                    };
                    item = new ListableOption("QuitToOS".Translate(), action2);
                    list.Add(item);
                }
            }
            else
            {
                item = new ListableOption("QuitToOS".Translate(), delegate
                {
                    Root.Shutdown();
                });
                list.Add(item);
            }
            OptionListingUtility.DrawOptionListing(rect2, list);
            Text.Font = GameFont.Small;
            List <ListableOption> list2 = new List <ListableOption>();
            ListableOption        item2 = new ListableOption_WebLink("FictionPrimer".Translate(), "https://rimworldgame.com/backstory", TexButton.IconBlog);

            list2.Add(item2);
            item2 = new ListableOption_WebLink("LudeonBlog".Translate(), "https://ludeon.com/blog", TexButton.IconBlog);
            list2.Add(item2);
            item2 = new ListableOption_WebLink("Forums".Translate(), "https://ludeon.com/forums", TexButton.IconForums);
            list2.Add(item2);
            item2 = new ListableOption_WebLink("OfficialWiki".Translate(), "https://rimworldwiki.com", TexButton.IconBlog);
            list2.Add(item2);
            item2 = new ListableOption_WebLink("TynansTwitter".Translate(), "https://twitter.com/TynanSylvester", TexButton.IconTwitter);
            list2.Add(item2);
            item2 = new ListableOption_WebLink("TynansDesignBook".Translate(), "https://tynansylvester.com/book", TexButton.IconBook);
            list2.Add(item2);
            item2 = new ListableOption_WebLink("HelpTranslate".Translate(), TranslationsContributeURL, TexButton.IconForums);
            list2.Add(item2);
            item2 = new ListableOption_WebLink("BuySoundtrack".Translate(), "http://www.lasgameaudio.co.uk/#!store/t04fw", TexButton.IconSoundtrack);
            list2.Add(item2);
            float num = OptionListingUtility.DrawOptionListing(rect3, list2);

            GUI.BeginGroup(rect3);
            if (Current.ProgramState == ProgramState.Entry && Widgets.ButtonImage(new Rect(0f, num + 10f, 64f, 32f), LanguageDatabase.activeLanguage.icon))
            {
                List <FloatMenuOption> list3 = new List <FloatMenuOption>();
                foreach (LoadedLanguage allLoadedLanguage in LanguageDatabase.AllLoadedLanguages)
                {
                    LoadedLanguage localLang = allLoadedLanguage;
                    list3.Add(new FloatMenuOption(localLang.FriendlyNameNative, delegate
                    {
                        LanguageDatabase.SelectLanguage(localLang);
                        Prefs.Save();
                    }));
                }
                Find.WindowStack.Add(new FloatMenu(list3));
            }
            GUI.EndGroup();
            GUI.EndGroup();
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            parms.points *= 1.5f;
            Caravan caravan = (Caravan)parms.target;
            bool    result;

            if (!PawnGroupMakerUtility.TryGetRandomFactionForCombatPawnGroup(parms.points, out parms.faction, null, false, false, false, true))
            {
                result = false;
            }
            else
            {
                PawnGroupMakerParms defaultPawnGroupMakerParms = IncidentParmsUtility.GetDefaultPawnGroupMakerParms(PawnGroupKindDefOf.Combat, parms, false);
                defaultPawnGroupMakerParms.generateFightersOnly            = true;
                defaultPawnGroupMakerParms.dontUseSingleUseRocketLaunchers = true;
                List <Pawn> attackers = PawnGroupMakerUtility.GeneratePawns(defaultPawnGroupMakerParms, true).ToList <Pawn>();
                if (attackers.Count == 0)
                {
                    Log.Error(string.Concat(new object[]
                    {
                        "Caravan demand incident couldn't generate any enemies even though min points have been checked. faction=",
                        defaultPawnGroupMakerParms.faction,
                        "(",
                        (defaultPawnGroupMakerParms.faction == null) ? "null" : defaultPawnGroupMakerParms.faction.def.ToString(),
                        ") parms=",
                        parms
                    }), false);
                    result = false;
                }
                else
                {
                    List <Thing> demands = this.GenerateDemands(caravan);
                    if (demands.Count == 0)
                    {
                        result = false;
                    }
                    else
                    {
                        CameraJumper.TryJumpAndSelect(caravan);
                        DiaNode   diaNode   = new DiaNode(this.GenerateMessageText(parms.faction, attackers.Count, demands, caravan));
                        DiaOption diaOption = new DiaOption("CaravanDemand_Give".Translate());
                        diaOption.action = delegate()
                        {
                            this.ActionGive(caravan, demands, attackers);
                        };
                        diaOption.resolveTree = true;
                        diaNode.options.Add(diaOption);
                        DiaOption diaOption2 = new DiaOption("CaravanDemand_Fight".Translate());
                        diaOption2.action = delegate()
                        {
                            this.ActionFight(caravan, attackers);
                        };
                        diaOption2.resolveTree = true;
                        diaNode.options.Add(diaOption2);
                        string text = "CaravanDemandTitle".Translate(new object[]
                        {
                            parms.faction.Name
                        });
                        WindowStack windowStack        = Find.WindowStack;
                        DiaNode     nodeRoot           = diaNode;
                        Faction     faction            = parms.faction;
                        bool        delayInteractivity = true;
                        string      title = text;
                        windowStack.Add(new Dialog_NodeTreeWithFactionInfo(nodeRoot, faction, delayInteractivity, false, title));
                        Find.Archive.Add(new ArchivedDialog(diaNode.text, text, parms.faction));
                        result = true;
                    }
                }
            }
            return(result);
        }
Exemplo n.º 28
0
        public void PopWindow()
        {
            var popped = WindowStack.Pop();

            popped.Dispose();
        }
Exemplo n.º 29
0
 public static extern IntPtr GetWindow(IntPtr targetWindow, WindowStack direction);
Exemplo n.º 30
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            if (parms.target is Map)
            {
                return(IncidentDefOf.TravelerGroup.Worker.TryExecute(parms));
            }
            Caravan caravan = (Caravan)parms.target;
            Faction faction;

            if (!this.TryFindFaction(out faction))
            {
                return(false);
            }
            CameraJumper.TryJumpAndSelect(caravan);
            List <Pawn> pawns                = this.GenerateCaravanPawns(faction);
            Caravan     metCaravan           = CaravanMaker.MakeCaravan(pawns, faction, -1, false);
            string      text                 = "CaravanMeeting".Translate(caravan.Name, faction.Name, PawnUtility.PawnKindsToCommaList(metCaravan.PawnsListForReading, true)).CapitalizeFirst();
            DiaNode     diaNode              = new DiaNode(text);
            Pawn        bestPlayerNegotiator = BestCaravanPawnUtility.FindBestNegotiator(caravan);

            if (metCaravan.CanTradeNow)
            {
                DiaOption diaOption = new DiaOption("CaravanMeeting_Trade".Translate());
                diaOption.action = delegate
                {
                    Find.WindowStack.Add(new Dialog_Trade(bestPlayerNegotiator, metCaravan, false));
                    PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter_Send(metCaravan.Goods.OfType <Pawn>(), "LetterRelatedPawnsTradingWithOtherCaravan".Translate(Faction.OfPlayer.def.pawnsPlural), LetterDefOf.NeutralEvent, false, true);
                };
                if (bestPlayerNegotiator == null)
                {
                    diaOption.Disable("CaravanMeeting_TradeIncapable".Translate());
                }
                diaNode.options.Add(diaOption);
            }
            DiaOption diaOption2 = new DiaOption("CaravanMeeting_Attack".Translate());

            diaOption2.action = delegate
            {
                LongEventHandler.QueueLongEvent(delegate
                {
                    Pawn t                   = caravan.PawnsListForReading[0];
                    Faction arg_49_0         = faction;
                    Faction ofPlayer         = Faction.OfPlayer;
                    FactionRelationKind kind = FactionRelationKind.Hostile;
                    string reason            = "GoodwillChangedReason_AttackedCaravan".Translate();
                    arg_49_0.TrySetRelationKind(ofPlayer, kind, true, reason, new GlobalTargetInfo?(t));
                    Map map = CaravanIncidentUtility.GetOrGenerateMapForIncident(caravan, new IntVec3(100, 1, 100), WorldObjectDefOf.AttackedNonPlayerCaravan);
                    IntVec3 playerSpot;
                    IntVec3 enemySpot;
                    MultipleCaravansCellFinder.FindStartingCellsFor2Groups(map, out playerSpot, out enemySpot);
                    CaravanEnterMapUtility.Enter(caravan, map, (Pawn p) => CellFinder.RandomClosewalkCellNear(playerSpot, map, 12, null), CaravanDropInventoryMode.DoNotDrop, true);
                    List <Pawn> list = metCaravan.PawnsListForReading.ToList <Pawn>();
                    CaravanEnterMapUtility.Enter(metCaravan, map, (Pawn p) => CellFinder.RandomClosewalkCellNear(enemySpot, map, 12, null), CaravanDropInventoryMode.DoNotDrop, false);
                    LordMaker.MakeNewLord(faction, new LordJob_DefendAttackedTraderCaravan(list[0].Position), map, list);
                    Find.TickManager.Notify_GeneratedPotentiallyHostileMap();
                    CameraJumper.TryJumpAndSelect(t);
                    PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter_Send(list, "LetterRelatedPawnsGroupGeneric".Translate(Faction.OfPlayer.def.pawnsPlural), LetterDefOf.NeutralEvent, true, true);
                }, "GeneratingMapForNewEncounter", false, null);
            };
            diaOption2.resolveTree = true;
            diaNode.options.Add(diaOption2);
            DiaOption diaOption3 = new DiaOption("CaravanMeeting_MoveOn".Translate());

            diaOption3.action = delegate
            {
                this.RemoveAllPawnsAndPassToWorld(metCaravan);
            };
            diaOption3.resolveTree = true;
            diaNode.options.Add(diaOption3);
            string      text2              = "CaravanMeetingTitle".Translate(caravan.Label);
            WindowStack arg_1F1_0          = Find.WindowStack;
            DiaNode     nodeRoot           = diaNode;
            Faction     faction2           = faction;
            bool        delayInteractivity = true;
            string      title              = text2;

            arg_1F1_0.Add(new Dialog_NodeTreeWithFactionInfo(nodeRoot, faction2, delayInteractivity, false, title));
            Find.Archive.Add(new ArchivedDialog(diaNode.text, text2, faction));
            return(true);
        }
Exemplo n.º 31
0
 public static extern IntPtr GetWindow(IntPtr targetWindow, WindowStack direction);