private static void DrawMain(DrawMainMenuEvent e) { Rectangle dest = new Rectangle(180, 120, 340, 100); ResetForLogin(); SpriteFont titleFont = (SpriteFont)e.MainMenu.GetType().GetField("titleFont", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(e.MainMenu); Color titleColor = (Color)e.MainMenu.GetType().GetField("titleColor", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(e.MainMenu); Hacknet.Effects.FlickeringTextEffect.DrawLinedFlickeringText(dest, "HACK ON NET", 7f, 0.55f, titleFont, null, titleColor, 2); Hacknet.Gui.TextItem.doFontLabel(new Vector2(520f, 178f), "Hack On Net v0.1", GuiData.smallfont, new Color?(titleColor * 0.5f), 600f, 26f, false); logIn.Draw(); if (Hacknet.Gui.Button.doButton(3, 180, 305, 450, 40, LocaleTerms.Loc("Settings"), Color.LightSkyBlue)) { e.MainMenu.ScreenManager.AddScreen(new OptionsMenu(), new PlayerIndex?(e.MainMenu.ScreenManager.controllingPlayer)); } if (Hacknet.Gui.Button.doButton(15, 180, 360, 450, 28, LocaleTerms.Loc("Back to Main Menu"), Color.Gray)) { preset = RPHandler.State.OGMenu; RPCHandler.PresencePresetSet(preset); currentState = MenuState.OG_MENU; } }
public static void DrawMainMenu(DrawMainMenuEvent e) { Modules.MusicManager.Check(); if (bMenu == null) { bMenu = e.MainMenu; } if (currentState == MenuState.OG_MENU) { preset = RPHandler.State.OGMenu; RPCHandler.PresencePresetSet(preset); openHackOnNet.Draw(); string[] cmdArgs = Environment.GetCommandLineArgs(); if (cmdArgs.Contains("-hackonnet") && cmdArgs.Contains("-username") && cmdArgs.Contains("-password") && !autoLoadLogin) { ResetForLogin(); ChangeState(MenuState.LOGIN); preset = RPHandler.State.MPLogIn; RPCHandler.PresencePresetSet(preset); MainMenu.StartGame(cmdArgs[3], cmdArgs[5]); } else if (cmdArgs.Contains("-hackonnet") && !autoLoadLogin) { ResetForLogin(); preset = RPHandler.State.MPLogIn; RPCHandler.PresencePresetSet(preset); ChangeState(MenuState.LOGIN); } autoLoadLogin = true; return; } e.IsCancelled = true; if (currentState == MenuState.MAIN_MENU) { preset = RPHandler.State.MainMenu; RPCHandler.PresencePresetSet(preset); DrawMain(e); } else if (currentState == MenuState.LOGIN) { preset = RPHandler.State.MPLogIn; RPCHandler.PresencePresetSet(preset); DrawLogin(e); } }
async private static void StartGame(string username, string password) { UserScreen screen = new UserScreen(); NetManager netManager = new NetManager(screen); netManager.Init(); if (loginState == LoginState.UNAVAILABLE) { loginMessage = "The server is unavailable."; loginState = LoginState.MENU; return; } string hashedPassword = Hash(password); netManager.Login(username, hashedPassword); loginMessage = "Logging in..."; loginState = LoginState.LOGGING_IN; for (int i = 0; i < 1000; i++) { await Task.Delay(10); if (loginState != LoginState.LOGGING_IN) { break; } } if (loginState == LoginState.LOGGING_IN) { loginState = LoginState.MENU; loginMessage = "Login Timeout"; } else if (loginState == LoginState.LOGGED) { preset = RPHandler.State.InGame; RPCHandler.PresencePresetSet(preset); loginMessage = ""; currentState = MenuState.LOGIN; screen.netManager = netManager; screen.username = username; GuiData.hot = -1; InPasswordMode = false; Hacknet.Gui.TextBox.MaskingText = false; Hacknet.Gui.TextBox.cursorPosition = 0; bMenu.ScreenManager.AddScreen(screen, new PlayerIndex?(bMenu.ScreenManager.controllingPlayer)); } else if (loginState == LoginState.INVALID) { loginMessage = "Invalid Username or Password."; } else if (loginState == LoginState.UNAVAILABLE) { loginMessage = "The server is unavailable."; } else if (loginState == LoginState.SERVER_REJECTED) { string reason = string.IsNullOrWhiteSpace(serverRejectReason) ? "Server did not provide reason for rejection" : serverRejectReason; loginMessage = "The server rejected the connection: " + reason; serverRejectReason = ""; } loginState = LoginState.MENU; ResetForLogin(); }