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; } } }
/* 드래그 시작 * 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; } } }