// PRIVATE constructor
        private WallManager(int windowHeight)
        {
            rightWalls = new List <Wall>();
            leftWalls  = new List <Wall>();
            generator  = new Random();

            // Spawner and despawner are above and below screen, respectively.
            spawner   = new Point(0, -50);
            despawner = new Point(0, windowHeight + 50);

            initialScrollVelocity         = new Vector2(0, 3);
            incrementFactorScrollVelocity = new Vector2(0, 1);
            ScrollVelocity = initialScrollVelocity;

            GapSize = 200;

            WallColourArray = new Color[] {
                Color.White,
                Color.Green,
                Color.Blue,
                Color.Red,
                Color.Yellow,
                Color.Purple,
                Color.Fuchsia,
                Color.Orange,
                Color.Brown,
                Color.Black
            };

            currentWallColour = Color.White;

            defaultRandom = new DefaultRandom();
            zigzag        = new Zigzag();
            bigZigzag     = new BigZigzag();
            narrowSpace   = new NarrowSpace();
            narrowPath    = new NarrowPath();
            obstacle      = new Obstacle();
            straightaway  = new Straightaway();
            abruptTurn    = new AbruptTurn();
            roundabout    = new Roundabout();

            timePerTerrain           = 5.0;   // New terrain generated every 5s.
            currentWallPairInTerrain = 0;
        }
 public TerrainGeneration()
 {
     generator      = new Random();
     zigzag         = new Zigzag();
     timePerTerrain = 15.0;             // New terrain generated every 15s.
 }