public bool EntityInvoke(Entity activator, Entity activatedEntity) { if (mapScript != null && activatedEntity.activationScript != null) { try { MethodInfo mi = mapScriptType.GetMethod( activatedEntity.activationScript, BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy ); if (mi != null) { ScriptActivationArgs saa = new ScriptActivationArgs(); saa.activator = activator; saa.activatedEntity = activatedEntity; saa.scriptName = activatedEntity.activationScript; mapScript.setArgs(saa); mi.Invoke(mapScript, new object[] { }); return true; } else { Console.WriteLine("WARNING: Failed to find matching method for event '{0}'", activatedEntity.activationScript); } } catch (AmbiguousMatchException ex) { Console.WriteLine("WARNING: Found multiple matching methods.", ex); } } return false; }
public bool InvokeOnload(String arg) { if (mapScript != null) { try { MethodInfo mi = mapScriptType.GetMethod( "onLoad", BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy ); if (mi != null) { ScriptActivationArgs saa = new ScriptActivationArgs(); saa.activator = null; saa.activatedEntity = null; saa.activatedZone = null; saa.scriptName = "onLoad"; mapScript.setArgs(saa); mi.Invoke(mapScript, new object[] { (arg==null) ? "" : arg }); return true; } else { Console.WriteLine("WARNING: Failed to find matching method for event '{0}'", "onLoad"); } } catch (AmbiguousMatchException ex) { Console.WriteLine("WARNING: Found multiple matching methods.", ex); } } return false; }