From 48aca6e1eb0b61627d608bf3f98d7e6e32909678 Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Mon, 14 Mar 2022 08:46:56 +1000 Subject: [PATCH] tidying --- .../diskbrowser/wizardry/ExperienceLevel.java | 19 ++--- .../diskbrowser/wizardry/MazeCell.java | 20 +++--- .../diskbrowser/wizardry/MazeLevel.java | 71 +++++++++---------- .../wizardry/WizardryScenarioDisk.java | 6 +- 4 files changed, 59 insertions(+), 57 deletions(-) diff --git a/src/com/bytezone/diskbrowser/wizardry/ExperienceLevel.java b/src/com/bytezone/diskbrowser/wizardry/ExperienceLevel.java index c6db8e7..e1fda75 100755 --- a/src/com/bytezone/diskbrowser/wizardry/ExperienceLevel.java +++ b/src/com/bytezone/diskbrowser/wizardry/ExperienceLevel.java @@ -22,9 +22,8 @@ class ExperienceLevel extends AbstractFile if (buffer[ptr] == 0) break; - long points = - Utility.getShort (buffer, ptr) + Utility.getShort (buffer, ptr + 2) * 10000 - + Utility.getShort (buffer, ptr + 4) * 100000000L; + long points = Utility.getShort (buffer, ptr) + Utility.getShort (buffer, ptr + 2) * 10000 + + Utility.getShort (buffer, ptr + 4) * 100000000L; expLevels[seq++] = points; } } @@ -33,9 +32,7 @@ class ExperienceLevel extends AbstractFile long getExperiencePoints (int level) // ---------------------------------------------------------------------------------// { - if (level < 13) - return expLevels[level]; - return (level - 12) * expLevels[0] + expLevels[12]; + return level < 13 ? expLevels[level - 1] : (level - 13) * expLevels[0] + expLevels[12]; } // ---------------------------------------------------------------------------------// @@ -43,9 +40,13 @@ class ExperienceLevel extends AbstractFile public String getText () // ---------------------------------------------------------------------------------// { - StringBuilder line = new StringBuilder (); - for (long exp : expLevels) - line.append (exp + "\n"); + StringBuilder line = new StringBuilder (name + "\n\nLevel Points Needed\n"); + + for (int i = 2; i <= 26; i++) + line.append (String.format (" %2d %,13d%n", i, getExperiencePoints (i))); + + line.append (String.format ("%n %,13d+", expLevels[0])); + return line.toString (); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/wizardry/MazeCell.java b/src/com/bytezone/diskbrowser/wizardry/MazeCell.java index 2ea96d6..66b895c 100755 --- a/src/com/bytezone/diskbrowser/wizardry/MazeCell.java +++ b/src/com/bytezone/diskbrowser/wizardry/MazeCell.java @@ -11,7 +11,9 @@ import com.bytezone.diskbrowser.utilities.HexFormatter; class MazeCell // -----------------------------------------------------------------------------------// { - static Dimension cellSize = new Dimension (22, 22); // size in pixels + static final Dimension cellSize = new Dimension (22, 22); // size in pixels + static final Color SECRET_DOOR = Color.RED; + static final Color DOOR = Color.GREEN; boolean northWall; boolean southWall; @@ -64,7 +66,7 @@ class MazeCell // ---------------------------------------------------------------------------------// { g.setColor (Color.BLACK); - g.fillRect (x, y, 22, 22); + g.fillRect (x, y, cellSize.width, cellSize.height); g.setColor (Color.WHITE); @@ -77,7 +79,7 @@ class MazeCell if (southWall) drawSouth (g, x, y); - g.setColor (Color.RED); + g.setColor (DOOR); if (westDoor) drawWest (g, x, y); @@ -88,7 +90,7 @@ class MazeCell if (southDoor) drawSouth (g, x, y); - g.setColor (Color.GREEN); + g.setColor (SECRET_DOOR); if (westDoor && westWall) drawWest (g, x, y); @@ -144,8 +146,7 @@ class MazeCell void drawEast (Graphics2D g, int x, int y) // ---------------------------------------------------------------------------------// { - g.drawLine (x + cellSize.width - 1, y + 1, x + cellSize.width - 1, - y + cellSize.height - 1); + g.drawLine (x + cellSize.width - 1, y + 1, x + cellSize.width - 1, y + cellSize.height - 1); } // ---------------------------------------------------------------------------------// @@ -159,8 +160,7 @@ class MazeCell void drawSouth (Graphics2D g, int x, int y) // ---------------------------------------------------------------------------------// { - g.drawLine (x + 1, y + cellSize.height - 1, x + cellSize.width - 1, - y + cellSize.height - 1); + g.drawLine (x + 1, y + cellSize.height - 1, x + cellSize.width - 1, y + cellSize.height - 1); } // ---------------------------------------------------------------------------------// @@ -324,8 +324,8 @@ class MazeCell sign.append ("castle "); else { - sign.append ("L" + addressTo.level + " " + addressTo.row + "N " + addressTo.column - + "E "); + sign.append ( + "L" + addressTo.level + " " + addressTo.row + "N " + addressTo.column + "E "); } } if (pit) diff --git a/src/com/bytezone/diskbrowser/wizardry/MazeLevel.java b/src/com/bytezone/diskbrowser/wizardry/MazeLevel.java index 0aa5721..d66ca4f 100755 --- a/src/com/bytezone/diskbrowser/wizardry/MazeLevel.java +++ b/src/com/bytezone/diskbrowser/wizardry/MazeLevel.java @@ -15,6 +15,10 @@ import com.bytezone.diskbrowser.utilities.Utility; public class MazeLevel extends AbstractFile // -----------------------------------------------------------------------------------// { + private static final int AUX0 = 768; + private static final int AUX1 = 800; + private static final int AUX2 = 832; + private static final String[] squareType = { "Normal", "Stairs", "Pit", "Chute", "Spinner", "Darkness", "Teleport", "Ouch", "Elevator", "Rock/Water", "Fizzle", "Message/Item", "Monster" }; @@ -67,15 +71,15 @@ public class MazeLevel extends AbstractFile text.append (String.format ("%04X: %s%n", 760, HexFormatter.getHexString (buffer, 760, 8))); text.append ("\nAUX0\n\n"); - text.append (HexFormatter.format (buffer, 768, 32, true, 768)); + text.append (HexFormatter.format (buffer, AUX0, 32, true, AUX0)); text.append ("\n"); text.append ("\nAUX1\n\n"); - text.append (HexFormatter.format (buffer, 800, 32, true, 800)); + text.append (HexFormatter.format (buffer, AUX1, 32, true, AUX1)); text.append ("\n"); text.append ("\nAUX2\n\n"); - text.append (HexFormatter.format (buffer, 832, 32, true, 832)); + text.append (HexFormatter.format (buffer, AUX2, 32, true, AUX2)); text.append ("\n"); List messageList = new ArrayList<> (); @@ -121,8 +125,8 @@ public class MazeLevel extends AbstractFile for (int col = 0; col < 20; col++) { - text.append (String.format ("Col %2d : %s : ", col, - HexFormatter.getHexString (buffer, ptr + col * 6, 6))); + text.append ( + String.format (" Col %2d : %s : ", col, HexFormatter.getHexString (buffer, ptr, 6))); for (int i = 0; i < 5; i++) { @@ -209,13 +213,6 @@ public class MazeLevel extends AbstractFile extraText += items.get (address.level).getName (); } - if (messageType == 5) - { - extraText += "Requires: "; - if (items != null) - extraText += items.get (address.level).getName (); - } - if (messageType == 4) { if (address.level < monsters.size ()) @@ -223,6 +220,13 @@ public class MazeLevel extends AbstractFile else extraText += "Obtained: " + items.get ((address.level - 64536) * -1).getName (); } + + if (messageType == 5) + { + extraText += "Requires: "; + if (items != null) + extraText += items.get (address.level).getName (); + } } if (cellFlag == 12) @@ -279,6 +283,7 @@ public class MazeLevel extends AbstractFile int y = image.getHeight () - (row + 1) * cellSize.height - 1; cell.draw (g, x, y); } + return image; } @@ -365,53 +370,53 @@ public class MazeLevel extends AbstractFile case 0: // normal break; - case 1: + case 1: // stairs cell.stairs = true; cell.addressTo = getAddress (b); break; - case 2: + case 2: // pit cell.pit = true; break; - case 3: + case 3: // chute cell.chute = true; cell.addressTo = getAddress (b); break; - case 4: + case 4: // spinner cell.spinner = true; break; - case 5: + case 5: // dark cell.darkness = true; break; - case 6: + case 6: // transfer cell.teleport = true; cell.addressTo = getAddress (b); break; - case 7: // ouchy + case 7: // ouchy cell.unknown = cellFlag; break; - case 8: // buttonz + case 8: // buttonz cell.elevator = true; MazeAddress elevatorAddress = getAddress (b); cell.elevatorTo = elevatorAddress.row; cell.elevatorFrom = elevatorAddress.column; break; - case 9: // rock/water + case 9: // rock/water cell.rock = true; break; - case 10: // fizzle + case 10: // fizzle cell.spellsBlocked = true; break; - case 11: // screen message + case 11: // screen message MazeAddress messageAddress = getAddress (b); Message m = getMessage (messageAddress.row); if (m != null) @@ -419,20 +424,15 @@ public class MazeLevel extends AbstractFile cell.messageType = messageAddress.column; - int itemID = -1; - switch (cell.messageType) { case 2: // obtain Item if (items != null) - { - itemID = messageAddress.level; - cell.itemObtained = items.get (itemID); - } + cell.itemObtained = items.get (messageAddress.level); break; case 4: - itemID = messageAddress.level; + int itemID = messageAddress.level; if (itemID <= 100) { cell.monsterID = itemID; @@ -451,10 +451,7 @@ public class MazeLevel extends AbstractFile case 5: // requires Item if (items != null) - { - itemID = messageAddress.level; - cell.itemRequired = items.get (itemID); - } + cell.itemRequired = items.get (messageAddress.level); break; } @@ -480,9 +477,9 @@ public class MazeLevel extends AbstractFile // ---------------------------------------------------------------------------------// { // converts AUX1, AUX2, AUX3 into a MazeAddress (level, row, column) - int x = b * 2; - return new MazeAddress (Utility.getShort (buffer, 768 + x), Utility.getShort (buffer, 800 + x), - Utility.getShort (buffer, 832 + x)); + b *= 2; + return new MazeAddress (Utility.getShort (buffer, 768 + b), Utility.getShort (buffer, 800 + b), + Utility.getShort (buffer, 832 + b)); } // ---------------------------------------------------------------------------------// diff --git a/src/com/bytezone/diskbrowser/wizardry/WizardryScenarioDisk.java b/src/com/bytezone/diskbrowser/wizardry/WizardryScenarioDisk.java index ca58ef4..abbb3c4 100755 --- a/src/com/bytezone/diskbrowser/wizardry/WizardryScenarioDisk.java +++ b/src/com/bytezone/diskbrowser/wizardry/WizardryScenarioDisk.java @@ -586,6 +586,10 @@ public class WizardryScenarioDisk extends PascalDisk experiences = new ArrayList<> (sd.total); int max = sd.totalBlocks / 2; + int count = 0; + String[] classes = + { "FIGHTER", "MAGE", "PRIEST", "THIEF", "BISHOP", "SAMURAI", "LORD", "NINJA" }; + for (int i = 0; i < max; i++) { List blocks = getTwoBlocks (sd, i, sectors); @@ -599,7 +603,7 @@ public class WizardryScenarioDisk extends PascalDisk byte[] newBuffer = new byte[78]; System.arraycopy (buffer, ptr, newBuffer, 0, newBuffer.length); - ExperienceLevel el = new ExperienceLevel ("exp", newBuffer); + ExperienceLevel el = new ExperienceLevel (classes[count++], newBuffer); experiences.add (el); addToNode (el, node, blocks, experienceSector); }