示例#1
0
        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);
            }
        }
示例#2
0
 private NodePremiseJson GetNullPremise(NodePremiseJson json)
 {
     if (json == null)
     {
         return(null);
     }
     if (json.OtherPremise == null)
     {
         return(json);
     }
     return(GetNullPremise(json));
 }
示例#3
0
 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));
 }
示例#4
0
 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);
     });
 }
示例#5
0
        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);
            }
        }
示例#6
0
        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;
            }
        }
示例#7
0
        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;
                    }
                }
            });
        }