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
88
MudEngine/Runtime/ScriptObject.cs
Normal file
88
MudEngine/Runtime/ScriptObject.cs
Normal file
|
@ -0,0 +1,88 @@
|
|||
using System;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
|
||||
namespace MudEngine.Runtime
|
||||
{
|
||||
public class ScriptObject
|
||||
{
|
||||
public Object Instance { get; set; }
|
||||
|
||||
public ScriptObject(Object instance)
|
||||
{
|
||||
if (instance == null)
|
||||
Instance = new Object();
|
||||
else
|
||||
Instance = instance;
|
||||
}
|
||||
|
||||
~ScriptObject()
|
||||
{
|
||||
//TODO: Add ability to call a Shutdown() method within this Instance.
|
||||
Instance = null;
|
||||
}
|
||||
|
||||
public void SetProperty(String propertyName, object propertyValue)
|
||||
{
|
||||
PropertyInfo propertyInfo = Instance.GetType().GetProperty(propertyName);
|
||||
|
||||
if (propertyValue is String)
|
||||
{
|
||||
if (propertyInfo.PropertyType.Name is String)
|
||||
{
|
||||
propertyInfo.SetValue(Instance, propertyValue, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public object GetProperty(String propertyName)
|
||||
{
|
||||
String[] tokens = propertyName.Split('.');
|
||||
PropertyInfo previousProperty = Instance.GetType().GetProperty(tokens[0]);
|
||||
|
||||
return previousProperty.GetValue(Instance, null);
|
||||
}
|
||||
|
||||
public dynamic GetProperty()
|
||||
{
|
||||
return Instance;
|
||||
}
|
||||
|
||||
public object GetField(String propertyName)
|
||||
{
|
||||
String[] tokens = propertyName.Split('.');
|
||||
FieldInfo previousField = Instance.GetType().GetField(tokens[0]);
|
||||
|
||||
return previousField.GetValue(Instance);
|
||||
}
|
||||
|
||||
public dynamic GetField()
|
||||
{
|
||||
return Instance;
|
||||
}
|
||||
|
||||
public Object InvokeMethod(String methodName)
|
||||
{
|
||||
return InvokeMethod(methodName, null);
|
||||
}
|
||||
|
||||
public Object InvokeMethod(String methodName, params Object[] parameters)
|
||||
{
|
||||
MethodInfo method = Instance.GetType().GetMethod(methodName);
|
||||
|
||||
try
|
||||
{
|
||||
if (parameters == null || parameters.Length == 0)
|
||||
return method.Invoke(Instance, null);
|
||||
else
|
||||
return method.Invoke(Instance, parameters);
|
||||
}
|
||||
catch
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append("Error invoking method. Does the method exist?");
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue