public bool Go() { if (State_Object != null) { DoNotDisturb = true; DND_Override = false; MessageQueue = new List <string>(); State_Object.AddDisconnectHandler(Disconnect); State_Object.AddReceiver(Receive); Currentchar = 0x00; try { Sysop_Identified = false; //Terminal Detection TerminalType = new TermType_Default(); TermDetect td = new TermDetect(this); TerminalType = td.Detect(); LoggingAPI.SysLogEntry(_remoteAddress + ": " + TerminalType.TerminalTypeName() + " terminal was detected"); Write("~s1"); //Welcome Screen SendFileForTermType("Welcome", false); if (TerminalType.C64_Color()) { AnyKey(true, false); Write("~s2"); } else { AnyKey(true, true); } //Login Login li = new Login(this, _dataInterface); CurrentUser = li.LogIn(); if (CurrentUser != null) { SlackLogMessage(CurrentUser.Username + " logged on."); LoggingAPI.SysLogEntry(_remoteAddress + ": " + CurrentUser.Username + "(" + CurrentUser.UserId.ToString() + ")" + " logged in."); int CallLogId = _dataInterface.RecordConnection(CurrentUser.UserId); LastTen lt = new LastTen(this, _dataInterface); lt.ShowLast10(); AnyKey(true, false); Gw = new GraffitiWall(this, _dataInterface); Gw.DisplayWall(); AnyKey(true, false); News ne = new News(this, _dataInterface); ne.DisplayNews(); AnyKey(true, false); Main main = new Main(this, _dataInterface); try { MessageQueueTimer.Enabled = true; Thread.Sleep(100); main.MainPrompt(); MessageQueueTimer.Enabled = false; Thread.Sleep(100); } catch (Exception e) { //Log this? LoggingAPI.Error(e); } _dataInterface.RecordDisconnection(CallLogId); } //Close Out WriteLine("~l1~c1Logging out~c2..."); LoggingAPI.SysLogEntry(_remoteAddress + ": " + CurrentUser.Username + "(" + CurrentUser.UserId.ToString() + ")" + " logged out."); CurrentArea = "Logging out"; //Send end screen SendFileForTermType("Goodbye", true); Sysop_Identified = false; //Thread.Sleep(1000 * 3); CurrentArea = "Disconnected."; SlackLogMessage(CurrentUser.Username + " logged off."); HangUp(); } catch (Exception e) { LoggingAPI.Error(e); } return(true); } else { return(false); } }