public TileGenerator(MapConfig config)
 {
     _mapConfig      = config;
     _source         = ProviderFactory.CreateSourceProvider(config);
     _outputStrategy = ProviderFactory.CreateOutputStrategy(config);
     _outputStrategy.Init(config.SavePath);
     _worker           = new Core.QueueTaskWorker <TileCoordWrap>(config.RunThreadCount, GetTile, true);
     _totalTile        = _source.TileGrid.TotalTile;
     _lastTiles        = new Core.LimitedQueue <Core.TileCoord>(config.RunThreadCount);
     _successTileIndex = config.Result.SuccessTiles;
     _currTileIndex    = config.Result.LastTileIndex;
 }
        public static ITileOutputStrategy CreateOutputStrategy(MapConfig config)
        {
            ITileOutputStrategy result = null;

            switch (config.Output.ToLower())
            {
            case "file":
                result = new DefaultOutputStrategy();
                break;

            case "sqlite":
                result = new SqliteOutputStrategy();
                break;

            default:
                result = new DefaultOutputStrategy();
                break;
            }
            return(result);
        }