refactoring getWizLong and getSignedShort

This commit is contained in:
Denis Molony 2022-06-06 10:15:14 +10:00
parent 7d4d8c75e6
commit 97fe58d94d
10 changed files with 40 additions and 52 deletions

View File

@ -88,8 +88,8 @@ public class QuickDrawFont extends CharacterList
firstChar = Utility.getShort (buffer, ptr + 2); firstChar = Utility.getShort (buffer, ptr + 2);
lastChar = Utility.getShort (buffer, ptr + 4); lastChar = Utility.getShort (buffer, ptr + 4);
widMax = Utility.getShort (buffer, ptr + 6); widMax = Utility.getShort (buffer, ptr + 6);
kernMax = Utility.signedShort (buffer, ptr + 8); kernMax = Utility.getSignedShort (buffer, ptr + 8);
nDescent = Utility.signedShort (buffer, ptr + 10); nDescent = Utility.getSignedShort (buffer, ptr + 10);
fRectWidth = Utility.getShort (buffer, ptr + 12); fRectWidth = Utility.getShort (buffer, ptr + 12);
fRectHeight = Utility.getShort (buffer, ptr + 14); fRectHeight = Utility.getShort (buffer, ptr + 14);

View File

@ -198,7 +198,7 @@ public final class Utility
} }
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
public static int signedShort (byte[] buffer, int ptr) public static int getSignedShort (byte[] buffer, int ptr)
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
{ {
try try
@ -447,6 +447,17 @@ public final class Utility
return LocalDate.of (year, month, day); return LocalDate.of (year, month, day);
} }
// ---------------------------------------------------------------------------------//
public static int getWizLong (byte[] buffer, int offset)
// ---------------------------------------------------------------------------------//
{
int low = Utility.getShort (buffer, offset);
int mid = Utility.getShort (buffer, offset + 2);
int high = Utility.getShort (buffer, offset + 4);
return high * 100000000 + mid * 10000 + low;
}
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
public static int dimension (int chars, int border, int size, int gap) public static int dimension (int chars, int border, int size, int gap)
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//

View File

@ -95,7 +95,7 @@ public class CharacterV4 extends Character
race = Race.values ()[Utility.getShort (buffer, 35)]; race = Race.values ()[Utility.getShort (buffer, 35)];
characterClass = CharacterClass.values ()[Utility.getShort (buffer, 37)]; characterClass = CharacterClass.values ()[Utility.getShort (buffer, 37)];
age = 0; age = 0;
armourClass = Utility.signedShort (buffer, 39); armourClass = Utility.getSignedShort (buffer, 39);
status = CharacterStatus.values ()[Utility.getShort (buffer, 41)]; status = CharacterStatus.values ()[Utility.getShort (buffer, 41)];
alignment = Alignment.values ()[Utility.getShort (buffer, 43)]; alignment = Alignment.values ()[Utility.getShort (buffer, 43)];
@ -156,7 +156,7 @@ public class CharacterV4 extends Character
spellAllowance[PRIEST_SPELLS][i] = Utility.getShort (buffer, 161 + i * 2); spellAllowance[PRIEST_SPELLS][i] = Utility.getShort (buffer, 161 + i * 2);
} }
hpCalCmd = Utility.signedShort (buffer, 175); hpCalCmd = Utility.getSignedShort (buffer, 175);
// armourClass = Utility.getSignedShort (buffer, 177); // see offset 39 // armourClass = Utility.getSignedShort (buffer, 177); // see offset 39
healPts = Utility.getShort (buffer, 179); healPts = Utility.getShort (buffer, 179);

View File

@ -1,7 +1,6 @@
package com.bytezone.diskbrowser.wizardry; package com.bytezone.diskbrowser.wizardry;
import com.bytezone.diskbrowser.applefile.AbstractFile; import com.bytezone.diskbrowser.applefile.AbstractFile;
import com.bytezone.diskbrowser.utilities.Utility;
// -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------//
public class Item extends AbstractFile public class Item extends AbstractFile
@ -93,15 +92,4 @@ public class Item extends AbstractFile
return text.toString (); return text.toString ();
} }
// ---------------------------------------------------------------------------------//
int getWizLong (byte[] buffer, int offset)
// ---------------------------------------------------------------------------------//
{
int low = Utility.getShort (buffer, offset);
int mid = Utility.getShort (buffer, offset + 2);
int high = Utility.getShort (buffer, offset + 4);
return high * 100000000 + mid * 10000 + low;
}
} }

