Example #1
0
    protected override void OnMessageReceived(NetPeer peer, NetworkMessage message)
    {
        if (peer != client)
        {
            return;
        }

        if (message is SynMessage syn)
        {
            if (syn.GameName == "Pong" && syn.MajorVersion == 1 && syn.MinorVersion == 0)
            {
                multiplayer.SetRemoteName(syn.PlayerName);

                SynAckMessage synAck = new SynAckMessage();
                synAck.PlayerName = Manager.GameManager.UI.PlayerName;
                Send(synAck, SendOptions.ReliableOrdered);
                ConnectionStatus = ConnectionStatus.Connecting;
                connectDeadline  = Time.time + 5;
            }
        }
        else if (message is AckMessage)
        {
            if (ConnectionStatus == ConnectionStatus.Connecting)
            {
                ConnectionStatus = ConnectionStatus.Connected;
                multiplayer.StartGame();
            }
            else if (ConnectionStatus == ConnectionStatus.Disconnecting)
            {
                ConnectionStatus = ConnectionStatus.Unconnected;
                FinishDisconnect();
            }
        }
        else if (message is FinMessage fin)
        {
            FinAckMessage finAck = new FinAckMessage();
            Send(finAck, SendOptions.ReliableOrdered);
            disconnectDeadline = Time.time + 5;
            ConnectionStatus   = ConnectionStatus.Disconnecting;
        }
        else if (message is FinAckMessage finAck)
        {
            AckMessage ack = new AckMessage();
            Send(ack, SendOptions.ReliableOrdered);
            if (ConnectionStatus == ConnectionStatus.Disconnecting)
            {
                ConnectionStatus = ConnectionStatus.Unconnected;
                FinishDisconnect();
            }
        }
        else if (message is PaddleUpdateMessage update)
        {
            (Manager.GameManager.CurrentGame as Multiplayer).HandlePaddleUpdate(update);
        }
    }
Example #2
0
    protected override void OnMessageReceived(NetPeer peer, NetworkMessage message)
    {
        if (peer != server)
        {
            return;
        }

        if (message is SynAckMessage synAck)
        {
            (Manager.GameManager.CurrentGame as Multiplayer).SetRemoteName(synAck.PlayerName);

            AckMessage ack = new AckMessage();
            Send(ack, SendOptions.ReliableOrdered);
            ConnectionStatus = ConnectionStatus.Connected;
            Manager.GameManager.UI.Message.Hide();
        }
        else if (message is AckMessage)
        {
            if (ConnectionStatus == ConnectionStatus.Disconnecting)
            {
                ConnectionStatus = ConnectionStatus.Unconnected;
                FinishDisconnect();
            }
        }
        else if (message is FinMessage fin)
        {
            FinAckMessage finAck = new FinAckMessage();
            Send(finAck, SendOptions.ReliableOrdered);
            ConnectionStatus   = ConnectionStatus.Disconnecting;
            disconnectDeadline = Time.time + 5;
        }
        else if (message is FinAckMessage finAck)
        {
            AckMessage ack = new AckMessage();
            Send(ack, SendOptions.ReliableOrdered);

            if (ConnectionStatus == ConnectionStatus.Disconnecting)
            {
                ConnectionStatus = ConnectionStatus.Unconnected;
                FinishDisconnect();
            }
        }
        else if (message is StartMessage)
        {
            (Manager.GameManager.CurrentGame as Multiplayer).StartGame();
        }
        else if (message is PaddleUpdateMessage paddleUpdate)
        {
            (Manager.GameManager.CurrentGame as Multiplayer).HandlePaddleUpdate(paddleUpdate);
        }
        else if (message is BallUpdateMessage ballUpdate)
        {
            (Manager.GameManager.CurrentGame as Multiplayer).HandleBallUpdate(ballUpdate);
        }
        else if (message is LaunchBallMessage launch)
        {
            (Manager.GameManager.CurrentGame as Multiplayer).HandleBallLaunch(launch);
        }
        else if (message is GoalMessage goal)
        {
            (Manager.GameManager.CurrentGame as Multiplayer).HandleGoal(goal);
        }
        else if (message is EndGameMessage endGame)
        {
            (Manager.GameManager.CurrentGame as Multiplayer).HandleEndGame(endGame);
        }
    }