示例#1
0
        public void RecordReactInfo(IFlowSystemCtrl ctrl)
        {
            ///没有反应对象,直接跳过
            if (activeRact == null)
            {
                return;
            }
            //没有输出内容,直接跳过
            if (string.IsNullOrEmpty(activeRact.OutType))
            {
                return;
            }

            //遍历记录输出信息
            for (int i = 0; i < ChildNodes.Count; i++)
            {
                if (ChildNodes[i].Info.enterOnly || functionInNodes.Contains(ChildNodes[i].Info.nodeID))
                {
                    continue;
                }

                if (ChildNodes[i].ConnectedNode != null)
                {
                    IInOutItem inout = ChildNodes[i].ConnectedNode.Body.Trans.GetComponent <IInOutItem>();

                    ctrl.AddActiveItem(inout, ChildNodes[i].ConnectedNode.Info.nodeID, activeRact.OutType);
                }
                else
                {
                    activeRact.InteractOutPutFiled.Invoke();
                    PresentationData data = PresentationData.Allocate("警告", activeRact.outPutFiledinformation, "", () => { });
                    BundleUISystem.UIGroup.Open <PresentationPanel>(data);
                }
            }
        }
示例#2
0
 private void ResatToBeginState()
 {
     activeItem = null;
     reactTuple.Clear();
     loadedItems.Clear();
     if (group != null)
     {
         GameObject.Destroy(group.gameObject);
     }
     group = GameObject.Instantiate <ElementGroup>(groupPrefab);
 }
示例#3
0
        public bool NextContainer(UnityAction onComplete)
        {
            if (ActiveItem == null)
            {
                return(false);
            }
            ActiveItem.RecordReactInfo(this);

            if (reactTuple.Count > 0)
            {
                Tuple <IInOutItem, int, string> item = reactTuple.Dequeue();
                activeItem = item.Element1;
                activeItem.FunctionIn(item.Element2, item.Element3, onComplete);
                return(true);
            }

            return(false);
        }
示例#4
0
 public bool StartProducer()
 {
     if (startActive.Count > 0)
     {
         while (startActive.Count > 0)
         {
             IInOutItem item = startActive.Dequeue();
             if (item.AutoReact())
             {
                 activeItem = item;
             }
         }
         return(true);
     }
     else
     {
         return(false);
     }
 }
示例#5
0
 public void AddActiveItem(IInOutItem item, int nodeID, string type)
 {
     reactTuple.Enqueue(new Tuple <IInOutItem, int, string>(item, nodeID, type));
 }