public static void FireballCollideWithBlock(FireballObject fireball, IGameObject block)
        {
            Level      level             = Game1.Instance.currentState.Level;
            Rectangle  fireballRectangle = fireball.GetHitBox();
            Rectangle  blockRectangle    = block.GetHitBox();
            IBlock     castBlock         = (IBlock)block;
            ICollision collisionSide     = CollisionSideDetector.DetectCollisionSide(fireballRectangle, blockRectangle);

            if (castBlock.State is HiddenItemBlockState)
            {
                return;
            }

            if (collisionSide is TopCollision)
            {
                fireball.Position = new Vector2(fireball.Position.X, fireball.Position.Y - collisionSide.CollisionIntersection.Height);
                fireball.BounceOffGround();
            }
            else if (collisionSide is RightCollision)
            {
                level.AddObject(new FireballExpolsion((int)fireball.Position.X, (int)fireball.Position.Y));
                fireball.Explode();
            }
            else if (collisionSide is LeftCollision)
            {
                level.AddObject(new FireballExpolsion((int)fireball.Position.X, (int)fireball.Position.Y));
                fireball.Explode();
            }
            else if (collisionSide is BottomCollision)
            {
                level.AddObject(new FireballExpolsion((int)fireball.Position.X, (int)fireball.Position.Y));
                fireball.PhysicsObject.dy = 10.0F;
            }
        }
        public static void FireballCollideWithPipe(FireballObject fireball, IPipe pipe, Level level)
        {
            Rectangle  fireballRectangle = fireball.GetHitBox();
            Rectangle  pipeRectangle     = pipe.GetHitBox();
            ICollision collisionSide     = CollisionSideDetector.DetectCollisionSide(fireballRectangle, pipeRectangle);

            if (collisionSide is TopCollision)
            {
                fireball.BounceOffGround();
            }
            else
            {
                level.AddObject(new FireballExpolsion((int)fireball.Position.X, (int)fireball.Position.Y));
                fireball.Explode();
            }
        }