diff --git a/src/com/bytezone/diskbrowser/gui/DataPanel.java b/src/com/bytezone/diskbrowser/gui/DataPanel.java index 40e4a8d..1078cba 100755 --- a/src/com/bytezone/diskbrowser/gui/DataPanel.java +++ b/src/com/bytezone/diskbrowser/gui/DataPanel.java @@ -75,7 +75,7 @@ class DataPanel extends JTabbedPane imagePanel = new ImagePanel (); imagePane = new JScrollPane (imagePanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, - ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); + ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); imagePane.getVerticalScrollBar ().setUnitIncrement (50); imagePane.getHorizontalScrollBar ().setUnitIncrement (25); diff --git a/src/com/bytezone/diskbrowser/wizardry/MazeCell.java b/src/com/bytezone/diskbrowser/wizardry/MazeCell.java index 37c0ed7..32b39aa 100755 --- a/src/com/bytezone/diskbrowser/wizardry/MazeCell.java +++ b/src/com/bytezone/diskbrowser/wizardry/MazeCell.java @@ -57,6 +57,9 @@ class MazeCell public void draw (Graphics2D g, int x, int y) { + g.setColor (Color.BLACK); + g.fillRect (x, y, 22, 22); + g.setColor (Color.WHITE); if (westWall) diff --git a/src/com/bytezone/diskbrowser/wizardry/MazeGridV5.java b/src/com/bytezone/diskbrowser/wizardry/MazeGridV5.java index 4716883..7607239 100644 --- a/src/com/bytezone/diskbrowser/wizardry/MazeGridV5.java +++ b/src/com/bytezone/diskbrowser/wizardry/MazeGridV5.java @@ -1,5 +1,6 @@ package com.bytezone.diskbrowser.wizardry; +import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.RenderingHints; @@ -13,6 +14,10 @@ import com.bytezone.diskbrowser.utilities.HexFormatter; public class MazeGridV5 extends AbstractFile { List grids = new ArrayList (); + int minX = 9999; + int minY = 9999; + int maxX = 0; + int maxY = 0; public MazeGridV5 (String name, byte[] buffer) { @@ -25,11 +30,14 @@ public class MazeGridV5 extends AbstractFile for (int col = 0; col < 8; col++) grid[row][col] = getLayout (i, row, col); - MazeGrid mazeGrid = new MazeGrid (); - mazeGrid.grid = grid; + MazeGrid mazeGrid = + new MazeGrid (grid, buffer[528 + i] & 0xFF, buffer[512 + i] & 0xFF); grids.add (mazeGrid); - mazeGrid.yOffset = buffer[512 + i] & 0xFF; - mazeGrid.xOffset = buffer[528 + i] & 0xFF; + + minX = Math.min (minX, mazeGrid.xOffset); + minY = Math.min (minY, mazeGrid.yOffset); + maxX = Math.max (maxX, mazeGrid.xOffset); + maxY = Math.max (maxY, mazeGrid.yOffset); } } @@ -37,14 +45,20 @@ public class MazeGridV5 extends AbstractFile public BufferedImage getImage () { Dimension cellSize = new Dimension (22, 22); - int gridWidth = 8 * cellSize.width + 1; - int gridHeight = 8 * cellSize.height + 1; - image = new BufferedImage (6 * gridWidth, 6 * gridHeight, + int fudge = 30; + + int gridWidth = (maxX - minX + 8) * cellSize.width; + int gridHeight = (maxY - minY + 7) * cellSize.height; + + image = new BufferedImage (gridWidth + 1, gridHeight + fudge, BufferedImage.TYPE_USHORT_555_RGB); Graphics2D g = image.createGraphics (); g.setRenderingHint (RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g.setColor (Color.LIGHT_GRAY); + g.fillRect (0, 0, gridWidth + 1, gridHeight + fudge); + for (int i = 0; i < 16; i++) { MazeGrid mazeGrid = grids.get (i); @@ -53,9 +67,9 @@ public class MazeGridV5 extends AbstractFile { MazeCell cell = mazeGrid.grid[row][column]; int x = column * cellSize.width; - int y = image.getHeight () - (row + 1) * cellSize.height - 1; - x += (mazeGrid.xOffset - 0x80) * cellSize.width + 10 * cellSize.width; - y -= (mazeGrid.yOffset - 0x80) * cellSize.height + 10 * cellSize.height; + int y = image.getHeight () - (row) * cellSize.height; + x += (mazeGrid.xOffset - minX) * cellSize.width; + y -= (mazeGrid.yOffset - minY) * cellSize.height + fudge; cell.draw (g, x, y); } } @@ -111,8 +125,15 @@ public class MazeGridV5 extends AbstractFile private class MazeGrid { - MazeCell[][] grid = new MazeCell[8][8]; + MazeCell[][] grid; int xOffset; int yOffset; + + public MazeGrid (MazeCell[][] grid, int x, int y) + { + this.grid = grid; + this.xOffset = x; + this.yOffset = y; + } } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/wizardry/Wizardry4BootDisk.java b/src/com/bytezone/diskbrowser/wizardry/Wizardry4BootDisk.java index 4f1de0a..fbc001c 100644 --- a/src/com/bytezone/diskbrowser/wizardry/Wizardry4BootDisk.java +++ b/src/com/bytezone/diskbrowser/wizardry/Wizardry4BootDisk.java @@ -173,7 +173,7 @@ public class Wizardry4BootDisk extends PascalDisk int offset = base + i * 1024; byte[] data = new byte[1024]; System.arraycopy (buffer, offset, data, 0, data.length); - MazeGridV5 grid = new MazeGridV5 ("test level " + i, data); + MazeGridV5 grid = new MazeGridV5 ("Maze level " + (i + 1), data); List mazeBlocks = new ArrayList (); addToNode (grid, mazeNode, mazeBlocks);