Esempio n. 1
0
    public IOSelfIOGroupDesign CreateSelfIOGroupDesign(UIScheme.IOGroupContainer container)
    {
        var design = Instantiate(mSelfIOGroupPrefab, mSchemeContainer).GetComponent <IOSelfIOGroupDesign>();

        design.Init(container);
        return(design);
    }
Esempio n. 2
0
 private void ResetAddLink()
 {
     mSourceContainerGroup = null;
     mSourceContainerInner = null;
     mTargetContainerGroup = null;
     mTargetContainerInner = null;
 }
Esempio n. 3
0
 public void AddLinkAsSource(UIScheme.IOGroupContainer selfIOGroupContainer)
 {
     mSourceContainerGroup = selfIOGroupContainer;
     if (AddLinkStateChanged != null)
     {
         AddLinkStateChanged.Invoke(true);
     }
 }
Esempio n. 4
0
    public void Init(UIScheme.IOGroupContainer container)
    {
        mContainer      = container;
        gameObject.name = (mContainer.BuildInfo.BuildString.IO == IO.Input ? "Input: " : "Output: ") +
                          mContainer.BuildInfo.BuildString.Name + " (" + mContainer.BuildInfo.BuildString.Size.ToString() + ")";
        mName.text = mContainer.BuildInfo.BuildString.Name;

        mIOContainer.localPosition = mContainer.BuildInfo.Position;

        if (mIOTogglers != null)
        {
            foreach (var input in mIOTogglers)
            {
                Destroy(input.gameObject);
            }
        }

        mIOTogglers = new IOToggler[mContainer.BuildInfo.BuildString.Size];

        for (byte i = 0; i < mContainer.BuildInfo.BuildString.Size; i++)
        {
            mIOTogglers[i] = Instantiate(mIOPrefab, mBitsContainer).GetComponent <IOToggler> ();
            mIOTogglers[i].Init(mContainer.ParentScheme.Scheme, i, mContainer.BuildInfo.BuildString.Name, mContainer.BuildInfo.BuildString.IO);
        }
        (mBitsContainer as RectTransform).sizeDelta = mContainer.BuildInfo.Size;

        if (mContainer.BuildInfo.BuildString.Size > 0)
        {
            switch (mContainer.BuildInfo.BuildString.IO)
            {
            case IO.Input:
                mAddLink.gameObject.SetActive(true);
                mAddLink.onClick.AddListener(() => SchemeDesigner.Instance.AddLinkAsSource(mContainer));
                break;

            case IO.Output:
                mAddLink.onClick.AddListener(() => SchemeDesigner.Instance.AddLinkAsTarget(mContainer));
                break;
            }
        }

        SchemeDesigner.Instance.AddLinkStateChanged += OnAddLinkStateChanged;
        mRemoveButton.onClick.AddListener(() => SchemeDesigner.Instance.RemoveIOGroup(mContainer));

        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);
    }
Esempio n. 5
0
 public void AddLinkAsTarget(UIScheme.IOGroupContainer selfIOGroupContainer, bool complete = true)
 {
     mTargetContainerGroup = selfIOGroupContainer;
     if (AddLinkStateChanged != null)
     {
         AddLinkStateChanged.Invoke(false);
     }
     if (complete)
     {
         AddLinkAdv();
     }
 }
Esempio n. 6
0
    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);
    }
Esempio n. 7
0
    private IEnumerator removeIOGroup(UIScheme.IOGroupContainer container)
    {
        var dialog = Instantiate(mConfirmDialogPrefab, mUICanvas).GetComponent <ConfirmDialog>();

        dialog.ShowDialog("Удалить группу " + container.BuildInfo.BuildString.Name + "?", "Удалив группу, будут удалены все связанные с ней ссылки");
        yield return(new WaitWhile(() => dialog.DialogResult == DialogResult.NotReady));

        var dialogResult = dialog.DialogResult;

        dialog.Dispose();

        if (dialogResult == DialogResult.Cancel)
        {
            yield break;
        }

        CurrentScheme.DeleteIOGroup(container);
        yield break;
    }
Esempio n. 8
0
 public void RemoveIOGroup(UIScheme.IOGroupContainer container)
 {
     StartCoroutine(removeIOGroup(container));
 }