Пример #1
0
 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;
 }
Пример #2
0
        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;
        }