public void Initialize(AppConfig config) { if (map != null) { map.Dispose(); } fileName = config.MapFileName; userDragSpeed = config.UserDragSpeed; server = new TileServer(config.MapSize.x, config.MapSize.y, prefab.GetPrefabCount(), config.RefreshIntervalSeconds, networkLatency); ITileFactory factory; if (config.RefreshTiles) { factory = new TimedProxyTileFactory(server, config.RefreshIntervalSeconds); } else { factory = new ProxyTileFactory(server); } ITileLoadingStrategy tileLoadingStrategy; if (config.LoadPotentialTiles) { tileLoadingStrategy = new EagerLoadingStrategy(); } else { tileLoadingStrategy = new LazyLoadingStrategy(); } storage = new TileStorage(factory); Map simpleMap = new Map(storage.Load(fileName), factory, tileLoadingStrategy, prefab, config.MapSize.x, config.MapSize.y); if (config.LimitTilesCount) { map = new LimitedMap(simpleMap, config.MaxTilesCount); } else { map = simpleMap; } area = new VisibleArea(map); initialized = true; }