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