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.
88 lines
2.5 KiB
C#
88 lines
2.5 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|