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상태가 다시 될때까지 기달
        }
    }
Exemple #3
0
 private void OnReadyButtonCliked()
 {
     gameState.AskForNextState();             //master client에게 레디했다고 알림
     readyButton.gameObject.SetActive(false); //button 안보이게 처리
 }