示例#1
0
        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;
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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();
        }