Пример #1
0
        public static void ExitToMenu(bool save = true)
        {
            IngameOptions.Close();
            Main.menuMode = 10;

            if (save)
            {
                WorldGen.SaveAndQuit((Action)null);
            }
            else
            {
                ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object state) {
                    Main.invasionProgress            = 0;
                    Main.invasionProgressDisplayLeft = 0;
                    Main.invasionProgressAlpha       = 0f;

                    Main.StopTrackedSounds();
                    CaptureInterface.ResetFocus();
                    Main.ActivePlayerFileData.StopPlayTimer();

                    Main.gameMenu = true;
                    if (Main.netMode != 0)
                    {
                        Netplay.disconnect = true;
                        Main.netMode       = 0;
                    }

                    Main.fastForwardTime = false;
                    Main.UpdateSundial();

                    Main.menuMode = 0;
                }), (Action)null);
            }
        }
        /// <summary>
        /// Loads the UI for mod configs.
        /// </summary>
        /// <param name="config"></param>
        public static void OpenModConfigUI(ModConfig config)
        {
            Type interfaceType = ReflectionHelpers.GetMainAssembly()
                                 .GetType("Terraria.ModLoader.UI.Interface");

            if (!Main.gameMenu)
            {
                IngameOptions.Close();
                IngameFancyUI.CoverNextFrame();
                Main.playerInventory = false;
                Main.editChest       = false;
                Main.npcChatText     = "";
                Main.inFancyUI       = true;
            }
            else
            {
                if (!ReflectionHelpers.Get(interfaceType, null, "modConfigID", out Main.menuMode))
                {
                    LogHelpers.Warn("Could not get Interface.modConfigID");
                    return;
                }
            }

            UIState modConfigInterfaceObj;

            if (!ReflectionHelpers.Get(interfaceType, null, "modConfig", out modConfigInterfaceObj) || modConfigInterfaceObj == null)
            {
                LogHelpers.Warn("Could not get Interface.modConfig");
                return;
            }

            object _;

            if (!ReflectionHelpers.RunMethod(modConfigInterfaceObj, "SetMod", new object[] { config.mod, config }, out _))
            {
                LogHelpers.Warn("Could not run Interface.modConfig.SetMod");
                return;
            }

            Main.InGameUI.SetState(modConfigInterfaceObj);

            Main.PlaySound(SoundID.MenuTick);
        }
        /// <summary>
        /// Switches to the list of mod configs menu.
        /// </summary>
        public static void OpenModConfigListUI()
        {
            Type interfaceType = ReflectionLibraries.GetMainAssembly()
                                 .GetType("Terraria.ModLoader.UI.Interface");

            if (!Main.gameMenu)
            {
                IngameOptions.Close();
                IngameFancyUI.CoverNextFrame();
                Main.playerInventory = false;
                Main.editChest       = false;
                Main.npcChatText     = "";
                Main.inFancyUI       = true;
            }
            else
            {
                if (!ReflectionLibraries.Get(interfaceType, null, "modConfigID", out Main.menuMode))
                {
                    LogLibraries.Warn("Could not get Interface.modConfigID");
                    return;
                }
            }

            UIState modConfigListInterfaceObj;

            if (!ReflectionLibraries.Get(interfaceType, null, "modConfigList", out modConfigListInterfaceObj) ||
                modConfigListInterfaceObj == null)
            {
                LogLibraries.Warn("Could not get Interface.modConfigList");
                return;
            }

            Main.InGameUI.SetState(modConfigListInterfaceObj);

            Main.PlaySound(SoundID.MenuTick);
        }
Пример #4
0
 public override void OnClick()
 {
     IngameOptions.Close();
     IngameFancyUI.OpenAchievementsAndGoto(this._achievement);
 }
Пример #5
0
 public override void OnClick()
 {
     IngameOptions.Close();
     AchievementsUI.OpenAndGoto(_achievement);
 }