Mud Engine:

- Fixed a bug within MudScriptCompiler that prevented it from using standard .NET Types (would only support C# keywords).
 - Fixed a bug within MudScriptCompiler that prevented it from accessing Engine Type's from within Scripts.

Mud Game:
 - Changed all of the C# keywords (string, bool) back to .NET, cross-language keywords (String, Boolean).
   Example Scripts will compile regardless of what compiler is used to within the MudScriptCompiler.
This commit is contained in:
Scionwest_cp 2011-05-02 18:29:14 -07:00
parent 402be52e31
commit 7a0d1c5a74
11 changed files with 21 additions and 20 deletions

View file

@ -60,10 +60,9 @@ namespace MudEngine.Scripting
//Make sure we have a compiler version supplied. //Make sure we have a compiler version supplied.
if (!CompilerOptions.ContainsKey("CompilerVersion")) if (!CompilerOptions.ContainsKey("CompilerVersion"))
CompilerOptions.Add("CompilerVersion", "v4.0"); CompilerOptions.Add("CompilerVersion", "v4.0");
//Instance a reference to the C# code provider, this is what will perform the compiling. //Instance a reference to the C# code provider, this is what will perform the compiling.
CSharpCodeProvider provider = new CSharpCodeProvider(CompilerOptions); CSharpCodeProvider provider = new CSharpCodeProvider(CompilerOptions);
//Create an array of script files found within the ScriptRepository matching the ScriptExtension properties. //Create an array of script files found within the ScriptRepository matching the ScriptExtension properties.
String[] baseScripts = Directory.GetFiles(scriptRepository, "*" + this.ScriptExtension, SearchOption.AllDirectories); String[] baseScripts = Directory.GetFiles(scriptRepository, "*" + this.ScriptExtension, SearchOption.AllDirectories);
String modifiedScriptsPath = "temp"; String modifiedScriptsPath = "temp";
@ -75,6 +74,7 @@ namespace MudEngine.Scripting
"using System.Collections.Generic;", "using System.Collections.Generic;",
"using System.Text;", "using System.Text;",
"using System.Linq;", "using System.Linq;",
"using MudEngine.Commands;",
"using MudEngine.GameObjects;", "using MudEngine.GameObjects;",
"using MudEngine.GameObjects.Characters;", "using MudEngine.GameObjects.Characters;",
"using MudEngine.GameObjects.Environment;", "using MudEngine.GameObjects.Environment;",
@ -118,7 +118,8 @@ namespace MudEngine.Scripting
String[] ConvertedScripts = Directory.GetFiles("temp", "*" + this.ScriptExtension, SearchOption.AllDirectories); String[] ConvertedScripts = Directory.GetFiles("temp", "*" + this.ScriptExtension, SearchOption.AllDirectories);
//Compile the scripts and provide the Results property with a reference to the compilation results. //Compile the scripts and provide the Results property with a reference to the compilation results.
Results = provider.CompileAssemblyFromFile(param, baseScripts); param.GenerateInMemory = false;
Results = provider.CompileAssemblyFromFile(param, ConvertedScripts);
System.IO.Directory.Delete(modifiedScriptsPath, true); System.IO.Directory.Delete(modifiedScriptsPath, true);
//if the compiler has errors, return false. //if the compiler has errors, return false.

View file

@ -35,7 +35,7 @@ public class CommandCreate : IGameCommand
/// </summary> /// </summary>
public CommandCreate() public CommandCreate()
{ {
Help = new List<string>(); Help = new List<String>();
Help.Add("Provides Admins the ability to create content dynamically within the game world."); Help.Add("Provides Admins the ability to create content dynamically within the game world.");
Help.Add("Content is created at run-time while the server/game is running and players are connected."); Help.Add("Content is created at run-time while the server/game is running and players are connected.");
Help.Add("Newly created content will be available for players to use/traverse immediately after creation is completed."); Help.Add("Newly created content will be available for players to use/traverse immediately after creation is completed.");
@ -62,7 +62,7 @@ public class CommandCreate : IGameCommand
return; return;
} }
//Split the supplied string up. It wil give us an array of strings with the supplied //Split the supplied String up. It wil give us an array of strings with the supplied
//object names if the admin has specified environment objects for creation. //object names if the admin has specified environment objects for creation.
String[] env = command.Substring("Create ".Length).Split('>'); String[] env = command.Substring("Create ".Length).Split('>');

View file

@ -30,7 +30,7 @@ class CommandCreateRoom : IGameCommand
/// </summary> /// </summary>
public CommandCreateRoom() public CommandCreateRoom()
{ {
Help = new List<string>(); Help = new List<String>();
Help.Add("Creates a Room within the Admin's current Realm>Zone"); Help.Add("Creates a Room within the Admin's current Realm>Zone");
} }

View file

@ -31,7 +31,7 @@ public class CommandLinkRoom : IGameCommand
public CommandLinkRoom() public CommandLinkRoom()
{ {
//Instance the help collection and add our help information to it. //Instance the help collection and add our help information to it.
Help = new List<string>(); Help = new List<String>();
Help.Add("Use this to link two previously created Rooms together."); Help.Add("Use this to link two previously created Rooms together.");
//Incase Admins try to use the command, they will know that it's broken. //Incase Admins try to use the command, they will know that it's broken.
//Don't convert this class into a Script until it is fully completed. //Don't convert this class into a Script until it is fully completed.
@ -64,7 +64,7 @@ public class CommandLinkRoom : IGameCommand
player.Send("2: Exit"); player.Send("2: Exit");
//Read the input from the Admin. //Read the input from the Admin.
string input = player.ReadInput(); String input = player.ReadInput();
Int32 value = 0; Int32 value = 0;
//Attempt to convert their input from a String into a numerical value. //Attempt to convert their input from a String into a numerical value.
@ -365,7 +365,7 @@ public class CommandLinkRoom : IGameCommand
//to the screen for the user to see and select from. //to the screen for the user to see and select from.
foreach (Int32 v in values) foreach (Int32 v in values)
{ {
//Since enum values are not strings, we can't simply assign a string value to the enum. //Since enum values are not strings, we can't simply assign a String value to the enum.
//The enum needs to be queried to retrieve a value that matches that of 'v' and convert it to a String //The enum needs to be queried to retrieve a value that matches that of 'v' and convert it to a String
String displayName = Enum.GetName(typeof(AvailableTravelDirections), v); String displayName = Enum.GetName(typeof(AvailableTravelDirections), v);
@ -381,7 +381,7 @@ public class CommandLinkRoom : IGameCommand
//Loop through each value found in our original array or values acquired from the AvailableTravelDirections enum. //Loop through each value found in our original array or values acquired from the AvailableTravelDirections enum.
foreach (Int32 v in values) foreach (Int32 v in values)
{ {
//Since enum values are not strings, we can't simply assign a string value to the enum. //Since enum values are not strings, we can't simply assign a String value to the enum.
//The enum needs to be queried to retrieve a value that matches that of 'v' and convert it to a String //The enum needs to be queried to retrieve a value that matches that of 'v' and convert it to a String
String displayName = Enum.GetName(typeof(AvailableTravelDirections), v); String displayName = Enum.GetName(typeof(AvailableTravelDirections), v);

View file

@ -24,7 +24,7 @@ public class CommandList : IGameCommand
public CommandList() public CommandList()
{ {
Help = new List<string>(); Help = new List<String>();
Help.Add("Using the List command, you can view a generated list of filenames that pertain to a supplied object type."); Help.Add("Using the List command, you can view a generated list of filenames that pertain to a supplied object type.");
Help.Add("Usage: List 'ItemType'"); Help.Add("Usage: List 'ItemType'");
Help.Add("Usage: List 'ItemName>ItemType'"); Help.Add("Usage: List 'ItemName>ItemType'");

View file

@ -24,7 +24,7 @@ public class CommandTeleport : IGameCommand
public CommandTeleport() public CommandTeleport()
{ {
Help = new List<string>(); Help = new List<String>();
Help.Add("The Teleport command will teleport a player to a specified Room, regardless of where they are at."); Help.Add("The Teleport command will teleport a player to a specified Room, regardless of where they are at.");
Help.Add("Usage: Teleport playername FullyQualifiedRoomPath"); Help.Add("Usage: Teleport playername FullyQualifiedRoomPath");
Help.Add("Example: Teleport Billy MyRealm>MyZone>MyRoom"); Help.Add("Example: Teleport Billy MyRealm>MyZone>MyRoom");

View file

@ -32,7 +32,7 @@ public class CommandExit : IGameCommand
//Instance the help collection and add our help information to it. //Instance the help collection and add our help information to it.
//Typically the Help content is placed within the constructor, but this particular help document //Typically the Help content is placed within the constructor, but this particular help document
//needs to access information from the player, so we will build our Help collection in the Execute command. //needs to access information from the player, so we will build our Help collection in the Execute command.
Help = new List<string>(); Help = new List<String>();
Help.Add("Exits the game."); Help.Add("Exits the game.");
} }

View file

@ -29,7 +29,7 @@ public class CommandGetTime : IGameCommand
public CommandGetTime() public CommandGetTime()
{ {
//Instance the help collection and add our help information to it. //Instance the help collection and add our help information to it.
Help = new List<string>(); Help = new List<String>();
Help.Add("Gives you the current time and date in the game world."); Help.Add("Gives you the current time and date in the game world.");
} }

View file

@ -42,7 +42,7 @@ public class CommandHelp : IGameCommand
{ {
//Check if we have a topic that the player wants help with. If there is nothing after the Help word //Check if we have a topic that the player wants help with. If there is nothing after the Help word
//in the command, then the user didn't supply us with a topic. //in the command, then the user didn't supply us with a topic.
string topic = command.Substring("Help".Length); String topic = command.Substring("Help".Length);
//if the user did not supply us with a topic, we will print every command currently loaded in the engine //if the user did not supply us with a topic, we will print every command currently loaded in the engine
//and tell the user how they can access help information regarding that command. //and tell the user how they can access help information regarding that command.
@ -70,7 +70,7 @@ public class CommandHelp : IGameCommand
else else
topic = topic.Trim(); topic = topic.Trim();
//Get a reference to the command the player wants help with. We must insert the 'Command' string into the topic, //Get a reference to the command the player wants help with. We must insert the 'Command' String into the topic,
//as all Commands start with the word Command, however the player never sees the word Command. It's internal only. //as all Commands start with the word Command, however the player never sees the word Command. It's internal only.
IGameCommand gc = CommandEngine.GetCommand("Command" + topic); IGameCommand gc = CommandEngine.GetCommand("Command" + topic);

View file

@ -48,7 +48,7 @@ public class CommandSay : IGameCommand
return; //nothing to say, don't say anything at all. return; //nothing to say, don't say anything at all.
} }
//Get the message out of the command string. //Get the message out of the command String.
String message = command.Substring("Say ".Length); String message = command.Substring("Say ".Length);
//Query the game world and find what players are within the same location as the chatting player. //Query the game world and find what players are within the same location as the chatting player.

View file

@ -35,7 +35,7 @@ public class CommandWalk : IGameCommand
Help.Add("You may use the Look command to see a description of the current Room, and decide where you would like to walk."); Help.Add("You may use the Look command to see a description of the current Room, and decide where you would like to walk.");
Help.Add("Usage: Walk 'Direction' where Direction may equal one of the following:"); Help.Add("Usage: Walk 'Direction' where Direction may equal one of the following:");
//We will construct a string that contains all of the available travel directions for the player. //We will construct a String that contains all of the available travel directions for the player.
StringBuilder directions = new StringBuilder(); StringBuilder directions = new StringBuilder();
//Store a array of existing values within the AvailableTravelDirection enum. //Store a array of existing values within the AvailableTravelDirection enum.
@ -46,11 +46,11 @@ public class CommandWalk : IGameCommand
//to the screen for the user to see and select from. //to the screen for the user to see and select from.
foreach (Int32 v in values) foreach (Int32 v in values)
{ {
//Since enum values are not strings, we can't simply assign a string value to the enum. //Since enum values are not strings, we can't simply assign a String value to the enum.
//The enum needs to be queried to retrieve a value that matches that of 'v' and convert it to a String //The enum needs to be queried to retrieve a value that matches that of 'v' and convert it to a String
String displayName = Enum.GetName(typeof(AvailableTravelDirections), v); String displayName = Enum.GetName(typeof(AvailableTravelDirections), v);
//Add the current travel direction to our string for later use. //Add the current travel direction to our String for later use.
directions.Append(displayName + ", "); directions.Append(displayName + ", ");
} }