private void OpenMap(string fileName) { if (String.IsNullOrEmpty(fileName)) { return; } string ext = Path.GetExtension(fileName); if (ext.ToLower() != ".map") { throw new InvalidDataException("Unrecognized map format!"); } var definitions = new Dictionary <string, DefinitionDictionary>(); foreach (string path in Settings.Local.DefinitionDictionaryPaths) { definitions.Add(path, Loader.LoadDefinitionDictionary(path)); } using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { Map = new QuakeMap(stream, definitions.Values.ToList().Stack()); } Map.ProgressUpdated += ProgressReported; Task.Run(() => { Map.Parse(); Settings.Updatables.Add(Map); Settings.Save(); BackEnd.InitTextures(Map.Textures); GetAllThisNonsenseReady(); Application.Instance.Invoke(() => { MapReloader.File = fileName; MapReloader.Enabled = cbxAutoReload.Checked; }); }); }