예제 #1
0
    // Update is called once per frame
    void Update()
    {
        guiManager.UpdateGUIElementsSize(new Size(Screen.width, Screen.height));
        //guiHelper.UpdateGUIElementsSize();

        // Check if any player disconnected
        if (testMultiplayer)
        {
            if (MultiplayerManager.Instance.PlayersList.Count < 2 && gameEnd == 0)
            {
                gameEnd = 3;
                MultiplayerManager.Instance.LeaveRoom(2);
            }
        }

        //WINNING CONDITION CHECKING
        //Only server can check
        if (Network.isServer)
        {
            // Start moving platforms

            if (!isMovingPlatformStarted)
            {
                // Only start when all clients are ready
                if (numberOfReadyClients >= Network.connections.Length)
                {
                    StartMovingPlatform(Time.time);
                }
            }

            if (gameEnd == 0)
            {
                TriggerParent goalTrigger = goal.GetComponent <TriggerParent>();
                if (goalTrigger.collided)
                {
                    if (isStoneTaken && goalTrigger.hitObject.networkView.owner == stoneKeeper)
                    {
                        // Call RPC Display result only once
                        networkView.RPC("UpdateResult", RPCMode.AllBuffered);
                        MultiplayerManager.Instance.LeaveRoom(2); //Disconnect and unregister host for both server and client
                    }
                }
            }

            KeepStoneTimer(isStoneTaken.ToString(), startTimeKeepStone, elapsedTimeKeepStone);
        }

        if (guiManager.GetPauseButtonPress())
        {
            isPause = true;
        }

        guiManager.ChangeStoneStatusTexture(isStoneTaken, stoneKeeper);
    }