public BlockStateMachine(BlockForm block)
 {
     QuestionBlock = new QuestionBlockState(this, block);
     UsedBlock     = new UsedBlockState(this, block);
     BrickBlock    = new BrickBlockState(this, block);
     FloorBlock    = new FloorBlockState(this, block);
     PyramidBlock  = new PyramidBlockState(this, block);
     HiddenBlock   = new HiddenBlockState(this, block);
     VMovingBlock  = new VMovingBlockState(this, block);
     HMovingBlock  = new HMovingBlockState(this, block);
 }
        public BrickEntity(ObstacleFactory factory, Vector2 position, Entity ItemEnt)
            : base(factory, ItemEnt)
        {
            Block          = (AbstractObstacle)SpriteFactory.getSprite((int)obstacleTypes.BRICKBLOCK);
            Block.Position = position;
            Block.Position = Vector2.Clamp(this.Position, new Vector2(0f, Position.Y - 2f), new Vector2(1000000f, Position.Y));
            B = new AbstractObstacle[4];
            for (int i = 0; i < 4; i++)
            {
                B[i]          = (AbstractObstacle)SpriteFactory.getSprite((int)obstacleTypes.BRICKSHARD);
                B[i].Position = Block.Position;
                B[i].Velocity = Vector2.Zero;
            }
            Sprite.Position = position;
            Block.Velocity  = Vector2.Zero;
            float originalPos = Block.Position.Y;

            BlockSM           = new BlockStateMachine(this);
            CurrentBlockState = new BrickBlockState(BlockSM, this);
        }