View File

@ -23,20 +23,20 @@ class ItemV1 extends Item // implements Comparable<ItemV1>
type = ObjectType.values ()[buffer[32]]; type = ObjectType.values ()[buffer[32]];
alignment = Alignment.values ()[buffer[34]]; alignment = Alignment.values ()[buffer[34]];
cursed = Utility.signedShort (buffer, 36) == -1; cursed = Utility.getSignedShort (buffer, 36) == -1;
special = Utility.signedShort (buffer, 38); special = Utility.getSignedShort (buffer, 38);
changeTo = Utility.getShort (buffer, 40); // decay # changeTo = Utility.getShort (buffer, 40); // decay #
changeChance = Utility.getShort (buffer, 42); changeChance = Utility.getShort (buffer, 42);
price = getWizLong (buffer, 44); price = Utility.getWizLong (buffer, 44);
boltac = Utility.signedShort (buffer, 50); boltac = Utility.getSignedShort (buffer, 50);
spellPwr = Utility.getShort (buffer, 52); spellPwr = Utility.getShort (buffer, 52);
classUseFlags = Utility.getShort (buffer, 54); // 8 flags classUseFlags = Utility.getShort (buffer, 54); // 8 flags
healPts = Utility.signedShort (buffer, 56); healPts = Utility.getSignedShort (buffer, 56);
flags2 = Utility.getShort (buffer, 58); // 16 flags flags2 = Utility.getShort (buffer, 58); // 16 flags
flags3 = Utility.getShort (buffer, 60); // 16 flags flags3 = Utility.getShort (buffer, 60); // 16 flags
armourClass = Utility.signedShort (buffer, 62); armourClass = Utility.getSignedShort (buffer, 62);
wephitmd = Utility.signedShort (buffer, 64); wephitmd = Utility.getSignedShort (buffer, 64);
wephpdam = new Dice (buffer, 66); // Dice wephpdam = new Dice (buffer, 66); // Dice
xtraSwing = Utility.getShort (buffer, 72); xtraSwing = Utility.getShort (buffer, 72);
crithitm = Utility.getShort (buffer, 74) == 1; // boolean crithitm = Utility.getShort (buffer, 74) == 1; // boolean

View File

@ -21,20 +21,20 @@ public class ItemV4 extends Item
type = ObjectType.values ()[buffer[1]]; type = ObjectType.values ()[buffer[1]];
alignment = Alignment.values ()[buffer[3]]; alignment = Alignment.values ()[buffer[3]];
cursed = Utility.signedShort (buffer, 5) == -1; cursed = Utility.getSignedShort (buffer, 5) == -1;
special = Utility.signedShort (buffer, 7); special = Utility.getSignedShort (buffer, 7);
changeTo = Utility.getShort (buffer, 9); // decay # changeTo = Utility.getShort (buffer, 9); // decay #
changeChance = Utility.getShort (buffer, 11); changeChance = Utility.getShort (buffer, 11);
price = getWizLong (buffer, 13); price = Utility.getWizLong (buffer, 13);
boltac = Utility.signedShort (buffer, 19); boltac = Utility.getSignedShort (buffer, 19);
spellPwr = Utility.getShort (buffer, 21); spellPwr = Utility.getShort (buffer, 21);
classUseFlags = Utility.getShort (buffer, 23); // 8 flags classUseFlags = Utility.getShort (buffer, 23); // 8 flags
healPts = Utility.signedShort (buffer, 25); healPts = Utility.getSignedShort (buffer, 25);
flags2 = Utility.getShort (buffer, 27); // 16 flags flags2 = Utility.getShort (buffer, 27); // 16 flags
flags3 = Utility.getShort (buffer, 29); // 16 flags flags3 = Utility.getShort (buffer, 29); // 16 flags
armourClass = Utility.signedShort (buffer, 31); armourClass = Utility.getSignedShort (buffer, 31);
wephitmd = Utility.signedShort (buffer, 33); wephitmd = Utility.getSignedShort (buffer, 33);
wephpdam = new Dice (buffer, 35); wephpdam = new Dice (buffer, 35);
xtraSwing = Utility.getShort (buffer, 41); xtraSwing = Utility.getShort (buffer, 41);

