public void Visit(Cave cave) { for (float x = cave.blockWidth / 2; x < cave.levelWidth; x += cave.blockWidth) { GameObject gameObject = new OutlineObstacle(new Boulder(new Obstacle(x, cave.blockHeight / 2, cave.blockWidth, cave.blockHeight))); gameObject.Decorate(); cave.AddStuff(gameObject); gameObject = new OutlineObstacle(new Boulder(new Obstacle(x, cave.levelHeight - cave.blockHeight / 2, cave.blockWidth, cave.blockHeight))); gameObject.Decorate(); cave.AddStuff(gameObject); } for (float y = cave.blockHeight + cave.blockHeight / 2; y < cave.levelHeight - cave.blockHeight; y += cave.blockHeight) { GameObject gameObject = new OutlineObstacle(new Boulder(new Obstacle(cave.blockWidth / 2, y, cave.blockWidth, cave.blockHeight))); gameObject.Decorate(); cave.AddStuff(gameObject); gameObject = new OutlineObstacle(new Boulder(new Obstacle(cave.levelWidth - cave.blockWidth / 2, y, cave.blockWidth, cave.blockHeight))); gameObject.Decorate(); cave.AddStuff(gameObject); } }