示例#1
0
        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 EnemyEnemyCollisionHandler(CollisionData collision)
 {
     this.collision = collision;
     enemyA = (IEnemy)collision.GameObjectA;
     enemyB = (IEnemy)collision.GameObjectB;
     side = (ICollisionSide)collision.CollisionSide;
 }
示例#5
0
 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();
     }
 }
示例#10
0
        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 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();
     }
 }
示例#17
0
 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 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 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();
     }
 }
示例#22
0
        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 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);
                        }
                    }
                }
            }
        }
 public CollisionData(IGameObject objectA, IGameObject objectB, ICollisionSide side) {
     collisionRectangle = new Rectangle();
     gameObjectA = objectA;
     gameObjectB = objectB;
     collisionSide = side;
 }