View File

@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.bytezone.diskbrowser.applefile.AbstractFile; import com.bytezone.diskbrowser.applefile.AbstractFile;
import com.bytezone.diskbrowser.utilities.Utility;
// -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------//
public abstract class Monster extends AbstractFile public abstract class Monster extends AbstractFile
@ -98,15 +97,4 @@ public abstract class Monster extends AbstractFile
return text.toString (); return text.toString ();
} }
// ---------------------------------------------------------------------------------//
int getWizLong (byte[] buffer, int offset)
// ---------------------------------------------------------------------------------//
{
int low = Utility.getShort (buffer, offset);
int mid = Utility.getShort (buffer, offset + 2);
int high = Utility.getShort (buffer, offset + 4);
return high * 100000000 + mid * 10000 + low;
}
} }

View File

@ -3,6 +3,7 @@ package com.bytezone.diskbrowser.wizardry;
import java.util.List; import java.util.List;
import com.bytezone.diskbrowser.utilities.HexFormatter; import com.bytezone.diskbrowser.utilities.HexFormatter;
import com.bytezone.diskbrowser.utilities.Utility;
// -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------//
class MonsterV1 extends Monster class MonsterV1 extends Monster
@ -70,7 +71,7 @@ class MonsterV1 extends Monster
damage.add (new Dice (buffer, ptr)); damage.add (new Dice (buffer, ptr));
} }
experiencePoints = getWizLong (buffer, 126); experiencePoints = Utility.getWizLong (buffer, 126);
levelDrain = buffer[132]; levelDrain = buffer[132];
healPts = buffer[134]; healPts = buffer[134];
goldReward = rewards.get (buffer[136]); goldReward = rewards.get (buffer[136]);

View File

@ -21,7 +21,7 @@ public class MonsterV4 extends Monster
groupSize = new Dice (buffer, 1); groupSize = new Dice (buffer, 1);
hitPoints = new Dice (buffer, 7); hitPoints = new Dice (buffer, 7);
type = Utility.getShort (buffer, 13); type = Utility.getShort (buffer, 13);
armourClass = Utility.signedShort (buffer, 15); armourClass = Utility.getSignedShort (buffer, 15);
recsn = buffer[17]; // number of dice recsn = buffer[17]; // number of dice
for (int i = 0, ptr = 19; i < 7; i++, ptr += 6) for (int i = 0, ptr = 19; i < 7; i++, ptr += 6)

View File

@ -21,7 +21,7 @@ import com.bytezone.diskbrowser.wizardry.Header.ScenarioData;
public class Wizardry4BootDisk extends PascalDisk public class Wizardry4BootDisk extends PascalDisk
// -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------//
{ {
public Header scenarioHeader; private Header scenarioHeader;
private Relocator relocator; private Relocator relocator;
private MessageBlock messageBlock; private MessageBlock messageBlock;
private Huffman huffman; private Huffman huffman;
@ -31,7 +31,7 @@ public class Wizardry4BootDisk extends PascalDisk
private List<CharacterParty> parties = new ArrayList<> (); private List<CharacterParty> parties = new ArrayList<> ();
private List<ItemV4> items = new ArrayList<> (); private List<ItemV4> items = new ArrayList<> ();
private List<MonsterV4> monsters = new ArrayList<> (); private List<MonsterV4> monsters = new ArrayList<> ();
public List<String> spellNames = new ArrayList<> (); private List<String> spellNames = new ArrayList<> ();
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
public Wizardry4BootDisk (AppleDisk[] dataDisks) public Wizardry4BootDisk (AppleDisk[] dataDisks)