diff --git a/MudEngine/WinPC_Engine/DAL/DataPaths.cs b/MudEngine/WinPC_Engine/DAL/DataPaths.cs index 18d4ea2..0f1e28c 100644 --- a/MudEngine/WinPC_Engine/DAL/DataPaths.cs +++ b/MudEngine/WinPC_Engine/DAL/DataPaths.cs @@ -21,8 +21,13 @@ namespace MudEngine.DAL public String Environments { get; set; } /// - /// Path to the engines saved objects (Equipment etc). + /// Gets the Path to the Characters save directory /// - public String Objects { get; set; } + public String Characters { get; set; } + + /// + /// Gets the path to the saved players directory. + /// + public String Players { get; set; } } } diff --git a/MudEngine/WinPC_Engine/Game/Characters/StandardCharacter.cs b/MudEngine/WinPC_Engine/Game/Characters/StandardCharacter.cs index d287a31..4ca246a 100644 --- a/MudEngine/WinPC_Engine/Game/Characters/StandardCharacter.cs +++ b/MudEngine/WinPC_Engine/Game/Characters/StandardCharacter.cs @@ -19,7 +19,7 @@ namespace MudEngine.Game.Characters /// /// Standard Character class used by all character based objects /// - public class StandardCharacter : BaseScript, INetworked, ISavable, IUpdatable, IGameComponent + public class StandardCharacter : BaseScript, INetworked, ISavable, IGameComponent { /// /// Gets a reference to the currently active game. @@ -63,6 +63,8 @@ namespace MudEngine.Game.Characters this.Commands = new CommandSystem(CommandSystem.Commands); this.OnConnectEvent += new OnConnectHandler(OnConnect); + this.OnDisconnectEvent += new OnDisconnectHandler(OnDisconnect); + this.OnLoginEvent += new OnLoginHandler(OnLogin); } public StandardCharacter(StandardGame game, String name, String description, Socket connection) @@ -77,24 +79,6 @@ namespace MudEngine.Game.Characters this._InitialMessage = true; //Strips Telnet client garbage text from initial message sent from client. } - public override bool Save(String filename) - { - base.Save(filename, true); - - SaveData.AddSaveData("Immovable", Immovable.ToString()); - SaveData.AddSaveData("Password", Password); - - this.SaveData.Save(filename); - - return true; - } - - - public override void Load(string filename) - { - base.Load(filename); - } - public void Initialize() { //throw new NotImplementedException(); @@ -110,6 +94,23 @@ namespace MudEngine.Game.Characters this.Commands = null; } + public override bool Save(String filename) + { + base.Save(filename, true); + + SaveData.AddSaveData("Immovable", Immovable.ToString()); + SaveData.AddSaveData("Password", Password); + + this.SaveData.Save(filename); + + return true; + } + + public override void Load(string filename) + { + base.Load(filename); + } + internal void ExecuteCommand(string command) { if (this.Enabled) @@ -121,6 +122,28 @@ namespace MudEngine.Game.Characters } } + public void Connect(Socket connection) + { + this._Connection = connection; + + OnConnectEvent(); + } + + public void Disconnect() + { + Console.WriteLine("Disconnecting..."); + + //Purge all of this characters commands. + this.Destroy(); + + //Close our currently open socket. + this._Connection.Close(); + + this.OnDisconnectEvent(); + + Console.WriteLine("Disconnect Complete."); + } + public void SendMessage(String data) { this.SendMessage(data, true); @@ -183,49 +206,6 @@ namespace MudEngine.Game.Characters } } - public void Disconnect() - { - Console.WriteLine("Disconnecting..."); - - //Purge all of this characters commands. - this.Destroy(); - - //Close our currently open socket. - this._Connection.Close(); - //this._LoopThread.Abort(); - //Remove this character from the Connection Manager - //ConnectionManager.RemoveConnection(this, ); - Console.WriteLine("Disconnect Complete."); - } - - public void Connect(Socket connection) - { - this._Connection = connection; - - OnConnectEvent(); - } - - public void Update() - { - try - { - while (this.Game.Enabled) - { - _Writer.Flush(); - //String line = CleanString(GetInput()); - //Console.WriteLine(line); - //ExecuteCommand(line); - } - } - catch - { - } - finally - { - this.Disconnect(); - } - } - String CleanString(String line) { /* @@ -266,7 +246,6 @@ namespace MudEngine.Game.Characters public event OnDisconnectHandler OnDisconnectEvent; public void OnDisconnect() { - } public delegate void OnLoginHandler(); diff --git a/MudEngine/WinPC_Engine/Game/StandardGame.cs b/MudEngine/WinPC_Engine/Game/StandardGame.cs index 5d7bf07..62d74da 100644 --- a/MudEngine/WinPC_Engine/Game/StandardGame.cs +++ b/MudEngine/WinPC_Engine/Game/StandardGame.cs @@ -7,6 +7,7 @@ using System.Text; using MudEngine.Networking; using MudEngine.Core; using MudEngine.Game.Characters; +using MudEngine.DAL; namespace MudEngine.Game { @@ -73,6 +74,11 @@ namespace MudEngine.Game /// public Server Server { get; protected set; } + /// + /// Gets or Sets the paths that content is saved to. + /// + public DataPaths SavePaths { get; set; } + /// /// StandardGame constructor. If no Port number is provided, 4000 is used. /// @@ -99,6 +105,15 @@ namespace MudEngine.Game //Setup our server. this.Server = new Server(this, port); + + //Setup default save paths. + DataPaths paths = new DataPaths(); + paths.Environments = @"\Environment"; + paths.Characters = @"\Characters"; + paths.Players = @"\SavedPlayer"; + paths.Scripts = @"\Scripts"; + + this.SavePaths = paths; } /// diff --git a/MudEngine/WinPC_Engine/GameScripts/Commands/CommandLogin.cs b/MudEngine/WinPC_Engine/GameScripts/Commands/CommandLogin.cs index 4ce41aa..c24c301 100644 --- a/MudEngine/WinPC_Engine/GameScripts/Commands/CommandLogin.cs +++ b/MudEngine/WinPC_Engine/GameScripts/Commands/CommandLogin.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using System.IO; using MudEngine.Core.Interface; using MudEngine.Game; @@ -29,12 +30,46 @@ namespace MudEngine.GameScripts.Commands public void Execute(string command, Game.Characters.StandardCharacter character) { + StandardGame game = character.Game; + character.SendMessage("Please enter character name: "); String name = String.Empty; while (String.IsNullOrEmpty(name)) { - name = character.GetInput(); + character.SendMessage("Enter your character name: ", false); + + String name = String.Empty; + Boolean isFound = false; + + while (String.IsNullOrEmpty(name)) + { + name = character.GetInput(); + + if (String.IsNullOrEmpty(name)) + continue; + + //Look if the file exists. + if (File.Exists(game.SavePaths.Players + @"\" + name)) + isFound = true; + else + { + character.SendMessage("Enter your password: ", false); + + String password = character.GetInput(); + + if (String.IsNullOrEmpty(password)) + { + //Reset the process if no password supplied. + name = String.Empty; + continue; + } + else + { + + } + } + } } } diff --git a/MudEngine/WinPC_Server/Program.cs b/MudEngine/WinPC_Server/Program.cs index e36a04e..e0f0f5a 100644 --- a/MudEngine/WinPC_Server/Program.cs +++ b/MudEngine/WinPC_Server/Program.cs @@ -30,7 +30,7 @@ namespace WinPC_Server game.Description = "This is a very simple game that was created to demonstrate MUD game creation with the Mud Designer Game Engine."; game.HiddenRoomNames = false; game.Multiplayer = true; - game.Server.MOTD = "Welcome to the Sample Game demonstration server!"; + game.Server.MOTD = "Welcome to the Sample Game demonstration server! This is the Servers MOTD!"; game.Version = "1.0"; game.Website = "http://muddesigner.codeplex.com";