MudEngine:
- CommandLogin no longer invokes the Look Command - Fixed CommandWalk no longer telling the player an invalid direction message when trying to walk to someplace that does not exist. - Moved PlayerCollection array referencing from Game.Start() to the Game's constructor so that scripts may change the player class during its startup. - BaseCharacter now invokes the Look command after Login command is completed. - ScriptEngine no longer sets the output path for a compiled script if the script is designated as compile to memory. - Fixed custom players not being able to access their own Methods and Properties during runtime. MudServer: - Additional Console Log Messages added.
This commit is contained in:
parent
88378584ac
commit
8b1be3d1eb
6 changed files with 34 additions and 51 deletions
|
@ -62,7 +62,8 @@ namespace MudEngine.Commands
|
||||||
player.Load(savedFile);
|
player.Load(savedFile);
|
||||||
player.Send("Welcome back " + player.Name + "!");
|
player.Send("Welcome back " + player.Name + "!");
|
||||||
}
|
}
|
||||||
player.CommandSystem.ExecuteCommand("Look", player);
|
|
||||||
|
//player.CommandSystem.ExecuteCommand("Look", player); //Handled in BaseCharacter.Initialize() now.
|
||||||
return new CommandResults();
|
return new CommandResults();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,9 @@ namespace MudEngine.Commands
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new CommandResults("Unable to travel in that direction.");
|
player.Send("Unable to travel in that direction.");
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -227,6 +227,12 @@ namespace MudEngine.GameManagement
|
||||||
ServerType = ProtocolType.Tcp;
|
ServerType = ProtocolType.Tcp;
|
||||||
ServerPort = 555;
|
ServerPort = 555;
|
||||||
MaximumPlayers = 1000;
|
MaximumPlayers = 1000;
|
||||||
|
|
||||||
|
//Setup the player arrays
|
||||||
|
//used to be in Start
|
||||||
|
PlayerCollection = new BaseCharacter[MaximumPlayers];
|
||||||
|
for (int i = 0; i < MaximumPlayers; i++)
|
||||||
|
PlayerCollection[i] = new BaseCharacter(this);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -237,6 +243,9 @@ namespace MudEngine.GameManagement
|
||||||
public bool Start()
|
public bool Start()
|
||||||
{
|
{
|
||||||
Log.Write("Game Initializing...");
|
Log.Write("Game Initializing...");
|
||||||
|
if (!Directory.Exists(DataPaths.Players))
|
||||||
|
Directory.CreateDirectory(DataPaths.Players);
|
||||||
|
|
||||||
//First, compile and execute all of the script files.
|
//First, compile and execute all of the script files.
|
||||||
scriptEngine.ScriptType = ScriptEngine.ScriptTypes.SourceFiles;
|
scriptEngine.ScriptType = ScriptEngine.ScriptTypes.SourceFiles;
|
||||||
scriptEngine.Initialize();
|
scriptEngine.Initialize();
|
||||||
|
@ -365,11 +374,6 @@ namespace MudEngine.GameManagement
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void StartServer()
|
private void StartServer()
|
||||||
{
|
{
|
||||||
//This is handled by the Game() Constructor
|
|
||||||
//PlayerCollection = new List<BaseCharacter>(MaximumPlayers);
|
|
||||||
PlayerCollection = new BaseCharacter[MaximumPlayers];
|
|
||||||
for (int i = 0; i < MaximumPlayers; i++)
|
|
||||||
PlayerCollection[i] = new BaseCharacter(this);
|
|
||||||
Server = new Networking.Server();
|
Server = new Networking.Server();
|
||||||
Server.Initialize(ServerPort, ref PlayerCollection);
|
Server.Initialize(ServerPort, ref PlayerCollection);
|
||||||
Server.Start();
|
Server.Start();
|
||||||
|
|
|
@ -200,8 +200,6 @@ namespace MudEngine.GameObjects.Characters
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ExecuteCommand("Login");
|
|
||||||
|
|
||||||
//Set the players initial room
|
//Set the players initial room
|
||||||
if ((ActiveGame.InitialRealm == null) || (ActiveGame.InitialRealm.InitialZone == null) || (ActiveGame.InitialRealm.InitialZone.InitialRoom == null))
|
if ((ActiveGame.InitialRealm == null) || (ActiveGame.InitialRealm.InitialZone == null) || (ActiveGame.InitialRealm.InitialZone.InitialRoom == null))
|
||||||
{
|
{
|
||||||
|
@ -211,6 +209,9 @@ namespace MudEngine.GameObjects.Characters
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CurrentRoom = ActiveGame.InitialRealm.InitialZone.InitialRoom;
|
CurrentRoom = ActiveGame.InitialRealm.InitialZone.InitialRoom;
|
||||||
|
|
||||||
|
ExecuteCommand("Login");
|
||||||
|
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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -165,7 +165,9 @@ namespace MudEngine.Scripting
|
||||||
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)
|
||||||
param.OutputAssembly = Path.Combine(oldPath, "Scripts.dll");
|
param.OutputAssembly = Path.Combine(oldPath, "Scripts.dll");
|
||||||
|
|
||||||
param.IncludeDebugInformation = false;
|
param.IncludeDebugInformation = false;
|
||||||
param.TreatWarningsAsErrors = true;
|
param.TreatWarningsAsErrors = true;
|
||||||
|
|
||||||
|
@ -288,6 +290,9 @@ namespace MudEngine.Scripting
|
||||||
|
|
||||||
private void InitializeSourceFiles()
|
private void InitializeSourceFiles()
|
||||||
{
|
{
|
||||||
|
if (!Directory.Exists(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)
|
||||||
|
|
|
@ -17,6 +17,7 @@ namespace MudServer
|
||||||
{
|
{
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
|
Log.Write("Launching...");
|
||||||
ScriptEngine scriptEngine;
|
ScriptEngine scriptEngine;
|
||||||
Game game;
|
Game game;
|
||||||
|
|
||||||
|
@ -26,29 +27,32 @@ namespace MudServer
|
||||||
Log.Write("Settings.ini missing!");
|
Log.Write("Settings.ini missing!");
|
||||||
FileManager.WriteLine("Settings.ini", "Scripts", "ScriptPath");
|
FileManager.WriteLine("Settings.ini", "Scripts", "ScriptPath");
|
||||||
FileManager.WriteLine("Settings.ini", ".cs", "ScriptExtension");
|
FileManager.WriteLine("Settings.ini", ".cs", "ScriptExtension");
|
||||||
|
Log.Write("Settings.ini re-created with default values");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Log.Write("Loading settings...");
|
||||||
scriptEngine = new ScriptEngine(new Game(), ScriptEngine.ScriptTypes.SourceFiles);
|
scriptEngine = new ScriptEngine(new Game(), ScriptEngine.ScriptTypes.SourceFiles);
|
||||||
scriptEngine.ScriptPath = FileManager.GetData("Settings.ini", "ScriptPath");
|
scriptEngine.ScriptPath = FileManager.GetData("Settings.ini", "ScriptPath");
|
||||||
scriptEngine.ScriptExtension = FileManager.GetData("Settings.ini", "ScriptExtension");
|
scriptEngine.ScriptExtension = FileManager.GetData("Settings.ini", "ScriptExtension");
|
||||||
|
|
||||||
//scriptEngine.CompileScripts();
|
//scriptEngine.CompileScripts();
|
||||||
|
Log.Write("Initializing Script Engine for Script Compilation...");
|
||||||
scriptEngine.Initialize();
|
scriptEngine.Initialize();
|
||||||
|
|
||||||
GameObject obj = scriptEngine.GetObjectOf("Game");
|
GameObject obj = scriptEngine.GetObjectOf("Game");
|
||||||
Log.Write(Log.GetMessages());
|
Console.WriteLine(Log.GetMessages());
|
||||||
Log.FlushMessages();
|
Log.FlushMessages();
|
||||||
|
|
||||||
if (obj == null)
|
if (obj == null)
|
||||||
{
|
{
|
||||||
Log.Write("Setting up the Engine Game Manager...");
|
Log.Write("Setting up the Default Engine Game Manager...");
|
||||||
game = new Game();
|
game = new Game();
|
||||||
obj = new GameObject(game, "Game");
|
obj = new GameObject(game, "Game");
|
||||||
scriptEngine = new ScriptEngine((Game)obj.Instance, ScriptEngine.ScriptTypes.Assembly);
|
scriptEngine = new ScriptEngine((Game)obj.Instance, ScriptEngine.ScriptTypes.Assembly);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Log.Write("Setting up " + obj.GetProperty().GameTitle + " Manager...");
|
||||||
game = (Game)obj.Instance;
|
game = (Game)obj.Instance;
|
||||||
scriptEngine = new ScriptEngine(game, ScriptEngine.ScriptTypes.Assembly);
|
scriptEngine = new ScriptEngine(game, ScriptEngine.ScriptTypes.Assembly);
|
||||||
}
|
}
|
||||||
|
@ -60,6 +64,9 @@ namespace MudServer
|
||||||
//MUST be called before game.Start()
|
//MUST be called before game.Start()
|
||||||
//scriptEngine.Initialize();
|
//scriptEngine.Initialize();
|
||||||
//game.scriptEngine = scriptEngine; //Pass this script engine off to the game to use now.
|
//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();
|
||||||
|
|
||||||
game.Start();
|
game.Start();
|
||||||
|
|
||||||
|
@ -69,43 +76,6 @@ namespace MudServer
|
||||||
Log.FlushMessages();
|
Log.FlushMessages();
|
||||||
System.Threading.Thread.Sleep(1);
|
System.Threading.Thread.Sleep(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Game game = new Game();
|
|
||||||
Zeroth realm = new Zeroth(game);
|
|
||||||
|
|
||||||
realm.BuildZeroth();
|
|
||||||
|
|
||||||
//BaseCharacter serverAdmin = new BaseCharacter(game);
|
|
||||||
|
|
||||||
//Setup the game
|
|
||||||
game.AutoSave = true;
|
|
||||||
game.BaseCurrencyName = "Copper";
|
|
||||||
game.BaseCurrencyAmount = 1;
|
|
||||||
game.CompanyName = "Mud Designer";
|
|
||||||
game.DayLength = 60 * 8;
|
|
||||||
game.GameTitle = "Test Mud Project";
|
|
||||||
game.HideRoomNames = false;
|
|
||||||
game.PreCacheObjects = true;
|
|
||||||
game.ProjectPath = FileManager.GetDataPath(SaveDataTypes.Root);
|
|
||||||
game.TimeOfDay = Game.TimeOfDayOptions.Transition;
|
|
||||||
game.TimeOfDayTransition = 30;
|
|
||||||
game.Version = "0.1";
|
|
||||||
game.Website = "http://MudDesigner.Codeplex.com";
|
|
||||||
game.ServerType = ProtocolType.Tcp;
|
|
||||||
game.ServerPort = 555;
|
|
||||||
game.MaximumPlayers = 1000;
|
|
||||||
Game.IsDebug = false;
|
|
||||||
|
|
||||||
game.Start();
|
|
||||||
|
|
||||||
while (game.IsRunning)
|
|
||||||
{
|
|
||||||
Console.Write(Log.GetMessages());
|
|
||||||
Log.FlushMessages();
|
|
||||||
System.Threading.Thread.Sleep(1);
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue