protected void SetupProcedure(Element proc, string returnType, string script, string name, string parameters) { string[] paramNames = null; if (!string.IsNullOrEmpty(parameters)) { paramNames = parameters.Split(m_delimiters, StringSplitOptions.None).Select(p => p.Trim()).ToArray(); } Type returns = null; if (!string.IsNullOrEmpty(returnType)) { try { returns = WorldModel.ConvertTypeNameToType(returnType); } catch (ArgumentOutOfRangeException) { RaiseError(string.Format("Unrecognised function return type '{0}' in '{1}'", returnType, name)); } } proc.Fields[FieldDefinitions.ParamNames] = new QuestList <string>(paramNames); if (returns != null) { proc.Fields[FieldDefinitions.ReturnType] = WorldModel.ConvertTypeToTypeName(returns); } proc.Fields.LazyFields.AddScript(FieldDefinitions.Script.Property, script); }
void Variables_ResolveFunction(object sender, ResolveFunctionEventArgs e) { if (e.FunctionName == "IsDefined") { e.ReturnType = typeof(bool); return; } Element proc = m_worldModel.Procedure(e.FunctionName); if (proc != null) { e.ReturnType = WorldModel.ConvertTypeNameToType(proc.Fields[FieldDefinitions.ReturnType]); } }