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";