Example #1
0
        public void Generate()
        {
            for (int y = 0; y < TilesY; y++)
            {
                for (int x = 0; x < TilesX; x++)
                {
                    var file = GetMinimapFileByCoords(World, StartTileX + x, StartTileY + y);
                    Image tile;
                    try
                    {
                        var blp = new Blp(file);
                        tile = blp.GetImage(0);
                    }
                    catch (FileNotFoundException)
                    {
                        continue;
                    }

                    int posX = x * TileWidth;
                    int posY = y * TileHeight;

                    var resized = ResizeImage(tile);
                    for (int iy = 0; iy < TileHeight; iy++)
                    {
                        for (int ix = 0; ix < TileWidth; ix++)
                        {
                            Result.SetPixel(ix + posX, iy + posY, resized.GetPixel(ix, iy));
                        }
                    }
                }
            }
        }
Example #2
0
        private void UpdateBackground()
        {
            if (_startX == 0 && _startY == 0)
            {
                var files = Directory.GetFiles("S:\\meshReader\\Meshes\\" + _world + "\\");
                var best =
                    files.Where(f => f.EndsWith(".tile")).OrderByDescending(f => new FileInfo(f).Length).FirstOrDefault();
                best = best.Substring(best.LastIndexOf('\\') + 1);
                var tokens = best.Split('_');
                _startX = int.Parse(tokens[1]);
                _startY = int.Parse(tokens[2].Substring(0, tokens[2].IndexOf('.')));
            }

            originTileLabel.Content = OriginTileX + ", " + OriginTileY;
            _pather = new Pather("S:\\meshReader\\Meshes\\" + _world);

            var wdt = new WDT("World\\Maps\\" + _world + "\\" + _world + ".wdt");
            if (!wdt.IsValid || wdt.IsGlobalModel)
                return;                   

            const int totalX = 3;
            const int totalY = 3;

            const int tileSize = 256;
            var result = new Bitmap(totalX * tileSize, totalY * tileSize);
            for (int y = _startY - 1; y <= _startY+1; y++)
            {
                for (int x = _startX - 1; x <= _startX+1; x++)
                {
                    if (!wdt.HasTile(x, y))
                        continue;

                    try
                    {
                        var path = GetMinimapFileByCoords(_world, x, y);
                        var xBegin = (x-(_startX-1))*tileSize;
                        var yBegin = (y-(_startY-1))*tileSize;

                        var image = new Blp(path).GetImage(0);
                        var bitmap = new Bitmap(image);
                        for (int i = 0; i < tileSize; i++)
                        {
                            for (int j = 0; j < tileSize; j++)
                                result.SetPixel(xBegin + i, yBegin + j, bitmap.GetPixel(i, j));
                        }
                    }
                    catch (FileNotFoundException)
                    {

                    }
                }
            }

            // somebody needs to kill WPF developers for this bullshit
            var ms = new MemoryStream();
            result.Save(ms, ImageFormat.Bmp);
            ms.Seek(0, SeekOrigin.Begin);
            var bi = new BitmapImage();
            bi.BeginInit();
            bi.StreamSource = ms;
            bi.EndInit();

            canvas1.Background = new ImageBrush(bi);
        }
Example #3
0
        public void LoadFromContinent(string continent)
        {
            var wdt = new WDT("World\\Maps\\" + continent + "\\" + continent + ".wdt");
            if (!wdt.IsValid || wdt.IsGlobalModel)
                return;

            var result = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            for (int i = 0; i < result.Width; i++)
            {
                for (int j = 0; j < result.Height; j++)
                    result.SetPixel(i, j, Color.FromArgb(0, 29, 40));
            }

            int minX = 65, maxX = 0, minY = 65, maxY = 0;
            for (int y = 0; y < 64; y++)
            {
                for (int x = 0; x < 64; x++)
                {
                    if (!wdt.HasTile(x, y))
                        continue;

                    if (x < minX)
                        minX = x;
                    if (x > maxX)
                        maxX = x;
                    if (y < minY)
                        minY = y;
                    if (y > maxY)
                        maxY = y;
                }
            }

            _totalX = maxX - minX + 1;
            _totalY = maxY - minY + 1;

            for (int y = 0; y < 64; y++)
            {
                for (int x = 0; x < 64; x++)
                {
                    if (!wdt.HasTile(x, y))
                        continue;

                    try
                    {
                        var path = GetMinimapFileByCoords(continent, x, y);
                        var xBegin = GetXBegin(x - minX);
                        var yBegin = GetYBegin(y - minY);

                        var image = new Blp(path).GetImage(0);
                        var resized = ResizeImage(image);
                        for (int i = 0; i < resized.Width; i++)
                        {
                            for (int j = 0; j < resized.Height; j++)
                                result.SetPixel(xBegin + i, yBegin + j, resized.GetPixel(i, j));
                        }
                    }
                    catch (FileNotFoundException)
                    {

                    }
                }
            }

            pictureBox1.Image = result;
            pictureBox1.Visible = true;
        }