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); }
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); }
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); }
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; }