private void ExportProperties(StreamWriter file) { file.WriteLine("\t\t\t// ---------------------------------------------------------------------"); file.WriteLine("\t\t\t// properties"); file.WriteLine("\t\t\t// ---------------------------------------------------------------------\n"); bool hasWrittenProperties = false; foreach (AgentType agent in Plugin.AgentTypes) { if (agent.IsCustomized) { continue; } bool hasNonParProperty = false; foreach (PropertyDef prop in agent.GetProperties()) { if (!prop.IsPar && !prop.IsArrayElement) { hasNonParProperty = true; break; } } if (hasNonParProperty) { if (!hasWrittenProperties) { hasWrittenProperties = true; file.WriteLine("\t\t\tAgentProperties bb;"); } string agentTypeName = agent.AgentTypeName.Replace("::", "."); file.WriteLine("\n\t\t\t// {0}", agentTypeName); file.WriteLine("\t\t\tbb = new AgentProperties(\"{0}\");", agentTypeName); file.WriteLine("\t\t\tagent_type_blackboards[\"{0}\"] = bb;", agentTypeName); foreach (PropertyDef prop in agent.GetProperties()) { if (!prop.IsPar && !prop.IsArrayElement) { file.WriteLine("\t\t\tbb.AddProperty(\"{0}\", {1}, \"{2}\", \"{3}\", \"{4}\");", DataCsExporter.GetExportNativeType(prop.NativeType), prop.IsStatic ? "true" : "false", prop.BasicName, prop.DefaultValue.Replace("\"", "\\\""), agentTypeName); } } } } }
private void ExportMethods(StreamWriter file) { file.WriteLine("\n\t\t\t// ---------------------------------------------------------------------"); file.WriteLine("\t\t\t// tasks"); file.WriteLine("\t\t\t// ---------------------------------------------------------------------\n"); bool hasWrittenMethod = false; foreach (AgentType agent in Plugin.AgentTypes) { IList <MethodDef> methods = agent.GetMethods(); bool hasEvents = false; foreach (MethodDef method in methods) { if (method.IsNamedEvent) { hasEvents = true; break; } } if (hasEvents) { if (!hasWrittenMethod) { hasWrittenMethod = true; file.WriteLine("\t\t\tAgent.CTagObjectDescriptor objectDesc;"); file.WriteLine("\t\t\tCCustomMethod customeMethod;"); } file.WriteLine("\n\t\t\t// {0}", agent.AgentTypeName); file.WriteLine("\t\t\tobjectDesc = Agent.GetDescriptorByName(\"{0}\");", agent.AgentTypeName); file.WriteLine("\t\t\tcustomeMethod = new CTaskMethod(\"{0}\", \"root\");", agent.AgentTypeName); file.WriteLine("\t\t\tobjectDesc.ms_methods.Add(customeMethod);"); foreach (MethodDef method in methods) { if (method.IsNamedEvent) { file.WriteLine("\n\t\t\tcustomeMethod = new CTaskMethod(\"{0}\", \"{1}\");", agent.AgentTypeName, method.BasicName); foreach (MethodDef.Param param in method.Params) { file.WriteLine("\t\t\tcustomeMethod.AddParamType(\"{0}\");", DataCsExporter.GetExportNativeType(param.NativeType)); } file.WriteLine("\t\t\tobjectDesc.ms_methods.Add(customeMethod);"); } } } } }