Example #1
0
        public void Init(Argument initArg, bool renamable = false)
        {
            arg            = initArg;
            this.renamable = renamable;

            // Configure text
            if (arg.type == Argument.Type.REGISTER)
            {
                inputField.text = "R" + arg.val.ToString();
            }
            else
            {
                inputField.text = arg.label.name;
            }

            // Configure token color
            ArgTokenColorMap.Type tokenType = arg.type == Argument.Type.REGISTER
                ? ArgTokenColorMap.Type.REGISTER
                : arg.label.type == Label.Type.BRANCH
                ? ArgTokenColorMap.Type.BRANCH_LABEL
                : ArgTokenColorMap.Type.CONST_LABEL;
            image.color = argTokenColorMap.map[tokenType];

            // Resize to fit the preferred width
            Resize();

            // Configure callbacks n' stuff
            draggable.Init(Globals.slotFields, Globals.trashSlots);
            draggable.onDragStart = () =>
            {
                image.raycastTarget = false;
                cg.blocksRaycasts   = false;
            };
            draggable.onDragEnd = () =>
            {
                image.raycastTarget = true;
                cg.blocksRaycasts   = true;
            };
            draggable.onDragSuccess = (Draggable.Slot slot) =>
            {
                if (slotField != null)
                {
                    arg = slotField.ReleaseArg();
                }
                ((SlotField)slot).InsertArg(arg, gameObject);
            };
            draggable.onDragTrash = (Draggable.Slot slot) =>
            {
                slotField?.ReleaseArg();
                Destroy(gameObject);
            };

            inputField.onDeselect.AddListener(RenameLabel);
            inputField.onSubmit.AddListener((string val) => EventSystem.current.SetSelectedGameObject(null));
            inputField.onValueChanged.AddListener((string newVal) => Resize());
            inputField.onValidateInput = ValidateInput;
        }
Example #2
0
        public void Init(Argument initArg, CodeList codeList)
        {
            arg           = initArg;
            this.codeList = codeList;

            // Configure text
            if (arg.type == Argument.Type.REGISTER)
            {
                inputField.text = "R" + arg.val.ToString();
            }
            else
            {
                inputField.text = arg.label.name;
            }

            // Configure token color
            ArgTokenColorMap.Type tokenType = arg.type == Argument.Type.REGISTER
                ? arg.val < VirtualMachine.NUM_LOCAL_REGS
                ? ArgTokenColorMap.Type.LOCAL_REGISTER
                : ArgTokenColorMap.Type.SHARED_REGISTER
                : arg.label.type == Label.Type.BRANCH
                ? ArgTokenColorMap.Type.BRANCH_LABEL
                : ArgTokenColorMap.Type.CONST_LABEL;
            image.color = argTokenColorMap.map[tokenType];

            // Configure callbacks n' stuff
            draggable.Init(codeList.SlotFields, codeList.TrashSlots);
            draggable.onDragStart = () =>
            {
                image.raycastTarget = false;
                cg.blocksRaycasts   = false;
            };
            draggable.onDragEnd = () =>
            {
                image.raycastTarget = true;
                cg.blocksRaycasts   = true;
            };
            draggable.onDragSuccess = (Draggable.Slot slot) =>
            {
                if (slotField != null)
                {
                    arg = slotField.ReleaseArg();
                }
                ((SlotField)slot).InsertArg(arg, gameObject);
            };
            draggable.onDragTrash = (Draggable.Slot slot) =>
            {
                slotField?.ReleaseArg();
                Destroy(gameObject);
            };
        }
Example #3
0
        public void Init(Divider myDivider)
        {
            this.myDivider = myDivider;

            draggable.Init(Globals.dividers, Globals.trashSlots);
            draggable.filterFunc  = (Draggable.Slot slot) => slot == myDivider;
            draggable.onDragStart = () =>
            {
                myDivider?.gameObject.SetActive(false);
                bg.raycastTarget  = false;
                cg.blocksRaycasts = false;
                rt.sizeDelta      = new Vector2(collapsedWidth, rt.sizeDelta.y);
            };
            draggable.onDragEnd = () =>
            {
                myDivider?.gameObject.SetActive(true);
                bg.raycastTarget  = true;
                cg.blocksRaycasts = true;
            };
        }
Example #4
0
        protected void Init(Divider myDivider, CodeList codeList)
        {
            this.myDivider = myDivider;
            this.codeList  = codeList;

            draggable.Init(codeList.Dividers, codeList.TrashSlots);
            draggable.filterFunc  = (Draggable.Slot slot) => slot == myDivider;
            draggable.onDragStart = () =>
            {
                myDivider?.gameObject.SetActive(false);
                bg.raycastTarget  = false;
                cg.blocksRaycasts = false;
                rt.sizeDelta      = new Vector2(collapsedWidth, rt.sizeDelta.y);
            };
            draggable.onDragEnd = () =>
            {
                myDivider?.gameObject.SetActive(true);
                bg.raycastTarget  = true;
                cg.blocksRaycasts = true;
            };
        }