static void Generate_InitializeVariable(StreamWriter writer, EditorBTNode btnode) { writer.Write( @" public override void InitializeVariable(Dictionary<string, string> variables) { string value;"); for (int i = 0; i < btnode.m_variables.Count; ++i) { EditorVariable variable = btnode.m_variables[i]; writer.Write("\r\n if (variables.TryGetValue(\""); writer.Write(variable.m_config_name); writer.Write("\", out value))\r\n "); writer.Write(variable.m_code_fragment); if (variable.IsFormula()) { writer.Write(".Compile(value);"); } else if (variable.Transform2Crc()) { writer.Write(" = (int)CRC.Calculate(value);"); } else if (variable.NeedParse()) { writer.Write(" = "); writer.Write(variable.m_type_name); writer.Write(".Parse(value);"); } else { writer.Write(" = value;"); } } writer.Write("\r\n }"); }
static void Generate_CSharpAttribute(StreamWriter writer, EditorComponent component) { bool need = false; for (int i = 0; i < component.m_variables.Count; ++i) { EditorVariable variable = component.m_variables[i]; if (variable.m_code_fragment == null || variable.m_code_name == null || (!variable.CanAttributeGet() && !variable.CanAttributeSet())) { continue; } need = true; break; } if (!need) { return; } writer.Write("\r\n\r\n#region GETTER/SETTER"); // public FixPoint X // { // get { return m_current_position.x; } // set { m_current_position.x = value; } // } bool first = true; for (int i = 0; i < component.m_variables.Count; ++i) { EditorVariable variable = component.m_variables[i]; if (variable.m_code_fragment == null || variable.m_code_name == null || (!variable.CanAttributeGet() && !variable.CanAttributeSet())) { continue; } if (first) { writer.Write("\r\n public "); first = false; } else { writer.Write("\r\n\r\n public "); } if (variable.IsFormula()) { writer.Write("FixPoint "); } else { writer.Write(variable.m_type_name); writer.Write(" "); } writer.Write(variable.m_code_name.Substring(4)); writer.Write("\r\n {"); if (variable.CanAttributeGet()) { writer.Write("\r\n get { return "); if (variable.IsFormula()) { writer.Write(variable.m_code_fragment); writer.Write(".Evaluate(this); }"); } else { writer.Write(variable.m_code_fragment); writer.Write("; }"); } } if (variable.CanAttributeSet()) { writer.Write("\r\n set { "); writer.Write(variable.m_code_fragment); writer.Write(" = value; }"); } writer.Write("\r\n }"); } writer.Write("\r\n#endregion"); }
static void Generate_SetVariable(StreamWriter writer, EditorComponent component) { bool need = false; for (int i = 0; i < component.m_variables.Count; ++i) { EditorVariable variable = component.m_variables[i]; if (variable.m_code_fragment == null || variable.m_code_name == null || !variable.CanVariableSet() || variable.IsFormula()) { continue; } need = true; break; } if (!need) { return; } // public override bool SetVariable(int id, FixPoint value) // { // switch (id) // { // case VID_X: // m_current_position.x = value; // return true; // default: // return false; // } // } writer.Write( @" public override bool SetVariable(int id, FixPoint value) { switch (id) {"); for (int i = 0; i < component.m_variables.Count; ++i) { EditorVariable variable = component.m_variables[i]; if (variable.m_code_fragment == null || variable.m_code_name == null || !variable.CanVariableSet() || variable.IsFormula()) { continue; } writer.Write("\r\n case "); writer.Write(variable.m_code_name); writer.Write(":\r\n "); writer.Write(variable.m_code_fragment); if (variable.NeedCast()) { writer.Write(" = ("); writer.Write(variable.m_type_name); writer.Write(")value;"); } else { writer.Write(" = value;"); } writer.Write("\r\n return true;"); } writer.Write( @" default: return false; } }"); }
static void Generate_InitializeVariable(StreamWriter writer, EditorComponent component) { bool need = false; for (int i = 0; i < component.m_variables.Count; ++i) { EditorVariable variable = component.m_variables[i]; if (!variable.CanVariableInit()) { continue; } need = true; break; } if (!need) { return; } // public override void InitializeVariable(Dictionary<string, string> variables) // { // string value; // if (variables.TryGetValue("x", out value)) // m_current_position.x = int.Parse(value); // } writer.Write( @" public override void InitializeVariable(Dictionary<string, string> variables) { string value;"); for (int i = 0; i < component.m_variables.Count; ++i) { EditorVariable variable = component.m_variables[i]; if (!variable.CanVariableInit()) { continue; } writer.Write("\r\n if (variables.TryGetValue(\""); writer.Write(variable.m_config_name); writer.Write("\", out value))\r\n "); writer.Write(variable.m_code_fragment); if (variable.IsFormula()) { writer.Write(".Compile(value);"); } //else if (variable.NeedParse()) //{ // if (variable.Transform2Crc()) // writer.Write(" = (int)CRC.Calculate("); // else // writer.Write(" = "); // writer.Write(variable.m_type_name); // if (variable.Transform2Crc()) // writer.Write(".Parse(value));"); // else // writer.Write(".Parse(value);"); //} //else //{ // if (variable.Transform2Crc()) // writer.Write(" = (int)CRC.Calculate(value);"); // else // writer.Write(" = value;"); //} else if (variable.Transform2Crc()) { writer.Write(" = (int)CRC.Calculate(value);"); } else if (variable.NeedParse()) { writer.Write(" = "); writer.Write(variable.m_type_name); writer.Write(".Parse(value);"); } else { writer.Write(" = value;"); } } writer.Write("\r\n }"); }