Began the pain staking process of replacing the old and ugly Mud Designer Script Engine with my new rScripting Engine.
rScripting can be found on Codeplex at http://rScript.Codeplex.com which is a complete script engine. Mud Designer will make use of it, and will allow me to just work on the Mud Designer engine, as my rScript is complete. I still had quiet a bit of work to do with the Mud Designers Script System.
This commit is contained in:
parent
f446c754fb
commit
ee532c5a03
6 changed files with 58 additions and 13 deletions
|
@ -76,8 +76,9 @@ namespace MudDesigner
|
|||
{
|
||||
String Env = _Game.DataPaths.Environment.Replace(e.OldValue.ToString(), e.ChangedItem.Value.ToString());
|
||||
String plyr = _Game.DataPaths.Players.Replace(e.OldValue.ToString(), e.ChangedItem.Value.ToString());
|
||||
String scrpt = _Game.DataPaths.Scripts.Replace(e.OldValue.ToString(), e.ChangedItem.Value.ToString());
|
||||
|
||||
_Game.DataPaths = new SaveDataPaths(Env, plyr);
|
||||
_Game.DataPaths = new SaveDataPaths(Env, plyr,scrpt);
|
||||
|
||||
_IsRenaming = true;
|
||||
_OldName = e.OldValue.ToString();
|
||||
|
|
|
@ -106,7 +106,7 @@ namespace MudDesigner
|
|||
|
||||
_Game.GameTitle = input.Input;
|
||||
//Setup save data paths.
|
||||
_Game.DataPaths = new SaveDataPaths(Path.Combine("Projects", _Game.GameTitle, _Game.DataPaths.Environment), Path.Combine("Projects", _Game.GameTitle, _Game.DataPaths.Players));
|
||||
_Game.DataPaths = new SaveDataPaths(Path.Combine("Projects", _Game.GameTitle, _Game.DataPaths.Environment), Path.Combine("Projects", _Game.GameTitle, _Game.DataPaths.Players), Path.Combine("Projects", _Game.GameTitle, _Game.DataPath.Scripts));
|
||||
|
||||
_Game.Save();
|
||||
|
||||
|
|
|
@ -30,13 +30,28 @@ namespace MudEngine.FileSystem
|
|||
_Environment = value;
|
||||
}
|
||||
}
|
||||
|
||||
public String Scripts
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Scripts;
|
||||
}
|
||||
set
|
||||
{
|
||||
_Scripts = value;
|
||||
}
|
||||
}
|
||||
|
||||
private String _Players;
|
||||
private String _Environment;
|
||||
private String _Scripts;
|
||||
|
||||
public SaveDataPaths(String environment, String players)
|
||||
public SaveDataPaths(String environment, String players, String scripts)
|
||||
{
|
||||
_Players = players;
|
||||
_Environment = environment;
|
||||
_Scripts = scripts;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,6 +59,9 @@ namespace MudEngine.GameManagement
|
|||
[Browsable(false)]
|
||||
public ScriptEngine scriptEngine { get; internal set; }
|
||||
|
||||
[Browsable(false)]
|
||||
public rScripting.CompileEngine Scripting { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or Sets the path to the current project
|
||||
/// </summary>
|
||||
|
@ -198,13 +201,14 @@ namespace MudEngine.GameManagement
|
|||
{
|
||||
//Instance all of the Games Objects.
|
||||
CurrencyList = new List<Currency>();
|
||||
scriptEngine = new Scripting.ScriptEngine(this);
|
||||
scriptEngine = new Scripting.ScriptEngine(this); //TODO - Remove
|
||||
Scripting = new rScripting.CompileEngine(".cs");
|
||||
World = new GameWorld(this);
|
||||
WorldTime = new GameTime(this);
|
||||
InitialRealm = new Realm(this);
|
||||
|
||||
//Prepare the Save Paths for all of our Game objects.
|
||||
DataPaths = new SaveDataPaths("World", "Players");
|
||||
DataPaths = new SaveDataPaths("World", "Players", "Scripts");
|
||||
|
||||
//Setup default settings for the Game
|
||||
GameTitle = "New Game";
|
||||
|
@ -242,9 +246,18 @@ namespace MudEngine.GameManagement
|
|||
if (!Directory.Exists(DataPaths.Players))
|
||||
Directory.CreateDirectory(DataPaths.Players);
|
||||
|
||||
//Load both pre-compiled and file based scripts
|
||||
scriptEngine.ScriptType = ScriptEngine.ScriptTypes.Both;
|
||||
scriptEngine.Initialize();
|
||||
//Load both pre-compiled and file based scripts - TODO - Remove
|
||||
//scriptEngine.ScriptType = ScriptEngine.ScriptTypes.Both;
|
||||
//scriptEngine.Initialize();
|
||||
|
||||
//Instance the new scripting engine
|
||||
Scripting.Compiler = "C#";
|
||||
Scripting.AddAssemblyReference("MudEngine.dll");
|
||||
if (!Scripting.Compile(DataPaths.Scripts))
|
||||
{
|
||||
Log.Write("CRITICAL ERROR: Game Script Repository failed to compile!");
|
||||
Log.Write(Scripting.Errors);
|
||||
}
|
||||
|
||||
/*
|
||||
* If a custom player script is loaded in the script engine, then the base commands are
|
||||
|
@ -273,7 +286,7 @@ namespace MudEngine.GameManagement
|
|||
}
|
||||
else //Not multiplayer so we change the save locations
|
||||
{
|
||||
SaveDataPaths paths = new SaveDataPaths("World", "Player");
|
||||
SaveDataPaths paths = new SaveDataPaths("World", "Player", "Scripts");
|
||||
DataPaths = paths;
|
||||
PlayerCollection[0].Initialize();
|
||||
}
|
||||
|
@ -371,6 +384,8 @@ namespace MudEngine.GameManagement
|
|||
FileManager.WriteLine(filename, this.CompanyName, "CompanyName");
|
||||
FileManager.WriteLine(filename, this.DataPaths.Environment, "DataPathEnvironment");
|
||||
FileManager.WriteLine(filename, this.DataPaths.Players, "DataPathPlayers");
|
||||
FileManager.WriteLine(filename, this.DataPaths.Scripts, "DataPathScripts");
|
||||
|
||||
FileManager.WriteLine(filename, this.GameTitle, "GameTitle");
|
||||
FileManager.WriteLine(filename, this.HideRoomNames.ToString(), "HideRoomNames");
|
||||
|
||||
|
@ -417,7 +432,7 @@ namespace MudEngine.GameManagement
|
|||
this.BaseCurrencyAmount = Convert.ToInt32(FileManager.GetData(filename, "BaseCurrencyAmount"));
|
||||
this.BaseCurrencyName = FileManager.GetData(filename, "BaseCurrencyName");
|
||||
this.CompanyName = FileManager.GetData(filename, "CompanyName");
|
||||
this.DataPaths = new SaveDataPaths(FileManager.GetData(filename, "DataPathEnvironment"), FileManager.GetData(filename, "DataPathPlayers"));
|
||||
this.DataPaths = new SaveDataPaths(FileManager.GetData(filename, "DataPathEnvironment"), FileManager.GetData(filename, "DataPathPlayers"), FileManager.GetData(filename, "DataPathScripts"));
|
||||
this.GameTitle = FileManager.GetData(filename, "GameTitle");
|
||||
this.HideRoomNames = Convert.ToBoolean(FileManager.GetData(filename, "HideRoomNames"));
|
||||
this.InitialRealm = new Realm(this);
|
||||
|
|
|
@ -36,6 +36,9 @@
|
|||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="rScripting">
|
||||
<HintPath>..\..\rScript\rScripting\bin\Release\rScripting.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
|
|
|
@ -15,10 +15,11 @@ namespace MudGame
|
|||
static class Program
|
||||
{
|
||||
const String SettingsFile = "Settings.ini";
|
||||
static dynamic _Game;
|
||||
|
||||
static void Main(String[] args)
|
||||
{
|
||||
dynamic game = new Game();
|
||||
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
|
||||
|
@ -44,8 +45,14 @@ namespace MudGame
|
|||
Log.FlushMessages();
|
||||
|
||||
Log.Write("Launching...", true);
|
||||
/* - Replaced with new startup sequence.
|
||||
* Engine uses my rScript Scripting Engine instead of a custom Mud Designer script Engine.
|
||||
* Easier to maintain, and works better.
|
||||
*
|
||||
* TODO - Remove Old Script Engine code.
|
||||
*
|
||||
ScriptEngine scriptEngine;
|
||||
scriptEngine = new ScriptEngine(new Game(), ScriptEngine.ScriptTypes.Both);
|
||||
scriptEngine = new ScriptEngine(game, ScriptEngine.ScriptTypes.Both);
|
||||
|
||||
//scriptEngine.CompileScripts();
|
||||
Log.Write("Initializing Script Engine for Script Compilation...", true);
|
||||
|
@ -73,11 +80,14 @@ namespace MudGame
|
|||
//MUST be called before game.Start()
|
||||
//scriptEngine.Initialize();
|
||||
//game.scriptEngine = scriptEngine; //Pass this script engine off to the game to use now.
|
||||
|
||||
|
||||
Log.Write("");
|
||||
Log.Write("Starting " + obj.GetProperty().GameTitle + "...", true);
|
||||
Log.Write("");
|
||||
//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
|
||||
|
@ -91,6 +101,7 @@ namespace MudGame
|
|||
else
|
||||
game.IsMultiplayer = true;
|
||||
|
||||
//Start the game.
|
||||
game.Start();
|
||||
|
||||
//Make sure the Game is in fact running.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue