private void ResetAddLink() { mSourceContainerGroup = null; mSourceContainerInner = null; mTargetContainerGroup = null; mTargetContainerInner = null; }
public ConfirmDialog RemoveInnerSchemeAdv(UIScheme.InnerContainer container) { var dialog = Instantiate(mConfirmDialogPrefab, mUICanvas).GetComponent <ConfirmDialog>(); StartCoroutine(removeInnerScheme(container, dialog)); return(dialog); }
public void AddLinkAsSource(UIScheme.InnerContainer innerContainer) { mSourceContainerInner = innerContainer; if (AddLinkStateChanged != null) { AddLinkStateChanged.Invoke(true); } }
public override void Init(UIScheme.InnerContainer container) { base.Init(container); gameObject.name = "Scheme: " + mContainer.InnerBuildInfo.BuildString.Name; transform.localPosition = mContainer.InnerBuildInfo.Position.ToVector3(); (transform as RectTransform).sizeDelta = mContainer.InnerBuildInfo.Size; mName.text = mContainer.InnerBuildInfo.BuildString.Name; mType.text = mContainer.InnerBuildInfo.BuildString.Type; mRemoveButton.onClick.AddListener(() => SchemeDesigner.Instance.RemoveInnerScheme(mContainer)); var inputCount = mContainer.Scheme.IOGroups.Count((x) => x.Value.IO == IO.Input); var outputCount = mContainer.Scheme.IOGroups.Count - inputCount; mInputDesigns = new List <IOInnerGroupDesign>(inputCount); mOutputDesigns = new List <IOInnerGroupDesign>(outputCount); mIOGroupDesigns = new Dictionary <string, IOInnerGroupDesign>(inputCount + outputCount); foreach (var ioGroup in mContainer.Scheme.IOGroups) { IOInnerGroupDesign design = null; switch (ioGroup.Value.IO) { case IO.Input: design = Instantiate(mInputIOGroupPrefab, mInputs).GetComponent <IOInnerGroupDesign>(); mInputDesigns.Add(design); mIOGroupDesigns.Add(ioGroup.Key, design); break; case IO.Output: design = Instantiate(mOutputIOGroupPrefab, mOutputs).GetComponent <IOInnerGroupDesign>(); mOutputDesigns.Add(design); mIOGroupDesigns.Add(ioGroup.Key, design); break; } design.Init(ioGroup.Key, ioGroup.Value, mContainer.Scheme); } SchemeDesigner.Instance.AddLinkStateChanged += OnAddLinkStateChanged; if (inputCount > 0) { //mAddInputLink.gameObject.SetActive(true); mAddInputLink.onClick.AddListener(() => SchemeDesigner.Instance.AddLinkAsTarget(mContainer)); } if (outputCount > 0) { mAddOutputLink.gameObject.SetActive(true); mAddOutputLink.onClick.AddListener(() => { mSelfClick = true; SchemeDesigner.Instance.AddLinkAsSource(mContainer); }); } }
public BaseInnerSchemeDesign CreateInnerScheme(UIScheme.InnerContainer container) { var designName = SchemeManager.Instance.GetBuildingRule(container.InnerBuildInfo.BuildString.Type).DesignType; var designContainer = mDesigns[designName]; var innerScheme = (BaseInnerSchemeDesign)Instantiate(designContainer.Prefab, mSchemeContainer).GetComponent(designContainer.Type); innerScheme.Init(container); return(innerScheme); }
public void AddLinkAsTarget(UIScheme.InnerContainer innerContainer, bool complete = true) { mTargetContainerInner = innerContainer; if (AddLinkStateChanged != null) { AddLinkStateChanged.Invoke(false); } if (complete) { AddLinkAdv(); } }
public virtual void Init(UIScheme.InnerContainer container) { mContainer = container; EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = EventTriggerType.Drag; entry.callback.AddListener((data) => { OnDrag((PointerEventData)data); }); mEventTrigger.triggers.Add(entry); entry = new EventTrigger.Entry(); entry.eventID = EventTriggerType.BeginDrag; entry.callback.AddListener((data) => { OnBeginDrag((PointerEventData)data); }); mEventTrigger.triggers.Add(entry); }
public void ShowDialog(string title, UIScheme.IOGroupContainer mSourceContainerGroup, UIScheme.InnerContainer mSourceContainerInner, UIScheme.IOGroupContainer mTargetContainerGroup, UIScheme.InnerContainer mTargetContainerInner) { mTitle.text = title; mSourceStart.text = "0"; mTargetStart.text = "0"; if (mSourceContainerGroup != null) { mSourceGroupName.options = new List <Dropdown.OptionData>() { new Dropdown.OptionData(mSourceContainerGroup.BuildInfo.BuildString.Name) }; mSourceGroupName.interactable = false; mSourceCount.text = mSourceContainerGroup.BuildInfo.BuildString.Size.ToString(); } if (mSourceContainerInner != null) { var ioGroups = mSourceContainerInner.Scheme.IOGroups.Where((x) => x.Value.IO == IO.Output); mSourceGroupName.options = ioGroups.Select((x) => new Dropdown.OptionData(x.Key)).ToList(); if (ioGroups.Count() > 0) { mSourceCount.text = ioGroups.First().Value.Size.ToString(); } } if (mTargetContainerGroup != null) { mTargetGroupName.options = new List <Dropdown.OptionData>() { new Dropdown.OptionData(mTargetContainerGroup.BuildInfo.BuildString.Name) }; mTargetGroupName.interactable = false; mTargetCount.text = mTargetContainerGroup.BuildInfo.BuildString.Size.ToString(); } if (mTargetContainerInner != null) { var ioGroups = mTargetContainerInner.Scheme.IOGroups.Where((x) => x.Value.IO == IO.Input); mTargetGroupName.options = ioGroups.Select((x) => new Dropdown.OptionData(x.Key)).ToList(); if (ioGroups.Count() > 0) { mTargetCount.text = ioGroups.First().Value.Size.ToString(); } } gameObject.SetActive(true); }
private IEnumerator removeInnerScheme(UIScheme.InnerContainer container, ConfirmDialog dialog) { dialog.ShowDialog("Удалить схему " + container.SchemeName + "?", "Удалив схему, будут удалены все связанные с ней ссылки"); yield return(new WaitWhile(() => dialog.DialogResult == DialogResult.NotReady)); var dialogResult = dialog.DialogResult; dialog.Dispose(); if (dialogResult == DialogResult.Cancel) { yield break; } CurrentScheme.DeleteInnerScheme(container); yield break; }
public void RemoveInnerScheme(UIScheme.InnerContainer container) { RemoveInnerSchemeAdv(container); }