Example #1
0
        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;
                });
            });
        }