/// </summary>\r
/// <param name="code">The script code.</param>\r
/// <param name="game">A game reference.</param>\r
- public Script(string code, Game game)\r
+ public Script(string code, object bindings)\r
{\r
- mImpl = new Impl(game);\r
+ mBindings = bindings;\r
\r
string[] functions = Parse.List(code);\r
if (functions != null)\r
return result;\r
}\r
\r
+ public void Reset()\r
+ {\r
+ mIsRunning = false;\r
+\r
+ }\r
+\r
#endregion\r
\r
\r
object[] args = new object[2];\r
args[0] = player;\r
args[1] = mFunctions[index].Arguments;\r
- return (bool)typeof(Impl).InvokeMember(mFunctions[index].Name, BindingFlags.InvokeMethod, null, null, args);\r
+ return (bool)mBindings.GetType().InvokeMember(mFunctions[index].Name, BindingFlags.InvokeMethod, null, mBindings, args);\r
}\r
#pragma warning disable 0168\r
catch (System.MissingMethodException ex)\r
\r
#region Private Types\r
\r
- class Impl\r
- {\r
- public static bool True(Player player, string[] args)\r
- {\r
- return true;\r
- }\r
-\r
- public static bool False(Player player, string[] args)\r
- {\r
- return false;\r
- }\r
-\r
- public static bool Has(Player player, string[] args)\r
- {\r
- return false;\r
- }\r
-\r
- public static bool Print(Player player, string[] args)\r
- {\r
- foreach (string arg in args)\r
- {\r
- string line = Parse.String(arg);\r
- if (line != null) Console.WriteLine(line);\r
- }\r
- return true;\r
- }\r
-\r
-\r
- public Impl(Game game)\r
- {\r
- mGame = game;\r
- }\r
-\r
- Game mGame;\r
- }\r
-\r
class Function\r
{\r
public string Name { get { return mName; } }\r
\r
#region Private Variables\r
\r
- Impl mImpl;\r
+ object mBindings;\r
List<Function> mFunctions = new List<Function>();\r
bool mIsRunning;\r
int mRunningIndex;\r