Пример #1
0
    void PlayGame()
    {
        if (_vector.isPlaying != true)
        {
            if (_vector.onoff)
            {
                ifpop.PopUp(ifpop.IfCanvas);
            }
            _vector.isPlaying = true;

            Count();         //특수블록의 갯수 체크
            TranslateCode(); //블록을 코드로 번역
            //1. 처음위치로 되돌린다.
            move.Init();

            if (!(stagename.Substring(0, 5) == "Guide"))
            {
                //fs.SendMessage("countscan");
            }

            //2. Loop를 풀기위한 play_vector에 현재 벡터에 있는 블록을 옮긴다.
            play_vector.RemoveRange(0, play_vector.Count);
            play_vector.AddRange(_vector.vector);

            //3. play_vector에 Loop가 전부 사라질때까지 Arrange 실행
            while (true)
            {
                if (FindLoop())
                {
                    LoopArrange();  //for문 벗기는 함수
                }
                else if (FindFunc() && !(_vector.recursive > 10 || _vector.recursive2 > 10 || _vector.recursive3 > 10))
                {
                    FuncArrange();  //function을 풀어내는 함수
                }
                else
                {
                    break;
                }
            }

            //4. 정리한 벡터를 실행
            if (!(_vector.recursive > 10 || _vector.recursive2 > 10 || _vector.recursive3 > 10))
            {
                _vector.coroutine = SendMsg("");
                StartCoroutine(_vector.coroutine);
            }
            else
            {
                _vector.isPlaying = false;
            }
        }
    }
Пример #2
0
    /* 드래그 시작
     * 1. 드래그할때 필요한 초기화 실행
     * 2. 배치된 블록을 드래그 한다면 드래그한 블록을 삭제
     * 3. 배치된 블록을 드래그 한다면 블록을 재정렬 */
    public void OnBeginDrag(PointerEventData eventData)
    {
        if (_vector.onoff)
        {
            ifpop.PopUp(ifpop.IfCanvas);
        }

        //1. 드래그를 위해 넣은 코드
        initMousePos   = Input.mousePosition;
        initMousePos.z = 0;
        initMousePos   = Camera.main.ScreenToWorldPoint(initMousePos);
        beingDragged   = gameObject;

        if (_vector.isPlaying != true)
        {
            //현재 탭의상태에 따라 블록이 들어갈 리스트를 변경
            if (_vector.tab == 0)    //main
            {
                tname   = "MainTab";
                list    = _vector.vector;
                listDst = _vector.vectorDst;
            }
            else if (_vector.tab == 1)  //f1
            {
                tname   = "FunctionTab1";
                list    = _vector.func_vector;
                listDst = _vector.func_vectorDst;
            }
            else if (_vector.tab == 2)
            {
                tname   = "FunctionTab2";
                list    = _vector.func_vector2;
                listDst = _vector.func_vectorDst2;
            }
            else if (_vector.tab == 3)
            {
                tname   = "FunctionTab3";
                list    = _vector.func_vector3;
                listDst = _vector.func_vectorDst3;
            }

            // 블록생성
            if (inVector != true)
            {
                Instantiate(this, this.transform.position, Quaternion.identity);
                string tabname = this.transform.parent.name;
                //Debug.Log(tabname);

                GameObject.Find(this.name + "(Clone)").transform.SetParent(GameObject.Find(tabname).transform, false);
                GameObject.Find(this.name + "(Clone)").transform.position = this.transform.position;
                GameObject.Find(this.name + "(Clone)").transform.name     = this.name + 0;
            }

            if (inVector == true)   //벡터안에 있다면
            {
                //2. 배치된 블록을 드래그 한다면 드래그한 블록을 삭제
                for (int i = 0; i < list.Count; i++)
                {
                    if (this.gameObject == list[i])
                    {
                        list.RemoveAt(i);
                        //클릭한 버튼이 ForLoopHeadButton일 경우
                        if (this.gameObject.tag == "ForLoopHeadButton" || this.gameObject.tag == "IfHeadButton")
                        {
                            list.Remove(this.gameObject.transform.GetChild(0).gameObject);
                        }
                        break;
                    }
                }

                //3. 배치된 블록을 드래그 한다면 블록을 재정렬
                for (int i = 0; i < list.Count; i++)
                {
                    if (i != 0)
                    {
                        list[i].transform.position = list[i - 1].transform.position + plus;
                    }
                }

                inVector = false;
            }
        }
    }