public final void init(Archive archive, Game client) { String[] versionFiles = {"model_version", "anim_version", "midi_version", "map_version"}; for (int version = 0; version < 4; version++) { byte[] data = archive.getFile(versionFiles[version]); int versionCount = data.length / 2; Buffer buffer = new Buffer(data); fileVersions[version] = new int[versionCount]; filePriorities[version] = new byte[versionCount]; for (int file = 0; file < versionCount; file++) { fileVersions[version][file] = buffer.getUnsignedLEShort(); } } String[] crcFiles = {"model_crc", "anim_crc", "midi_crc", "map_crc"}; for (int crc = 0; crc < 4; crc++) { byte[] data = archive.getFile(crcFiles[crc]); int crcCount = data.length / 4; Buffer buffer = new Buffer(data); fileCrc[crc] = new int[crcCount]; for (int file = 0; file < crcCount; file++) { fileCrc[crc][file] = buffer.getInt(); } } byte[] data = archive.getFile("model_index"); int count = fileVersions[0].length; modelIndex = new byte[count]; for (int i = 0; i < count; i++) { if (i < data.length) { modelIndex[i] = data[i]; } else { modelIndex[i] = (byte) 0; } } data = archive.getFile("map_index"); Buffer buffer = new Buffer(data); count = data.length / 7; regHash = new int[count]; regMapIndex = new int[count]; regLandIndex = new int[count]; regShouldPreload = new int[count]; for (int reg = 0; reg < count; reg++) { regHash[reg] = buffer.getUnsignedLEShort(); regMapIndex[reg] = buffer.getUnsignedLEShort(); regLandIndex[reg] = buffer.getUnsignedLEShort(); regShouldPreload[reg] = buffer.getUnsignedByte(); } data = archive.getFile("anim_index"); buffer = new Buffer(data); count = data.length / 2; animIndex = new int[count]; for (int i = 0; i < count; i++) { animIndex[i] = buffer.getUnsignedLEShort(); } data = archive.getFile("midi_index"); buffer = new Buffer(data); count = data.length; midiIndex = new int[count]; for (int i = 0; i < count; i++) { midiIndex[i] = buffer.getUnsignedByte(); } this.client = client; running = true; this.client.startRunnable(this, 2); }