Changes project wide with this check-in.
MudCompiler: No longer works. Needs to be re-wrote to support the new Alpha 2.0 engine MudDesigenr: Removed most of the forms since we are not working on it. Only form left is Project Manager, which will be removed shortly as well. MudGame: No longer runs. All of the source code was removed due to MudEngine Alpha 2.0 source changing drastically. MudEngine: Alpha 2.0 source code finally checked-in. It contains the full re-build of the engine. A lot of new abstract classes have been added.
This commit is contained in:
parent
5be2f9bf5b
commit
a365256d53
48 changed files with 2254 additions and 2021 deletions
|
@ -5,123 +5,13 @@ 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)
|
||||
{
|
||||
Game game = new Game();
|
||||
|
||||
//Re-create the settings file if it is missing. Don't push any log messages until we know that this is
|
||||
//verbose or not
|
||||
Log.Write("Loading Settings...", false);
|
||||
if (!File.Exists(SettingsFile))
|
||||
{
|
||||
Log.Write("Settings.ini missing!", false);
|
||||
FileManager.WriteLine(SettingsFile, "Scripts", "ScriptPath");
|
||||
FileManager.WriteLine(SettingsFile, ".cs", "ScriptExtension");
|
||||
FileManager.WriteLine(SettingsFile, "True", "ServerEnabled");
|
||||
Log.Write("Settings.ini re-created with default values", false);
|
||||
}
|
||||
|
||||
if (FileManager.GetData(SettingsFile, "ServerEnabled").ToLower() == "false")
|
||||
Log.IsVerbose = true;
|
||||
else if (FileManager.GetData(SettingsFile, "ServerEnabled").ToLower() == "")
|
||||
Log.IsVerbose = false;
|
||||
else
|
||||
Log.IsVerbose = false;
|
||||
|
||||
//Get are cached log messages and go forward from here.
|
||||
Console.Write(Log.GetMessages());
|
||||
Log.FlushMessages();
|
||||
|
||||
Log.Write("Launching...", true);
|
||||
|
||||
//Search for a custom Game Type before we launch our game.
|
||||
//Compile the scripts
|
||||
rScripting.CompileEngine compiler = new rScripting.CompileEngine(".cs");
|
||||
compiler.Compiler = "MudScriptCompiler";
|
||||
if (!compiler.Compile("Scripts"))
|
||||
{
|
||||
Log.Write("Failed compiling script files.");
|
||||
Log.Write(compiler.Errors);
|
||||
}
|
||||
|
||||
//If there were errors during compilation, then skip the custom scripts and use the default Game Type.
|
||||
if (!compiler.HasErrors)
|
||||
{
|
||||
//Search the scripts for a Type inheriting from Game
|
||||
rScripting.LateBinding.ScriptFactory factory = new rScripting.LateBinding.ScriptFactory(compiler.CompiledAssembly);
|
||||
foreach (Type t in compiler.CompiledAssembly.GetTypes())
|
||||
{
|
||||
if (t.BaseType.Name == "Game")
|
||||
{
|
||||
rScripting.LateBinding.ScriptObject obj = factory.GetScript(t.Name);
|
||||
game = (Game)obj.Instance;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//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;
|
||||
|
||||
//Start the game.
|
||||
game.Start();
|
||||
|
||||
//Make sure the Game is in fact running.
|
||||
if (!game.IsRunning)
|
||||
{
|
||||
Log.Write("Error starting game!\nReview Log file for details.", true);
|
||||
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.GetPlayerCollection()[0] == null) || (game.GetPlayerCollection()[0].Name == "New BaseCharacter"))
|
||||
{
|
||||
Log.Write("Error! No player available for creation!", true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Console.Title = game.GameTitle;
|
||||
|
||||
if (game.IsMultiplayer)
|
||||
Console.Title += " server running.";
|
||||
|
||||
try
|
||||
{
|
||||
while (game.IsRunning)
|
||||
{
|
||||
game.Update();
|
||||
System.Threading.Thread.Sleep(1);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Write("Critical Error! " + ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue