Ejemplo n.º 1
0
        private bool LoadTile(int tileX, int tileY)
        {
            if (!WDT.HasTile(tileX, tileY))
            {
                return(false);
            }

            if (IsTileLoaded(tileX, tileY))
            {
                return(false);
            }

            // Generate tile
            var tile = new ADT(Continent, tileX, tileY, WDT);

            tile.Read();
            tile.Generate();

            // Generate renderer
            var renderer = new ADTRenderer(Controller, tile);

            renderer.Generate();
            renderer.Bind(Controller.Shader);
            ADTRenderer.Renderers.Add(renderer);

            return(true);
        }
Ejemplo n.º 2
0
        private void GetSpawnTile(out int x, out int y)
        {
            var topLeft     = new[] { 64, 64 };
            var bottomRight = new[] { 0, 0 };

            for (var xx = 0; xx < 64; ++xx)
            {
                for (var yy = 0; yy < 64; ++yy)
                {
                    if (!WDT.HasTile(xx, yy))
                    {
                        continue;
                    }

                    topLeft[0]     = Math.Min(topLeft[0], xx);
                    topLeft[1]     = Math.Min(topLeft[1], yy);
                    bottomRight[0] = Math.Max(bottomRight[0], xx);
                    bottomRight[1] = Math.Max(bottomRight[1], yy);
                }
            }

            x = (int)Math.Floor((topLeft[0] + bottomRight[0]) / 2.0f);
            y = (int)Math.Floor((topLeft[1] + bottomRight[1]) / 2.0f);
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
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;
        }