Example #1
0
        void CheckPlayerCollision(Player player)
        {
            if (Position.X + size.X > player.Position.X && Position.X < player.Position.X + player.Size.X ||
                player.Position.X + player.Size.X > Position.X && player.Position.X < Position.X + size.X)
            {
                if (Position.Y + size.Y > player.Position.Y && Position.Y < player.Position.Y + player.Size.Y ||
                    player.Position.Y + player.Size.Y > Position.Y && player.Position.Y < Position.Y + size.Y)
                {
                    Collision(Axis.X);

                    int x = 1;

                    if (directionVector.X < 0)
                    {
                        x = -1;
                    }

                    directionVector = player.UpdateDirectionVector(Position, x);

                    if (PongConnection.PlayerID == -1)
                    {
                        ConnectionHandler.SendBallDataToAllClients();
                    }
                }
            }
        }
Example #2
0
        public override void Update(GameTime gameTime)
        {
            if (PongConnection.running)
            {
                if (ellapsedTime < startTime)
                {
                    ellapsedTime += gameTime.ElapsedGameTime.TotalSeconds;
                }
                else
                {
                    Position += directionVector * (float)gameTime.ElapsedGameTime.TotalSeconds;
                }

                CheckBorderCollision(new Vector2(windowSize.X, windowSize.Y / 2), new Vector2(2, windowSize.Y), 1);
                CheckBorderCollision(new Vector2(0, windowSize.Y / 2), new Vector2(2, windowSize.Y), 2);
                CheckBorderCollision(new Vector2(windowSize.X / 2, windowSize.Y), new Vector2(windowSize.X, 2));
                CheckBorderCollision(new Vector2(windowSize.X / 2, 0), new Vector2(windowSize.X, 2));

                foreach (Player player in Player.players)
                {
                    CheckPlayerCollision(player);
                }

                if (PongConnection.PlayerID == -1)
                {
                    timeSinceBallSync += (float)gameTime.ElapsedGameTime.TotalSeconds;

                    if (timeSinceBallSync > ballSyncIntervall)
                    {
                        ConnectionHandler.SendBallDataToAllClients();
                    }
                }
            }
        }
Example #3
0
        /// <summary>
        /// Listens to new incoming clients (aka connections).
        /// </summary>
        static void ListenToClients()
        {
            Console.WriteLine("SERVER");

            while (true)
            {
                Socket newSocket = socket.Accept();

                ConnectionHandler newClient = new ConnectionHandler(newSocket);

                while (!newClient.initalized)
                {
                    Thread.Sleep(1);
                }

                if (ConnectionHandler.connections != null)
                {
                    Console.WriteLine("Connections: " + ConnectionHandler.connections.Length);

                    if (ConnectionHandler.connections.Length > 1)
                    {
                        running = true;
                        ConnectionHandler.SendBallDataToAllClients();
                    }
                }
            }
        }
Example #4
0
 /// <summary>
 /// Initializes the game creating new Player instances and the Ball.
 /// </summary>
 public static void InitializeGame()
 {
     if (players == null)
     {
         players    = new Player[2];
         players[0] = new Player(10);
         players[1] = new Player(Singleton.GraphicsDevice.Viewport.Width - 25);
         ball       = new Ball(Singleton.GraphicsDevice);
         Thread.Sleep(20);
         ConnectionHandler.SendBallDataToAllClients();
     }
 }