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); } }
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); } }