예제 #1
0
    public void CmdChangeCurrentPlayer(GameObject questionPiece, int id)
    {
        QuestionPieceState qs = questionPiece.GetComponent <QuestionPieceState> ();

        qs.currentPlayerID = id;
        Debug.Log("CmdChangeCurrentPlayer");
    }
예제 #2
0
    public void CmdTotalCorrectChange(GameObject questionPiece, int count)
    {
        QuestionPieceState qs = questionPiece.GetComponent <QuestionPieceState> ();

        qs.totalCorrectGuess = count;
        Debug.Log("CmdTotalCorrectChange");
    }
예제 #3
0
    public void RpcPrepareOrderList(GameObject questionPiece, int[] orderList)
    {
        QuestionPieceState qs = questionPiece.GetComponent <QuestionPieceState> ();

        for (int i = 0; i < orderList.Length; i++)
        {
            qs.puzzleOrderList [i] = orderList [i];
        }
        Debug.Log("RpcPrepareOrderList");
    }
예제 #4
0
    public void CmdChangeImage(GameObject questionPiece, int id)
    {
        QuestionPieceState qs = questionPiece.GetComponent <QuestionPieceState> ();

        if (playerID != 1)
        {
            qs.PieceID = id;
        }
        questionPiece.GetComponent <Image> ().sprite = qs.puzzleImage [qs.PieceID].sprite;
        Debug.Log("CmdChangeImage");
    }
예제 #5
0
    public void RpcChangeResponseLabel(GameObject questionPiece, string label, bool active)
    {
        QuestionPieceState qs = questionPiece.GetComponent <QuestionPieceState> ();

        if (label == "correct")
        {
            qs.correctLabel.SetActive(active);
        }
        else if (label == "wrong")
        {
            qs.wrongLabel.SetActive(active);
        }
        Debug.Log("RpcChangeResponseLabel");
    }
예제 #6
0
 void CheckIfGameIsFinished()
 {
     if (countCorrectGuess == 16)
     {
         Debug.Log("GameFinished");
         gameStart  = false;
         gameFinish = true;
     }
     else if (countCorrectGuess < 16)
     {
         Debug.Log("CheckIfGameIsFinished");
         QuestionPieceState qs = questionPiece.GetComponent <QuestionPieceState> ();
         qs.PieceID = puzzleOrderList [puzzleOrderList.FindIndex(x => x == qs.PieceID) + 1];
         thisPlayerInfo.CmdChangeImage(qs.gameObject, qs.PieceID);
     }
 }
예제 #7
0
    void Update()
    {
        if (!isLocalPlayer)
        {
            return;
        }

        QuestionPieceState qs = GameObject.Find("QuestionPanel").GetComponentInChildren <QuestionPieceState>(true);

        if (qs.totalCorrectGuess == 16 && PuzzleGame.gameFinish != true)
        {
            PuzzleGame.gameStart  = false;
            PuzzleGame.gameFinish = true;
            StartCoroutine(CheckIfPuzzleMatch());
        }
    }
예제 #8
0
    void correctGuess(GameObject maskObj)
    {
        Debug.Log("Correct");

        QuestionPieceState qs = questionPiece.GetComponent <QuestionPieceState> ();

        qs.totalCorrectGuess = qs.totalCorrectGuess + 1;
        countCorrectGuess    = qs.totalCorrectGuess;
        thisPlayerInfo.CmdTotalCorrectChange(qs.gameObject, countCorrectGuess);

        thisPlayerInfo.myCorrectGuess++;
        thisPlayerInfo.CmdChangeMyCorrectGuess(thisPlayerInfo.myCorrectGuess);

        MaskState maskState = maskObj.GetComponent <MaskState> ();

        if (maskState != null)
        {
            maskState.successGuess = true;
            thisPlayerInfo.CmdCloseButton(maskState.gameObject);
        }
    }
예제 #9
0
    public override void OnStartServer()
    {
        MaskState[] ms = GameObject.Find("GameSpace").GetComponentsInChildren <MaskState>(true);

        for (int i = 0; i < 16; i++)
        {
            GameObject mask = ms[i].gameObject;
            mask.SetActive(true);
            NetworkServer.Spawn(mask);
        }


        puzzleOrderList = PuzzleReady.list;

        QuestionPieceState qs            = GameObject.Find("QuestionPanel").GetComponentInChildren <QuestionPieceState>(true);
        GameObject         questionPiece = qs.gameObject;

        questionPiece.SetActive(true);
        qs.PieceID         = puzzleOrderList [0];
        qs.puzzleOrderList = puzzleOrderList;

        NetworkServer.Spawn(questionPiece);
    }
