MudEngine:
- Converted all Types from C# types to .NET Types (such as bool changed to Boolean, and int changed to Int32). - Zone no longer gets saved from within GameWorld.Save, but rather in Realm.Save() - Room no longer gets saved from within GameWorld.Save(), but rather in Zone.Save(); - Added new SaveWorld command that admins only can execute to force save the world. It's not fully implemented at this time. MudGame: - began work on command execution from within the server while it's running.
This commit is contained in:
parent
9585cede63
commit
a52ccf8da9
36 changed files with 365 additions and 297 deletions
|
@ -9,7 +9,7 @@ namespace MUDCompiler
|
||||||
{
|
{
|
||||||
class Program
|
class Program
|
||||||
{
|
{
|
||||||
static void Main(string[] args)
|
static void Main(String[] args)
|
||||||
{
|
{
|
||||||
Console.WriteLine("===========================");
|
Console.WriteLine("===========================");
|
||||||
Console.WriteLine("MUD Engine Content Compiler");
|
Console.WriteLine("MUD Engine Content Compiler");
|
||||||
|
@ -20,7 +20,7 @@ namespace MUDCompiler
|
||||||
Console.WriteLine("2): Exit Compiler");
|
Console.WriteLine("2): Exit Compiler");
|
||||||
Console.Write("Enter Selection: ");
|
Console.Write("Enter Selection: ");
|
||||||
|
|
||||||
string command = Console.ReadLine();
|
String command = Console.ReadLine();
|
||||||
|
|
||||||
//command error checking.
|
//command error checking.
|
||||||
if (String.IsNullOrEmpty(command))
|
if (String.IsNullOrEmpty(command))
|
||||||
|
|
|
@ -14,10 +14,10 @@ namespace MudEngine.Commands
|
||||||
{
|
{
|
||||||
public class CommandClear : IGameCommand
|
public class CommandClear : IGameCommand
|
||||||
{
|
{
|
||||||
public bool Override { get; set; }
|
public Boolean Override { get; set; }
|
||||||
public string Name { get; set; }
|
public String Name { get; set; }
|
||||||
|
|
||||||
public CommandResults Execute(string command, BaseCharacter player)
|
public CommandResults Execute(String command, BaseCharacter player)
|
||||||
{
|
{
|
||||||
player.FlushConsole();
|
player.FlushConsole();
|
||||||
|
|
||||||
|
|
|
@ -14,22 +14,22 @@ namespace MudEngine.Commands
|
||||||
{
|
{
|
||||||
public class CommandExit : IGameCommand
|
public class CommandExit : IGameCommand
|
||||||
{
|
{
|
||||||
public bool Override { get; set; }
|
public Boolean Override { get; set; }
|
||||||
public string Name { get; set; }
|
public String Name { get; set; }
|
||||||
|
|
||||||
public CommandResults Execute(string command, BaseCharacter player)
|
public CommandResults Execute(String command, BaseCharacter player)
|
||||||
{
|
{
|
||||||
if (player.ActiveGame.IsMultiplayer)
|
if (player.ActiveGame.IsMultiplayer)
|
||||||
{
|
{
|
||||||
//Let other players know that the user walked in.
|
//Let other players know that the user walked in.
|
||||||
for (int i = 0; i != player.ActiveGame.PlayerCollection.Length; i++)
|
for (Int32 i = 0; i != player.ActiveGame.PlayerCollection.Length; i++)
|
||||||
{
|
{
|
||||||
if (player.ActiveGame.PlayerCollection[i].Name == player.Name)
|
if (player.ActiveGame.PlayerCollection[i].Name == player.Name)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
string room = player.ActiveGame.PlayerCollection[i].CurrentRoom.Name;
|
String room = player.ActiveGame.PlayerCollection[i].CurrentRoom.Name;
|
||||||
string realm = player.ActiveGame.PlayerCollection[i].CurrentRoom.Realm;
|
String realm = player.ActiveGame.PlayerCollection[i].CurrentRoom.Realm;
|
||||||
string zone = player.ActiveGame.PlayerCollection[i].CurrentRoom.Zone;
|
String zone = player.ActiveGame.PlayerCollection[i].CurrentRoom.Zone;
|
||||||
|
|
||||||
if ((room == player.CurrentRoom.Name) && (realm == player.CurrentRoom.Realm) && (zone == player.CurrentRoom.Zone))
|
if ((room == player.CurrentRoom.Name) && (realm == player.CurrentRoom.Realm) && (zone == player.CurrentRoom.Zone))
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,11 +9,11 @@ namespace MudEngine.Commands
|
||||||
{
|
{
|
||||||
public class CommandGetTime : MudEngine.GameManagement.IGameCommand
|
public class CommandGetTime : MudEngine.GameManagement.IGameCommand
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public String Name { get; set; }
|
||||||
|
|
||||||
public bool Override { get; set; }
|
public Boolean Override { get; set; }
|
||||||
|
|
||||||
public MudEngine.GameManagement.CommandResults Execute(string command, BaseCharacter player)
|
public MudEngine.GameManagement.CommandResults Execute(String command, BaseCharacter player)
|
||||||
{
|
{
|
||||||
player.Send(player.ActiveGame.WorldTime.GetCurrentWorldTime());
|
player.Send(player.ActiveGame.WorldTime.GetCurrentWorldTime());
|
||||||
|
|
||||||
|
|
|
@ -13,13 +13,13 @@ namespace MudEngine.Commands
|
||||||
{
|
{
|
||||||
public class CommandLoad : IGameCommand
|
public class CommandLoad : IGameCommand
|
||||||
{
|
{
|
||||||
public bool Override { get; set; }
|
public Boolean Override { get; set; }
|
||||||
public string Name { get; set; }
|
public String Name { get; set; }
|
||||||
|
|
||||||
public CommandResults Execute(string command, BaseCharacter player)
|
public CommandResults Execute(String command, BaseCharacter player)
|
||||||
{
|
{
|
||||||
string path = player.ActiveGame.DataPaths.Players;
|
String path = player.ActiveGame.DataPaths.Players;
|
||||||
string filename = Path.Combine(path, player.Filename);
|
String filename = Path.Combine(path, player.Filename);
|
||||||
|
|
||||||
player.Load(filename);
|
player.Load(filename);
|
||||||
|
|
||||||
|
|
|
@ -14,10 +14,10 @@ namespace MudEngine.Commands
|
||||||
{
|
{
|
||||||
public class CommandLogin : IGameCommand
|
public class CommandLogin : IGameCommand
|
||||||
{
|
{
|
||||||
public bool Override { get; set; }
|
public Boolean Override { get; set; }
|
||||||
public string Name { get; set; }
|
public String Name { get; set; }
|
||||||
|
|
||||||
public CommandResults Execute(string command, BaseCharacter player)
|
public CommandResults Execute(String command, BaseCharacter player)
|
||||||
{
|
{
|
||||||
player.Send(player.ActiveGame.GameTitle);
|
player.Send(player.ActiveGame.GameTitle);
|
||||||
player.Send(player.ActiveGame.Version);
|
player.Send(player.ActiveGame.Version);
|
||||||
|
@ -26,15 +26,15 @@ namespace MudEngine.Commands
|
||||||
|
|
||||||
player.Send("Enter Character Name: ", false);
|
player.Send("Enter Character Name: ", false);
|
||||||
|
|
||||||
string input = player.ReadInput();
|
String input = player.ReadInput();
|
||||||
Boolean playerFound = false;
|
Boolean playerFound = false;
|
||||||
string savedFile = "";
|
String savedFile = "";
|
||||||
|
|
||||||
//See if this character already exists.
|
//See if this character already exists.
|
||||||
if (!Directory.Exists(player.ActiveGame.DataPaths.Players))
|
if (!Directory.Exists(player.ActiveGame.DataPaths.Players))
|
||||||
Directory.CreateDirectory(player.ActiveGame.DataPaths.Players);
|
Directory.CreateDirectory(player.ActiveGame.DataPaths.Players);
|
||||||
|
|
||||||
foreach (string filename in Directory.GetFiles(player.ActiveGame.DataPaths.Players))
|
foreach (String filename in Directory.GetFiles(player.ActiveGame.DataPaths.Players))
|
||||||
{
|
{
|
||||||
if (Path.GetFileNameWithoutExtension(filename).ToLower() == input.ToLower())
|
if (Path.GetFileNameWithoutExtension(filename).ToLower() == input.ToLower())
|
||||||
{
|
{
|
||||||
|
@ -48,7 +48,7 @@ namespace MudEngine.Commands
|
||||||
//Next search if there is an existing player already logged in with this name, if so disconnect them.
|
//Next search if there is an existing player already logged in with this name, if so disconnect them.
|
||||||
if (player.ActiveGame.IsMultiplayer)
|
if (player.ActiveGame.IsMultiplayer)
|
||||||
{
|
{
|
||||||
for (int i = 0; i <= player.ActiveGame.PlayerCollection.Length - 1; i++)
|
for (Int32 i = 0; i <= player.ActiveGame.PlayerCollection.Length - 1; i++)
|
||||||
{
|
{
|
||||||
if (player.ActiveGame.PlayerCollection[i].Name.ToLower() == input.ToLower())
|
if (player.ActiveGame.PlayerCollection[i].Name.ToLower() == input.ToLower())
|
||||||
{
|
{
|
||||||
|
@ -76,14 +76,14 @@ namespace MudEngine.Commands
|
||||||
//Let other players know that the user walked in.
|
//Let other players know that the user walked in.
|
||||||
if (player.ActiveGame.IsMultiplayer)
|
if (player.ActiveGame.IsMultiplayer)
|
||||||
{
|
{
|
||||||
for (int i = 0; i != player.ActiveGame.PlayerCollection.Length; i++)
|
for (Int32 i = 0; i != player.ActiveGame.PlayerCollection.Length; i++)
|
||||||
{
|
{
|
||||||
if (player.ActiveGame.PlayerCollection[i].Name == player.Name)
|
if (player.ActiveGame.PlayerCollection[i].Name == player.Name)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
string room = player.ActiveGame.PlayerCollection[i].CurrentRoom.Name;
|
String room = player.ActiveGame.PlayerCollection[i].CurrentRoom.Name;
|
||||||
string realm = player.ActiveGame.PlayerCollection[i].CurrentRoom.Realm;
|
String realm = player.ActiveGame.PlayerCollection[i].CurrentRoom.Realm;
|
||||||
string zone = player.ActiveGame.PlayerCollection[i].CurrentRoom.Zone;
|
String zone = player.ActiveGame.PlayerCollection[i].CurrentRoom.Zone;
|
||||||
|
|
||||||
if ((room == player.CurrentRoom.Name) && (realm == player.CurrentRoom.Realm) && (zone == player.CurrentRoom.Zone))
|
if ((room == player.CurrentRoom.Name) && (realm == player.CurrentRoom.Realm) && (zone == player.CurrentRoom.Zone))
|
||||||
{
|
{
|
||||||
|
|
|
@ -14,10 +14,10 @@ namespace MudEngine.Commands
|
||||||
{
|
{
|
||||||
public class CommandLook : IGameCommand
|
public class CommandLook : IGameCommand
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public String Name { get; set; }
|
||||||
public bool Override { get; set; }
|
public Boolean Override { get; set; }
|
||||||
|
|
||||||
public CommandResults Execute(string command, BaseCharacter player)
|
public CommandResults Execute(String command, BaseCharacter player)
|
||||||
{
|
{
|
||||||
if (player.CurrentRoom == null)
|
if (player.CurrentRoom == null)
|
||||||
{
|
{
|
||||||
|
@ -28,7 +28,7 @@ namespace MudEngine.Commands
|
||||||
player.Send(player.CurrentRoom.Description);
|
player.Send(player.CurrentRoom.Description);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
foreach(string entry in player.CurrentRoom.DetailedDescription)
|
foreach(String entry in player.CurrentRoom.DetailedDescription)
|
||||||
{
|
{
|
||||||
player.Send(entry);
|
player.Send(entry);
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,18 +18,18 @@ namespace MudEngine.Commands
|
||||||
{
|
{
|
||||||
class CommandRestart : IGameCommand
|
class CommandRestart : IGameCommand
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public String Name { get; set; }
|
||||||
public bool Override { get; set; }
|
public Boolean Override { get; set; }
|
||||||
|
|
||||||
public CommandResults Execute(string command, BaseCharacter player)
|
public CommandResults Execute(String command, BaseCharacter player)
|
||||||
{
|
{
|
||||||
if (player.Role == SecurityRoles.Admin)
|
if (player.Role == SecurityRoles.Admin)
|
||||||
{
|
{
|
||||||
string path = player.ActiveGame.DataPaths.Players;
|
String path = player.ActiveGame.DataPaths.Players;
|
||||||
|
|
||||||
for (int i = 0; i < player.ActiveGame.PlayerCollection.Length; i++)
|
for (Int32 i = 0; i < player.ActiveGame.PlayerCollection.Length; i++)
|
||||||
{
|
{
|
||||||
string filename = Path.Combine(path, player.ActiveGame.PlayerCollection[i].Filename);
|
String filename = Path.Combine(path, player.ActiveGame.PlayerCollection[i].Filename);
|
||||||
player.ActiveGame.PlayerCollection[i].Save(filename);
|
player.ActiveGame.PlayerCollection[i].Save(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,10 +13,10 @@ namespace MudEngine.Commands
|
||||||
{
|
{
|
||||||
public class CommandSave : IGameCommand
|
public class CommandSave : IGameCommand
|
||||||
{
|
{
|
||||||
public bool Override { get; set; }
|
public Boolean Override { get; set; }
|
||||||
public string Name { get; set; }
|
public String Name { get; set; }
|
||||||
|
|
||||||
public CommandResults Execute(string command, BaseCharacter player)
|
public CommandResults Execute(String command, BaseCharacter player)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
if (player.ActiveGame.PlayerCollection.Length != 0)
|
if (player.ActiveGame.PlayerCollection.Length != 0)
|
||||||
|
|
30
MudEngine/Commands/CommandSaveWorld.cs
Normal file
30
MudEngine/Commands/CommandSaveWorld.cs
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
using MudEngine.FileSystem;
|
||||||
|
using MudEngine.GameObjects.Characters;
|
||||||
|
using MudEngine.GameManagement;
|
||||||
|
using MudEngine.Commands;
|
||||||
|
using MudEngine.GameObjects.Environment;
|
||||||
|
|
||||||
|
namespace MudEngine.Commands
|
||||||
|
{
|
||||||
|
public class CommandSaveWorld : IGameCommand
|
||||||
|
{
|
||||||
|
public Boolean Override { get; set; }
|
||||||
|
public String Name { get; set; }
|
||||||
|
|
||||||
|
public CommandResults Execute(String command, BaseCharacter player)
|
||||||
|
{
|
||||||
|
if ((player.Role == SecurityRoles.Admin) || (player.Role == SecurityRoles.GM))
|
||||||
|
{
|
||||||
|
player.ActiveGame.Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
return new CommandResults();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -14,13 +14,13 @@ namespace MudEngine.Commands
|
||||||
{
|
{
|
||||||
public class CommandWalk : IGameCommand
|
public class CommandWalk : IGameCommand
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public String Name { get; set; }
|
||||||
public bool Override { get; set; }
|
public Boolean Override { get; set; }
|
||||||
|
|
||||||
public CommandResults Execute(string command, BaseCharacter player)
|
public CommandResults Execute(String command, BaseCharacter player)
|
||||||
{
|
{
|
||||||
string[] words = command.Split(' ');
|
String[] words = command.Split(' ');
|
||||||
List<string> directions = new List<string>();
|
List<String> directions = new List<String>();
|
||||||
|
|
||||||
if (words.Length == 1)
|
if (words.Length == 1)
|
||||||
return new CommandResults("No direction supplied");
|
return new CommandResults("No direction supplied");
|
||||||
|
|
|
@ -33,7 +33,7 @@ namespace MudEngine.FileSystem
|
||||||
/// <param name="filename"></param>
|
/// <param name="filename"></param>
|
||||||
/// <param name="name"></param>
|
/// <param name="name"></param>
|
||||||
/// <param name="value"></param>
|
/// <param name="value"></param>
|
||||||
public static void WriteLine(string filename, string value, string name)
|
public static void WriteLine(String filename, String value, String name)
|
||||||
{
|
{
|
||||||
if (!File.Exists(filename))
|
if (!File.Exists(filename))
|
||||||
{
|
{
|
||||||
|
@ -52,9 +52,9 @@ namespace MudEngine.FileSystem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetData(string filename, string name)
|
public static String GetData(String filename, String name)
|
||||||
{
|
{
|
||||||
foreach (string line in File.ReadAllLines(filename))
|
foreach (String line in File.ReadAllLines(filename))
|
||||||
{
|
{
|
||||||
//Ignore comments
|
//Ignore comments
|
||||||
if (line.StartsWith(";"))
|
if (line.StartsWith(";"))
|
||||||
|
@ -72,11 +72,11 @@ namespace MudEngine.FileSystem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="DataType"></param>
|
/// <param name="DataType"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static string GetDataPath(SaveDataTypes DataType)
|
public static String GetDataPath(SaveDataTypes DataType)
|
||||||
{
|
{
|
||||||
string assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName;
|
String assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName;
|
||||||
string assemblyName = System.IO.Path.GetFileName(assemblyPath);
|
String assemblyName = System.IO.Path.GetFileName(assemblyPath);
|
||||||
string installBase = assemblyPath.Substring(0, assemblyPath.Length - assemblyName.Length);
|
String installBase = assemblyPath.Substring(0, assemblyPath.Length - assemblyName.Length);
|
||||||
|
|
||||||
if (DataType == SaveDataTypes.Root)
|
if (DataType == SaveDataTypes.Root)
|
||||||
return installBase;
|
return installBase;
|
||||||
|
@ -84,20 +84,20 @@ namespace MudEngine.FileSystem
|
||||||
return System.IO.Path.Combine(installBase, DataType.ToString());
|
return System.IO.Path.Combine(installBase, DataType.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetDataPath(string Realm, string Zone)
|
public static String GetDataPath(String Realm, String Zone)
|
||||||
{
|
{
|
||||||
string assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName;
|
String assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName;
|
||||||
string assemblyName = System.IO.Path.GetFileName(assemblyPath);
|
String assemblyName = System.IO.Path.GetFileName(assemblyPath);
|
||||||
string installBase = assemblyPath.Substring(0, assemblyPath.Length - assemblyName.Length);
|
String installBase = assemblyPath.Substring(0, assemblyPath.Length - assemblyName.Length);
|
||||||
string realmsPath = System.IO.Path.Combine(installBase, "Realms");
|
String realmsPath = System.IO.Path.Combine(installBase, "Realms");
|
||||||
string requestRealm = Path.Combine(installBase, Realm);
|
String requestRealm = Path.Combine(installBase, Realm);
|
||||||
string requestedRealmZones = Path.Combine(installBase, "Zones");
|
String requestedRealmZones = Path.Combine(installBase, "Zones");
|
||||||
string requestedZone = Path.Combine(installBase, Zone);
|
String requestedZone = Path.Combine(installBase, Zone);
|
||||||
|
|
||||||
return requestedZone;
|
return requestedZone;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetDataPath(string Realm, string Zone, string Room)
|
public static String GetDataPath(String Realm, String Zone, String Room)
|
||||||
{
|
{
|
||||||
return System.IO.Path.Combine(GetDataPath(Realm, Zone), Room);
|
return System.IO.Path.Combine(GetDataPath(Realm, Zone), Room);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ namespace MudEngine.FileSystem
|
||||||
{
|
{
|
||||||
public struct SaveDataPaths
|
public struct SaveDataPaths
|
||||||
{
|
{
|
||||||
public string Players
|
public String Players
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
@ -19,7 +19,7 @@ namespace MudEngine.FileSystem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Environment
|
public String Environment
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
@ -30,10 +30,10 @@ namespace MudEngine.FileSystem
|
||||||
_Environment = value;
|
_Environment = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private string _Players;
|
private String _Players;
|
||||||
private string _Environment;
|
private String _Environment;
|
||||||
|
|
||||||
public SaveDataPaths(string environment, string players)
|
public SaveDataPaths(String environment, String players)
|
||||||
{
|
{
|
||||||
_Players = players;
|
_Players = players;
|
||||||
_Environment = environment;
|
_Environment = environment;
|
||||||
|
|
|
@ -10,7 +10,7 @@ namespace MudEngine.FileSystem
|
||||||
{
|
{
|
||||||
internal class XmlSerialization
|
internal class XmlSerialization
|
||||||
{
|
{
|
||||||
internal static void Save(string Filename, object o)
|
internal static void Save(String Filename, object o)
|
||||||
{
|
{
|
||||||
Stream stream = File.Create(Filename);
|
Stream stream = File.Create(Filename);
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ namespace MudEngine.FileSystem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="Filename">The Xml document to deserialize.</param>
|
/// <param name="Filename">The Xml document to deserialize.</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
internal static object Load(string Filename, object o)
|
internal static object Load(String Filename, object o)
|
||||||
{
|
{
|
||||||
Stream stream = File.OpenRead(Filename);
|
Stream stream = File.OpenRead(Filename);
|
||||||
|
|
||||||
|
|
|
@ -19,9 +19,9 @@ namespace MudEngine.GameManagement
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets a Dictionary list of available commands to use.
|
/// Gets or Sets a Dictionary list of available commands to use.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Dictionary<string, IGameCommand> CommandCollection { get; set; }
|
public static Dictionary<String, IGameCommand> CommandCollection { get; set; }
|
||||||
|
|
||||||
internal Dictionary<string, IGameCommand> __Commands { get; set; }
|
internal Dictionary<String, IGameCommand> __Commands { get; set; }
|
||||||
|
|
||||||
public CommandEngine()
|
public CommandEngine()
|
||||||
{
|
{
|
||||||
|
@ -31,11 +31,11 @@ namespace MudEngine.GameManagement
|
||||||
//_Commands = CommandEngine.CommandCollection;
|
//_Commands = CommandEngine.CommandCollection;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<string> GetCommands()
|
public static List<String> GetCommands()
|
||||||
{
|
{
|
||||||
List<string> temp = new List<string>();
|
List<String> temp = new List<String>();
|
||||||
|
|
||||||
foreach (string name in CommandEngine.CommandCollection.Keys)
|
foreach (String name in CommandEngine.CommandCollection.Keys)
|
||||||
{
|
{
|
||||||
temp.Add(name);
|
temp.Add(name);
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ namespace MudEngine.GameManagement
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IGameCommand GetCommand(string command)
|
public static IGameCommand GetCommand(String command)
|
||||||
{
|
{
|
||||||
if (IsValidCommand(command))
|
if (IsValidCommand(command))
|
||||||
{
|
{
|
||||||
|
@ -57,7 +57,7 @@ namespace MudEngine.GameManagement
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsValidCommand(string Name)
|
public static Boolean IsValidCommand(String Name)
|
||||||
{
|
{
|
||||||
if (CommandCollection.ContainsKey(Name.ToLower()))
|
if (CommandCollection.ContainsKey(Name.ToLower()))
|
||||||
return true;
|
return true;
|
||||||
|
@ -70,13 +70,13 @@ namespace MudEngine.GameManagement
|
||||||
/// <param name="Name"></param>
|
/// <param name="Name"></param>
|
||||||
/// <param name="Parameter"></param>
|
/// <param name="Parameter"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public CommandResults ExecuteCommand(string command, BaseCharacter player)
|
public CommandResults ExecuteCommand(String command, BaseCharacter player)
|
||||||
{
|
{
|
||||||
string commandKey = command.Insert(0, "Command");
|
String commandKey = command.Insert(0, "Command");
|
||||||
if (Game.IsDebug)
|
if (Game.IsDebug)
|
||||||
Log.Write("Executing command: " + command);
|
Log.Write("Executing command: " + command);
|
||||||
|
|
||||||
foreach (string key in CommandEngine.CommandCollection.Keys)
|
foreach (String key in CommandEngine.CommandCollection.Keys)
|
||||||
{
|
{
|
||||||
if (commandKey.ToLower().Contains(key.ToLower()))
|
if (commandKey.ToLower().Contains(key.ToLower()))
|
||||||
{
|
{
|
||||||
|
@ -106,7 +106,7 @@ namespace MudEngine.GameManagement
|
||||||
LoadCommandLibrary(Assembly.GetExecutingAssembly());
|
LoadCommandLibrary(Assembly.GetExecutingAssembly());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void LoadCommandLibrary(string libraryFilename)
|
public static void LoadCommandLibrary(String libraryFilename)
|
||||||
{
|
{
|
||||||
if (System.IO.File.Exists(libraryFilename))
|
if (System.IO.File.Exists(libraryFilename))
|
||||||
{
|
{
|
||||||
|
@ -126,7 +126,7 @@ namespace MudEngine.GameManagement
|
||||||
LoadCommandLibrary(commandLibrary, false);
|
LoadCommandLibrary(commandLibrary, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void LoadCommandLibrary(Assembly commandLibrary, bool purgeOldCommands)
|
public static void LoadCommandLibrary(Assembly commandLibrary, Boolean purgeOldCommands)
|
||||||
{
|
{
|
||||||
//no assembly passed for whatever reason, don't attempt to enumerate through it.
|
//no assembly passed for whatever reason, don't attempt to enumerate through it.
|
||||||
if (commandLibrary == null)
|
if (commandLibrary == null)
|
||||||
|
@ -170,7 +170,7 @@ namespace MudEngine.GameManagement
|
||||||
|
|
||||||
public static void ClearCommands()
|
public static void ClearCommands()
|
||||||
{
|
{
|
||||||
CommandCollection = new Dictionary<string, IGameCommand>();
|
CommandCollection = new Dictionary<String, IGameCommand>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ namespace MudEngine.GameManagement
|
||||||
this.Result = Result;
|
this.Result = Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommandResults(string message)
|
public CommandResults(String message)
|
||||||
{
|
{
|
||||||
this.Result = new object[] { message };
|
this.Result = new object[] { message };
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ using MudEngine.GameObjects;
|
||||||
using MudEngine.GameObjects.Characters;
|
using MudEngine.GameObjects.Characters;
|
||||||
using MudEngine.GameObjects.Environment;
|
using MudEngine.GameObjects.Environment;
|
||||||
using MudEngine.Scripting;
|
using MudEngine.Scripting;
|
||||||
|
using MudEngine.Networking;
|
||||||
|
|
||||||
namespace MudEngine.GameManagement
|
namespace MudEngine.GameManagement
|
||||||
{
|
{
|
||||||
|
@ -33,18 +34,18 @@ namespace MudEngine.GameManagement
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets if this game is running in debug mode. Additional information is sent to the log if enabled.
|
/// Gets or Sets if this game is running in debug mode. Additional information is sent to the log if enabled.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static bool IsDebug { get; set; }
|
public static Boolean IsDebug { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets if the game will run with a server or not.
|
/// Gets or Sets if the game will run with a server or not.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsMultiplayer { get; set; }
|
public Boolean IsMultiplayer { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets if this game is currently running.
|
/// Gets or Sets if this game is currently running.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
public bool IsRunning { get; internal set; }
|
public Boolean IsRunning { get; internal set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets the paths to various project related objects.
|
/// Gets or Sets the paths to various project related objects.
|
||||||
|
@ -60,14 +61,14 @@ namespace MudEngine.GameManagement
|
||||||
/// Gets or Sets the path to the current project
|
/// Gets or Sets the path to the current project
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
public string ProjectPath { get; set; }
|
public String ProjectPath { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets if all objects will be laoded during server startup. Enabling this results in a slower server start time, but faster object access.
|
/// Gets or Sets if all objects will be laoded during server startup. Enabling this results in a slower server start time, but faster object access.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Category("Project Settings")]
|
[Category("Project Settings")]
|
||||||
[Description("If enabled, all objects will be loaded during server startup resulting in a slower server start time, but faster load time during gameplay")]
|
[Description("If enabled, all objects will be loaded during server startup resulting in a slower server start time, but faster load time during gameplay")]
|
||||||
public bool PreCacheObjects { get; set; }
|
public Boolean PreCacheObjects { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a copy of all identifiers being used in the game.
|
/// Gets a copy of all identifiers being used in the game.
|
||||||
|
@ -81,25 +82,25 @@ namespace MudEngine.GameManagement
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets the name of the company
|
/// Gets or Sets the name of the company
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string CompanyName { get; set; }
|
public String CompanyName { get; set; }
|
||||||
|
|
||||||
[Category("Company Settings")]
|
[Category("Company Settings")]
|
||||||
[Description("The website URL that a player can visit to view additional information related to the game")]
|
[Description("The website URL that a player can visit to view additional information related to the game")]
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets the companies website for this project
|
/// Gets or Sets the companies website for this project
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Website { get; set; }
|
public String Website { get; set; }
|
||||||
|
|
||||||
[Category("Project Settings")]
|
[Category("Project Settings")]
|
||||||
[Description("The name of the game displayed to the users, and title bar of the runtime.")]
|
[Description("The name of the game displayed to the users, and title bar of the runtime.")]
|
||||||
public string GameTitle { get; set; }
|
public String GameTitle { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets the current working version of the game.
|
/// Gets or Sets the current working version of the game.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Category("Project Settings")]
|
[Category("Project Settings")]
|
||||||
[Description("The current working version of the game.")]
|
[Description("The current working version of the game.")]
|
||||||
public string Version { get; set; }
|
public String Version { get; set; }
|
||||||
|
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
public List<Currency> CurrencyList { get; set; }
|
public List<Currency> CurrencyList { get; set; }
|
||||||
|
@ -115,7 +116,7 @@ namespace MudEngine.GameManagement
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The Story that is displayed on initial player entry into the game
|
/// The Story that is displayed on initial player entry into the game
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Story { get; set; }
|
public String Story { get; set; }
|
||||||
|
|
||||||
[Category("Project Settings")]
|
[Category("Project Settings")]
|
||||||
[Description("Enable or Disable Auto-saving of players when the player travels")]
|
[Description("Enable or Disable Auto-saving of players when the player travels")]
|
||||||
|
@ -123,7 +124,7 @@ namespace MudEngine.GameManagement
|
||||||
/// Gets or Sets if the Game world is automatically saved at a specified interval.
|
/// Gets or Sets if the Game world is automatically saved at a specified interval.
|
||||||
/// Players will be saved every-time they change location.
|
/// Players will be saved every-time they change location.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool AutoSave { get; set; }
|
public Boolean AutoSave { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets the interval in which the Game will automatically save every game object.
|
/// Gets or Sets the interval in which the Game will automatically save every game object.
|
||||||
|
@ -135,17 +136,17 @@ namespace MudEngine.GameManagement
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets if room names are hidden during console output.
|
/// Gets or Sets if room names are hidden during console output.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HideRoomNames { get; set; }
|
public Boolean HideRoomNames { get; set; }
|
||||||
|
|
||||||
[Category("Game Currency")]
|
[Category("Game Currency")]
|
||||||
[DefaultValue(1)]
|
[DefaultValue(1)]
|
||||||
[Description("Sets the amount that the base currency is valued at.")]
|
[Description("Sets the amount that the base currency is valued at.")]
|
||||||
public uint BaseCurrencyAmount { get; set; }
|
public Int32 BaseCurrencyAmount { get; set; }
|
||||||
|
|
||||||
|
|
||||||
[Category("Game Currency")]
|
[Category("Game Currency")]
|
||||||
[DefaultValue("Copper")]
|
[DefaultValue("Copper")]
|
||||||
public string BaseCurrencyName { get; set; }
|
public String BaseCurrencyName { get; set; }
|
||||||
|
|
||||||
public GameTime WorldTime { get; set; }
|
public GameTime WorldTime { get; set; }
|
||||||
|
|
||||||
|
@ -162,7 +163,7 @@ namespace MudEngine.GameManagement
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the current running Server object.
|
/// Gets the current running Server object.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public MudEngine.Networking.Server Server { get; internal set; }
|
public Server Server { get; internal set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets the protocol used by the server.
|
/// Gets or Sets the protocol used by the server.
|
||||||
|
@ -172,12 +173,12 @@ namespace MudEngine.GameManagement
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets the port that the server will run on
|
/// Gets or Sets the port that the server will run on
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int ServerPort { get; set; }
|
public Int32 ServerPort { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets the maximum number of Players permitted to run on this Games server.
|
/// Gets or Sets the maximum number of Players permitted to run on this Games server.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int MaximumPlayers { get; set; }
|
public Int32 MaximumPlayers { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -212,7 +213,7 @@ namespace MudEngine.GameManagement
|
||||||
//Setup the player arrays
|
//Setup the player arrays
|
||||||
//used to be in Start
|
//used to be in Start
|
||||||
PlayerCollection = new BaseCharacter[MaximumPlayers];
|
PlayerCollection = new BaseCharacter[MaximumPlayers];
|
||||||
for (int i = 0; i < MaximumPlayers; i++)
|
for (Int32 i = 0; i < MaximumPlayers; i++)
|
||||||
PlayerCollection[i] = new BaseCharacter(this);
|
PlayerCollection[i] = new BaseCharacter(this);
|
||||||
|
|
||||||
GameTime.Time t = new GameTime.Time();
|
GameTime.Time t = new GameTime.Time();
|
||||||
|
@ -240,7 +241,7 @@ namespace MudEngine.GameManagement
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Starts the game and runs the server if IsMultiplayer is true
|
/// Starts the game and runs the server if IsMultiplayer is true
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual bool Start()
|
public virtual Boolean Start()
|
||||||
{
|
{
|
||||||
Log.Write("Game Initializing...");
|
Log.Write("Game Initializing...");
|
||||||
if (!Directory.Exists(DataPaths.Players))
|
if (!Directory.Exists(DataPaths.Players))
|
||||||
|
@ -263,7 +264,7 @@ namespace MudEngine.GameManagement
|
||||||
|
|
||||||
if (IsDebug)
|
if (IsDebug)
|
||||||
{
|
{
|
||||||
foreach (string command in CommandEngine.CommandCollection.Keys)
|
foreach (String command in CommandEngine.CommandCollection.Keys)
|
||||||
Log.Write("Command Loaded: " + command);
|
Log.Write("Command Loaded: " + command);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -314,7 +315,7 @@ namespace MudEngine.GameManagement
|
||||||
DateTime serverTime = new DateTime();
|
DateTime serverTime = new DateTime();
|
||||||
DateTime systemTime = DateTime.Now;
|
DateTime systemTime = DateTime.Now;
|
||||||
|
|
||||||
int lastSaveGap = 0;
|
Int32 lastSaveGap = 0;
|
||||||
|
|
||||||
WorldTime.Update();
|
WorldTime.Update();
|
||||||
|
|
||||||
|
@ -349,7 +350,7 @@ namespace MudEngine.GameManagement
|
||||||
Log.Write("Saving Game world....");
|
Log.Write("Saving Game world....");
|
||||||
|
|
||||||
Log.Write("Saving Game Players...");
|
Log.Write("Saving Game Players...");
|
||||||
for (int i = 0; i <= PlayerCollection.Length - 1; i++)
|
for (Int32 i = 0; i <= PlayerCollection.Length - 1; i++)
|
||||||
{
|
{
|
||||||
if (PlayerCollection[i].Name == "New BaseCharacter")
|
if (PlayerCollection[i].Name == "New BaseCharacter")
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -9,12 +9,12 @@ namespace MudEngine.GameManagement
|
||||||
{
|
{
|
||||||
public struct Time
|
public struct Time
|
||||||
{
|
{
|
||||||
public int Year { get; set; }
|
public Int32 Year { get; set; }
|
||||||
public int Month { get; set; }
|
public Int32 Month { get; set; }
|
||||||
public int Day { get; set; }
|
public Int32 Day { get; set; }
|
||||||
public int Hour { get; set; }
|
public Int32 Hour { get; set; }
|
||||||
public int Minute { get; set; }
|
public Int32 Minute { get; set; }
|
||||||
public int Second { get; set; }
|
public Int32 Second { get; set; }
|
||||||
private GameTime gameTime;
|
private GameTime gameTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,37 +45,37 @@ namespace MudEngine.GameManagement
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets how many Hours it takes to make a full day in the World
|
/// Gets or Sets how many Hours it takes to make a full day in the World
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int HoursPerDay { get; set; }
|
public Int32 HoursPerDay { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets how many minutes it takes to make a full Hour
|
/// Gets or Sets how many minutes it takes to make a full Hour
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int MinutesPerHour { get; set; }
|
public Int32 MinutesPerHour { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets how many seconds it takes to make a full minute
|
/// Gets or Sets how many seconds it takes to make a full minute
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int SecondsPerMinute { get; set; }
|
public Int32 SecondsPerMinute { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets how many Days it takes to make a full month in the world
|
/// Gets or Sets how many Days it takes to make a full month in the world
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int DaysPerMonth { get; set; }
|
public Int32 DaysPerMonth { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets how many Months it takes to make a full Year in the world
|
/// Gets or Sets how many Months it takes to make a full Year in the world
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int MonthsPerYear { get; set; }
|
public Int32 MonthsPerYear { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets the name of each Day in a Week.
|
/// Gets or Sets the name of each Day in a Week.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<string> DayNames { get; set; }
|
public List<String> DayNames { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets the name of each Month in a Year.
|
/// Gets or Sets the name of each Month in a Year.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<string> MonthNames { get; set; }
|
public List<String> MonthNames { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets what time of day the world is currently in.
|
/// Gets or Sets what time of day the world is currently in.
|
||||||
|
@ -85,12 +85,12 @@ namespace MudEngine.GameManagement
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets what time of day that it begins to transition to night.
|
/// Gets or Sets what time of day that it begins to transition to night.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int DawnTime { get; set; }
|
public Int32 DawnTime { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// /Gets or Sets what time of day that it begins to transition into day time.
|
/// /Gets or Sets what time of day that it begins to transition into day time.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int SunriseTime { get; set; }
|
public Int32 SunriseTime { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets the initial Time that the world starts in.
|
/// Gets or Sets the initial Time that the world starts in.
|
||||||
|
@ -103,8 +103,8 @@ namespace MudEngine.GameManagement
|
||||||
|
|
||||||
ServerStartTime = DateTime.Now;
|
ServerStartTime = DateTime.Now;
|
||||||
|
|
||||||
DayNames = new List<string>();
|
DayNames = new List<String>();
|
||||||
MonthNames = new List<string>();
|
MonthNames = new List<String>();
|
||||||
|
|
||||||
DayNames.Add("Monday");
|
DayNames.Add("Monday");
|
||||||
DayNames.Add("Tuesday");
|
DayNames.Add("Tuesday");
|
||||||
|
@ -240,7 +240,7 @@ namespace MudEngine.GameManagement
|
||||||
CurrentWorldTime = t;
|
CurrentWorldTime = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetCurrentWorldTime()
|
public String GetCurrentWorldTime()
|
||||||
{
|
{
|
||||||
if (DayNames.Count < CurrentWorldTime.Day)
|
if (DayNames.Count < CurrentWorldTime.Day)
|
||||||
{
|
{
|
||||||
|
@ -251,8 +251,8 @@ namespace MudEngine.GameManagement
|
||||||
return "Not enough Month names specified to match up with MonthsPerYear property.";
|
return "Not enough Month names specified to match up with MonthsPerYear property.";
|
||||||
}
|
}
|
||||||
|
|
||||||
string day = DayNames[CurrentWorldTime.Day - 1];
|
String day = DayNames[CurrentWorldTime.Day - 1];
|
||||||
string month = MonthNames[CurrentWorldTime.Month - 1];
|
String month = MonthNames[CurrentWorldTime.Month - 1];
|
||||||
|
|
||||||
return day + ", " + month + " " + CurrentWorldTime.Day + ", " + CurrentWorldTime.Year + ": " + CurrentWorldTime.Hour + ":" + CurrentWorldTime.Minute + ":" + CurrentWorldTime.Second;
|
return day + ", " + month + " " + CurrentWorldTime.Day + ", " + CurrentWorldTime.Year + ": " + CurrentWorldTime.Hour + ":" + CurrentWorldTime.Minute + ":" + CurrentWorldTime.Second;
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,36 +90,11 @@ namespace MudEngine.GameManagement
|
||||||
public void Save()
|
public void Save()
|
||||||
{
|
{
|
||||||
//Save all of the Environments
|
//Save all of the Environments
|
||||||
for (int x = 0; x <= Realms.Count - 1; x++)
|
for (Int32 x = 0; x <= Realms.Count - 1; x++)
|
||||||
{
|
{
|
||||||
string realmFile = Path.Combine(_Game.DataPaths.Environment, Realms[x].Filename);
|
Realms[x].Save(_Game.DataPaths.Environment);
|
||||||
|
|
||||||
//Save the Realm
|
|
||||||
Realms[x].Save(realmFile);
|
|
||||||
|
|
||||||
//Loop through each Zone in the Realm and save it.
|
|
||||||
for (int y = 0; y <= Realms[x].ZoneCollection.Count - 1; y++)
|
|
||||||
{
|
|
||||||
string zonePath = Path.Combine(_Game.DataPaths.Environment, Path.GetFileNameWithoutExtension(Realms[x].Filename), Path.GetFileNameWithoutExtension(Realms[x].ZoneCollection[y].Filename));
|
|
||||||
|
|
||||||
if (!Directory.Exists(zonePath))
|
|
||||||
Directory.CreateDirectory(zonePath);
|
|
||||||
|
|
||||||
//Save the Zone.
|
|
||||||
Realms[x].ZoneCollection[y].Save(Path.Combine(zonePath, Realms[x].ZoneCollection[y].Filename));
|
|
||||||
|
|
||||||
for (int z = 0; z <= Realms[x].ZoneCollection[y].RoomCollection.Count - 1; z++)
|
|
||||||
{
|
|
||||||
if (!Directory.Exists(Path.Combine(zonePath, "Rooms")))
|
|
||||||
Directory.CreateDirectory(Path.Combine(zonePath, "Rooms"));
|
|
||||||
|
|
||||||
string roomPath = Path.Combine(zonePath, "Rooms");
|
|
||||||
|
|
||||||
Realms[x].ZoneCollection[y].RoomCollection[z].Save(Path.Combine(roomPath, Realms[x].ZoneCollection[y].RoomCollection[z].Filename));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} //Complete Environment saving.
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a Realm to the Games current list of Realms.
|
/// Adds a Realm to the Games current list of Realms.
|
||||||
|
@ -156,7 +131,7 @@ namespace MudEngine.GameManagement
|
||||||
/// <param name="objectType">Determins the Type of object to perform the search for. Using Standard will search for objects that inherit from BaseObject, but none of BaseObjects child Types.</param>
|
/// <param name="objectType">Determins the Type of object to perform the search for. Using Standard will search for objects that inherit from BaseObject, but none of BaseObjects child Types.</param>
|
||||||
/// <param name="filename"></param>
|
/// <param name="filename"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public BaseObject GetObject(ObjectTypes objectType, string filename)
|
public BaseObject GetObject(ObjectTypes objectType, String filename)
|
||||||
{
|
{
|
||||||
BaseObject obj = new BaseObject(_Game);
|
BaseObject obj = new BaseObject(_Game);
|
||||||
|
|
||||||
|
@ -190,7 +165,7 @@ namespace MudEngine.GameManagement
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filename"></param>
|
/// <param name="filename"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private Realm GetRealm(string filename)
|
private Realm GetRealm(String filename)
|
||||||
{
|
{
|
||||||
foreach (Realm r in Realms)
|
foreach (Realm r in Realms)
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,10 +15,10 @@ namespace MudEngine.GameManagement
|
||||||
public interface IGameCommand
|
public interface IGameCommand
|
||||||
{
|
{
|
||||||
//Name of the command
|
//Name of the command
|
||||||
string Name { get; set; }
|
String Name { get; set; }
|
||||||
//Used to override commands with the same name
|
//Used to override commands with the same name
|
||||||
bool Override { get; set; }
|
Boolean Override { get; set; }
|
||||||
//Executes the command.
|
//Executes the command.
|
||||||
CommandResults Execute(string command, BaseCharacter player);
|
CommandResults Execute(String command, BaseCharacter player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,12 +10,12 @@ namespace MudEngine.GameManagement
|
||||||
{
|
{
|
||||||
public static class Log
|
public static class Log
|
||||||
{
|
{
|
||||||
static List<string> cachedMessages = new List<string>();
|
static List<String> cachedMessages = new List<String>();
|
||||||
public static Boolean IsVerbose;
|
public static Boolean IsVerbose;
|
||||||
|
|
||||||
public static void Write(string message)
|
public static void Write(String message)
|
||||||
{
|
{
|
||||||
string filename = Path.Combine(FileManager.GetDataPath(SaveDataTypes.Root), "Log.txt");
|
String filename = Path.Combine(FileManager.GetDataPath(SaveDataTypes.Root), "Log.txt");
|
||||||
StreamWriter sw;
|
StreamWriter sw;
|
||||||
|
|
||||||
if (File.Exists(filename))
|
if (File.Exists(filename))
|
||||||
|
@ -30,12 +30,11 @@ namespace MudEngine.GameManagement
|
||||||
cachedMessages.Add(message);
|
cachedMessages.Add(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetMessages()
|
public static String GetMessages()
|
||||||
{
|
{
|
||||||
string messages = "";
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
foreach (string message in cachedMessages)
|
foreach (String message in cachedMessages)
|
||||||
{
|
{
|
||||||
sb.AppendLine(message);
|
sb.AppendLine(message);
|
||||||
}
|
}
|
||||||
|
@ -48,7 +47,7 @@ namespace MudEngine.GameManagement
|
||||||
|
|
||||||
public static void FlushMessages()
|
public static void FlushMessages()
|
||||||
{
|
{
|
||||||
cachedMessages = new List<string>();
|
cachedMessages = new List<String>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ namespace MudEngine.GameObjects
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets the size of the bag.
|
/// Gets or Sets the size of the bag.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int Size
|
public Int32 Size
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
|
@ -32,7 +32,7 @@ namespace MudEngine.GameObjects
|
||||||
Items.Add(item);
|
Items.Add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetSlotsRemaining()
|
public Int32 GetSlotsRemaining()
|
||||||
{
|
{
|
||||||
return Size - Items.Count;
|
return Size - Items.Count;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ namespace MudEngine.GameObjects
|
||||||
[Description("The Display Name assigned to this object.")]
|
[Description("The Display Name assigned to this object.")]
|
||||||
//Required to refresh Filename property in the editors propertygrid
|
//Required to refresh Filename property in the editors propertygrid
|
||||||
[RefreshProperties(RefreshProperties.All)]
|
[RefreshProperties(RefreshProperties.All)]
|
||||||
public string Name
|
public String Name
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
@ -34,21 +34,21 @@ namespace MudEngine.GameObjects
|
||||||
Filename = value + "." + this.GetType().Name;
|
Filename = value + "." + this.GetType().Name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private string _Name;
|
private String _Name;
|
||||||
|
|
||||||
[Category("Object Setup")]
|
[Category("Object Setup")]
|
||||||
[Description("A brief description of this object. The description is displayed to users when they use a command for investigating an object")]
|
[Description("A brief description of this object. The description is displayed to users when they use a command for investigating an object")]
|
||||||
public string Description { get; set; }
|
public String Description { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A detailed description that treats each entry as a seperete line when outputted to the player
|
/// A detailed description that treats each entry as a seperete line when outputted to the player
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<string> DetailedDescription { get; set; }
|
public List<String> DetailedDescription { get; set; }
|
||||||
|
|
||||||
[Category("Object Setup")]
|
[Category("Object Setup")]
|
||||||
[ReadOnly(true)]
|
[ReadOnly(true)]
|
||||||
[Description("The filename of the current object. This is assigned by the engine and not editable.")]
|
[Description("The filename of the current object. This is assigned by the engine and not editable.")]
|
||||||
public string Filename
|
public String Filename
|
||||||
{
|
{
|
||||||
//Returns the name of the object + the objects Type as it's extension.
|
//Returns the name of the object + the objects Type as it's extension.
|
||||||
//Filenames are generated by the class itself, users can not assign it.
|
//Filenames are generated by the class itself, users can not assign it.
|
||||||
|
@ -59,17 +59,17 @@ namespace MudEngine.GameObjects
|
||||||
[Category("Environment Information")]
|
[Category("Environment Information")]
|
||||||
[Description("If a user asks to use his/her senses to investigate an area, this is one of the results that will be displayed. Senses can be used to assist blind characters.")]
|
[Description("If a user asks to use his/her senses to investigate an area, this is one of the results that will be displayed. Senses can be used to assist blind characters.")]
|
||||||
[DefaultValue("You don't smell anything unsual.")]
|
[DefaultValue("You don't smell anything unsual.")]
|
||||||
public string Smell { get; set; }
|
public String Smell { get; set; }
|
||||||
|
|
||||||
[Category("Environment Information")]
|
[Category("Environment Information")]
|
||||||
[Description("If a user asks to use his/her senses to investigate an area, this is one of the results that will be displayed. Senses can be used to assist blind characters.")]
|
[Description("If a user asks to use his/her senses to investigate an area, this is one of the results that will be displayed. Senses can be used to assist blind characters.")]
|
||||||
[DefaultValue("You hear nothing of interest.")]
|
[DefaultValue("You hear nothing of interest.")]
|
||||||
public string Listen { get; set; }
|
public String Listen { get; set; }
|
||||||
|
|
||||||
[Category("Environment Information")]
|
[Category("Environment Information")]
|
||||||
[Description("If a user asks to use his/her senses to investigate an area, this is one of the results that will be displayed. Senses can be used to assist blind characters.")]
|
[Description("If a user asks to use his/her senses to investigate an area, this is one of the results that will be displayed. Senses can be used to assist blind characters.")]
|
||||||
[DefaultValue("You feel nothing.")]
|
[DefaultValue("You feel nothing.")]
|
||||||
public string Feel { get; set; }
|
public String Feel { get; set; }
|
||||||
|
|
||||||
public Game ActiveGame { get; set; }
|
public Game ActiveGame { get; set; }
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ namespace MudEngine.GameObjects
|
||||||
{
|
{
|
||||||
Name = "New " + this.GetType().Name;
|
Name = "New " + this.GetType().Name;
|
||||||
ActiveGame = game;
|
ActiveGame = game;
|
||||||
DetailedDescription = new List<string>();
|
DetailedDescription = new List<String>();
|
||||||
|
|
||||||
this.Feel = "You feel nothing.";
|
this.Feel = "You feel nothing.";
|
||||||
this.Listen = "You hear nothing of interest.";
|
this.Listen = "You hear nothing of interest.";
|
||||||
|
@ -95,7 +95,7 @@ namespace MudEngine.GameObjects
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool ShouldSerializeName()
|
private Boolean ShouldSerializeName()
|
||||||
{
|
{
|
||||||
return this.Name != DefaultName();
|
return this.Name != DefaultName();
|
||||||
}
|
}
|
||||||
|
@ -105,13 +105,13 @@ namespace MudEngine.GameObjects
|
||||||
this.Name = DefaultName();
|
this.Name = DefaultName();
|
||||||
}
|
}
|
||||||
|
|
||||||
private string DefaultName()
|
private String DefaultName()
|
||||||
{
|
{
|
||||||
return "New " + this.GetType().Name;
|
return "New " + this.GetType().Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Public Methods
|
#region Public Methods
|
||||||
public override string ToString()
|
public override String ToString()
|
||||||
{
|
{
|
||||||
return this.Name;
|
return this.Name;
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,7 @@ namespace MudEngine.GameObjects
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Save(string path)
|
public virtual void Save(String path)
|
||||||
{
|
{
|
||||||
if (String.IsNullOrEmpty(path))
|
if (String.IsNullOrEmpty(path))
|
||||||
return;
|
return;
|
||||||
|
@ -156,19 +156,19 @@ namespace MudEngine.GameObjects
|
||||||
if (!Directory.Exists(path))
|
if (!Directory.Exists(path))
|
||||||
Directory.CreateDirectory(path);
|
Directory.CreateDirectory(path);
|
||||||
|
|
||||||
path = Path.Combine(path, Filename);
|
String filename = Path.Combine(path, Filename);
|
||||||
|
|
||||||
if (File.Exists(path))
|
if (File.Exists(filename))
|
||||||
File.Delete(path);
|
File.Delete(filename);
|
||||||
|
|
||||||
FileManager.WriteLine(path, this.Name, "Name");
|
FileManager.WriteLine(filename, this.Name, "Name");
|
||||||
FileManager.WriteLine(path, this.Description, "Description");
|
FileManager.WriteLine(filename, this.Description, "Description");
|
||||||
FileManager.WriteLine(path, this.Feel, "Feel");
|
FileManager.WriteLine(filename, this.Feel, "Feel");
|
||||||
FileManager.WriteLine(path, this.Listen, "Listen");
|
FileManager.WriteLine(filename, this.Listen, "Listen");
|
||||||
FileManager.WriteLine(path, this.Smell, "Smell");
|
FileManager.WriteLine(filename, this.Smell, "Smell");
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Load(string filename)
|
public virtual void Load(String filename)
|
||||||
{
|
{
|
||||||
this.Name = FileManager.GetData(filename, "Name");
|
this.Name = FileManager.GetData(filename, "Name");
|
||||||
this.Description = FileManager.GetData(filename, "Description");
|
this.Description = FileManager.GetData(filename, "Description");
|
||||||
|
|
|
@ -67,7 +67,7 @@ namespace MudEngine.GameObjects.Characters
|
||||||
CommandSystem = new CommandEngine();
|
CommandSystem = new CommandEngine();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Load(string filename)
|
public override void Load(String filename)
|
||||||
{
|
{
|
||||||
base.Load(filename);
|
base.Load(filename);
|
||||||
|
|
||||||
|
@ -75,12 +75,12 @@ namespace MudEngine.GameObjects.Characters
|
||||||
|
|
||||||
//Need to re-assign the enumerator value that was previously assigned to the Role property
|
//Need to re-assign the enumerator value that was previously assigned to the Role property
|
||||||
Array values = Enum.GetValues(typeof(SecurityRoles));
|
Array values = Enum.GetValues(typeof(SecurityRoles));
|
||||||
foreach (int value in values)
|
foreach (Int32 value in values)
|
||||||
{
|
{
|
||||||
//Since enum values are not strings, we can't simply just assign the string to the enum
|
//Since enum values are not strings, we can't simply just assign the String to the enum
|
||||||
string displayName = Enum.GetName(typeof(SecurityRoles), value);
|
String displayName = Enum.GetName(typeof(SecurityRoles), value);
|
||||||
|
|
||||||
//If the value = the string saved, then perform the needed conversion to get our data back
|
//If the value = the String saved, then perform the needed conversion to get our data back
|
||||||
if (displayName.ToLower() == FileManager.GetData(filename, "Role").ToLower())
|
if (displayName.ToLower() == FileManager.GetData(filename, "Role").ToLower())
|
||||||
{
|
{
|
||||||
Role = (SecurityRoles)Enum.Parse(typeof(SecurityRoles), displayName);
|
Role = (SecurityRoles)Enum.Parse(typeof(SecurityRoles), displayName);
|
||||||
|
@ -138,7 +138,7 @@ namespace MudEngine.GameObjects.Characters
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Save(string path)
|
public override void Save(String path)
|
||||||
{
|
{
|
||||||
base.Save(path);
|
base.Save(path);
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ namespace MudEngine.GameObjects.Characters
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="travelDirection"></param>
|
/// <param name="travelDirection"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool Move(AvailableTravelDirections travelDirection)
|
public Boolean Move(AvailableTravelDirections travelDirection)
|
||||||
{
|
{
|
||||||
//Check if the current room has a doorway in the supplied direction of travel.
|
//Check if the current room has a doorway in the supplied direction of travel.
|
||||||
if (!CurrentRoom.DoorwayExist(travelDirection))
|
if (!CurrentRoom.DoorwayExist(travelDirection))
|
||||||
|
@ -166,14 +166,14 @@ namespace MudEngine.GameObjects.Characters
|
||||||
}
|
}
|
||||||
|
|
||||||
//Let other players know that the user walked out.
|
//Let other players know that the user walked out.
|
||||||
for (int i = 0; i != ActiveGame.PlayerCollection.Length; i++)
|
for (Int32 i = 0; i != ActiveGame.PlayerCollection.Length; i++)
|
||||||
{
|
{
|
||||||
if (ActiveGame.PlayerCollection[i].Name == Name)
|
if (ActiveGame.PlayerCollection[i].Name == Name)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
string room = ActiveGame.PlayerCollection[i].CurrentRoom.Filename;
|
String room = ActiveGame.PlayerCollection[i].CurrentRoom.Filename;
|
||||||
string realm = ActiveGame.PlayerCollection[i].CurrentRoom.Realm;
|
String realm = ActiveGame.PlayerCollection[i].CurrentRoom.Realm;
|
||||||
string zone = ActiveGame.PlayerCollection[i].CurrentRoom.Zone;
|
String zone = ActiveGame.PlayerCollection[i].CurrentRoom.Zone;
|
||||||
|
|
||||||
if ((room == CurrentRoom.Filename) && (realm == CurrentRoom.Realm) && (zone == CurrentRoom.Zone))
|
if ((room == CurrentRoom.Filename) && (realm == CurrentRoom.Realm) && (zone == CurrentRoom.Zone))
|
||||||
{
|
{
|
||||||
|
@ -193,14 +193,14 @@ namespace MudEngine.GameObjects.Characters
|
||||||
{
|
{
|
||||||
//TODO: Check the Room/Zone/Realm to see if anything needs to occure during travel.
|
//TODO: Check the Room/Zone/Realm to see if anything needs to occure during travel.
|
||||||
//Let other players know that the user walked in.
|
//Let other players know that the user walked in.
|
||||||
for (int i = 0; i != ActiveGame.PlayerCollection.Length; i++)
|
for (Int32 i = 0; i != ActiveGame.PlayerCollection.Length; i++)
|
||||||
{
|
{
|
||||||
if (ActiveGame.PlayerCollection[i].Name == Name)
|
if (ActiveGame.PlayerCollection[i].Name == Name)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
string room = ActiveGame.PlayerCollection[i].CurrentRoom.Name;
|
String room = ActiveGame.PlayerCollection[i].CurrentRoom.Name;
|
||||||
string realm = ActiveGame.PlayerCollection[i].CurrentRoom.Realm;
|
String realm = ActiveGame.PlayerCollection[i].CurrentRoom.Realm;
|
||||||
string zone = ActiveGame.PlayerCollection[i].CurrentRoom.Zone;
|
String zone = ActiveGame.PlayerCollection[i].CurrentRoom.Zone;
|
||||||
|
|
||||||
if ((room == CurrentRoom.Name) && (realm == CurrentRoom.Realm) && (zone == CurrentRoom.Zone))
|
if ((room == CurrentRoom.Name) && (realm == CurrentRoom.Realm) && (zone == CurrentRoom.Zone))
|
||||||
{
|
{
|
||||||
|
@ -209,7 +209,7 @@ namespace MudEngine.GameObjects.Characters
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ExecuteCommand(string command)
|
public void ExecuteCommand(String command)
|
||||||
{
|
{
|
||||||
//TODO: Character class can handle a lot of the command management here, checking various things prior to sending
|
//TODO: Character class can handle a lot of the command management here, checking various things prior to sending
|
||||||
//the command off to the command engine for execution.
|
//the command off to the command engine for execution.
|
||||||
|
@ -226,7 +226,7 @@ namespace MudEngine.GameObjects.Characters
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
foreach (object item in result.Result)
|
foreach (object item in result.Result)
|
||||||
{
|
{
|
||||||
if (item is string)
|
if (item is String)
|
||||||
sb.AppendLine(item.ToString());
|
sb.AppendLine(item.ToString());
|
||||||
}
|
}
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
|
@ -249,7 +249,7 @@ namespace MudEngine.GameObjects.Characters
|
||||||
//Ensure custom commands are loaded until everything is fleshed out.
|
//Ensure custom commands are loaded until everything is fleshed out.
|
||||||
if (Game.IsDebug)
|
if (Game.IsDebug)
|
||||||
{
|
{
|
||||||
foreach (string command in CommandEngine.GetCommands())
|
foreach (String command in CommandEngine.GetCommands())
|
||||||
{
|
{
|
||||||
Log.Write("Command loaded: " + command);
|
Log.Write("Command loaded: " + command);
|
||||||
}
|
}
|
||||||
|
@ -268,7 +268,7 @@ namespace MudEngine.GameObjects.Characters
|
||||||
ExecuteCommand("Login");
|
ExecuteCommand("Login");
|
||||||
ExecuteCommand("Look"); //MUST happen after Room setup is completed, otherwise the player default Abyss Room is printed.
|
ExecuteCommand("Look"); //MUST happen after Room setup is completed, otherwise the player default Abyss Room is printed.
|
||||||
}
|
}
|
||||||
internal void Receive(string data)
|
internal void Receive(String data)
|
||||||
{
|
{
|
||||||
//data = ExecuteCommand(data);
|
//data = ExecuteCommand(data);
|
||||||
ExecuteCommand(data);
|
ExecuteCommand(data);
|
||||||
|
@ -282,7 +282,7 @@ namespace MudEngine.GameObjects.Characters
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="data"></param>
|
/// <param name="data"></param>
|
||||||
/// <param name="newLine"></param>
|
/// <param name="newLine"></param>
|
||||||
internal void Send(string data, bool newLine)
|
internal void Send(String data, Boolean newLine)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -305,7 +305,7 @@ namespace MudEngine.GameObjects.Characters
|
||||||
/// Sends data to the player.
|
/// Sends data to the player.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="data"></param>
|
/// <param name="data"></param>
|
||||||
internal void Send(string data)
|
internal void Send(String data)
|
||||||
{
|
{
|
||||||
Send(data, true);
|
Send(data, true);
|
||||||
}
|
}
|
||||||
|
@ -346,7 +346,7 @@ namespace MudEngine.GameObjects.Characters
|
||||||
Log.Write("Player " + this.Name + " disconnected.");
|
Log.Write("Player " + this.Name + " disconnected.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
internal string ReadInput()
|
internal String ReadInput()
|
||||||
{
|
{
|
||||||
if (ActiveGame.IsMultiplayer)
|
if (ActiveGame.IsMultiplayer)
|
||||||
{
|
{
|
||||||
|
@ -356,7 +356,7 @@ namespace MudEngine.GameObjects.Characters
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
byte[] buf = new byte[1];
|
byte[] buf = new byte[1];
|
||||||
int recved = client.Receive(buf);
|
Int32 recved = client.Receive(buf);
|
||||||
|
|
||||||
if (recved > 0)
|
if (recved > 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,7 +15,7 @@ namespace MudEngine.GameObjects
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The value of this currency. It should be how many 'base currency' it takes to equal 1 of this currency
|
/// The value of this currency. It should be how many 'base currency' it takes to equal 1 of this currency
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int Value
|
public Int32 Value
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace MudEngine.GameObjects.Environment
|
||||||
{
|
{
|
||||||
[Category("Door Settings")]
|
[Category("Door Settings")]
|
||||||
[DefaultValue(false)]
|
[DefaultValue(false)]
|
||||||
public bool IsLocked
|
public Boolean IsLocked
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
|
@ -33,7 +33,7 @@ namespace MudEngine.GameObjects.Environment
|
||||||
|
|
||||||
[Category("Door Settings")]
|
[Category("Door Settings")]
|
||||||
[DefaultValue(0)]
|
[DefaultValue(0)]
|
||||||
public int LevelRequirement
|
public Int32 LevelRequirement
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
|
|
|
@ -23,7 +23,7 @@ namespace MudEngine.GameObjects.Environment
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or Sets if this Realm is the starting realm for the game.
|
/// Gets or Sets if this Realm is the starting realm for the game.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsInitialRealm { get; set; }
|
public Boolean IsInitialRealm { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The Initial Starting Zone for this Realm.
|
/// The Initial Starting Zone for this Realm.
|
||||||
|
@ -35,14 +35,24 @@ namespace MudEngine.GameObjects.Environment
|
||||||
ZoneCollection = new List<Zone>();
|
ZoneCollection = new List<Zone>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Save(string path)
|
public override void Save(String path)
|
||||||
{
|
{
|
||||||
|
path = Path.Combine(path, Path.GetFileNameWithoutExtension(Filename));
|
||||||
base.Save(path);
|
base.Save(path);
|
||||||
|
|
||||||
//TODO: Save Realm collections and Zone to file.
|
String filename = Path.Combine(path, Filename);
|
||||||
|
|
||||||
|
FileManager.WriteLine(filename, this.IsInitialRealm.ToString(), "IsInitialRealm");
|
||||||
|
FileManager.WriteLine(filename, this.InitialZone.Filename, "InitialZone");
|
||||||
|
|
||||||
|
foreach (Zone z in ZoneCollection)
|
||||||
|
{
|
||||||
|
FileManager.WriteLine(filename, z.Filename, "ZoneCollection");
|
||||||
|
z.Save(path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Zone> GetZoneByFilename(string filename)
|
public List<Zone> GetZoneByFilename(String filename)
|
||||||
{
|
{
|
||||||
|
|
||||||
List<Zone> zones = new List<Zone>();
|
List<Zone> zones = new List<Zone>();
|
||||||
|
|
|
@ -27,7 +27,7 @@ namespace MudEngine.GameObjects.Environment
|
||||||
[ReadOnly(true)]
|
[ReadOnly(true)]
|
||||||
[Description("This is the Zone that the Room is currently assigned to.")]
|
[Description("This is the Zone that the Room is currently assigned to.")]
|
||||||
[Category("Environment Information")]
|
[Category("Environment Information")]
|
||||||
public string Zone
|
public String Zone
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
|
@ -36,7 +36,7 @@ namespace MudEngine.GameObjects.Environment
|
||||||
[ReadOnly(true)]
|
[ReadOnly(true)]
|
||||||
[Description("This is the Realm that the Room belongs to.")]
|
[Description("This is the Realm that the Room belongs to.")]
|
||||||
[Category("Environment Information")]
|
[Category("Environment Information")]
|
||||||
public string Realm
|
public String Realm
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
|
@ -45,18 +45,18 @@ namespace MudEngine.GameObjects.Environment
|
||||||
[Category("Environment Information")]
|
[Category("Environment Information")]
|
||||||
[DefaultValue(false)]
|
[DefaultValue(false)]
|
||||||
[Description("Determins if the Player can be attacked within this Room or not.")]
|
[Description("Determins if the Player can be attacked within this Room or not.")]
|
||||||
public bool IsSafe
|
public Boolean IsSafe
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
public string InstallPath
|
public String InstallPath
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
string zonePath = "";
|
String zonePath = "";
|
||||||
if (this.Realm == null || this.Realm == "No Realm Associated.")
|
if (this.Realm == null || this.Realm == "No Realm Associated.")
|
||||||
{
|
{
|
||||||
zonePath = FileManager.GetDataPath(SaveDataTypes.Zones);
|
zonePath = FileManager.GetDataPath(SaveDataTypes.Zones);
|
||||||
|
@ -65,8 +65,8 @@ namespace MudEngine.GameObjects.Environment
|
||||||
else
|
else
|
||||||
zonePath = FileManager.GetDataPath(this.Realm, this.Zone);
|
zonePath = FileManager.GetDataPath(this.Realm, this.Zone);
|
||||||
|
|
||||||
string roomPath = Path.Combine(zonePath, "Rooms");
|
String roomPath = Path.Combine(zonePath, "Rooms");
|
||||||
string filename = Path.Combine(roomPath, this.Filename);
|
String filename = Path.Combine(roomPath, this.Filename);
|
||||||
return filename;
|
return filename;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ namespace MudEngine.GameObjects.Environment
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Browsable(true)]
|
[Browsable(true)]
|
||||||
[Description("Sets if this is the starting room for the Zone that contains it.")]
|
[Description("Sets if this is the starting room for the Zone that contains it.")]
|
||||||
public bool IsInitialRoom
|
public Boolean IsInitialRoom
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
|
@ -89,12 +89,19 @@ namespace MudEngine.GameObjects.Environment
|
||||||
IsSafe = false;
|
IsSafe = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void Save(String path)
|
||||||
|
{
|
||||||
|
base.Save(path);
|
||||||
|
|
||||||
|
String filename = Path.Combine(path, Filename);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Checks to see if a doorway in the travelDirection exists.
|
/// Checks to see if a doorway in the travelDirection exists.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="travelDirection"></param>
|
/// <param name="travelDirection"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool DoorwayExist(AvailableTravelDirections travelDirection)
|
public Boolean DoorwayExist(AvailableTravelDirections travelDirection)
|
||||||
{
|
{
|
||||||
foreach (Door door in Doorways)
|
foreach (Door door in Doorways)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
//MUD Engine
|
using System;
|
||||||
|
|
||||||
|
//MUD Engine
|
||||||
using MudEngine.FileSystem;
|
using MudEngine.FileSystem;
|
||||||
using MudEngine.GameObjects;
|
using MudEngine.GameObjects;
|
||||||
using MudEngine.GameObjects.Environment;
|
using MudEngine.GameObjects.Environment;
|
||||||
|
@ -7,13 +9,13 @@ namespace MudEngine.GameObjects.Environment
|
||||||
{
|
{
|
||||||
public struct StartingLocation
|
public struct StartingLocation
|
||||||
{
|
{
|
||||||
public string Room;
|
public String Room;
|
||||||
public string Zone;
|
public String Zone;
|
||||||
public string Realm;
|
public String Realm;
|
||||||
|
|
||||||
public override string ToString()
|
public override String ToString()
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(Room))
|
if (String.IsNullOrEmpty(Room))
|
||||||
return "No initial location defined.";
|
return "No initial location defined.";
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,13 +39,13 @@ namespace MudEngine.GameObjects
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AvailableTravelDirections GetTravelDirectionValue(string Direction)
|
public static AvailableTravelDirections GetTravelDirectionValue(String Direction)
|
||||||
{
|
{
|
||||||
Array values = Enum.GetValues(typeof(AvailableTravelDirections));
|
Array values = Enum.GetValues(typeof(AvailableTravelDirections));
|
||||||
|
|
||||||
foreach (int value in values)
|
foreach (Int32 value in values)
|
||||||
{
|
{
|
||||||
string displayName = Enum.GetName(typeof(AvailableTravelDirections), value);
|
String displayName = Enum.GetName(typeof(AvailableTravelDirections), value);
|
||||||
|
|
||||||
if (displayName.ToLower() == Direction.ToLower())
|
if (displayName.ToLower() == Direction.ToLower())
|
||||||
return (AvailableTravelDirections)Enum.Parse(typeof(AvailableTravelDirections), displayName);
|
return (AvailableTravelDirections)Enum.Parse(typeof(AvailableTravelDirections), displayName);
|
||||||
|
|
|
@ -20,7 +20,7 @@ namespace MudEngine.GameObjects.Environment
|
||||||
[Category("Environment Information")]
|
[Category("Environment Information")]
|
||||||
[DefaultValue(0)]
|
[DefaultValue(0)]
|
||||||
[Description("The amount to drain each stat by if StatDrain is enabled.")]
|
[Description("The amount to drain each stat by if StatDrain is enabled.")]
|
||||||
public int StatDrainAmount
|
public Int32 StatDrainAmount
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
|
@ -29,7 +29,7 @@ namespace MudEngine.GameObjects.Environment
|
||||||
[Category("Environment Information")]
|
[Category("Environment Information")]
|
||||||
[Description("Enable or Disable the ability for draining stats while traversing.")]
|
[Description("Enable or Disable the ability for draining stats while traversing.")]
|
||||||
[DefaultValue(false)]
|
[DefaultValue(false)]
|
||||||
public bool StatDrain
|
public Boolean StatDrain
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
|
@ -38,7 +38,7 @@ namespace MudEngine.GameObjects.Environment
|
||||||
[ReadOnly(true)]
|
[ReadOnly(true)]
|
||||||
[Category("Environment Information")]
|
[Category("Environment Information")]
|
||||||
[Description("The Realm that this Zone is assigned to. It is not required to be contained within a Realm.")]
|
[Description("The Realm that this Zone is assigned to. It is not required to be contained within a Realm.")]
|
||||||
public string Realm
|
public String Realm
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
|
@ -47,7 +47,7 @@ namespace MudEngine.GameObjects.Environment
|
||||||
[Category("Environment Information")]
|
[Category("Environment Information")]
|
||||||
[Description("Determins if the Player can be attacked within this Room or not.")]
|
[Description("Determins if the Player can be attacked within this Room or not.")]
|
||||||
[DefaultValue(false)]
|
[DefaultValue(false)]
|
||||||
public bool IsSafe
|
public Boolean IsSafe
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
|
@ -59,7 +59,7 @@ namespace MudEngine.GameObjects.Environment
|
||||||
[Category("Environment Information")]
|
[Category("Environment Information")]
|
||||||
[Description("Sets that this Zone is a starting Zone for the game.")]
|
[Description("Sets that this Zone is a starting Zone for the game.")]
|
||||||
[DefaultValue(false)]
|
[DefaultValue(false)]
|
||||||
public bool IsInitialZone
|
public Boolean IsInitialZone
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
|
@ -83,6 +83,28 @@ namespace MudEngine.GameObjects.Environment
|
||||||
Realm = "No Realm Associated.";
|
Realm = "No Realm Associated.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void Save(String path)
|
||||||
|
{
|
||||||
|
path = Path.Combine(path, Path.GetFileNameWithoutExtension(Filename));
|
||||||
|
|
||||||
|
base.Save(path);
|
||||||
|
|
||||||
|
String filename = Path.Combine(path, Filename);
|
||||||
|
|
||||||
|
FileManager.WriteLine(filename, this.IsInitialZone.ToString(), "IsInitialZone");
|
||||||
|
FileManager.WriteLine(filename, this.IsSafe.ToString(), "IsSafe");
|
||||||
|
FileManager.WriteLine(filename, this.Realm, "Realm");
|
||||||
|
FileManager.WriteLine(filename, this.StatDrain.ToString(), "StatDrain");
|
||||||
|
FileManager.WriteLine(filename, this.StatDrainAmount.ToString(), "StatDrainAmount");
|
||||||
|
FileManager.WriteLine(filename, this.InitialRoom.Filename, "InitialRoom");
|
||||||
|
|
||||||
|
foreach (Room r in RoomCollection)
|
||||||
|
{
|
||||||
|
FileManager.WriteLine(filename, r.Filename, "Room");
|
||||||
|
r.Save(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds the supplied room into the Zones Room collection.
|
/// Adds the supplied room into the Zones Room collection.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -111,7 +133,7 @@ namespace MudEngine.GameObjects.Environment
|
||||||
room.Realm = Realm;
|
room.Realm = Realm;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Room> GetRoomByFilename(string filename)
|
public List<Room> GetRoomByFilename(String filename)
|
||||||
{
|
{
|
||||||
|
|
||||||
List<Room> rooms = new List<Room>();
|
List<Room> rooms = new List<Room>();
|
||||||
|
|
|
@ -59,6 +59,7 @@
|
||||||
<Compile Include="Commands\CommandLoad.cs" />
|
<Compile Include="Commands\CommandLoad.cs" />
|
||||||
<Compile Include="Commands\CommandLogin.cs" />
|
<Compile Include="Commands\CommandLogin.cs" />
|
||||||
<Compile Include="Commands\CommandClear.cs" />
|
<Compile Include="Commands\CommandClear.cs" />
|
||||||
|
<Compile Include="Commands\CommandSaveWorld.cs" />
|
||||||
<Compile Include="FileSystem\SaveDataPaths.cs" />
|
<Compile Include="FileSystem\SaveDataPaths.cs" />
|
||||||
<Compile Include="GameManagement\CommandEngine.cs" />
|
<Compile Include="GameManagement\CommandEngine.cs" />
|
||||||
<Compile Include="GameManagement\CommandResults.cs" />
|
<Compile Include="GameManagement\CommandResults.cs" />
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace MudEngine.Networking
|
||||||
stage = 0;
|
stage = 0;
|
||||||
port = 0;
|
port = 0;
|
||||||
}
|
}
|
||||||
public bool Initialize(int p, ref BaseCharacter[] pbs)
|
public Boolean Initialize(Int32 p, ref BaseCharacter[] pbs)
|
||||||
{
|
{
|
||||||
if (stage != 0)
|
if (stage != 0)
|
||||||
return false;
|
return false;
|
||||||
|
@ -36,7 +36,7 @@ namespace MudEngine.Networking
|
||||||
stage++;
|
stage++;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
public bool Start()
|
public Boolean Start()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -65,10 +65,10 @@ namespace MudEngine.Networking
|
||||||
{
|
{
|
||||||
while (stage == 2)
|
while (stage == 2)
|
||||||
{
|
{
|
||||||
int sub = -1;
|
Int32 sub = -1;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
for (int i = 0; i < players.Length; i++)
|
for (Int32 i = 0; i < players.Length; i++)
|
||||||
{
|
{
|
||||||
if (!players[i].IsActive)
|
if (!players[i].IsActive)
|
||||||
{
|
{
|
||||||
|
@ -86,14 +86,14 @@ namespace MudEngine.Networking
|
||||||
}
|
}
|
||||||
private void ReceiveThread(object obj)
|
private void ReceiveThread(object obj)
|
||||||
{
|
{
|
||||||
int sub = (int)obj;
|
Int32 sub = (Int32)obj;
|
||||||
players[sub].Initialize();
|
players[sub].Initialize();
|
||||||
while (stage == 2 && players[sub].IsActive)
|
while (stage == 2 && players[sub].IsActive)
|
||||||
{
|
{
|
||||||
players[sub].Receive(players[sub].ReadInput());
|
players[sub].Receive(players[sub].ReadInput());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void Disconnect(int sub)
|
public void Disconnect(Int32 sub)
|
||||||
{
|
{
|
||||||
if (sub > 0 && sub < players.Length)
|
if (sub > 0 && sub < players.Length)
|
||||||
{
|
{
|
||||||
|
@ -105,8 +105,8 @@ namespace MudEngine.Networking
|
||||||
|
|
||||||
private Thread serverThread;
|
private Thread serverThread;
|
||||||
private Socket server;
|
private Socket server;
|
||||||
private int stage;
|
private Int32 stage;
|
||||||
private int port;
|
private Int32 port;
|
||||||
|
|
||||||
BaseCharacter[] players;
|
BaseCharacter[] players;
|
||||||
|
|
||||||
|
|
|
@ -18,14 +18,14 @@ namespace MudEngine.Scripting
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The Type name for this object
|
/// The Type name for this object
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Name { get; set; }
|
public String Name { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Determins if this object will recieve Update/Draw calls from the ScriptEngine
|
/// Determins if this object will recieve Update/Draw calls from the ScriptEngine
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsActive { get; set; }
|
public Boolean IsActive { get; set; }
|
||||||
|
|
||||||
public GameObject(object instance, string name)
|
public GameObject(object instance, String name)
|
||||||
{
|
{
|
||||||
Instance = instance;
|
Instance = instance;
|
||||||
Name = name;
|
Name = name;
|
||||||
|
@ -36,27 +36,27 @@ namespace MudEngine.Scripting
|
||||||
return Instance;
|
return Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool DeleteObject()
|
public Boolean DeleteObject()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetProperty(string propertyName, object propertyValue)
|
public void SetProperty(String propertyName, object propertyValue)
|
||||||
{
|
{
|
||||||
PropertyInfo propertyInfo = Instance.GetType().GetProperty(propertyName);
|
PropertyInfo propertyInfo = Instance.GetType().GetProperty(propertyName);
|
||||||
|
|
||||||
if (propertyValue is string)
|
if (propertyValue is String)
|
||||||
{
|
{
|
||||||
if (propertyInfo.PropertyType.Name is string)
|
if (propertyInfo.PropertyType.Name is String)
|
||||||
{
|
{
|
||||||
propertyInfo.SetValue(Instance, propertyValue, null);
|
propertyInfo.SetValue(Instance, propertyValue, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public object GetProperty(string propertyName)
|
public object GetProperty(String propertyName)
|
||||||
{
|
{
|
||||||
string[] tokens = propertyName.Split('.');
|
String[] tokens = propertyName.Split('.');
|
||||||
PropertyInfo previousProperty = Instance.GetType().GetProperty(tokens[0]);
|
PropertyInfo previousProperty = Instance.GetType().GetProperty(tokens[0]);
|
||||||
|
|
||||||
return previousProperty.GetValue(Instance, null);
|
return previousProperty.GetValue(Instance, null);
|
||||||
|
@ -67,7 +67,7 @@ namespace MudEngine.Scripting
|
||||||
return Instance;
|
return Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public object InvokeMethod(string methodName, params object[] parameters)
|
public object InvokeMethod(String methodName, params object[] parameters)
|
||||||
{
|
{
|
||||||
MethodInfo method = Instance.GetType().GetMethod(methodName);
|
MethodInfo method = Instance.GetType().GetMethod(methodName);
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace MudEngine.Scripting
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Path to the the script files directory
|
/// Path to the the script files directory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string ScriptPath
|
public String ScriptPath
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
@ -41,9 +41,9 @@ namespace MudEngine.Scripting
|
||||||
_ScriptPath = Path.Combine(FileManager.GetDataPath(SaveDataTypes.Root), value);
|
_ScriptPath = Path.Combine(FileManager.GetDataPath(SaveDataTypes.Root), value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
string _ScriptPath;
|
String _ScriptPath;
|
||||||
|
|
||||||
public string InstallPath { get; private set; }
|
public String InstallPath { get; private set; }
|
||||||
public GameObjectCollection ObjectCollection { get; private set; }
|
public GameObjectCollection ObjectCollection { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -58,33 +58,33 @@ namespace MudEngine.Scripting
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// File Extension for the scripts
|
/// File Extension for the scripts
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string ScriptExtension { get; set; }
|
public String ScriptExtension { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Error Messages logged during script compilation
|
/// Error Messages logged during script compilation
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string ErrorMessage
|
public String ErrorMessage
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
string errorMessages = "Script Compilation Failed!\n";
|
String errorMessages = "Script Compilation Failed!\n";
|
||||||
//Construct our error message.
|
//Construct our error message.
|
||||||
foreach (string error in _ErrorMessages)
|
foreach (String error in _ErrorMessages)
|
||||||
errorMessages += error + "\n";
|
errorMessages += error + "\n";
|
||||||
|
|
||||||
return errorMessages;
|
return errorMessages;
|
||||||
}
|
}
|
||||||
private set
|
private set
|
||||||
{
|
{
|
||||||
_ErrorMessages = new string[] { value };
|
_ErrorMessages = new String[] { value };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal ScriptTypes ScriptType { get; set; }
|
internal ScriptTypes ScriptType { get; set; }
|
||||||
private Assembly _ScriptAssembly;
|
private Assembly _ScriptAssembly;
|
||||||
private List<Assembly> _AssemblyCollection;
|
private List<Assembly> _AssemblyCollection;
|
||||||
private string[] _ErrorMessages;
|
private String[] _ErrorMessages;
|
||||||
private string _SettingsFile;
|
private String _SettingsFile;
|
||||||
Game _Game;
|
Game _Game;
|
||||||
|
|
||||||
public ScriptEngine(Game game) : this(game, ScriptTypes.Assembly)
|
public ScriptEngine(Game game) : this(game, ScriptTypes.Assembly)
|
||||||
|
@ -123,7 +123,7 @@ namespace MudEngine.Scripting
|
||||||
/// Compiles a collection of scripts stored in ScriptEngine.ScriptPath. Not supported on XBox360.
|
/// Compiles a collection of scripts stored in ScriptEngine.ScriptPath. Not supported on XBox360.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool CompileScripts()
|
public Boolean CompileScripts()
|
||||||
{
|
{
|
||||||
#if !MOBILE
|
#if !MOBILE
|
||||||
//Ensure the script path exists.
|
//Ensure the script path exists.
|
||||||
|
@ -133,7 +133,7 @@ namespace MudEngine.Scripting
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//Build an array of scripts
|
//Build an array of scripts
|
||||||
string[] scripts = System.IO.Directory.GetFiles(ScriptPath, "*" + ScriptExtension, System.IO.SearchOption.AllDirectories);
|
String[] scripts = System.IO.Directory.GetFiles(ScriptPath, "*" + ScriptExtension, System.IO.SearchOption.AllDirectories);
|
||||||
|
|
||||||
//Prepare the scripts. MUD Scripts are wrote without defining a namespace
|
//Prepare the scripts. MUD Scripts are wrote without defining a namespace
|
||||||
if (Directory.Exists("temp"))
|
if (Directory.Exists("temp"))
|
||||||
|
@ -142,20 +142,20 @@ namespace MudEngine.Scripting
|
||||||
Directory.CreateDirectory("temp");
|
Directory.CreateDirectory("temp");
|
||||||
|
|
||||||
//Setup the additional sourcecode that's needed in the script.
|
//Setup the additional sourcecode that's needed in the script.
|
||||||
string[] usingStatements = new string[] { "using System;", "using MudEngine.GameObjects;", "using MudEngine.GameObjects.Characters;", "using MudEngine.GameObjects.Environment;", "using MudEngine.GameObjects.Items;", "using MudEngine.GameManagement;", "using MudEngine.FileSystem;", "using MudEngine.Scripting;" };
|
String[] usingStatements = new String[] { "using System;", "using MudEngine.GameObjects;", "using MudEngine.GameObjects.Characters;", "using MudEngine.GameObjects.Environment;", "using MudEngine.GameObjects.Items;", "using MudEngine.GameManagement;", "using MudEngine.FileSystem;", "using MudEngine.Scripting;" };
|
||||||
|
|
||||||
foreach (string script in scripts)
|
foreach (String script in scripts)
|
||||||
{
|
{
|
||||||
string tempPath = "temp";
|
String tempPath = "temp";
|
||||||
string source = "\nnamespace MudScripts{\n}";
|
String source = "\nnamespace MudScripts{\n}";
|
||||||
|
|
||||||
FileStream fr = new FileStream(script, FileMode.Open, FileAccess.Read, FileShare.None);
|
FileStream fr = new FileStream(script, FileMode.Open, FileAccess.Read, FileShare.None);
|
||||||
FileStream fw = new FileStream(Path.Combine(tempPath, Path.GetFileName(script)), FileMode.Create, FileAccess.Write);
|
FileStream fw = new FileStream(Path.Combine(tempPath, Path.GetFileName(script)), FileMode.Create, FileAccess.Write);
|
||||||
StreamWriter sw = new StreamWriter(fw, System.Text.Encoding.Default);
|
StreamWriter sw = new StreamWriter(fw, System.Text.Encoding.Default);
|
||||||
StreamReader sr = new StreamReader(fr, System.Text.Encoding.Default);
|
StreamReader sr = new StreamReader(fr, System.Text.Encoding.Default);
|
||||||
|
|
||||||
string content = sr.ReadToEnd();
|
String content = sr.ReadToEnd();
|
||||||
foreach (string statement in usingStatements)
|
foreach (String statement in usingStatements)
|
||||||
source = source.Insert(0, statement);
|
source = source.Insert(0, statement);
|
||||||
|
|
||||||
source = source.Insert(source.Length - 1, content);
|
source = source.Insert(source.Length - 1, content);
|
||||||
|
@ -164,14 +164,14 @@ namespace MudEngine.Scripting
|
||||||
sw.Flush();
|
sw.Flush();
|
||||||
sw.Close();
|
sw.Close();
|
||||||
}
|
}
|
||||||
string oldPath = ScriptPath;
|
String oldPath = ScriptPath;
|
||||||
ScriptPath = "temp";
|
ScriptPath = "temp";
|
||||||
|
|
||||||
//Prepare the compiler.
|
//Prepare the compiler.
|
||||||
Dictionary<string, string> providerOptions = new Dictionary<string,string>();
|
Dictionary<String, String> providerOptions = new Dictionary<String,String>();
|
||||||
providerOptions.Add("CompilerVersion", "v3.5");
|
providerOptions.Add("CompilerVersion", "v3.5");
|
||||||
|
|
||||||
CompilerParameters param = new CompilerParameters(new string[] {"mscorlib.dll", "System.dll", "MudEngine.dll"});
|
CompilerParameters param = new CompilerParameters(new String[] {"mscorlib.dll", "System.dll", "MudEngine.dll"});
|
||||||
param.GenerateExecutable = false;
|
param.GenerateExecutable = false;
|
||||||
param.GenerateInMemory = true;
|
param.GenerateInMemory = true;
|
||||||
if (!param.GenerateInMemory)
|
if (!param.GenerateInMemory)
|
||||||
|
@ -193,10 +193,10 @@ namespace MudEngine.Scripting
|
||||||
//if we encountered errors we need to log them to our ErrorMessages property
|
//if we encountered errors we need to log them to our ErrorMessages property
|
||||||
if (results.Errors.Count >= 1)
|
if (results.Errors.Count >= 1)
|
||||||
{
|
{
|
||||||
List<string> errorCollection = new List<string>();
|
List<String> errorCollection = new List<String>();
|
||||||
foreach (CompilerError error in results.Errors)
|
foreach (CompilerError error in results.Errors)
|
||||||
{
|
{
|
||||||
string prefix = "Error: ";
|
String prefix = "Error: ";
|
||||||
if (error.IsWarning)
|
if (error.IsWarning)
|
||||||
prefix = "Warning: ";
|
prefix = "Warning: ";
|
||||||
|
|
||||||
|
@ -270,7 +270,7 @@ namespace MudEngine.Scripting
|
||||||
Log.Write("Supplied script path does not exist! No scripts loaded.");
|
Log.Write("Supplied script path does not exist! No scripts loaded.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
string[] libraries = Directory.GetFiles(ScriptPath, "*.dll", SearchOption.AllDirectories);
|
String[] libraries = Directory.GetFiles(ScriptPath, "*.dll", SearchOption.AllDirectories);
|
||||||
|
|
||||||
if (libraries.Length == 0)
|
if (libraries.Length == 0)
|
||||||
{
|
{
|
||||||
|
@ -278,9 +278,9 @@ namespace MudEngine.Scripting
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (string library in libraries)
|
foreach (String library in libraries)
|
||||||
{
|
{
|
||||||
bool isOK = true;
|
Boolean isOK = true;
|
||||||
|
|
||||||
foreach (Assembly assembly in _AssemblyCollection)
|
foreach (Assembly assembly in _AssemblyCollection)
|
||||||
{
|
{
|
||||||
|
@ -304,7 +304,7 @@ namespace MudEngine.Scripting
|
||||||
if (!Directory.Exists(ScriptPath))
|
if (!Directory.Exists(ScriptPath))
|
||||||
Directory.CreateDirectory(ScriptPath);
|
Directory.CreateDirectory(ScriptPath);
|
||||||
|
|
||||||
string[] scripts = Directory.GetFiles(ScriptPath, "*.cs", SearchOption.AllDirectories);
|
String[] scripts = Directory.GetFiles(ScriptPath, "*.cs", SearchOption.AllDirectories);
|
||||||
|
|
||||||
if (scripts.Length == 0)
|
if (scripts.Length == 0)
|
||||||
{
|
{
|
||||||
|
@ -315,7 +315,7 @@ namespace MudEngine.Scripting
|
||||||
if (!CompileScripts())
|
if (!CompileScripts())
|
||||||
{
|
{
|
||||||
Log.Write("Error Compiling Scripts:");
|
Log.Write("Error Compiling Scripts:");
|
||||||
foreach (string error in _ErrorMessages)
|
foreach (String error in _ErrorMessages)
|
||||||
{
|
{
|
||||||
Log.Write("Error: " + error);
|
Log.Write("Error: " + error);
|
||||||
}
|
}
|
||||||
|
@ -324,7 +324,7 @@ namespace MudEngine.Scripting
|
||||||
_AssemblyCollection.Add(_ScriptAssembly);
|
_AssemblyCollection.Add(_ScriptAssembly);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameObject GetObject(string objectName)
|
public GameObject GetObject(String objectName)
|
||||||
{
|
{
|
||||||
IEnumerable<GameObject> objectQuery =
|
IEnumerable<GameObject> objectQuery =
|
||||||
from gameObject in ObjectCollection._GameObjects
|
from gameObject in ObjectCollection._GameObjects
|
||||||
|
@ -340,7 +340,7 @@ namespace MudEngine.Scripting
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameObject GetObjectOf(string baseTypeName)
|
public GameObject GetObjectOf(String baseTypeName)
|
||||||
{
|
{
|
||||||
foreach (GameObject obj in GameObjects)
|
foreach (GameObject obj in GameObjects)
|
||||||
{
|
{
|
||||||
|
|
|
@ -14,10 +14,10 @@ namespace MudGame
|
||||||
{
|
{
|
||||||
static class Program
|
static class Program
|
||||||
{
|
{
|
||||||
const string SettingsFile = "Settings.ini";
|
const String SettingsFile = "Settings.ini";
|
||||||
static Game game;
|
static Game game;
|
||||||
|
|
||||||
static void Main(string[] args)
|
static void Main(String[] args)
|
||||||
{
|
{
|
||||||
|
|
||||||
Log.Write("Launching...");
|
Log.Write("Launching...");
|
||||||
|
@ -61,7 +61,7 @@ namespace MudGame
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Log.Write("Setting up " + obj.GetProperty().GameTitle + " Manager...");
|
Log.Write("Setting up " + obj.GetProperty("GameTitle") + " Manager...");
|
||||||
game = (Game)obj.Instance;
|
game = (Game)obj.Instance;
|
||||||
scriptEngine = new ScriptEngine(game, ScriptEngine.ScriptTypes.Both);
|
scriptEngine = new ScriptEngine(game, ScriptEngine.ScriptTypes.Both);
|
||||||
}
|
}
|
||||||
|
@ -109,10 +109,31 @@ namespace MudGame
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Console.Title = game.GameTitle;
|
||||||
|
|
||||||
|
if (game.IsMultiplayer)
|
||||||
|
Console.Title += " server running.";
|
||||||
|
|
||||||
|
List<char> buf = new List<char>();
|
||||||
|
|
||||||
while (game.IsRunning)
|
while (game.IsRunning)
|
||||||
{
|
{
|
||||||
game.Update();
|
game.Update();
|
||||||
System.Threading.Thread.Sleep(1);
|
System.Threading.Thread.Sleep(1);
|
||||||
|
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
|
ConsoleKeyInfo info = Console.ReadKey();
|
||||||
|
|
||||||
|
if (info.KeyChar == '\r')
|
||||||
|
{
|
||||||
|
foreach (char c in buf)
|
||||||
|
sb.Append(c);
|
||||||
|
|
||||||
|
game.PlayerCollection[0].ExecuteCommand(sb.ToString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
buf.Add(info.KeyChar);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue