public NodeMenuItem[] AddNodeMenuItems(NodeMachineModel model, Vector2 mousePosition, NodeMachineEditor editor) { NodeMenuItem menuItem; if (model.machinePropsSchema.Count > 0) { menuItem = new NodeMenuItem("Conditional/Condition", () => { // TODO : CONDITIONS AND PROPERTIES WITH NO STANDARD TYPES??? KeyValuePair <string, Type> kvp = model.machinePropsSchema.First(); Condition.ConditionType?tryParseType = Condition.ParseConditionType(kvp.Value); if (tryParseType == null) { EditorUtility.DisplayDialog("Error", "There was an error while creating the condition!", "OK"); return; } Condition.ConditionType fieldType = (Condition.ConditionType)tryParseType; string fieldName = kvp.Key; Condition condition = new Condition(fieldName, fieldType, Condition.Comparison.EQUAL, Condition.GetDefaultValue(fieldType, kvp.Value)); ConditionNode node = new ConditionNode(editor._model, condition, mousePosition); editor.AddNode(node); }, false, false); } else { menuItem = new NodeMenuItem("Conditional/Condition", null, false, true); } NodeMenuItem[] menuItems = { menuItem }; return(menuItems); }
bool ConditionMet(Machine machine) { Condition.ConditionType type = condition._valueType; string propName = condition._propName; if (condition._compareMode == Condition.CompareTo.PROP) { Type compType = Condition.FromConditionType(condition._valueType); condition.SetComparisonValue(Convert.ChangeType(machine.GetProp(condition._compPropName), compType)); } if (type == Condition.ConditionType.FLOAT) { return(condition.Compare((float)machine.GetProp(propName))); } else if (type == Condition.ConditionType.INT) { return(condition.Compare((int)machine.GetProp(propName))); } else if (type == Condition.ConditionType.BOOL) { return(condition.Compare((bool)machine.GetProp(propName))); } else if (type == Condition.ConditionType.STRING) { return(condition.Compare((string)machine.GetProp(propName))); } else if (type == Condition.ConditionType.ENUM) { return(condition.Compare(machine.GetProp(propName))); } return(false); }
public LinkConditionSerialized(Condition.Comparison comparison, string propName, Condition.ConditionType compareType, string compareValue) { this.comparison = comparison; this.propName = propName; this.compareType = compareType; this.compareValue = compareValue; }
public static Type FromConditionType(Condition.ConditionType valueType) { Type compareType = null; switch (valueType) { case ConditionType.FLOAT: compareType = typeof(float); break; case ConditionType.INT: compareType = typeof(int); break; case ConditionType.BOOL: compareType = typeof(bool); break; case ConditionType.STRING: compareType = typeof(string); break; case ConditionType.ENUM: compareType = typeof(Enum); break; } return(compareType); }
public string[] GetPropNamesForType(Condition.ConditionType type) { string[] propNames = null; if (type == Condition.ConditionType.FLOAT) { propNames = _floats.Keys.ToArray(); } else if (type == Condition.ConditionType.INT) { propNames = _ints.Keys.ToArray(); } else if (type == Condition.ConditionType.BOOL) { propNames = _bools.Keys.ToArray(); } return(propNames); }
public ConditionGroup CloseGroup(Condition.ConditionType nextGroupType) { string group = getGroupString(); andList.Clear(); orList.Clear(); if (nextGroupType == Condition.ConditionType.And) { closedGroups.AddLast(String.Format(" {0} and ", group)); } if (nextGroupType == Condition.ConditionType.Or) { closedGroups.AddLast(String.Format(" {0} or ", group)); } return(this); }
public static Condition.ConditionType ConditionTypeFromString(string s) { Condition.ConditionType parsed_enum = (Condition.ConditionType)System.Enum.Parse(typeof(Condition.ConditionType), s); return(parsed_enum); }