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); } } }
private void ResatToBeginState() { activeItem = null; reactTuple.Clear(); loadedItems.Clear(); if (group != null) { GameObject.Destroy(group.gameObject); } group = GameObject.Instantiate <ElementGroup>(groupPrefab); }
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); }
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); } }
public void AddActiveItem(IInOutItem item, int nodeID, string type) { reactTuple.Enqueue(new Tuple <IInOutItem, int, string>(item, nodeID, type)); }