private void CreatePremiseBtn(NodePremiseJson premiseJson) { if (premiseJson == null) { return; } EDButton.CreateBtn("(" + premiseJson.TrueValue.ToString() + ")" + premiseJson.Name + "(" + premiseJson.Type.ToString() + ")", 250, 40, () => { EDPopMenu.CreatePopMenu(new List <string> { "删除前提", "改变真值" }, (int sel) => { if (sel == 0) { RemovePremise(premiseJson); } if (sel == 1) { premiseJson.TrueValue = !premiseJson.TrueValue; } }); }); if (premiseJson.OtherPremise != null) { CreatePremiseBtn(premiseJson.OtherPremise); } }
private NodePremiseJson GetNullPremise(NodePremiseJson json) { if (json == null) { return(null); } if (json.OtherPremise == null) { return(json); } return(GetNullPremise(json)); }
private NodePremiseJson GetPremise(string typeName, NodePremiseJson json) { if (json == null) { return(null); } if (json.TypeFullName == typeName) { return(json); } if (json.OtherPremise == null) { return(null); } return(GetPremise(typeName, json.OtherPremise)); }
private void DrawSelNodePremise(float width, float height) { if (selNode == null) { return; } if (selNode.Json.Premise == null) { return; } EDLayout.CreateScrollView(ref nodePremisePos, "box", width, height, () => { NodePremiseJson premiseJson = selNode.Json.Premise; CreatePremiseBtn(premiseJson); }); }
private static void CreateNodePremise(int nodeId, NodePremise premise, NodePremiseJson premiseJson) { if (premiseJson == null) { return; } NodePremise otherPremise = LCReflect.CreateInstanceByType <NodePremise>(premiseJson.TypeFullName); otherPremise.Init(nodeId, premiseJson.Type); premise.AddOtherPrecondition(otherPremise); if (premiseJson.OtherPremise != null) { CreateNodePremise(nodeId, otherPremise, premiseJson.OtherPremise); } }
private void RemovePremise(NodePremiseJson removeJson) { if (selNode == null || selNode.Json.Premise == null) { return; } NodePremiseJson parent = GetParentPremise(removeJson.Name, selNode.Json.Premise); if (parent == null) { selNode.Json.Premise = null; } else { parent.OtherPremise = null; } }
private void DrawPopMenu() { List <string> showStrs = new List <string>() { "连接父节点", "删除节点", "删除连接", }; //前提条件 List <Type> premiseTypes = LCReflect.GetClassByType <NodePremise>(); List <Type> premiseShowTypes = new List <Type>(); for (int i = 0; i < premiseTypes.Count; i++) { if (GetPremise(premiseTypes[i].FullName, Json.Premise) != null) { continue; } NodePremiseAttribute nodeAttribute = LCReflect.GetTypeAttr <NodePremiseAttribute>(premiseTypes[i]); if (nodeAttribute == null || nodeAttribute.GroupName == "") { showStrs.Add("添加前提/默认前提/" + nodeAttribute.ViewName); premiseShowTypes.Add(premiseTypes[i]); } else { showStrs.Add("添加前提/" + nodeAttribute.GroupName + "/" + nodeAttribute.ViewName); premiseShowTypes.Add(premiseTypes[i]); } } EDPopMenu.CreatePopMenu(showStrs, (int index) => { Debug.Log("CreatePopMenu》》" + index); if (index == 2 && ParEditor == null) { Debug.Log("没有父节点》》无法删除!!"); return; } if (index == 0 && ParEditor != null) { Debug.Log("已经有父节点》》无法连接!!"); return; } if (index <= 2) { CallBack(index, this); } else { index = index - 3; NodePremiseJson nullPremise = GetNullPremise(Json.Premise); string viewName = ""; Type premiseType = premiseShowTypes[index]; NodePremiseAttribute nodeAttribute = LCReflect.GetTypeAttr <NodePremiseAttribute>(premiseType); if (nodeAttribute == null) { viewName = premiseType.FullName; } else { viewName = nodeAttribute.ViewName; } NodePremiseJson addJson = new NodePremiseJson(); addJson.Name = viewName; addJson.Type = Core.Tree.PremiseType.AND; addJson.TypeFullName = premiseType.FullName; if (nullPremise == null) { Json.Premise = addJson; } else { nullPremise.OtherPremise = addJson; } } }); }