diff --git a/MudDesigner.sln b/MudDesigner.sln
index 2b54bdf..1e5fbcc 100644
--- a/MudDesigner.sln
+++ b/MudDesigner.sln
@@ -5,7 +5,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MudEngine", "MudEngine\MudE
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MUDCompiler", "MUDCompiler\MUDCompiler.csproj", "{98E974DA-C650-4B88-B2F8-57AC7AE6C34F}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MudGame", "MudGame\MudGame.csproj", "{5BA65833-A99D-486C-8E74-C11A0713D44A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MudGame", "MudGame\MudGame.csproj", "{0C47648F-8751-4A71-98ED-A3D0845627E2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -37,16 +37,16 @@ Global
{98E974DA-C650-4B88-B2F8-57AC7AE6C34F}.Release|Mixed Platforms.Build.0 = Release|x86
{98E974DA-C650-4B88-B2F8-57AC7AE6C34F}.Release|x86.ActiveCfg = Release|x86
{98E974DA-C650-4B88-B2F8-57AC7AE6C34F}.Release|x86.Build.0 = Release|x86
- {5BA65833-A99D-486C-8E74-C11A0713D44A}.Debug|Any CPU.ActiveCfg = Debug|x86
- {5BA65833-A99D-486C-8E74-C11A0713D44A}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {5BA65833-A99D-486C-8E74-C11A0713D44A}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {5BA65833-A99D-486C-8E74-C11A0713D44A}.Debug|x86.ActiveCfg = Debug|x86
- {5BA65833-A99D-486C-8E74-C11A0713D44A}.Debug|x86.Build.0 = Debug|x86
- {5BA65833-A99D-486C-8E74-C11A0713D44A}.Release|Any CPU.ActiveCfg = Release|x86
- {5BA65833-A99D-486C-8E74-C11A0713D44A}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {5BA65833-A99D-486C-8E74-C11A0713D44A}.Release|Mixed Platforms.Build.0 = Release|x86
- {5BA65833-A99D-486C-8E74-C11A0713D44A}.Release|x86.ActiveCfg = Release|x86
- {5BA65833-A99D-486C-8E74-C11A0713D44A}.Release|x86.Build.0 = Release|x86
+ {0C47648F-8751-4A71-98ED-A3D0845627E2}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {0C47648F-8751-4A71-98ED-A3D0845627E2}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {0C47648F-8751-4A71-98ED-A3D0845627E2}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {0C47648F-8751-4A71-98ED-A3D0845627E2}.Debug|x86.ActiveCfg = Debug|x86
+ {0C47648F-8751-4A71-98ED-A3D0845627E2}.Debug|x86.Build.0 = Debug|x86
+ {0C47648F-8751-4A71-98ED-A3D0845627E2}.Release|Any CPU.ActiveCfg = Release|x86
+ {0C47648F-8751-4A71-98ED-A3D0845627E2}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {0C47648F-8751-4A71-98ED-A3D0845627E2}.Release|Mixed Platforms.Build.0 = Release|x86
+ {0C47648F-8751-4A71-98ED-A3D0845627E2}.Release|x86.ActiveCfg = Release|x86
+ {0C47648F-8751-4A71-98ED-A3D0845627E2}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/MudGame/..svnbridge/.svnbridge b/MudGame/..svnbridge/.svnbridge
new file mode 100644
index 0000000..25ee1ea
--- /dev/null
+++ b/MudGame/..svnbridge/.svnbridge
@@ -0,0 +1,2 @@
+svn:ignoreobj
+
\ No newline at end of file
diff --git a/MudGame/MudGame.csproj b/MudGame/MudGame.csproj
new file mode 100644
index 0000000..0fc70d9
--- /dev/null
+++ b/MudGame/MudGame.csproj
@@ -0,0 +1,63 @@
+
+
+
+ Debug
+ x86
+ 8.0.30703
+ 2.0
+ {0C47648F-8751-4A71-98ED-A3D0845627E2}
+ Exe
+ Properties
+ MudGame
+ MudGame
+ v4.0
+ Client
+ 512
+
+
+ x86
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ x86
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {498943A8-DF5A-4DB0-B506-0BFF44788657}
+ MudEngine
+
+
+
+
+
\ No newline at end of file
diff --git a/MudGame/Program.cs b/MudGame/Program.cs
new file mode 100644
index 0000000..a23da9b
--- /dev/null
+++ b/MudGame/Program.cs
@@ -0,0 +1,147 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.IO;
+using System.Net.Sockets;
+using System.Text;
+
+using MudEngine.FileSystem;
+using MudEngine.GameManagement;
+using MudEngine.GameObjects.Characters;
+using MudEngine.Scripting;
+
+namespace MudGame
+{
+ static class Program
+ {
+ const string SettingsFile = "Settings.ini";
+
+ static void Main(string[] args)
+ {
+
+ Log.Write("Launching...");
+ ScriptEngine scriptEngine;
+ Game game;
+
+ //Re-create the settings file if it is missing
+ if (!File.Exists(SettingsFile))
+ {
+ Log.Write("Settings.ini missing!");
+ FileManager.WriteLine(SettingsFile, "Scripts", "ScriptPath");
+ FileManager.WriteLine(SettingsFile, ".cs", "ScriptExtension");
+ FileManager.WriteLine(SettingsFile, "True", "ServerEnabled");
+ Log.Write("Settings.ini re-created with default values");
+ }
+
+ if (FileManager.GetData(SettingsFile, "ServerEnabled").ToLower() == "false")
+ Log.IsVerbose = true;
+ else if (FileManager.GetData(SettingsFile, "ServerEnabled").ToLower() == "")
+ Log.IsVerbose = false;
+ else
+ Log.IsVerbose = false;
+
+ Log.Write("Loading settings...");
+ scriptEngine = new ScriptEngine(new Game(), ScriptEngine.ScriptTypes.SourceFiles);
+ scriptEngine.ScriptPath = FileManager.GetData(SettingsFile, "ScriptPath");
+ scriptEngine.ScriptExtension = FileManager.GetData(SettingsFile, "ScriptExtension");
+
+ //scriptEngine.CompileScripts();
+ Log.Write("Initializing Script Engine for Script Compilation...");
+ scriptEngine.Initialize();
+
+ GameObject obj = scriptEngine.GetObjectOf("Game");
+ Console.WriteLine(Log.GetMessages());
+ Log.FlushMessages();
+
+ if (obj == null)
+ {
+ Log.Write("Setting up the Default Engine Game Manager...");
+ game = new Game();
+ obj = new GameObject(game, "Game");
+ scriptEngine = new ScriptEngine((Game)obj.Instance, ScriptEngine.ScriptTypes.Assembly);
+ }
+ else
+ {
+ Log.Write("Setting up " + obj.GetProperty().GameTitle + " Manager...");
+ game = (Game)obj.Instance;
+ scriptEngine = new ScriptEngine(game, ScriptEngine.ScriptTypes.Assembly);
+ }
+ scriptEngine.ScriptPath = FileManager.GetDataPath(SaveDataTypes.Root);
+ //Force TCP
+ game.ServerType = ProtocolType.Tcp;
+
+ //Setup the scripting engine and load our script library
+ //MUST be called before game.Start()
+ //scriptEngine.Initialize();
+ //game.scriptEngine = scriptEngine; //Pass this script engine off to the game to use now.
+ Log.Write("Starting " + obj.GetProperty().GameTitle + "...");
+ Console.WriteLine(Log.GetMessages());
+ Log.FlushMessages();
+
+ //Server is only enabled if the option is in the settings file
+ //Allows developers to remove the option from the settings file and letting
+ //people host multiplayer games with the singleplayer MUD.
+ //People won't know that it's an option if the option doesn't exist so if no
+ //option is found in the sttings file, then we assume offline play.
+ if (FileManager.GetData(SettingsFile, "ServerEnabled").ToLower() == "false")
+ game.IsMultiplayer = false;
+ else if (FileManager.GetData(SettingsFile, "ServerEnabled").ToLower() == "")
+ game.IsMultiplayer = false;
+ else
+ game.IsMultiplayer = true;
+
+ game.Start();
+
+ //Make sure the Game is in fact running.
+ if (!game.IsRunning)
+ {
+ Console.WriteLine("Error starting game!\nReview Log file for details.");
+ return;
+ }
+
+ //If the game isn't in multiplayer mode, then the server doesn't create an instance of the players
+ //We need to make sure that the Game created one. The default game handles this, but inherited Game
+ //scripts might miss this, so we check for it.
+ if (!game.IsMultiplayer)
+ {
+ if ((game.PlayerCollection[0] == null) || (game.PlayerCollection[0].Name == "New BaseCharacter"))
+ {
+ Console.WriteLine("Error! No player available for creation!");
+ return;
+ }
+ }
+
+
+ DateTime serverTime = new DateTime();
+ DateTime systemTime = DateTime.Now;
+
+ int lastSaveGap = 0;
+
+ while (game.IsRunning)
+ {
+ if (lastSaveGap == 30)
+ {
+ game.Save();
+ lastSaveGap = 0;
+ }
+
+ if (serverTime.Minute != DateTime.Now.Minute)
+ {
+ serverTime = DateTime.Now;
+ lastSaveGap++;
+ }
+
+ if (game.IsMultiplayer)
+ {
+ Console.Write(Log.GetMessages());
+ Log.FlushMessages();
+ System.Threading.Thread.Sleep(1);
+ }
+ else
+ {
+ game.PlayerCollection[0].ExecuteCommand(Console.ReadLine());
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/MudGame/Properties/AssemblyInfo.cs b/MudGame/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..6931102
--- /dev/null
+++ b/MudGame/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("MudGame")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("MudGame")]
+[assembly: AssemblyCopyright("Copyright © 2010")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("716b9b06-926f-432b-a5ff-6fd49b93d000")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]