Exemplo n.º 1
0
    protected override void Update()
    {
        if (!GameRunning)
        {
            return;
        }

        if (clockRunning)
        {
            clock -= Time.deltaTime;

            if (authoritative)
            {
                BallUpdateMessage ballUpdate = new BallUpdateMessage();
                ballUpdate.Position = ball.Position;
                ballUpdate.Velocity = ball.Velocity;

                Manager.Network.Engine.Send(ballUpdate, LiteNetLib.SendOptions.Sequenced);
            }
        }

        PaddleUpdateMessage paddleUpdate = new PaddleUpdateMessage();

        paddleUpdate.Position = localPaddle.Position;
        paddleUpdate.Velocity = localPaddle.Velocity;
        paddleUpdate.Input    = localPaddle.MoveDir;

        Manager.Network.Engine.Send(paddleUpdate, LiteNetLib.SendOptions.Sequenced);

        if (clock <= 0f)
        {
            if (authoritative)
            {
                if (localScore == remoteScore)
                {
                    EndGame(Player.None);
                }
                else if (localScore > remoteScore)
                {
                    EndGame(Player.Server);
                }
                else if (remoteScore > localScore)
                {
                    EndGame(Player.Client);
                }
            }
        }
        else
        {
            int time = Mathf.Max(Mathf.RoundToInt(clock), 0);
            Manager.UI.Clock.text = string.Format("{0}:{1:00}", time / 60, time % 60);
        }
    }
Exemplo n.º 2
0
    public void HandlePaddleUpdate(PaddleUpdateMessage update)
    {
        float input    = -update.Input;
        float position = -update.Position;
        float velocity = -update.Velocity;

        remotePaddle.Move(input);

        if (!authoritative)
        {
            remotePaddle.Velocity = -velocity;

            if (Mathf.Abs(remotePaddle.Position - position) > 0.25f)
            {
                remotePaddle.Position = position;
            }
        }
    }