public void AddMember(CharaScript member, int pC = 1) { if (pC % 2 == 1) { p1Members.Add(member); } else { p2Members.Add(member); } }
//빠른정렬이 아니라 queue에 넣기 쉽게 정리하는거 int SpeedSort(CharaScript m1, CharaScript m2) { if (m1.Status.speed > m2.Status.speed) { return(-1); } else if (m1.Status.speed < m2.Status.speed) { return(1); } else { return(0); } }
//queue내의 chara순서대로 실행함 int로 ㅎ려했는데 //members내에서 몇번째 값인지를 넣는 방식이 좀 어려운듯 IEnumerator Cycle() { CharaScript member1 = new CharaScript(); CharaScript member2 = new CharaScript(); while (p1Priority.Count > 0 || p2Priority.Count > 0) { //queue내의 멤버를 빼옴 if (p1Priority.Count != 0) { member1 = p1Priority.Dequeue(); } if (p2Priority.Count != 0) { member2 = p2Priority.Dequeue(); } //3인이유는 명령이 증감하지않을거고 테이블에서 3개를 무조건 받았기때문 for (int j = 0; j < 3; j++) { Debug.Log("도는애 : " + member1); Debug.Log(member1.OrderEmpty()); //명령실행 << 이것과 똑같은게 member2로도 들어갈것 if (member1 != null && member1.Dead == false) { if (member1.OrderEmpty() == false) { member1.ActionOrder(); } if (member1.Dead == true) { member1 = null; } } if (member2 != null && member2.Dead == false)//체력이 0이 아닌경우에만 { //죽은애를 불러보니 문제가생김 if (member2.OrderEmpty() == false) { member2.ActionOrder(); } if (member2.Dead == true) { member2 = null; } } int check = PartyManager.inst.CheckMemberAnnihilation(); if (check != 0) { Debug.Log("체커" + check); playing = false;//플레잉을 거짓으로 GameObject.Find("UI").GetComponent <UIDraw>().Win(check); //게임 끝났다고 포인트 레벨 정리해줌 if (check == 1) { GameManager.inst.PlayerInfo.AddPoint(2); GameManager.inst.PlayerInfo.AddLevel(); } else { GameManager.inst.PlayerInfo.AddPoint(); //져도 1포인트줌 } yield break; //턴끝났고 생존자 나옴 } yield return(new WaitForSeconds(2f));//무조건 2초쉼 } } //저거다 벗어나면 //자기자신을 멈춰도 유효하지않을까 Debug.Log("사이클을 나갔다"); playing = false;//플레잉을 거짓으로 orderScreen.gameObject.SetActive(true); //끝나면 mp좀 회복 for (int i = 0; i < Mathf.Max(PartyManager.inst.Member2.Count, PartyManager.inst.Member1.Count); i++) { if (PartyManager.inst.Member1.Count > i && PartyManager.inst.Member1[i].Dead == false) { PartyManager.inst.Member1[i].PayMp(-20); //메소드 추가하기 귀찮음 } if (PartyManager.inst.Member2.Count > i && PartyManager.inst.Member2[i].Dead == false) { PartyManager.inst.Member2[i].PayMp(-20);//메소드 추가하기 귀찮음 } } yield break; //버그 : 다음턴에 가장빠른애가 1player가 되버림 <<플레이어자체가바뀌는듯 소트문제임 }