Esempio n. 1
0
        private ClientMovement GetLastPlayerMovement(int playerID)
        {
            Client clientMatchingPlayerID = null;
            List <PlayerMovementPackage> allPlayerMovementPackagesSinceLastFrame = new List <PlayerMovementPackage>();

            foreach (Client clientCandidate in Clients)
            {
                foreach (Player player in clientCandidate.Players)
                {
                    if (player.ID == playerID)
                    {
                        clientMatchingPlayerID = clientCandidate;
                    }
                }
            }
            PackageInterface[] allClientPackages = GetClientData(clientMatchingPlayerID.SessionID);
            foreach (PackageInterface receivedPackage in allClientPackages)
            {
                if (receivedPackage == null || receivedPackage.PackageType != PackageType.ClientPlayerMovement)
                {
                    continue;   // Ignore irrelevant packages either it's null because there was something invalid or it's not a ClientPlayerMovement Package but something else instead
                }
                PlayerMovementPackage movementPackage = receivedPackage as PlayerMovementPackage;

                if (movementPackage.PlayerID == playerID)
                {
                    allPlayerMovementPackagesSinceLastFrame.Add(movementPackage);
                }
            }
            if (allPlayerMovementPackagesSinceLastFrame.Count == 0)
            {
                return(ClientMovement.NoInput);
            }
            return(allPlayerMovementPackagesSinceLastFrame[allPlayerMovementPackagesSinceLastFrame.Count - 1].PlayerMovement);
        }
Esempio n. 2
0
        static void sendMovementToMatchBall(NetworkConnection conn, int playerID)
        {
            ServerDataPackage     s = conn.ReadUDP() as ServerDataPackage;
            PlayerMovementPackage movementPackage = new PlayerMovementPackage();
            RawPlayer             correctPlayer   = null;

            movementPackage.PlayerID = playerID;
            if (s == null)
            {
                return;
            }
            foreach (RawPlayer p in s.Players)
            {
                if (p.ID == playerID)
                {
                    correctPlayer = p;
                    break;
                }
            }
            if (s.Ball.PositionY < correctPlayer.PositionY + GameInitializers.GetPlayerHeight(8) / 2)
            {
                movementPackage.PlayerMovement = ClientMovement.Up;
            }
            else
            {
                movementPackage.PlayerMovement = ClientMovement.Down;
            }
            conn.SendTCP(movementPackage);
        }
Esempio n. 3
0
        private void SendMovementInputs()
        {
            PlayerInputs[] playerInputs = Input.GetMovementInput();

            foreach (PlayerInputs inputs in playerInputs)
            {
                if (inputs.MovementInput != PlayerMovementInputs.NoInput)
                {
                    PlayerMovementPackage movementPackage = new PlayerMovementPackage();
                    movementPackage.PlayerID = inputs.ID;

                    switch (inputs.MovementInput)
                    {
                    case PlayerMovementInputs.Up:
                        movementPackage.PlayerMovement = ClientMovement.Up;
                        break;

                    case PlayerMovementInputs.Down:
                        movementPackage.PlayerMovement = ClientMovement.Down;
                        break;

                    case PlayerMovementInputs.StopMoving:
                        movementPackage.PlayerMovement = ClientMovement.StopMoving;
                        break;
                    }

                    Network.SendPlayerMovement(movementPackage);
                }
            }
        }
Esempio n. 4
0
        static void sendRandomMovemet(NetworkConnection conn, int playerID)
        {
            List <ClientMovement> movements = new List <ClientMovement> {
                ClientMovement.Down, ClientMovement.Up, ClientMovement.StopMoving, ClientMovement.NoInput
            };
            ServerDataPackage     s = conn.ReadUDP() as ServerDataPackage;
            PlayerMovementPackage movementPackage = new PlayerMovementPackage();

            movementPackage.PlayerID       = playerID;
            movementPackage.PlayerMovement = movements[RandomGenerator.Next(4)];
            conn.SendTCP(movementPackage);
        }