protected override void OnClick() { var strTitle = EidssMessages.GetForCurrentLang("gis_Caption_SaveOpenMpk", "Select map pack"); var strFilter = EidssMessages.GetForCurrentLang("gis_FilterMpk", "Map pack files | *.mpk"); var strError = EidssMessages.GetForCurrentLang("gis_OpenMpkError", "Map can't be imported!"); var strComplete = EidssMessages.GetForCurrentLang("gis_OpenMpkComplete", "Map has been successfully imported!"); var strCompleteTitle = EidssMessages.GetForCurrentLang("gis_MpkCompleteTitle", "EIDDS Maps"); var openFileDialog = new OpenFileDialog { Title = strTitle, Filter = strFilter }; if (openFileDialog.ShowDialog(null) == DialogResult.OK) { try { var outPath = Path.Combine(MapProjectsStorage.CustomProjectsPath); MapPacker.UnpackMap(openFileDialog.FileName, outPath, selectNewName); MapProjectsStorage.UpdateMapProjectList(); MessageForm.Show(strComplete, strCompleteTitle, MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { ErrorForm.ShowError(strError, ex); } } }
/// <summary> /// Loads a level in the current map editor. This can only be used once per instance. /// </summary> /// <param name="mapPath">The path of the level to load.</param> public void LoadLevel(string mapPath) { Logger.Log($"MapEditor: Loading level {mapPath}"); using (FileStream stream = File.OpenRead(mapPath)) { using (BinaryReader reader = new BinaryReader(stream)) { LoadLevel(Level.Decode(MapPacker.ReadMapBinary(reader)), mapPath); } } }
/// <summary> /// Saves the currently loaded map. /// </summary> public void Save() { if (!File.Exists(LoadedPath)) { using (FileStream stream = File.Create(LoadedPath)) { stream.Close(); } } // first write the binary into memory. This way, in case of a crash, the map binary on disc doesn't get corrupted. using MemoryStream memStream = new MemoryStream(); using BinaryWriter writer = new BinaryWriter(memStream); MapPacker.WriteMapBinary(writer, LoadedLevel.Encode()); // map written successfully, now save it File.WriteAllBytes(LoadedPath, memStream.ToArray()); Unsaved = false; }
protected override void OnClick() { if (ZipConstants.DefaultCodePage == 1) { ZipConstants.DefaultCodePage = 437; //bug in OEMCodePage property TODO[enikulin]: is it need? } var strTitle = EidssMessages.GetForCurrentLang("gis_Caption_SaveOpenMpk", "Select map pack"); var strFilter = EidssMessages.GetForCurrentLang("gis_FilterMpk", "Map pack files | *.mpk"); var strError = EidssMessages.GetForCurrentLang("gis_SaveMpkError", "Map can't be saved!"); var strComplete = EidssMessages.GetForCurrentLang("gis_SaveMpkComplete", "Map has been successfully exporting!"); var strCompleteTitle = EidssMessages.GetForCurrentLang("gis_MpkCompleteTitle", "EIDDS Maps"); var saveFileDialog = new SaveFileDialog { Title = strTitle, OverwritePrompt = true, Filter = strFilter }; if (saveFileDialog.ShowDialog(null) == DialogResult.OK) { try { var map = m_MapImage.Map; var settings = m_MapImage.MapSettings; using (new TemporaryWaitCursor()) { MapPacker.PackMap(map, settings, Path.GetFileNameWithoutExtension(saveFileDialog.FileName), saveFileDialog.FileName); } MessageForm.Show(strComplete, strCompleteTitle, MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { //TODO[enikulin]: Change this code! //(new EIDSSErrorMessage("errCantSaveMap", strError, ex) ErrorForm.ShowError(strError, ex); } } }