示例#1
0
 public static void CreateNewAccountForExtensionAndStart(string username, string pass, ScreenManager sman, GameScreen currentScreen = null, ExtensionsMenuScreen extensionsScreen = null)
 {
     if (SaveFileManager.AddUser(username, pass))
     {
         OS     os = new OS();
         string filePathForLogin = SaveFileManager.GetFilePathForLogin(username, pass);
         if (currentScreen != null)
         {
             currentScreen.ExitScreen();
         }
         MainMenu.resetOS();
         Settings.IsInExtensionMode = true;
         if (!Settings.soundDisabled)
         {
             sman.playAlertSound();
         }
         os.SaveGameUserName    = filePathForLogin;
         os.SaveUserAccountName = username;
         sman.AddScreen((GameScreen)os, new PlayerIndex?(sman.controllingPlayer));
     }
     else if (extensionsScreen != null)
     {
         extensionsScreen.ShowError("Error Creating UserAccount for username :"******"Error auto-loading Extension " + Game1.AutoLoadExtensionPath;
     }
 }
 private void drawDemoModeButtons(bool canRun)
 {
     if (Button.doButton(1, 180, 200, 450, 50, "New Session", buttonColor))
     {
         if (canRun)
         {
             try
             {
                 ExitScreen();
                 resetOS();
                 ScreenManager.playAlertSound();
                 ScreenManager.AddScreen(new OS(), ScreenManager.controllingPlayer);
             }
             catch (Exception ex)
             {
                 Utils.writeToFile("OS Load Error: " + ex + "\n\n" + ex.StackTrace, "crashLog.txt");
             }
         }
     }
     if (Button.doButton(11, 180, 265, 450, 50, "Load Session", canLoad ? buttonColor : Color.Black))
     {
         if (canLoad)
         {
             try
             {
                 if (canRun)
                 {
                     ExitScreen();
                     resetOS();
                     OS.WillLoadSave = true;
                     ScreenManager.AddScreen(new OS(), ScreenManager.controllingPlayer);
                 }
             }
             catch (Exception ex)
             {
                 Utils.writeToFile("OS Load Error: " + ex + "\n\n" + ex.StackTrace, "crashLog.txt");
             }
         }
     }
     if (!Button.doButton(15, 180, 330, 450, 28, "Exit", exitButtonColor))
     {
         return;
     }
     MusicManager.stop();
     Game1.threadsExiting = true;
     Game1.GetSingleton().Exit();
 }
 private void HookUpCreationEvents()
 {
     loginScreen.RequestGoBack += () => State = MainMenuState.Normal;
     loginScreen.StartNewGameForUsernameAndPass += (username, pass) =>
     {
         if (SaveFileManager.AddUser(username, pass))
         {
             var filePathForLogin = SaveFileManager.GetFilePathForLogin(username, pass);
             ExitScreen();
             resetOS();
             if (!Settings.soundDisabled)
             {
                 ScreenManager.playAlertSound();
             }
             try
             {
                 ScreenManager.AddScreen(new OS
                 {
                     SaveGameUserName    = filePathForLogin,
                     SaveUserAccountName = username
                 }, ScreenManager.controllingPlayer);
             }
             catch (Exception ex)
             {
                 UpdateUIForSaveCreationFailed(ex);
             }
         }
         else
         {
             loginScreen.ResetForNewAccount();
             loginScreen.WriteToHistory(" ERROR: Username invalid or already in use.");
         }
     };
     loginScreen.LoadGameForUserFileAndUsername += (userFile, username) =>
     {
         ExitScreen();
         resetOS();
         OS.WillLoadSave = SaveFileManager.StorageMethods[0].FileExists(userFile);
         var os = new OS();
         os.SaveGameUserName    = userFile;
         os.SaveUserAccountName = username;
         try
         {
             ScreenManager.AddScreen(os, ScreenManager.controllingPlayer);
         }
         catch (XmlException ex)
         {
             UpdateUIForSaveCorruption(userFile, ex);
         }
         catch (FormatException ex)
         {
             UpdateUIForSaveCorruption(userFile, ex);
         }
         catch (NullReferenceException ex)
         {
             UpdateUIForSaveCorruption(userFile, ex);
         }
         catch (FileNotFoundException ex)
         {
             UpdateUIForSaveMissing(userFile, ex);
         }
     };
     attractModeScreen.Start += () =>
     {
         try
         {
             ExitScreen();
             resetOS();
             ScreenManager.playAlertSound();
             ScreenManager.AddScreen(new OS(), ScreenManager.controllingPlayer);
         }
         catch (Exception ex)
         {
             Utils.writeToFile("OS Load Error: " + ex + "\n\n" + ex.StackTrace, "crashLog.txt");
         }
     };
 }
        private void drawMainMenuButtons(bool canRun)
        {
            var num1 = 135;
            int num2;

            if (Button.doButton(1, 180, num2 = num1 + 65, 450, 50, "New Session", buttonColor) && canRun)
            {
                State = MainMenuState.NewUser;
                loginScreen.ResetForNewAccount();
            }
            int num3;

            if (
                Button.doButton(1102, 180, num3 = num2 + 65, 450, 28,
                                canLoad
                        ? "Continue with account [" + SaveFileManager.LastLoggedInUser.Username + "]"
                        : "No Accounts", canLoad ? buttonColor : Color.Black) && canLoad)
            {
                loginScreen.LoadGameForUserFileAndUsername(SaveFileManager.LastLoggedInUser.FileUsername,
                                                           SaveFileManager.LastLoggedInUser.Username);
            }
            int num4;

            if (Button.doButton(11, 180, num4 = num3 + 39, 450, 50, "Login", canLoad ? buttonColor : Color.Black))
            {
                if (canLoad)
                {
                    try
                    {
                        State = MainMenuState.Login;
                        loginScreen.ResetForLogin();
                    }
                    catch (Exception ex)
                    {
                        Utils.writeToFile("OS Load Error: " + ex + "\n\n" + ex.StackTrace, "crashLog.txt");
                    }
                }
            }
            int num5;

            if (Button.doButton(3, 180, num5 = num4 + 65, 450, 50, "Settings", buttonColor))
            {
                ScreenManager.AddScreen(new OptionsMenu(), ScreenManager.controllingPlayer);
            }
            int num6;
            var y = num6 = num5 + 65;

            if (Settings.isServerMode)
            {
                if (Button.doButton(4, 180, y, 450, 50, "Start Relay Server", buttonColor))
                {
                    ScreenManager.AddScreen(new ServerScreen(), ScreenManager.controllingPlayer);
                }
                y += 65;
            }
            if (Settings.AllowAdventureMode)
            {
                if (Button.doButton(5, 180, y, 450, 50, "Adventure Session", buttonColor))
                {
                    ExitScreen();
                    resetOS();
                    Settings.IsInAdventureMode = true;
                    if (!Settings.soundDisabled)
                    {
                        ScreenManager.playAlertSound();
                    }
                    ScreenManager.AddScreen(new OS(), ScreenManager.controllingPlayer);
                }
                y += 65;
            }
            if (Button.doButton(15, 180, y, 450, 28, "Exit", exitButtonColor))
            {
                MusicManager.stop();
                Game1.threadsExiting = true;
                Game1.GetSingleton().Exit();
            }
            var num7 = y + 30;

            if (!PlatformAPISettings.RemoteStorageRunning)
            {
                TextItem.doFontLabel(new Vector2(180f, num7), "WARNING: Error connecting to Steam Cloud",
                                     GuiData.smallfont, Color.DarkRed, float.MaxValue, float.MaxValue);
                num7 += 20;
            }
            if (string.IsNullOrWhiteSpace(AccumErrors))
            {
                return;
            }
            TextItem.doFontLabel(new Vector2(180f, num7), AccumErrors, GuiData.smallfont, Color.DarkRed, float.MaxValue,
                                 float.MaxValue);
            var num8 = num7 + 20;
        }
 private void drawTestingMainMenuButtons(bool canRun)
 {
     if (Button.doButton(8801, 634, 200, 225, 23, "New Test Session", buttonColor) && canRun)
     {
         ExitScreen();
         resetOS();
         if (!Settings.soundDisabled)
         {
             ScreenManager.playAlertSound();
         }
         var os = new OS();
         ScreenManager.AddScreen(os, ScreenManager.controllingPlayer);
         os.delayer.RunAllDelayedActions();
         os.threadedSaveExecute();
         ScreenManager.RemoveScreen(os);
         OS.WillLoadSave = true;
         resetOS();
         ScreenManager.AddScreen(new OS(), ScreenManager.controllingPlayer);
     }
     if (Button.doButton(8803, 634, 225, 225, 23, "New Entropy Accelerated Session", buttonColor) && canRun)
     {
         ExitScreen();
         resetOS();
         if (!Settings.soundDisabled)
         {
             ScreenManager.playAlertSound();
         }
         var os1 = new OS();
         os1.SaveGameUserName    = "******";
         os1.SaveUserAccountName = "entropyTest";
         ScreenManager.AddScreen(os1, ScreenManager.controllingPlayer);
         os1.Flags.AddFlag("TutorialComplete");
         os1.delayer.RunAllDelayedActions();
         os1.threadedSaveExecute();
         ScreenManager.RemoveScreen(os1);
         OS.WillLoadSave = true;
         resetOS();
         Settings.initShowsTutorial = false;
         var os2 = new OS();
         ScreenManager.AddScreen(os2, ScreenManager.controllingPlayer);
         MissionFunctions.runCommand(0, "EntropyFastFowardSetup");
         os2.delayer.Post(ActionDelayer.Wait(1.0), () => Game1.GetSingleton().IsMouseVisible = true);
     }
     if (Button.doButton(8806, 634, 250, 225, 23, "Run Test Suite", buttonColor))
     {
         testSuiteResult = TestSuite.TestSaveLoadOnFile(ScreenManager);
     }
     if (Button.doButton(8809, 634, 275, 225, 23, "Export Animation", buttonColor))
     {
         var TitleFill = new Rectangle(0, 0, 300, 100);
         AnimatedSpriteExporter.ExportAnimation("OutNowAnim", "OutNow", TitleFill.Width, TitleFill.Height, 24f,
                                                40f, GuiData.spriteBatch.GraphicsDevice, t => new OS
         {
             highlightColor = new Color(166, byte.MaxValue, 215)
         }.timer += t, (sb, dest) =>
         {
             sb.Draw(Utils.white, dest, new Color(13, 13, 13));
             FlickeringTextEffect.DrawFlickeringText(TitleFill, "OUT NOW", 8f, 0.7f, titleFont, null,
                                                     new Color(216, 216, 216));
         }, 1);
     }
     if (Button.doButton(8812, 634, 300, 225, 23, "New CSEC Accel Session", buttonColor) && canRun)
     {
         ExitScreen();
         resetOS();
         if (!Settings.soundDisabled)
         {
             ScreenManager.playAlertSound();
         }
         var os1 = new OS();
         ScreenManager.AddScreen(os1, ScreenManager.controllingPlayer);
         os1.Flags.AddFlag("TutorialComplete");
         os1.delayer.RunAllDelayedActions();
         os1.threadedSaveExecute();
         ScreenManager.RemoveScreen(os1);
         OS.WillLoadSave = true;
         resetOS();
         Settings.initShowsTutorial = false;
         var os2 = new OS();
         ScreenManager.AddScreen(os2, ScreenManager.controllingPlayer);
         MissionFunctions.runCommand(0, "CSECFastFowardSetup");
         os2.delayer.Post(ActionDelayer.Wait(1.0), () => Game1.GetSingleton().IsMouseVisible = true);
     }
     if (testSuiteResult == null)
     {
         return;
     }
     TextItem.doFontLabel(new Vector2(635f, 325f),
                          Utils.SuperSmartTwimForWidth(testSuiteResult, 600, GuiData.tinyfont), GuiData.tinyfont,
                          testSuiteResult.Length > 250 ? Utils.AddativeRed : Utils.AddativeWhite, float.MaxValue, float.MaxValue);
 }