IEnumerator Processing() { while (true) { yield return(new WaitUntil(() => gameState.GetGameState() == GameState.processing));//processing상태까지 기달 //processing상태 == 모두가 카드를 내고 진행화면이 나오길 기다리고 있는 상태 //yield return new WaitUntil(() => GameObject.FindGameObjectsWithTag("Card").Length - PhotonNetwork.PlayerList.Length + 1 //== GameStaticVariable.maxHand);//모든 카드가 다 소환될때까지 기달 processingCards = GameObject.FindGameObjectsWithTag("Card"); for (int i = 0; i < processingCards.Length; i++) { processingCards[i].GetComponent <CardGameObject>().GetCard().SetIsReversed(false); }//뒷면 까기 yield return(new WaitForSeconds(compareTime));//승부전에 대기시간 if (PhotonNetwork.IsMasterClient) //masterclient는 게임진행하고 결과통보 { if (player.Brawl(out SubmittedInfo winner) == true) //가위 바위 보! { player.AnounceResult(winner.GetActorNum(), false); //이놈이 이기고 나머지 짐 } else { player.AnounceResult(0, true);//무승부 } } yield return(new WaitForSeconds(resultingTime)); player.ResultDistributeCard(); player.ClearData(); Clearing(); yield return(new WaitUntil(() => player.IsHandFull())); //다시 드로우한거 받을때까지 기달 if (player.IsChampion()) //우승하면 { gameState.AskForVictory(PhotonNetwork.LocalPlayer.ActorNumber); } else//아니면 { gameState.AskForNextState();//순서 - before wait processing wait processing----- } yield return(new WaitWhile(() => gameState.GetGameState() == GameState.processing)); }
IEnumerator Timer() { yield return(new WaitUntil(() => gameState.GetGameState() == GameState.Wait));//gamestate가 wait가 되면 while (true) { sm.PlayWaitAudio(); float leftTime = GameStaticVariable.turnTime; while (true) { leftTime -= Time.deltaTime; leftTimeText.text = "Left Time : " + Mathf.Round(leftTime * 100) / 100; if (leftTime < 0)//시간이 끝남 { GameObject[] cardObjects = GameObject.FindGameObjectsWithTag("Card"); int ran = Random.Range(0, GameStaticVariable.maxHand);//내 손중 몇번째 있는거 버릴지 int resultIndex = 0; for (int i = 0; i < cardObjects.Length; i++) { if (cardObjects[i].GetComponent <CardGameObject>().GetCard().IsReversed())//뒤집어져 있는건 상대거 { continue; } ran--; if (ran == 0) { resultIndex = i; break; } } player.SubmitCard(cardObjects[resultIndex].GetComponent <CardGameObject>());//랜덤카드 제출 leftTimeText.text = "Left Time : " + "0"; break; } if (playerInput.IsSubmitFinish()) { break; }//시간 표시 yield return(null); } gameState.AskForNextState(); leftTime = GameStaticVariable.turnTime; yield return(new WaitUntil(() => gameState.GetGameState() == GameState.processing)); //processing까지 기달 yield return(new WaitWhile(() => gameState.GetGameState() != GameState.Wait)); //wait상태가 다시 될때까지 기달 } }
private void OnReadyButtonCliked() { gameState.AskForNextState(); //master client에게 레디했다고 알림 readyButton.gameObject.SetActive(false); //button 안보이게 처리 }