/// <summary> /// Method that checks the collision between the player and the different entities on the /// different levels. Such as the platform or obstacles. Also checks if the platform is to be dropped of at. /// The direction check of platform checks the speed to land. /// </summary> public void CheckCollsion() { if (ObstacleCollision.CollisionObstacle(CollisionChecker.player.GetsShape(), obstacles)) { CollisionChecker.player.Alive = false; gameOverChecker = true; } else if (PlatformCollision.CollisionReleasePlatform(CollisionChecker.player.GetsShape()) && CollisionChecker.player.GetsShape().Direction.Y > -0.004f) { PassengerCollision.CheckDropOffCollision(CollisionChecker.player); CollisionChecker.player.Changephysics(); platformChecker = true; } else if (PlatformCollision.CollisionPlatform(CollisionChecker.player.GetsShape(), platforms) && CollisionChecker.player.GetsShape().Direction.Y > -0.004f) { CollisionChecker.player.Changephysics(); platformChecker = true; } else if (PlatformCollision.CollisionPlatform(CollisionChecker.player.GetsShape(), platforms) && CollisionChecker.player.GetsShape().Direction.Y < -0.004f) { ObstacleCollision.CreateExplosion(CollisionChecker.player); gameOverChecker = true; } else if (PassengerCollision.CheckCollisionPassenger(passengers, CollisionChecker.player, specifiedPlatform)) { passengerChecker = true; } }
CollisionReleasePlatformSingle(DynamicShape player, Passenger passenger) { if (passenger.GetReleasePlatformChar() != '^' && PlatformCollision.CollisionPlatform(player, passenger.GetReleasePlatform()) && GameRunning.GetLevelCounter() == passenger.SetOffLevel) { return(true); } return(false); }
/// <summary> /// Checks if the player is at the right platform /// </summary> /// <param name="player">player</param> /// <returns>bool checking if its the right platform</returns> public static bool CollisionReleasePlatform(DynamicShape player) { foreach (var passenger in PassengerCollision.GetPassengerPickups()) { if (passenger.GetReleasePlatformChar() != '^' && PlatformCollision.CollisionPlatform(player, passenger.GetReleasePlatform()) && GameRunning.GetLevelCounter() == passenger.SetOffLevel) { return(true); } } return(false); }
/// <summary> /// Checks which platform the player is supposed to be collided with. /// </summary> /// <param name="player">player</param> public static void CheckDropOffCollision(Player player) { foreach (var passenger in PassengerCollision.passengerPickups) { if (passenger.PickedUp && !passenger.DroppedOff && GameRunning.GetLevelCounter() == passenger.SetOffLevel && PlatformCollision.CollisionReleasePlatformSingle(player.GetsShape(), passenger) ) { if (passenger.GetReleasePlatformChar() != '^') { passenger.SetPosition( passenger.GetReleasePlatform()[0].Shape.Position.X, passenger.GetReleasePlatform()[0].Shape.Position.Y + 0.04f); passenger.GetShape().Direction.X = 0.0f; } passenger.DroppedOff = true; passenger.SetReleasedWithinTimer(!passenger.ReleaseTimer()); } } }