public void to_room(Room nroom) { if (inRoom != null) { inRoom.char_from_room(this); } inRoom = nroom; nroom.char_to_room(this); Command_Interpreter.Interpret("look", this); }
private static void Main(string[] args) { var greeting = System.IO.File.ReadAllText("./config/greeting.txt"); Client.InitializeColors(); Command_Interpreter.Initialize(); Globals.Initialize(); Globals.BootDB(); Console.WriteLine("Listening..."); Globals.server.Start(); while (true) { if (Globals.server.Pending()) { var connection = new Client(Globals.server.AcceptTcpClient()); connection.Send(greeting); Console.WriteLine("connection accepted."); Globals.clientList.Add(connection); connection.Send("\r\n\r\nWhat name do you wish to be known by? "); connection.State = Client.ConnectionState.ConGetName; } for (var i = Globals.clientList.Count - 1; i > -1; i--) { var client = Globals.clientList[i]; if (!client.AttemptRead()) { Console.WriteLine("Client Disconnected..."); Globals.clientList.RemoveAt(i); client.Close(); } if (!client.IsCommandPending()) { continue; } if (!nanny(client, client.GetCommand(), i)) { return; } } } bool nanny(Client sock, string line, int position) { var command = line; switch (sock.State) { case Client.ConnectionState.ConGetName: sock.set_Character(new Character()); if (sock.get_character().load_Character(command)) { sock.Send("Please enter Password: "******"What password will you use? "); sock.State = Client.ConnectionState.ConGetNewPassword; } break; case Client.ConnectionState.ConGetNewPassword: sock.get_character().set_password(command); sock.Send("Retype Password: "******"Limbo", out toarea); sock.Send("Password Accepted\r\n"); sock.get_character().to_room(toarea.Get_Room(0)); Command_Interpreter.Interpret("look", sock.get_character()); sock.get_character().save_Character(); sock.Send("Welcome, " + sock.get_character().get_name() + "!\r\n"); sock.Send("Enter Command > "); sock.State = Client.ConnectionState.ConPlaying; } else { sock.Send("Passwords do not match. Enter a new Password: "******"Limbo", out toarea); sock.Send("Password Accepted\r\n"); sock.get_character().to_room(toarea.Get_Room(0)); Command_Interpreter.Interpret("look", sock.get_character()); sock.Send("Enter Command > "); sock.State = Client.ConnectionState.ConPlaying; } else { sock.Send("Login Failure\r\n"); Console.WriteLine("Login Failure - " + sock.get_character().get_name()); sock.set_Character(null); sock.Send("Enter Name: "); sock.State = Client.ConnectionState.ConGetName; } break; case Client.ConnectionState.ConPlaying: if (!Command_Interpreter.Interpret(command, sock.get_character())) { sock.Send("Huh?!?\r\n"); } sock.Send("Enter Command > "); sock.State = Client.ConnectionState.ConPlaying; break; default: Console.WriteLine("Invalid connection state!"); sock.State = Client.ConnectionState.ConPlaying; break; } if (Globals.MudDown) { return(false); } return(true); } }