예제 #10
0
    void Update()
    {
        GameObject[] playerLists     = GameObject.FindGameObjectsWithTag("networkPlayer");
        int          numberOfPlayers = playerLists.Length;

        // Client drop connection
        if (numberOfPlayers == 1)
        {
            if (DisconnectPlayer.activeSelf == false)
            {
                DisconnectPlayer.SetActive(true);
                DisconnectPlayerBody.color = pc [1];
                int guess = countCorrectGuess - playerLists [0].GetComponent <GamePlayerController> ().myCorrectGuess;
                DisconnectPlayerGuess.text = guess.ToString();
            }
        }
        else
        {
            DisconnectPlayer.SetActive(false);
        }

        // Auto Guess
        if (gameStart == true && gameFinish == false)
        {
            if (numberOfPlayers == 1 && questionPieceState.currentPlayerID == 2)
            {
                int randomTime = 12;

                if (TurnBasedController.time <= randomTime)
                {
                    QuestionPieceState qs = questionPiece.GetComponent <QuestionPieceState> ();
                    qs.totalCorrectGuess = qs.totalCorrectGuess + 1;
                    countCorrectGuess    = qs.totalCorrectGuess;
                    thisPlayerInfo.CmdTotalCorrectChange(qs.gameObject, countCorrectGuess);

                    string     name    = "GuessMask (" + qs.PieceID + ")";
                    GameObject maskObj = GameObject.Find(name);

                    MaskState maskState = maskObj.GetComponent <MaskState> ();
                    if (maskState != null)
                    {
                        maskState.MaskCanSeen = false;
                        thisPlayerInfo.CmdCloseMask(maskState.gameObject);
                        maskState.successGuess = true;
                        thisPlayerInfo.CmdCloseButton(maskState.gameObject);

                        int guess = countCorrectGuess - playerLists [0].GetComponent <GamePlayerController> ().myCorrectGuess;
                        DisconnectPlayerGuess.text = guess.ToString();
                    }

                    CheckIfGameIsFinished();

                    if (gameStart == false && gameFinish == true)
                    {
                        completeLabel.SetActive(true);
                        lines.SetActive(false);
                        resultPanel.SetActive(true);
                    }

                    startGuess = false;
                    TurnBasedController.time = 0.0f;
                }
            }
        }
    }
예제 #11
0
    IEnumerator CheckIfPuzzleMatch(GameObject maskObj)
    {
        QuestionPieceState qs = questionPiece.GetComponent <QuestionPieceState> ();

        if (guessPuzzleIndex == questionPiece.GetComponent <QuestionPieceState>().PieceID)
        {
            correctLabel.SetActive(true);

            if (thisPlayerInfo.playerID == 1)
            {
                thisPlayerInfo.RpcChangeResponseLabel(questionPiece, "correct", true);
            }
            else
            {
                thisPlayerInfo.CmdChangeResponseLabel(questionPiece, "correct", true);
            }

            yield return(new WaitForSeconds(0.3f));

            correctGuess(maskObj);
            yield return(new WaitForSeconds(0.2f));

            CheckIfGameIsFinished();
        }
        else
        {
            wrongLabel.SetActive(true);

            if (thisPlayerInfo.playerID == 1)
            {
                thisPlayerInfo.RpcChangeResponseLabel(questionPiece, "wrong", true);
            }
            else
            {
                thisPlayerInfo.CmdChangeResponseLabel(questionPiece, "wrong", true);
            }

            yield return(new WaitForSeconds(0.3f));

            wrongGuess(maskObj);
        }

        yield return(new WaitForSeconds(0.3f));

        correctLabel.SetActive(false);
        wrongLabel.SetActive(false);

        if (thisPlayerInfo.playerID == 1)
        {
            thisPlayerInfo.RpcChangeResponseLabel(questionPiece, "correct", false);
            thisPlayerInfo.RpcChangeResponseLabel(questionPiece, "wrong", false);
        }
        else
        {
            thisPlayerInfo.CmdChangeResponseLabel(questionPiece, "correct", false);
            thisPlayerInfo.CmdChangeResponseLabel(questionPiece, "wrong", false);
        }


        if (gameStart == false && gameFinish == true)           // Game is finished
        {
            completeLabel.SetActive(true);
            lines.SetActive(false);

            yield return(new WaitForSeconds(1f));

            resultPanel.SetActive(true);
        }

        TurnBasedController.time = 0f;
        startGuess = false;
    }
예제 #12
0
    IEnumerator StartToRemember()
    {
        RememberTime.SetActive(true);
        lines_4x4.SetActive(false);
        baseImage.SetActive(true);


        for (int j = 0; j < 10; j++)
        {
            string temp = (thisPlayer != null) ? thisPlayer.name : "null";
            Debug.Log("TurnBased FindPlayer " + j + " , " + temp);

            yield return(new WaitForSeconds(0.5f));

            if (thisPlayer == null)
            {
                GameObject[] playerLists = GameObject.FindGameObjectsWithTag("networkPlayer");
                for (int i = 0; i < playerLists.Length; i++)
                {
                    if (playerLists [i].GetComponent <GamePlayerController> ().isLocalPlayer)
                    {
                        thisPlayer     = playerLists [i];
                        thisPlayerInfo = playerLists [i].GetComponent <GamePlayerController> ();
                        break;
                    }
                }
            }
            else
            {
                break;
            }
        }


        CountDownTimer.SetActive(true);

        for (int i = 5; i > 0; i--)
        {
            CountDownTimer.GetComponent <Text>().text = i.ToString();

            if (thisPlayer == null)
            {
                GameObject[] lists = GameObject.FindGameObjectsWithTag("networkPlayer");
                for (int j = 0; j < lists.Length; j++)
                {
                    if (lists [i].GetComponent <GamePlayerController> ().isLocalPlayer)
                    {
                        thisPlayer     = lists [i];
                        thisPlayerInfo = lists [i].GetComponent <GamePlayerController> ();
                        break;
                    }
                }
            }

            yield return(new WaitForSeconds(1f));
        }


        if (questionPiece == null)
        {
            questionPiece      = GameObject.Find("QuestionPiece");
            questionPieceState = questionPiece.GetComponent <QuestionPieceState> ();
        }

        if (questionPieceState.currentPlayerID == thisPlayerInfo.playerID)
        {
            Cover.SetActive(false);
            YourTurn.SetActive(true);
            OtherTurn.SetActive(false);
        }
        else
        {
            Cover.SetActive(true);
            YourTurn.SetActive(false);
            OtherTurn.SetActive(true);
        }

        Debug.Log("questionPieceState Player ID: " + questionPieceState.currentPlayerID);
        Debug.Log("thisPlayerInfo ID: " + thisPlayerInfo.playerID);

        baseImage.SetActive(false);
        RememberTime.SetActive(false);
        lines_4x4.SetActive(true);

        endRemeberTime = true;
    }