public override void Enter(params object[] args)
        {
            _screen      = new RenderTarget2D(StateMachine.Game.GraphicsDevice, VirtualScreenSize.Width * VirtualScreenSize.ScreenSizeMultiplier, VirtualScreenSize.Height * VirtualScreenSize.ScreenSizeMultiplier);
            _spriteBatch = new SpriteBatch(StateMachine.Game.GraphicsDevice);

            bool resetForNewGame = true;

            if (args.Length > 0 && args[0] is bool)
            {
                resetForNewGame = (bool)args[0];
            }
            // Generate map
            TerrainFactory.GenerateGrid();
            TerrainFactory.GenerateResourceGrid();

            // Generate available buildings
            var buildings = BuildingFactory.GenerateAvailableBuildings();

            // Create models
            _playerModel          = new PlayerModel();
            _playerResourcesModel = new PlayerResourcesModel();
            _terrainTileListModel = new TerrainTileListModel(TerrainFactory.Tiles, TerrainFactory.Resources);
            _buildingListModel    = new BuildingListModel(buildings);


            // Create and add controllers
            var playerController     = new PlayerController(_playerModel, _terrainTileListModel);
            var backgroundController = new BackgroundController(_playerModel, _terrainTileListModel, _playerResourcesModel);
            var buildController      = new BuildController(_buildingListModel, _playerModel, _playerResourcesModel);

            _controllers.Add(playerController);
            _controllers.Add(backgroundController);
            _controllers.Add(buildController);

            // Create and add views
            _views.Add(new BackgroundView(StateMachine.Game.Content, _spriteBatch, _terrainTileListModel, _playerModel));
            _views.Add(new PlayerResourcesView(StateMachine.Game.Content, _spriteBatch, _playerResourcesModel, _playerModel));
            _views.Add(new PlayerView(StateMachine.Game.Content, _spriteBatch, _playerModel));
            _views.Add(new BuildView(StateMachine.Game.Content, _spriteBatch, _buildingListModel, _playerModel, _playerResourcesModel));
        }