/// <summary> /// Saves Overlay(Data)Pack sections of the map file. /// </summary> private void SaveOverlayData() { if (mapOverlays == null || !overlayDataAltered) { return; } byte[] overlayPack = new byte[mapOverlays.Count]; byte[] overlayDataPack = new byte[mapOverlays.Count]; for (int i = 0; i < mapOverlays.Count; i++) { overlayPack[i] = mapOverlays[i].Index; overlayDataPack[i] = mapOverlays[i].FrameIndex; } string base64_overlayPack = MapPackHelper.CompressMapPackData(overlayPack, true); string base64_overlayDataPack = MapPackHelper.CompressMapPackData(overlayDataPack, true); ReplacePackedSectionData("OverlayPack", base64_overlayPack); ReplacePackedSectionData("OverlayDataPack", base64_overlayDataPack); }
/// <summary> /// Saves tile data to map file. /// </summary> private void SaveTileData() { if (mapTiles == null || !tileDataAltered) { return; } if (mapTiles.Count < 1) { RemoveSection("IsoMapPack5"); return; } byte[] isoMapPack = new byte[mapTiles.Count * 11 + 4]; int i = 0; foreach (KeyValuePair <Tuple <int, int>, MapTile> kvp in mapTiles) { MapTile tile = kvp.Value; byte[] x = BitConverter.GetBytes(tile.X); byte[] y = BitConverter.GetBytes(tile.Y); byte[] tilei = BitConverter.GetBytes(tile.TileIndex); isoMapPack[i] = x[0]; isoMapPack[i + 1] = x[1]; isoMapPack[i + 2] = y[0]; isoMapPack[i + 3] = y[1]; isoMapPack[i + 4] = tilei[0]; isoMapPack[i + 5] = tilei[1]; isoMapPack[i + 6] = tilei[2]; isoMapPack[i + 7] = tilei[3]; isoMapPack[i + 8] = tile.SubTileIndex; isoMapPack[i + 9] = tile.Level; isoMapPack[i + 10] = tile.IceGrowth; i += 11; } ReplacePackedSectionData("IsoMapPack5", MapPackHelper.CompressMapPackData(isoMapPack)); }
/// <summary> /// Replaces current map preview with a provided bitmap image. /// </summary> /// <returns>True if preview image was successfully replaced, otherwise false.</returns> public bool SetMapPreview(Bitmap preview) { if (preview == null) { return(false); } int previewWidth = preview.Width; int previewHeight = preview.Height; if (previewWidth < 1 || previewHeight < 1) { return(false); } bool success = GraphicsUtils.TryConvertBitmap(preview, out Bitmap convertedPreview, System.Drawing.Imaging.PixelFormat.Format24bppRgb); if (!success) { return(false); } byte[] imageData = GraphicsUtils.GetRawImageDataFromBitmap(convertedPreview); if (imageData == null) { return(false); } ReplacePackedSectionData("PreviewPack", MapPackHelper.CompressMapPackData(imageData)); PreviewWidth = previewWidth; PreviewHeight = previewHeight; previewBitmap = convertedPreview; return(true); }