public void ResolveOverlap(IGameObject overlappingObject, ICollisionSide side) { int xCoordinate = (int)overlappingObject.VectorCoordinates.X; int yCoordinate = (int)overlappingObject.VectorCoordinates.Y; Rectangle hitBoxA = new Rectangle((int)gameObjectA.VectorCoordinates.X, (int)gameObjectA.VectorCoordinates.Y, (int)gameObjectA.Sprite.SpriteDimensions.X, (int)gameObjectA.Sprite.SpriteDimensions.Y); Rectangle hitBoxB = new Rectangle((int)gameObjectB.VectorCoordinates.X, (int)gameObjectB.VectorCoordinates.Y, (int)gameObjectB.Sprite.SpriteDimensions.X, (int)gameObjectB.Sprite.SpriteDimensions.Y); collisionRectangle = Rectangle.Intersect(hitBoxA, hitBoxB); if (side is LeftSideCollision) { xCoordinate -= collisionRectangle.Width; Vector2 newLocation = new Vector2(xCoordinate, yCoordinate); overlappingObject.VectorCoordinates = newLocation; } else if (side is RightSideCollision) { xCoordinate += collisionRectangle.Width; Vector2 newLocation = new Vector2(xCoordinate, yCoordinate); overlappingObject.VectorCoordinates = newLocation; } else if (side is TopSideCollision) { yCoordinate -= collisionRectangle.Height; Vector2 newLocation = new Vector2(xCoordinate, yCoordinate); overlappingObject.VectorCoordinates = newLocation; } else if (side is BottomSideCollision) { yCoordinate += collisionRectangle.Height; Vector2 newLocation = new Vector2(xCoordinate, yCoordinate); overlappingObject.VectorCoordinates = newLocation; } }
public EnemyEnemyCollisionHandler(CollisionData collision) { this.collision = collision; enemyA = (IEnemy)collision.GameObjectA; enemyB = (IEnemy)collision.GameObjectB; side = (ICollisionSide)collision.CollisionSide; }
public void ResolveOverlap(IGameObject overlappingObject, ICollisionSide side) { int xCoordinate = (int)overlappingObject.VectorCoordinates.X; int yCoordinate = (int)overlappingObject.VectorCoordinates.Y; Rectangle hitBoxA = new Rectangle((int)gameObjectA.VectorCoordinates.X, (int)gameObjectA.VectorCoordinates.Y, (int)gameObjectA.Sprite.SpriteDimensions.X, (int)gameObjectA.Sprite.SpriteDimensions.Y); Rectangle hitBoxB = new Rectangle((int)gameObjectB.VectorCoordinates.X, (int)gameObjectB.VectorCoordinates.Y, (int)gameObjectB.Sprite.SpriteDimensions.X, (int)gameObjectB.Sprite.SpriteDimensions.Y); collisionRectangle = Rectangle.Intersect(hitBoxA, hitBoxB); if (side is LeftSideCollision) { xCoordinate -= collisionRectangle.Width; Vector2 newLocation = new Vector2(xCoordinate, yCoordinate ); overlappingObject.VectorCoordinates = newLocation; } else if (side is RightSideCollision) { xCoordinate += collisionRectangle.Width; Vector2 newLocation = new Vector2(xCoordinate, yCoordinate); overlappingObject.VectorCoordinates = newLocation; } else if (side is TopSideCollision) { yCoordinate -= collisionRectangle.Height; Vector2 newLocation = new Vector2(xCoordinate, yCoordinate); overlappingObject.VectorCoordinates = newLocation; } else if (side is BottomSideCollision) { yCoordinate += collisionRectangle.Height; Vector2 newLocation = new Vector2(xCoordinate, yCoordinate); overlappingObject.VectorCoordinates = newLocation; } }
public CollisionData(IGameObject objectA, IGameObject objectB, ICollisionSide side) { collisionRectangle = new Rectangle(); gameObjectA = objectA; gameObjectB = objectB; collisionSide = side; }
public PaddleBlockCollisionHandler(CollisionData collision) { this.collision = collision; collisionSide = (ICollisionSide)collision.CollisionSide; if (collision.GameObjectA is IPaddle) { paddle = (IPaddle)collision.GameObjectA; } else { paddle = (IPaddle)collision.GameObjectB; collisionSide = collisionSide.FlipSide(); } }
public WolverinePipeCollisionHandler(CollisionData collision) { this.collision = collision; collisionSide = (ICollisionSide)collision.CollisionSide; if (collision.GameObjectA is IWolverine) { enemy = (IWolverine)collision.GameObjectA; } else { enemy = (IWolverine)collision.GameObjectB; collisionSide = collisionSide.FlipSide(); } }
public BuckeyeTileCollisionHandler(CollisionData collision) { this.collision = collision; collisionSide = (ICollisionSide)collision.CollisionSide; if (collision.GameObjectA is IBuckeyePlayer) { player = (IBuckeyePlayer)collision.GameObjectA; } else { player = (IBuckeyePlayer)collision.GameObjectB; collisionSide = collisionSide.FlipSide(); } }
public ItemPipeCollisionHandler(CollisionData collision) { this.collision = collision; side = collision.CollisionSide; if (collision.GameObjectA is IItem) { collidingItem = (IItem)collision.GameObjectA; } else { collidingItem = (IItem)collision.GameObjectB; side = side.FlipSide(); } }
public EnemyPipeCollisionHandler(CollisionData collision) { this.collision = collision; side = collision.CollisionSide; if (collision.GameObjectA is IEnemy) { enemy = (IEnemy)collision.GameObjectA; } else { enemy = (IEnemy)collision.GameObjectB; side = side.FlipSide(); } }
public PipeFireballCollisionHandler(CollisionData collision) { this.collision = collision; this.side = collision.CollisionSide; if (collision.GameObjectA is IProjectile) { fireball = (IProjectile)collision.GameObjectA; } else { fireball = (IProjectile)collision.GameObjectB; this.side.FlipSide(); } }
public PaddleBallItemCollisionHandler(CollisionData collision, IGameState gameState) { brickBreakerGameState = gameState; collisionSide = (ICollisionSide)collision.CollisionSide; if (collision.GameObjectA is IPaddle) { paddleBall = (IPaddleBall)collision.GameObjectA; collidingItem = (IItem)collision.GameObjectB; } else { paddleBall = (IPaddleBall)collision.GameObjectB; collidingItem = (IItem)collision.GameObjectA; collisionSide = collisionSide.FlipSide(); } }
public EnemyElevatorCollisionHandler(CollisionData collision, IGameState gameState) { this.collision = collision; this.gameState = gameState; side = collision.CollisionSide; if (collision.GameObjectA is IEnemy) { enemy = (IEnemy)collision.GameObjectA; } else { enemy = (IEnemy)collision.GameObjectB; side = side.FlipSide(); } }
public MarioBlockCollisionHandler(CollisionData collision) { this.collision = collision; collisionSide = (ICollisionSide)collision.CollisionSide; if (collision.GameObjectA is IMario) { collidingMario = (IMario)collision.GameObjectA; collidingBlock = (Block)collision.GameObjectB; } else { collidingMario = (IMario)collision.GameObjectB; collidingBlock = (Block)collision.GameObjectA; collisionSide = collisionSide.FlipSide(); } }
public MarioEnemyCollisionHandler(CollisionData collision) { this.collision = collision; side = collision.CollisionSide; if (collision.GameObjectA is IMario) { mario = (IMario)collision.GameObjectA; enemy = (IEnemy)collision.GameObjectB; } else { mario = (IMario)collision.GameObjectB; enemy = (IEnemy)collision.GameObjectA; side = side.FlipSide(); } }
public BuckeyeWolverineCollisionHandler(CollisionData collision) { this.collision = collision; side = collision.CollisionSide; if (collision.GameObjectA is IBuckeyePlayer) { player = (IBuckeyePlayer)collision.GameObjectA; enemy = (IWolverine)collision.GameObjectB; } else { player = (IBuckeyePlayer)collision.GameObjectB; enemy = (IWolverine)collision.GameObjectA; side = side.FlipSide(); } }
public PaddleBallBlockCollisionHandler(CollisionData collision, IGameState gameState) { this.collision = collision; brickBreakerGameState = gameState; collisionSide = (ICollisionSide)collision.CollisionSide; if (collision.GameObjectA is IPaddleBall) { collidingBall = (IPaddleBall)collision.GameObjectA; collidingBlock = (IBlock)collision.GameObjectB; } else { collidingBall = (IPaddleBall)collision.GameObjectB; collidingBlock = (IBlock)collision.GameObjectA; collisionSide = collisionSide.FlipSide(); } }
public BlockFireballCollisionHandler(CollisionData collision) { this.collision = collision; this.side = collision.CollisionSide; if (collision.GameObjectA is IProjectile) { fireball = (IProjectile)collision.GameObjectA; block = (IBlock)collision.GameObjectB; } else { fireball = (IProjectile)collision.GameObjectB; block = (IBlock)collision.GameObjectA; this.side.FlipSide(); } }
public MarioPipeCollisionHandler(CollisionData collision, IGameState gameState) { this.collision = collision; this.gameState = gameState; side = collision.CollisionSide; if (collision.GameObjectA is IMario) { mario = (IMario)collision.GameObjectA; pipe = (IPipe)collision.GameObjectB; } else { mario = (IMario)collision.GameObjectB; pipe = (IPipe)collision.GameObjectA; side = side.FlipSide(); } }
public BuckeyePipeCollisionHandler(CollisionData collision, IGameState gameState) { this.collision = collision; this.gameState = gameState; side = collision.CollisionSide; if (collision.GameObjectA is IBuckeyePlayer) { player = (IBuckeyePlayer)collision.GameObjectA; pipe = (IPipe)collision.GameObjectB; } else { player = (IBuckeyePlayer)collision.GameObjectB; pipe = (IPipe)collision.GameObjectA; side = side.FlipSide(); } }
private static void HandleCollisionsInOrder(List <IGameObject> objectList, IGameState gameState) { for (int i = objectList.Count - 1; i >= 0; i--) { if (!(objectList[i] is IBlock || objectList[i] is IPipe || objectList[i] is IScenery || objectList[i] is PacMarioNormalCoin || objectList[i] is IBuckeyeTile)) { for (int j = objectList.Count - 1; j >= 0; j--) { ICollisionSide side = CollisionDetector.DetectCollision(objectList[i], objectList[j]); if (side != null && i != j) { CollisionSelector.HandleCollision(new CollisionData(objectList[i], objectList[j], side), gameState); } } } } }