public class GameData { public static String modelName[] = new String[5000]; public static String textureName[]; public static String textureSubtypeName[]; public static int objectModelIndex[]; public static int objectWidth[]; public static int objectHeight[]; public static int objectType[]; public static int objectElevation[]; public static int spellCount; public static int npcWidth[]; public static int npcHeight[]; public static int npcSprite[][]; public static int npcAttack[]; public static int npcStrength[]; public static int npcHits[]; public static int npcDefense[]; public static int npcAttackable[]; public static int spellLevel[]; public static int spellRunesRequired[]; public static int spellType[]; public static int spellRunesId[][]; public static int spellRunesCount[][]; //public static String unused[] = new String[5000]; public static int itemCount; public static int itemSpriteCount; public static int npcColourHair[]; public static int npcColourTop[]; public static int npcColorBottom[]; public static int npcColourSkin[]; public static int wallObjectHeight[]; public static int wallObjectTextureFront[]; public static int wallObjectTextureBack[]; public static int wallObjectAdjacent[]; public static int wallObjectInvisible[]; //public static String unused2[] = new String[5000]; public static int tileCount; public static int animationCharacterColour[]; public static int animationSomething[]; public static int animationHasA[]; public static int animationHasF[]; public static int animationNumber[]; public static int wallObjectCount; public static int prayerLevel[]; public static int prayerDrain[]; public static int tileDecoration[]; public static int tileType[]; public static int tileAdjacent[]; public static int modelCount; public static int roofHeight[]; public static int roofNumVertices[]; public static int prayerCount; public static String itemName[]; public static String itemDescription[]; public static String itemCommand[]; public static int projectileSprite; public static int npcCount; public static String spellName[]; public static String spellDescription[]; public static int textureCount; public static String wallObjectName[]; public static String wallObjectDescription[]; public static String wallObjectCommand1[]; public static String wallObjectCommand2[]; public static int roofCount; public static int objectCount; public static String npcName[]; public static String npcDescription[]; public static String npcCommand[]; public static String animationName[]; public static int itemPicture[]; public static int itemBasePrice[]; public static int itemStackable[]; public static int itemUnused[]; public static int itemWearable[]; public static int itemMask[]; public static int itemSpecial[]; public static int itemMembers[]; public static int animationCount; public static String prayerName[]; public static String prayerDescription[]; public static String objectName[]; public static String objectDescription[]; public static String objectCommand1[]; public static String objectCommand2[]; public static int npcWalkModel[]; public static int npcCombatModel[]; public static int npcCombatAnimation[]; static byte dataString[]; static byte dataInteger[]; static int stringOffset; static int offset; public static int getModelIndex(String s) { if (s.equalsIgnoreCase("na")) return 0; for (int i = 0; i < modelCount; i++) if (modelName[i].equalsIgnoreCase(s)) return i; modelName[modelCount++] = s; return modelCount - 1; } public static int getUnsignedByte() { int i = dataInteger[offset] & 0xff; offset++; return i; } public static int getUnsignedShort() { int i = Utility.getUnsignedShort(dataInteger, offset); offset += 2; return i; } public static int getUnsignedInt() { int i = Utility.getUnsignedInt(dataInteger, offset); offset += 4; if (i > 99999999) i = 99999999 - i; return i; } public static String getString() { String s; for (s = ""; dataString[stringOffset] != 0; s = s + (char) dataString[stringOffset++]) ; stringOffset++; return s; } public static void loadData(byte buffer[], boolean isMembers) { dataString = Utility.loadData("string.dat", 0, buffer); stringOffset = 0; dataInteger = Utility.loadData("integer.dat", 0, buffer); offset = 0; System.out.println("dataString " + dataString); System.out.println("dataInteger " + dataInteger); int i; itemCount = getUnsignedShort(); itemName = new String[itemCount]; itemDescription = new String[itemCount]; itemCommand = new String[itemCount]; itemPicture = new int[itemCount]; itemBasePrice = new int[itemCount]; itemStackable = new int[itemCount]; itemUnused = new int[itemCount]; itemWearable = new int[itemCount]; itemMask = new int[itemCount]; itemSpecial = new int[itemCount]; itemMembers = new int[itemCount]; for (i = 0; i < itemCount; i++) itemName[i] = getString(); for (i = 0; i < itemCount; i++) itemDescription[i] = getString(); for (i = 0; i < itemCount; i++) itemCommand[i] = getString(); for (i = 0; i < itemCount; i++) { itemPicture[i] = getUnsignedShort(); if (itemPicture[i] + 1 > itemSpriteCount) itemSpriteCount = itemPicture[i] + 1; } for (i = 0; i < itemCount; i++) itemBasePrice[i] = getUnsignedInt(); for (i = 0; i < itemCount; i++) itemStackable[i] = getUnsignedByte(); for (i = 0; i < itemCount; i++) itemUnused[i] = getUnsignedByte(); for (i = 0; i < itemCount; i++) itemWearable[i] = getUnsignedShort(); for (i = 0; i < itemCount; i++) itemMask[i] = getUnsignedInt(); for (i = 0; i < itemCount; i++) itemSpecial[i] = getUnsignedByte(); for (i = 0; i < itemCount; i++) itemMembers[i] = getUnsignedByte(); for (i = 0; i < itemCount; i++) if (!isMembers && itemMembers[i] == 1) { itemName[i] = "Members object"; itemDescription[i] = "You need to be a member to use this object"; itemBasePrice[i] = 0; itemCommand[i] = ""; itemUnused[0] = 0; itemWearable[i] = 0; itemSpecial[i] = 1; } npcCount = getUnsignedShort(); npcName = new String[npcCount]; npcDescription = new String[npcCount]; npcCommand = new String[npcCount]; npcAttack = new int[npcCount]; npcStrength = new int[npcCount]; npcHits = new int[npcCount]; npcDefense = new int[npcCount]; npcAttackable = new int[npcCount]; npcSprite = new int[npcCount][12]; npcColourHair = new int[npcCount]; npcColourTop = new int[npcCount]; npcColorBottom = new int[npcCount]; npcColourSkin = new int[npcCount]; npcWidth = new int[npcCount]; npcHeight = new int[npcCount]; npcWalkModel = new int[npcCount]; npcCombatModel = new int[npcCount]; npcCombatAnimation = new int[npcCount]; for (i = 0; i < npcCount; i++) npcName[i] = getString(); for (i = 0; i < npcCount; i++) npcDescription[i] = getString(); for (i = 0; i < npcCount; i++) npcAttack[i] = getUnsignedByte(); for (i = 0; i < npcCount; i++) npcStrength[i] = getUnsignedByte(); for (i = 0; i < npcCount; i++) npcHits[i] = getUnsignedByte(); for (i = 0; i < npcCount; i++) npcDefense[i] = getUnsignedByte(); for (i = 0; i < npcCount; i++) npcAttackable[i] = getUnsignedByte(); for (i = 0; i < npcCount; i++) { for (int i5 = 0; i5 < 12; i5++) { npcSprite[i][i5] = getUnsignedByte(); if (npcSprite[i][i5] == 255) npcSprite[i][i5] = -1; } } for (i = 0; i < npcCount; i++) npcColourHair[i] = getUnsignedInt(); for (i = 0; i < npcCount; i++) npcColourTop[i] = getUnsignedInt(); for (i = 0; i < npcCount; i++) npcColorBottom[i] = getUnsignedInt(); for (i = 0; i < npcCount; i++) npcColourSkin[i] = getUnsignedInt(); for (i = 0; i < npcCount; i++) npcWidth[i] = getUnsignedShort(); for (i = 0; i < npcCount; i++) npcHeight[i] = getUnsignedShort(); for (i = 0; i < npcCount; i++) npcWalkModel[i] = getUnsignedByte(); for (i = 0; i < npcCount; i++) npcCombatModel[i] = getUnsignedByte(); for (i = 0; i < npcCount; i++) npcCombatAnimation[i] = getUnsignedByte(); for (i = 0; i < npcCount; i++) npcCommand[i] = getString(); textureCount = getUnsignedShort(); textureName = new String[textureCount]; textureSubtypeName = new String[textureCount]; for (i = 0; i < textureCount; i++) textureName[i] = getString(); for (i = 0; i < textureCount; i++) textureSubtypeName[i] = getString(); animationCount = getUnsignedShort(); animationName = new String[animationCount]; animationCharacterColour = new int[animationCount]; animationSomething = new int[animationCount]; animationHasA = new int[animationCount]; animationHasF = new int[animationCount]; animationNumber = new int[animationCount]; for (i = 0; i < animationCount; i++) animationName[i] = getString(); for (i = 0; i < animationCount; i++) animationCharacterColour[i] = getUnsignedInt(); for (i = 0; i < animationCount; i++) animationSomething[i] = getUnsignedByte(); for (i = 0; i < animationCount; i++) animationHasA[i] = getUnsignedByte(); for (i = 0; i < animationCount; i++) animationHasF[i] = getUnsignedByte(); for (i = 0; i < animationCount; i++) animationNumber[i] = getUnsignedByte(); objectCount = getUnsignedShort(); objectName = new String[objectCount]; objectDescription = new String[objectCount]; objectCommand1 = new String[objectCount]; objectCommand2 = new String[objectCount]; objectModelIndex = new int[objectCount]; objectWidth = new int[objectCount]; objectHeight = new int[objectCount]; objectType = new int[objectCount]; objectElevation = new int[objectCount]; for (i = 0; i < objectCount; i++) objectName[i] = getString(); for (i = 0; i < objectCount; i++) objectDescription[i] = getString(); for (i = 0; i < objectCount; i++) objectCommand1[i] = getString(); for (i = 0; i < objectCount; i++) objectCommand2[i] = getString(); for (i = 0; i < objectCount; i++) objectModelIndex[i] = getModelIndex(getString()); for (i = 0; i < objectCount; i++) objectWidth[i] = getUnsignedByte(); for (i = 0; i < objectCount; i++) objectHeight[i] = getUnsignedByte(); for (i = 0; i < objectCount; i++) objectType[i] = getUnsignedByte(); for (i = 0; i < objectCount; i++) objectElevation[i] = getUnsignedByte(); wallObjectCount = getUnsignedShort(); wallObjectName = new String[wallObjectCount]; wallObjectDescription = new String[wallObjectCount]; wallObjectCommand1 = new String[wallObjectCount]; wallObjectCommand2 = new String[wallObjectCount]; wallObjectHeight = new int[wallObjectCount]; wallObjectTextureFront = new int[wallObjectCount]; wallObjectTextureBack = new int[wallObjectCount]; wallObjectAdjacent = new int[wallObjectCount]; wallObjectInvisible = new int[wallObjectCount]; for (i = 0; i < wallObjectCount; i++) wallObjectName[i] = getString(); for (i = 0; i < wallObjectCount; i++) wallObjectDescription[i] = getString(); for (i = 0; i < wallObjectCount; i++) wallObjectCommand1[i] = getString(); for (i = 0; i < wallObjectCount; i++) wallObjectCommand2[i] = getString(); for (i = 0; i < wallObjectCount; i++) wallObjectHeight[i] = getUnsignedShort(); for (i = 0; i < wallObjectCount; i++) wallObjectTextureFront[i] = getUnsignedInt(); for (i = 0; i < wallObjectCount; i++) wallObjectTextureBack[i] = getUnsignedInt(); for (i = 0; i < wallObjectCount; i++) wallObjectAdjacent[i] = getUnsignedByte();// what's this? for (i = 0; i < wallObjectCount; i++) wallObjectInvisible[i] = getUnsignedByte();// value is 0 if visible roofCount = getUnsignedShort();// the World class does something with these roofHeight = new int[roofCount]; roofNumVertices = new int[roofCount]; for (i = 0; i < roofCount; i++) roofHeight[i] = getUnsignedByte(); for (i = 0; i < roofCount; i++) roofNumVertices[i] = getUnsignedByte(); tileCount = getUnsignedShort();// and these tileDecoration = new int[tileCount]; tileType = new int[tileCount]; tileAdjacent = new int[tileCount]; for (i = 0; i < tileCount; i++) tileDecoration[i] = getUnsignedInt(); for (i = 0; i < tileCount; i++) tileType[i] = getUnsignedByte(); for (i = 0; i < tileCount; i++) tileAdjacent[i] = getUnsignedByte(); projectileSprite = getUnsignedShort(); spellCount = getUnsignedShort(); spellName = new String[spellCount]; spellDescription = new String[spellCount]; spellLevel = new int[spellCount]; spellRunesRequired = new int[spellCount]; spellType = new int[spellCount]; spellRunesId = new int[spellCount][]; spellRunesCount = new int[spellCount][]; for (i = 0; i < spellCount; i++) spellName[i] = getString(); for (i = 0; i < spellCount; i++) spellDescription[i] = getString(); for (i = 0; i < spellCount; i++) spellLevel[i] = getUnsignedByte(); for (i = 0; i < spellCount; i++) spellRunesRequired[i] = getUnsignedByte(); for (i = 0; i < spellCount; i++) spellType[i] = getUnsignedByte(); for (i = 0; i < spellCount; i++) { int j = getUnsignedByte(); spellRunesId[i] = new int[j]; for (int k = 0; k < j; k++) spellRunesId[i][k] = getUnsignedShort(); } for (i = 0; i < spellCount; i++) { int j = getUnsignedByte(); spellRunesCount[i] = new int[j]; for (int k = 0; k < j; k++) spellRunesCount[i][k] = getUnsignedByte(); } prayerCount = getUnsignedShort(); prayerName = new String[prayerCount]; prayerDescription = new String[prayerCount]; prayerLevel = new int[prayerCount]; prayerDrain = new int[prayerCount]; for (i = 0; i < prayerCount; i++) prayerName[i] = getString(); for (i = 0; i < prayerCount; i++) prayerDescription[i] = getString(); for (i = 0; i < prayerCount; i++) prayerLevel[i] = getUnsignedByte(); for (i = 0; i < prayerCount; i++) prayerDrain[i] = getUnsignedByte(); dataString = null; dataInteger = null; } //public static int unused3; }