Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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));
        }
Exemple #3
0
        /// <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);
        }