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)
{
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.";
}
loginState = LoginState.MENU;
ResetForLogin();
}