A RuneTek3 client (377) that is deobfuscated, converted to Kotlin, and includes QoL improvements.
0

Configure Feed

Select the types of activity you want to include in your feed.

Strip @JvmField/@JvmStatic annotations (pure Kotlin cleanup)

Remove 1145 unnecessary @JvmField/@JvmStatic annotations now
that no Java code exists. Only @JvmStatic on main() is kept
for JAR manifest entry point.

@JvmField retained on GameShell.width/height to avoid
Canvas.getWidth/getHeight signature clash.

Replace SoundPlayer.setVolume()/getVolume() explicit functions
with Kotlin property access (SoundPlayer.volume = x).

+1144 -1147
+8 -7
src/main/java/com/jagex/runescape/Game.kt
··· 3505 3505 } 3506 3506 3507 3507 companion object { 3508 - @JvmField 3508 + 3509 3509 var VERSION = 377 3510 - @JvmField 3510 + 3511 3511 val playerColours = arrayOf( 3512 3512 intArrayOf(6798, 107, 10283, 16, 4797, 7744, 5799, 4634, 33697, 22433, 2983, 54193), 3513 3513 intArrayOf(8741, 12, 64030, 43162, 7735, 8404, 1701, 38430, 24094, 10153, 56621, 4783, 1341, 16578, 35003, 25239), ··· 3515 3515 intArrayOf(4626, 11146, 6439, 12, 4758, 10270), 3516 3516 intArrayOf(4550, 4537, 5681, 5673, 5790, 6806, 8076, 4574) 3517 3517 ) 3518 - @JvmField 3518 + 3519 3519 val SKIN_COLOURS = intArrayOf(9104, 10275, 7595, 3610, 7975, 8526, 918, 38802, 24466, 10145, 58654, 3520 3520 5027, 1457, 16565, 34991, 25486) 3521 - @JvmField 3521 + 3522 3522 var localPlayer: Player? = null 3523 - @JvmField 3523 + 3524 3524 var BITFIELD_MAX_VALUE: IntArray? = null 3525 - @JvmField 3525 + 3526 3526 var pulseCycle = 0 3527 3527 private var fps = false 3528 3528 private var anInt895 = 0 ··· 3579 3579 return "@gr1@" 3580 3580 return "@yel@" 3581 3581 } 3582 + 3582 3583 3583 3584 @JvmStatic 3584 3585 fun main(args: Array<String>) { ··· 8484 8485 } 8485 8486 } 8486 8487 if (action == 4) { 8487 - SoundPlayer.setVolume(config) 8488 + SoundPlayer.volume = config 8488 8489 if (config == 0) { 8489 8490 aBoolean1301 = true 8490 8491 setWaveVolume(0)
+28 -28
src/main/java/com/jagex/runescape/GameShell.kt
··· 11 11 12 12 private var gameState: Int = 0 13 13 private var deltime: Int = 20 14 - @JvmField var mindel: Int = 1 14 + var mindel: Int = 1 15 15 private val optims: LongArray = LongArray(10) 16 - @JvmField var fps: Int = 0 17 - @JvmField var cameraZoom: Int = 600 18 - @JvmField var dumpRequested: Boolean = false 16 + var fps: Int = 0 17 + var cameraZoom: Int = 600 18 + var dumpRequested: Boolean = false 19 19 @JvmField var width: Int = 0 20 20 @JvmField var height: Int = 0 21 - @JvmField var extraWidth: Int = 0 22 - @JvmField var extraHeight: Int = 22 23 - @JvmField var gameGraphics: Graphics? = null 24 - @JvmField var imageProducer: ProducingGraphicsBuffer? = null 25 - @JvmField var aClass50_Sub1_Sub1_Sub1Array16: Array<ImageRGB?> = arrayOfNulls(6) 26 - @JvmField var gameFrame: GameFrame? = null 27 - @JvmField var clearScreen: Boolean = true 28 - @JvmField var awtFocus: Boolean = true 29 - @JvmField var idleTime: Int = 0 30 - @JvmField var mouseButtonPressed: Int = 0 31 - @JvmField var mouseX: Int = 0 32 - @JvmField var mouseY: Int = 0 33 - @JvmField var eventMouseButtonPressed: Int = 0 34 - @JvmField var eventClickX: Int = 0 35 - @JvmField var eventClickY: Int = 0 36 - @JvmField var lastClick: Long = 0L 37 - @JvmField var clickType: Int = 0 38 - @JvmField var clickX: Int = 0 39 - @JvmField var clickY: Int = 0 40 - @JvmField var clickTime: Long = 0L 41 - @JvmField var keyStatus: IntArray = IntArray(128) 21 + var extraWidth: Int = 0 22 + var extraHeight: Int = 22 23 + var gameGraphics: Graphics? = null 24 + var imageProducer: ProducingGraphicsBuffer? = null 25 + var aClass50_Sub1_Sub1_Sub1Array16: Array<ImageRGB?> = arrayOfNulls(6) 26 + var gameFrame: GameFrame? = null 27 + var clearScreen: Boolean = true 28 + var awtFocus: Boolean = true 29 + var idleTime: Int = 0 30 + var mouseButtonPressed: Int = 0 31 + var mouseX: Int = 0 32 + var mouseY: Int = 0 33 + var eventMouseButtonPressed: Int = 0 34 + var eventClickX: Int = 0 35 + var eventClickY: Int = 0 36 + var lastClick: Long = 0L 37 + var clickType: Int = 0 38 + var clickX: Int = 0 39 + var clickY: Int = 0 40 + var clickTime: Long = 0L 41 + var keyStatus: IntArray = IntArray(128) 42 42 private val inputBuffer: IntArray = IntArray(128) 43 43 private var readIndex: Int = 0 44 44 private var writeIndex: Int = 0 45 - @JvmField var mouseWheelDown: Boolean = false 46 - @JvmField var mouseWheelX: Int = 0 47 - @JvmField var mouseWheelY: Int = 0 45 + var mouseWheelDown: Boolean = false 46 + var mouseWheelX: Int = 0 47 + var mouseWheelY: Int = 0 48 48 49 49 fun initializeApplication(width: Int, height: Int) { 50 50 this.width = width
+7 -7
src/main/java/com/jagex/runescape/cache/Archive.kt
··· 5 5 6 6 class Archive(dataBuffer: ByteArray) { 7 7 8 - @JvmField var archiveBuffer: ByteArray 9 - @JvmField var dataSize: Int 10 - @JvmField var nameHashes: IntArray 11 - @JvmField var uncompressedSizes: IntArray 12 - @JvmField var compressedSizes: IntArray 13 - @JvmField var startOffsets: IntArray 14 - @JvmField var compressed: Boolean 8 + var archiveBuffer: ByteArray 9 + var dataSize: Int 10 + var nameHashes: IntArray 11 + var uncompressedSizes: IntArray 12 + var compressedSizes: IntArray 13 + var startOffsets: IntArray 14 + var compressed: Boolean 15 15 16 16 init { 17 17 var buffer = Buffer(dataBuffer)
+6 -6
src/main/java/com/jagex/runescape/cache/FileOperations.kt
··· 5 5 class FileOperations { 6 6 7 7 companion object { 8 - @JvmField var TotalRead: Int = 0 9 - @JvmField var TotalWrite: Int = 0 10 - @JvmField var CompleteWrite: Int = 0 8 + var TotalRead: Int = 0 9 + var TotalWrite: Int = 0 10 + var CompleteWrite: Int = 0 11 11 12 - @JvmStatic 12 + 13 13 fun ReadFile(s: String): ByteArray? { 14 14 try { 15 15 val file = File(s) ··· 26 26 return null 27 27 } 28 28 29 - @JvmStatic 29 + 30 30 fun WriteFile(s: String, abyte0: ByteArray) { 31 31 try { 32 32 File(File(s).parent).mkdirs() ··· 40 40 } 41 41 } 42 42 43 - @JvmStatic 43 + 44 44 fun FileExists(file: String): Boolean { 45 45 val f = File(file) 46 46 return f.exists()
+5 -5
src/main/java/com/jagex/runescape/cache/Index.kt
··· 4 4 import java.io.RandomAccessFile 5 5 6 6 class Index( 7 - @JvmField var type: Int, 8 - @JvmField var maxSize: Int, 9 - @JvmField var dataFile: RandomAccessFile, 10 - @JvmField var indexFile: RandomAccessFile 7 + var type: Int, 8 + var maxSize: Int, 9 + var dataFile: RandomAccessFile, 10 + var indexFile: RandomAccessFile 11 11 ) { 12 12 13 13 @Synchronized ··· 183 183 } 184 184 185 185 companion object { 186 - @JvmField var buffer: ByteArray = ByteArray(520) 186 + var buffer: ByteArray = ByteArray(520) 187 187 } 188 188 }
+2 -2
src/main/java/com/jagex/runescape/cache/bzip/BZip2Decompressor.kt
··· 13 13 */ 14 14 object BZip2Decompressor { 15 15 16 - @JvmField val state = Bzip2Context() 16 + val state = Bzip2Context() 17 17 18 - @JvmStatic 18 + 19 19 fun decompress( 20 20 output: ByteArray, 21 21 length: Int,
+38 -38
src/main/java/com/jagex/runescape/cache/bzip/Bzip2Context.kt
··· 1 1 package com.jagex.runescape.cache.bzip 2 2 3 3 class Bzip2Context { 4 - @JvmField var compressed: ByteArray = ByteArray(0) 5 - @JvmField var nextIn: Int = 0 6 - @JvmField var decompressedLength: Int = 0 7 - @JvmField var totalInLo32: Int = 0 8 - @JvmField var totalInHi32: Int = 0 9 - @JvmField var buf: ByteArray = ByteArray(0) 10 - @JvmField var nextOut: Int = 0 11 - @JvmField var availOut: Int = 0 12 - @JvmField var totalOutLo32: Int = 0 13 - @JvmField var totalOutHigh32: Int = 0 14 - @JvmField var stateOutCh: Byte = 0 15 - @JvmField var stateOutLen: Int = 0 16 - @JvmField var blockRandomised: Boolean = false 17 - @JvmField var bsBuff: Int = 0 18 - @JvmField var bsLive: Int = 0 19 - @JvmField var blockSize100k: Int = 0 20 - @JvmField var currentBlock: Int = 0 21 - @JvmField var origPtr: Int = 0 22 - @JvmField var tPos: Int = 0 23 - @JvmField var k0: Int = 0 24 - @JvmField var unzftab: IntArray = IntArray(256) 25 - @JvmField var nBlockUsed: Int = 0 26 - @JvmField var cftab: IntArray = IntArray(257) 27 - @JvmField var nInUse: Int = 0 28 - @JvmField var inUse: BooleanArray = BooleanArray(256) 29 - @JvmField var inUse16: BooleanArray = BooleanArray(16) 30 - @JvmField var seqToUnseq: ByteArray = ByteArray(256) 31 - @JvmField var mtfa: ByteArray = ByteArray(4096) 32 - @JvmField var mtfbase: IntArray = IntArray(16) 33 - @JvmField var selector: ByteArray = ByteArray(18002) 34 - @JvmField var selectorMtf: ByteArray = ByteArray(18002) 35 - @JvmField var len: Array<ByteArray> = Array(6) { ByteArray(258) } 36 - @JvmField var limit: Array<IntArray> = Array(6) { IntArray(258) } 37 - @JvmField var base: Array<IntArray> = Array(6) { IntArray(258) } 38 - @JvmField var perm: Array<IntArray> = Array(6) { IntArray(258) } 39 - @JvmField var minLens: IntArray = IntArray(6) 40 - @JvmField var nBlock: Int = 0 4 + var compressed: ByteArray = ByteArray(0) 5 + var nextIn: Int = 0 6 + var decompressedLength: Int = 0 7 + var totalInLo32: Int = 0 8 + var totalInHi32: Int = 0 9 + var buf: ByteArray = ByteArray(0) 10 + var nextOut: Int = 0 11 + var availOut: Int = 0 12 + var totalOutLo32: Int = 0 13 + var totalOutHigh32: Int = 0 14 + var stateOutCh: Byte = 0 15 + var stateOutLen: Int = 0 16 + var blockRandomised: Boolean = false 17 + var bsBuff: Int = 0 18 + var bsLive: Int = 0 19 + var blockSize100k: Int = 0 20 + var currentBlock: Int = 0 21 + var origPtr: Int = 0 22 + var tPos: Int = 0 23 + var k0: Int = 0 24 + var unzftab: IntArray = IntArray(256) 25 + var nBlockUsed: Int = 0 26 + var cftab: IntArray = IntArray(257) 27 + var nInUse: Int = 0 28 + var inUse: BooleanArray = BooleanArray(256) 29 + var inUse16: BooleanArray = BooleanArray(16) 30 + var seqToUnseq: ByteArray = ByteArray(256) 31 + var mtfa: ByteArray = ByteArray(4096) 32 + var mtfbase: IntArray = IntArray(16) 33 + var selector: ByteArray = ByteArray(18002) 34 + var selectorMtf: ByteArray = ByteArray(18002) 35 + var len: Array<ByteArray> = Array(6) { ByteArray(258) } 36 + var limit: Array<IntArray> = Array(6) { IntArray(258) } 37 + var base: Array<IntArray> = Array(6) { IntArray(258) } 38 + var perm: Array<IntArray> = Array(6) { IntArray(258) } 39 + var minLens: IntArray = IntArray(6) 40 + var nBlock: Int = 0 41 41 42 42 companion object { 43 - @JvmField var tt: IntArray? = null 43 + var tt: IntArray? = null 44 44 } 45 45 }
+2 -2
src/main/java/com/jagex/runescape/cache/cfg/ChatCensor.kt
··· 15 15 private val exceptions: Array<String> = arrayOf("cook", "cook's", "cooks", "seeks", "sheet", "woop", "woops", 16 16 "faq", "noob", "noobs") 17 17 18 - @JvmStatic 18 + 19 19 fun load(archive: Archive) { 20 20 val fragmentsEnc = Buffer(archive.getFile("fragmentsenc.txt")!!) 21 21 val badEnc = Buffer(archive.getFile("badenc.txt")!!) ··· 107 107 return character in ' '..'\u007F' || character == ' ' || character == '\n' || character == '\t' || character == '\u00A3' || character == '\u20AC' 108 108 } 109 109 110 - @JvmStatic 110 + 111 111 fun censorString(string: String): String { 112 112 val censoredString = string.toCharArray() 113 113 formatLegalCharacters(censoredString)
+8 -8
src/main/java/com/jagex/runescape/cache/cfg/Varbit.kt
··· 4 4 import com.jagex.runescape.net.Buffer 5 5 6 6 class Varbit { 7 - @JvmField var configId: Int = 0 8 - @JvmField var leastSignificantBit: Int = 0 9 - @JvmField var mostSignificantBit: Int = 0 10 - @JvmField var aBoolean829: Boolean = false 11 - @JvmField var aBoolean832: Boolean = true 7 + var configId: Int = 0 8 + var leastSignificantBit: Int = 0 9 + var mostSignificantBit: Int = 0 10 + var aBoolean829: Boolean = false 11 + var aBoolean832: Boolean = true 12 12 13 13 fun init(buf: Buffer) { 14 14 while (true) { ··· 35 35 } 36 36 37 37 companion object { 38 - @JvmField var count: Int = 0 39 - @JvmField var cache: Array<Varbit?>? = null 38 + var count: Int = 0 39 + var cache: Array<Varbit?>? = null 40 + 40 41 41 - @JvmStatic 42 42 fun load(archive: Archive) { 43 43 val buffer = Buffer(archive.getFile("varbit.dat")!!) 44 44 count = buffer.getUnsignedShortBE()
+17 -17
src/main/java/com/jagex/runescape/cache/cfg/Varp.kt
··· 4 4 import com.jagex.runescape.net.Buffer 5 5 6 6 class Varp { 7 - @JvmField var aString707: String? = null 8 - @JvmField var anInt708: Int = 0 9 - @JvmField var anInt709: Int = 0 10 - @JvmField var aBoolean710: Boolean = false 11 - @JvmField var aBoolean711: Boolean = true 12 - @JvmField var anInt712: Int = 0 13 - @JvmField var aBoolean713: Boolean = false 14 - @JvmField var anInt714: Int = 0 15 - @JvmField var anInt715: Int = 0 16 - @JvmField var aBoolean716: Boolean = false 17 - @JvmField var anInt717: Int = -1 18 - @JvmField var aBoolean718: Boolean = true 7 + var aString707: String? = null 8 + var anInt708: Int = 0 9 + var anInt709: Int = 0 10 + var aBoolean710: Boolean = false 11 + var aBoolean711: Boolean = true 12 + var anInt712: Int = 0 13 + var aBoolean713: Boolean = false 14 + var anInt714: Int = 0 15 + var anInt715: Int = 0 16 + var aBoolean716: Boolean = false 17 + var anInt717: Int = -1 18 + var aBoolean718: Boolean = true 19 19 20 20 fun loadDefinition(index: Int, buffer: Buffer) { 21 21 while (true) { ··· 57 57 } 58 58 59 59 companion object { 60 - @JvmField var count: Int = 0 61 - @JvmField var cache: Array<Varp?>? = null 62 - @JvmField var currentIndex: Int = 0 63 - @JvmField var anIntArray706: IntArray? = null 60 + var count: Int = 0 61 + var cache: Array<Varp?>? = null 62 + var currentIndex: Int = 0 63 + var anIntArray706: IntArray? = null 64 64 65 - @JvmStatic 65 + 66 66 fun load(archive: Archive) { 67 67 val buffer = Buffer(archive.getFile("varp.dat")!!) 68 68 currentIndex = 0
+40 -40
src/main/java/com/jagex/runescape/cache/def/ActorDefinition.kt
··· 10 10 11 11 class ActorDefinition { 12 12 13 - @JvmField var standAnimationId: Int = -1 14 - @JvmField var childrenIds: IntArray? = null 15 - @JvmField var headModelIndexes: IntArray? = null 16 - @JvmField var modelIds: IntArray? = null 17 - @JvmField var anInt627: Int = -1 18 - @JvmField var id: Long = -1L 19 - @JvmField var sizeY: Int = 128 20 - @JvmField var clickable: Boolean = true 21 - @JvmField var sizeXZ: Int = 128 22 - @JvmField var turnLeftAnimationId: Int = -1 23 - @JvmField var modifiedModelColors: IntArray? = null 24 - @JvmField var minimapVisible: Boolean = true 25 - @JvmField var anInt637: Int = -1 26 - @JvmField var headIcon: Int = -1 27 - @JvmField var combatLevel: Int = -1 28 - @JvmField var turnRightAnimationId: Int = -1 29 - @JvmField var boundaryDimension: Byte = 1 30 - @JvmField var turnAroundAnimationId: Int = -1 31 - @JvmField var visible: Boolean = false 32 - @JvmField var walkAnimationId: Int = -1 33 - @JvmField var actions: Array<String?>? = null 34 - @JvmField var anInt648: Int = -1 35 - @JvmField var degreesToTurn: Int = 32 36 - @JvmField var name: String = "null" 37 - @JvmField var varBitId: Int = -1 38 - @JvmField var originalModelColors: IntArray? = null 39 - @JvmField var contrast: Int = 0 40 - @JvmField var settingId: Int = -1 41 - @JvmField var description: ByteArray? = null 42 - @JvmField var brightness: Int = 0 13 + var standAnimationId: Int = -1 14 + var childrenIds: IntArray? = null 15 + var headModelIndexes: IntArray? = null 16 + var modelIds: IntArray? = null 17 + var anInt627: Int = -1 18 + var id: Long = -1L 19 + var sizeY: Int = 128 20 + var clickable: Boolean = true 21 + var sizeXZ: Int = 128 22 + var turnLeftAnimationId: Int = -1 23 + var modifiedModelColors: IntArray? = null 24 + var minimapVisible: Boolean = true 25 + var anInt637: Int = -1 26 + var headIcon: Int = -1 27 + var combatLevel: Int = -1 28 + var turnRightAnimationId: Int = -1 29 + var boundaryDimension: Byte = 1 30 + var turnAroundAnimationId: Int = -1 31 + var visible: Boolean = false 32 + var walkAnimationId: Int = -1 33 + var actions: Array<String?>? = null 34 + var anInt648: Int = -1 35 + var degreesToTurn: Int = 32 36 + var name: String = "null" 37 + var varBitId: Int = -1 38 + var originalModelColors: IntArray? = null 39 + var contrast: Int = 0 40 + var settingId: Int = -1 41 + var description: ByteArray? = null 42 + var brightness: Int = 0 43 43 44 44 fun loadDefinition(buffer: Buffer) { 45 45 do { ··· 203 203 } 204 204 205 205 companion object { 206 - @JvmField var client: Game? = null 207 - @JvmField var modelCache: Cache? = Cache(30) 208 - @JvmField var size: Int = 0 209 - @JvmField var bufferOffsets: IntArray? = null 210 - @JvmField var cache: Array<ActorDefinition?>? = null 211 - @JvmField var buffer: Buffer? = null 212 - @JvmField var bufferIndex: Int = 0 206 + var client: Game? = null 207 + var modelCache: Cache? = Cache(30) 208 + var size: Int = 0 209 + var bufferOffsets: IntArray? = null 210 + var cache: Array<ActorDefinition?>? = null 211 + var buffer: Buffer? = null 212 + var bufferIndex: Int = 0 213 213 214 - @JvmStatic 214 + 215 215 fun getDefinition(id: Int): ActorDefinition { 216 216 for (j in 0 until 20) 217 217 if (cache!![j]!!.id == id.toLong()) return cache!![j]!! ··· 225 225 return definition 226 226 } 227 227 228 - @JvmStatic 228 + 229 229 fun reset() { 230 230 modelCache = null 231 231 bufferOffsets = null ··· 233 233 buffer = null 234 234 } 235 235 236 - @JvmStatic 236 + 237 237 fun load(archive: Archive) { 238 238 buffer = Buffer(archive.getFile("npc.dat")!!) 239 239 val idxBuffer = Buffer(archive.getFile("npc.idx")!!)
+17 -17
src/main/java/com/jagex/runescape/cache/def/FloorDefinition.kt
··· 5 5 6 6 class FloorDefinition { 7 7 8 - @JvmField var anInt311: Int = 0 9 - @JvmField var aBoolean312: Boolean = true 10 - @JvmField var name: String? = null 11 - @JvmField var rgbColor: Int = 0 12 - @JvmField var textureId: Int = -1 13 - @JvmField var aBoolean318: Boolean = false 14 - @JvmField var occlude: Boolean = true 15 - @JvmField var hue2: Int = 0 16 - @JvmField var saturation: Int = 0 17 - @JvmField var lightness: Int = 0 18 - @JvmField var hue: Int = 0 19 - @JvmField var hueDivisor: Int = 0 20 - @JvmField var hslColor2: Int = 0 8 + var anInt311: Int = 0 9 + var aBoolean312: Boolean = true 10 + var name: String? = null 11 + var rgbColor: Int = 0 12 + var textureId: Int = -1 13 + var aBoolean318: Boolean = false 14 + var occlude: Boolean = true 15 + var hue2: Int = 0 16 + var saturation: Int = 0 17 + var lightness: Int = 0 18 + var hue: Int = 0 19 + var hueDivisor: Int = 0 20 + var hslColor2: Int = 0 21 21 22 22 fun loadDefinition(buffer: Buffer) { 23 23 while (true) { ··· 103 103 } 104 104 105 105 companion object { 106 - @JvmField var aByte310: Byte = 6 107 - @JvmField var count: Int = 0 108 - @JvmField var cache: Array<FloorDefinition?>? = null 106 + var aByte310: Byte = 6 107 + var count: Int = 0 108 + var cache: Array<FloorDefinition?>? = null 109 109 110 - @JvmStatic 110 + 111 111 fun load(archive: Archive) { 112 112 val buffer = Buffer(archive.getFile("flo.dat")!!) 113 113 count = buffer.getUnsignedShortBE()
+51 -51
src/main/java/com/jagex/runescape/cache/def/GameObjectDefinition.kt
··· 12 12 13 13 class GameObjectDefinition { 14 14 15 - @JvmField var hasActions: Boolean = false 16 - @JvmField var modelSizeY: Int = 0 17 - @JvmField var translateX: Int = 0 18 - @JvmField var modelIds: IntArray? = null 19 - @JvmField var anInt764: Int = 0 20 - @JvmField var unknown: Boolean = false 21 - @JvmField var translateZ: Int = 0 22 - @JvmField var adjustToTerrain: Boolean = false 23 - @JvmField var id: Int = -1 24 - @JvmField var sizeY: Int = 0 25 - @JvmField var name: String = "null" 26 - @JvmField var varbitId: Int = 0 27 - @JvmField var modelSizeX: Int = 0 28 - @JvmField var configId: Int = 0 29 - @JvmField var description: ByteArray? = null 30 - @JvmField var modelLightFalloff: Byte = 0 31 - @JvmField var translateY: Int = 0 32 - @JvmField var aBoolean786: Boolean = true 33 - @JvmField var modelLightAmbient: Byte = 0 34 - @JvmField var modelTypes: IntArray? = null 35 - @JvmField var options: Array<String?>? = null 36 - @JvmField var aBoolean791: Boolean = false 37 - @JvmField var anIntArray792: IntArray? = null 38 - @JvmField var anInt794: Int = 0 39 - @JvmField var anInt795: Int = 0 40 - @JvmField var modelSizeZ: Int = 0 41 - @JvmField var wall: Boolean = false 42 - @JvmField var unknown3: Boolean = false 43 - @JvmField var modifiedModelColors: IntArray? = null 44 - @JvmField var sizeX: Int = 0 45 - @JvmField var offsetAmplifier: Int = 0 46 - @JvmField var animationId: Int = 0 47 - @JvmField var nonFlatShading: Boolean = false 48 - @JvmField var childrenIds: IntArray? = null 49 - @JvmField var icon: Int = 0 50 - @JvmField var castsShadow: Boolean = false 51 - @JvmField var walkable: Boolean = false 52 - @JvmField var solid: Boolean = false 15 + var hasActions: Boolean = false 16 + var modelSizeY: Int = 0 17 + var translateX: Int = 0 18 + var modelIds: IntArray? = null 19 + var anInt764: Int = 0 20 + var unknown: Boolean = false 21 + var translateZ: Int = 0 22 + var adjustToTerrain: Boolean = false 23 + var id: Int = -1 24 + var sizeY: Int = 0 25 + var name: String = "null" 26 + var varbitId: Int = 0 27 + var modelSizeX: Int = 0 28 + var configId: Int = 0 29 + var description: ByteArray? = null 30 + var modelLightFalloff: Byte = 0 31 + var translateY: Int = 0 32 + var aBoolean786: Boolean = true 33 + var modelLightAmbient: Byte = 0 34 + var modelTypes: IntArray? = null 35 + var options: Array<String?>? = null 36 + var aBoolean791: Boolean = false 37 + var anIntArray792: IntArray? = null 38 + var anInt794: Int = 0 39 + var anInt795: Int = 0 40 + var modelSizeZ: Int = 0 41 + var wall: Boolean = false 42 + var unknown3: Boolean = false 43 + var modifiedModelColors: IntArray? = null 44 + var sizeX: Int = 0 45 + var offsetAmplifier: Int = 0 46 + var animationId: Int = 0 47 + var nonFlatShading: Boolean = false 48 + var childrenIds: IntArray? = null 49 + var icon: Int = 0 50 + var castsShadow: Boolean = false 51 + var walkable: Boolean = false 52 + var solid: Boolean = false 53 53 54 54 fun setDefaultValues() { 55 55 modelIds = null ··· 345 345 } 346 346 347 347 companion object { 348 - @JvmField var bufferOffsets: IntArray? = null 349 - @JvmField var animatedModelCache: Cache? = Cache(40) 350 - @JvmField var buffer: Buffer? = null 351 - @JvmField var client: Game? = null 352 - @JvmField var models: Array<Model?> = arrayOfNulls(4) 353 - @JvmField var lowMemory: Boolean = false 354 - @JvmField var cacheIndex: Int = 0 355 - @JvmField var modelCache: Cache? = Cache(500) 356 - @JvmField var cache: Array<GameObjectDefinition?>? = null 357 - @JvmField var definitionCount: Int = 0 348 + var bufferOffsets: IntArray? = null 349 + var animatedModelCache: Cache? = Cache(40) 350 + var buffer: Buffer? = null 351 + var client: Game? = null 352 + var models: Array<Model?> = arrayOfNulls(4) 353 + var lowMemory: Boolean = false 354 + var cacheIndex: Int = 0 355 + var modelCache: Cache? = Cache(500) 356 + var cache: Array<GameObjectDefinition?>? = null 357 + var definitionCount: Int = 0 358 358 359 - @JvmStatic 359 + 360 360 fun getDefinition(id: Int): GameObjectDefinition { 361 361 for (index in 0 until 20) 362 362 if (cache!![index]!!.id == id) return cache!![index]!! ··· 370 370 return definition 371 371 } 372 372 373 - @JvmStatic 373 + 374 374 fun load(archive: Archive) { 375 375 buffer = Buffer(archive.getFile("loc.dat")!!) 376 376 val idxBuffer = Buffer(archive.getFile("loc.idx")!!) ··· 386 386 cache = Array(20) { GameObjectDefinition() } 387 387 } 388 388 389 - @JvmStatic 389 + 390 390 fun method433(flag: Boolean) { 391 391 modelCache = null 392 392 animatedModelCache = null
+53 -53
src/main/java/com/jagex/runescape/cache/def/ItemDefinition.kt
··· 11 11 12 12 class ItemDefinition { 13 13 14 - @JvmField var primaryFemaleModel: Int = 0 15 - @JvmField var modelOffsetX: Int = 0 16 - @JvmField var description: ByteArray? = null 17 - @JvmField var name: String? = null 18 - @JvmField var femaleTranslation: Byte = 0 19 - @JvmField var secondaryMaleModel: Int = 0 20 - @JvmField var team: Int = 0 21 - @JvmField var notedInfoId: Int = 0 22 - @JvmField var primaryMaleHeadPiece: Int = 0 23 - @JvmField var anInt339: Int = 0 24 - @JvmField var modelOffsetY: Int = 0 25 - @JvmField var destColors: IntArray? = null 26 - @JvmField var notedTemplateId: Int = 0 27 - @JvmField var value: Int = 0 28 - @JvmField var inventoryActions: Array<String?>? = null 29 - @JvmField var primaryMaleModel: Int = 0 30 - @JvmField var ambience: Int = 0 31 - @JvmField var secondaryFemaleModel: Int = 0 32 - @JvmField var modelRotationY: Int = 0 33 - @JvmField var groundScaleY: Int = 0 34 - @JvmField var diffusion: Int = 0 35 - @JvmField var modelRotationX: Int = 0 36 - @JvmField var modelId: Int = 0 37 - @JvmField var secondaryMaleHeadPiece: Int = 0 38 - @JvmField var secondaryFemaleHeadPiece: Int = 0 39 - @JvmField var id: Int = -1 40 - @JvmField var originalColours: IntArray? = null 41 - @JvmField var stackIds: IntArray? = null 42 - @JvmField var groundScaleX: Int = 0 43 - @JvmField var tertiaryFemaleEquipmentModel: Int = 0 44 - @JvmField var groundScaleZ: Int = 0 45 - @JvmField var modelScale: Int = 0 46 - @JvmField var tertiaryMaleEquipmentModel: Int = 0 47 - @JvmField var stackable: Boolean = false 48 - @JvmField var anInt372: Int = 0 49 - @JvmField var primaryFemaleHeadPiece: Int = 0 50 - @JvmField var stackAmounts: IntArray? = null 51 - @JvmField var members: Boolean = false 52 - @JvmField var maleTranslation: Byte = 0 53 - @JvmField var groundActions: Array<String?>? = null 14 + var primaryFemaleModel: Int = 0 15 + var modelOffsetX: Int = 0 16 + var description: ByteArray? = null 17 + var name: String? = null 18 + var femaleTranslation: Byte = 0 19 + var secondaryMaleModel: Int = 0 20 + var team: Int = 0 21 + var notedInfoId: Int = 0 22 + var primaryMaleHeadPiece: Int = 0 23 + var anInt339: Int = 0 24 + var modelOffsetY: Int = 0 25 + var destColors: IntArray? = null 26 + var notedTemplateId: Int = 0 27 + var value: Int = 0 28 + var inventoryActions: Array<String?>? = null 29 + var primaryMaleModel: Int = 0 30 + var ambience: Int = 0 31 + var secondaryFemaleModel: Int = 0 32 + var modelRotationY: Int = 0 33 + var groundScaleY: Int = 0 34 + var diffusion: Int = 0 35 + var modelRotationX: Int = 0 36 + var modelId: Int = 0 37 + var secondaryMaleHeadPiece: Int = 0 38 + var secondaryFemaleHeadPiece: Int = 0 39 + var id: Int = -1 40 + var originalColours: IntArray? = null 41 + var stackIds: IntArray? = null 42 + var groundScaleX: Int = 0 43 + var tertiaryFemaleEquipmentModel: Int = 0 44 + var groundScaleZ: Int = 0 45 + var modelScale: Int = 0 46 + var tertiaryMaleEquipmentModel: Int = 0 47 + var stackable: Boolean = false 48 + var anInt372: Int = 0 49 + var primaryFemaleHeadPiece: Int = 0 50 + var stackAmounts: IntArray? = null 51 + var members: Boolean = false 52 + var maleTranslation: Byte = 0 53 + var groundActions: Array<String?>? = null 54 54 55 55 fun reset() { 56 56 modelId = 0 ··· 315 315 } 316 316 317 317 companion object { 318 - @JvmField var count: Int = 0 319 - @JvmField var cache: Array<ItemDefinition?>? = null 320 - @JvmField var modelCache: Cache? = Cache(50) 321 - @JvmField var offsets: IntArray? = null 322 - @JvmField var memberServer: Boolean = true 323 - @JvmField var rgbImageCache: Cache? = Cache(100) 324 - @JvmField var aBoolean350: Boolean = true 325 - @JvmField var cacheIndex: Int = 0 326 - @JvmField var buffer: Buffer? = null 318 + var count: Int = 0 319 + var cache: Array<ItemDefinition?>? = null 320 + var modelCache: Cache? = Cache(50) 321 + var offsets: IntArray? = null 322 + var memberServer: Boolean = true 323 + var rgbImageCache: Cache? = Cache(100) 324 + var aBoolean350: Boolean = true 325 + var cacheIndex: Int = 0 326 + var buffer: Buffer? = null 327 + 327 328 328 - @JvmStatic 329 329 fun dispose() { 330 330 modelCache = null 331 331 rgbImageCache = null ··· 334 334 buffer = null 335 335 } 336 336 337 - @JvmStatic 337 + 338 338 fun lookup(id: Int): ItemDefinition { 339 339 for (i in 0 until 10) 340 340 if (cache!![i]!!.id == id) return cache!![i]!! ··· 357 357 return definition 358 358 } 359 359 360 - @JvmStatic 360 + 361 361 fun load(archive: Archive) { 362 362 buffer = Buffer(archive.getFile("obj.dat")!!) 363 363 val idxBuffer = Buffer(archive.getFile("obj.idx")!!) ··· 371 371 cache = Array(10) { ItemDefinition() } 372 372 } 373 373 374 - @JvmStatic 374 + 375 375 fun sprite(id: Int, stackSize: Int, backColour: Int): ImageRGB? { 376 376 if (backColour == 0) { 377 377 var sprite = rgbImageCache!!.get(id.toLong()) as ImageRGB?
+17 -17
src/main/java/com/jagex/runescape/cache/media/AnimationSequence.kt
··· 6 6 7 7 class AnimationSequence { 8 8 9 - @JvmField var frameCount: Int = 0 10 - @JvmField var getPrimaryFrame: IntArray? = null 11 - @JvmField var frame1Ids: IntArray? = null 12 - @JvmField var frameLenghts: IntArray? = null 13 - @JvmField var frameStep: Int = -1 14 - @JvmField var flowControl: IntArray? = null 15 - @JvmField var dynamic: Boolean = false 16 - @JvmField var anInt301: Int = 5 17 - @JvmField var getPlayerShieldDelta: Int = -1 18 - @JvmField var getPlayerWeaponDelta: Int = -1 19 - @JvmField var resetCycle: Int = 99 20 - @JvmField var speedFlag: Int = -1 21 - @JvmField var priority: Int = -1 22 - @JvmField var anInt307: Int = 2 9 + var frameCount: Int = 0 10 + var getPrimaryFrame: IntArray? = null 11 + var frame1Ids: IntArray? = null 12 + var frameLenghts: IntArray? = null 13 + var frameStep: Int = -1 14 + var flowControl: IntArray? = null 15 + var dynamic: Boolean = false 16 + var anInt301: Int = 5 17 + var getPlayerShieldDelta: Int = -1 18 + var getPlayerWeaponDelta: Int = -1 19 + var resetCycle: Int = 99 20 + var speedFlag: Int = -1 21 + var priority: Int = -1 22 + var anInt307: Int = 2 23 23 24 24 fun getFrameLength(animationId: Int): Int { 25 25 var frameLength = frameLenghts!![animationId] ··· 85 85 } 86 86 87 87 companion object { 88 - @JvmField var count: Int = 0 89 - @JvmField var animations: Array<AnimationSequence?>? = null 88 + var count: Int = 0 89 + var animations: Array<AnimationSequence?>? = null 90 + 90 91 91 - @JvmStatic 92 92 fun load(archive: Archive) { 93 93 val buffer = Buffer(archive.getFile("seq.dat")!!) 94 94 count = buffer.getUnsignedShortBE()
+9 -9
src/main/java/com/jagex/runescape/cache/media/IdentityKit.kt
··· 6 6 7 7 class IdentityKit { 8 8 9 - @JvmField var partId: Int = -1 10 - @JvmField var modelId: IntArray? = null 11 - @JvmField var originalModelColors: IntArray = IntArray(6) 12 - @JvmField var modifiedModelColors: IntArray = IntArray(6) 13 - @JvmField var headModelIds: IntArray = intArrayOf(-1, -1, -1, -1, -1) 14 - @JvmField var widgetDisplayed: Boolean = false 9 + var partId: Int = -1 10 + var modelId: IntArray? = null 11 + var originalModelColors: IntArray = IntArray(6) 12 + var modifiedModelColors: IntArray = IntArray(6) 13 + var headModelIds: IntArray = intArrayOf(-1, -1, -1, -1, -1) 14 + var widgetDisplayed: Boolean = false 15 15 16 16 fun loadDefinition(buffer: Buffer) { 17 17 while (true) { ··· 74 74 } 75 75 76 76 companion object { 77 - @JvmField var count: Int = 0 78 - @JvmField var cache: Array<IdentityKit?>? = null 77 + var count: Int = 0 78 + var cache: Array<IdentityKit?>? = null 79 + 79 80 80 - @JvmStatic 81 81 fun load(archive: Archive) { 82 82 val buffer = Buffer(archive.getFile("idk.dat")!!) 83 83 count = buffer.getUnsignedShortBE()
+7 -7
src/main/java/com/jagex/runescape/cache/media/ImageRGB.kt
··· 11 11 12 12 class ImageRGB : Rasterizer { 13 13 14 - @JvmField var pixels: IntArray 15 - @JvmField var width: Int 16 - @JvmField var height: Int 17 - @JvmField var offsetX: Int 18 - @JvmField var offsetY: Int 19 - @JvmField var maxWidth: Int 20 - @JvmField var maxHeight: Int 14 + var pixels: IntArray 15 + var width: Int 16 + var height: Int 17 + var offsetX: Int 18 + var offsetY: Int 19 + var maxWidth: Int 20 + var maxHeight: Int 21 21 22 22 constructor(width: Int, height: Int) { 23 23 pixels = IntArray(width * height)
+8 -8
src/main/java/com/jagex/runescape/cache/media/IndexedImage.kt
··· 6 6 7 7 class IndexedImage(archive: Archive, archiveName: String, offset: Int) : Rasterizer() { 8 8 9 - @JvmField var imgPixels: ByteArray 10 - @JvmField var palette: IntArray 11 - @JvmField var imgWidth: Int 12 - @JvmField var height: Int 13 - @JvmField var xDrawOffset: Int 14 - @JvmField var yDrawOffset: Int 15 - @JvmField var maxWidth: Int 16 - @JvmField var maxHeight: Int 9 + var imgPixels: ByteArray 10 + var palette: IntArray 11 + var imgWidth: Int 12 + var height: Int 13 + var xDrawOffset: Int 14 + var yDrawOffset: Int 15 + var maxWidth: Int 16 + var maxHeight: Int 17 17 18 18 init { 19 19 val dataBuffer = Buffer(archive.getFile("$archiveName.dat")!!)
+15 -15
src/main/java/com/jagex/runescape/cache/media/SpotAnimation.kt
··· 7 7 8 8 class SpotAnimation { 9 9 10 - @JvmField var id: Int = 0 11 - @JvmField var modelId: Int = 0 12 - @JvmField var animationId: Int = -1 13 - @JvmField var sequences: AnimationSequence? = null 14 - @JvmField var originalModelColors: IntArray = IntArray(6) 15 - @JvmField var modifiedModelColors: IntArray = IntArray(6) 16 - @JvmField var resizeXY: Int = 128 17 - @JvmField var resizeZ: Int = 128 18 - @JvmField var rotation: Int = 0 19 - @JvmField var modelLightFalloff: Int = 0 20 - @JvmField var modelLightAmbient: Int = 0 10 + var id: Int = 0 11 + var modelId: Int = 0 12 + var animationId: Int = -1 13 + var sequences: AnimationSequence? = null 14 + var originalModelColors: IntArray = IntArray(6) 15 + var modifiedModelColors: IntArray = IntArray(6) 16 + var resizeXY: Int = 128 17 + var resizeZ: Int = 128 18 + var rotation: Int = 0 19 + var modelLightFalloff: Int = 0 20 + var modelLightAmbient: Int = 0 21 21 22 22 fun loadDefinition(buffer: Buffer) { 23 23 while (true) { ··· 54 54 } 55 55 56 56 companion object { 57 - @JvmField var spotAnimationCount: Int = 0 58 - @JvmField var cache: Array<SpotAnimation?>? = null 59 - @JvmField var modelCache: Cache? = Cache(30) 57 + var spotAnimationCount: Int = 0 58 + var cache: Array<SpotAnimation?>? = null 59 + var modelCache: Cache? = Cache(30) 60 60 61 - @JvmStatic 61 + 62 62 fun load(archive: Archive) { 63 63 val buffer = Buffer(archive.getFile("spotanim.dat")!!) 64 64 spotAnimationCount = buffer.getUnsignedShortBE()
+8 -8
src/main/java/com/jagex/runescape/cache/media/TypeFace.kt
··· 8 8 9 9 class TypeFace(monospace: Boolean, archive: Archive, archiveName: String) : Rasterizer() { 10 10 11 - @JvmField var characterPixels: Array<ByteArray?> = arrayOfNulls(256) 12 - @JvmField var characterWidths: IntArray = IntArray(256) 13 - @JvmField var characterHeights: IntArray = IntArray(256) 14 - @JvmField var characterXOffsets: IntArray = IntArray(256) 15 - @JvmField var characterYOffsets: IntArray = IntArray(256) 16 - @JvmField var characterScreenWidths: IntArray = IntArray(256) 17 - @JvmField var characterDefaultHeight: Int = 0 18 - @JvmField var random: Random = Random() 11 + var characterPixels: Array<ByteArray?> = arrayOfNulls(256) 12 + var characterWidths: IntArray = IntArray(256) 13 + var characterHeights: IntArray = IntArray(256) 14 + var characterXOffsets: IntArray = IntArray(256) 15 + var characterYOffsets: IntArray = IntArray(256) 16 + var characterScreenWidths: IntArray = IntArray(256) 17 + var characterDefaultHeight: Int = 0 18 + var random: Random = Random() 19 19 20 20 private var moderatorIcon: Array<ImageRGB>? = null 21 21 private var imageWidths: IntArray? = null
+80 -80
src/main/java/com/jagex/runescape/cache/media/Widget.kt
··· 12 12 13 13 class Widget { 14 14 15 - @JvmField var optionText: String? = null 16 - @JvmField var disabledImage: ImageRGB? = null 17 - @JvmField var imageY: IntArray? = null 18 - @JvmField var id: Int = 0 19 - @JvmField var itemDeletesDraged: Boolean = false 20 - @JvmField var anInt218: Int = 0 21 - @JvmField var hiddenUntilHovered: Boolean = false 22 - @JvmField var alpha: Byte = 0 23 - @JvmField var imageX: IntArray? = null 24 - @JvmField var optionAttributes: Int = 0 25 - @JvmField var itemAmounts: IntArray? = null 26 - @JvmField var unknownOne: Int = 0 27 - @JvmField var enabledHoveredColor: Int = 0 28 - @JvmField var animationDuration: Int = 0 29 - @JvmField var xOffset: Int = 0 30 - @JvmField var isInventory: Boolean = false 31 - @JvmField var disabledText: String? = null 32 - @JvmField var scrollPosition: Int = 0 33 - @JvmField var childrenX: IntArray? = null 34 - @JvmField var unknownTwo: Boolean = false 35 - @JvmField var cs1opcodes: Array<IntArray?>? = null 36 - @JvmField var animationFrame: Int = 0 37 - @JvmField var type: Int = 0 38 - @JvmField var typeFaces: TypeFace? = null 39 - @JvmField var height: Int = 0 40 - @JvmField var filled: Boolean = false 41 - @JvmField var disabledColor: Int = 0 42 - @JvmField var width: Int = 0 43 - @JvmField var contentType: Int = 0 44 - @JvmField var itemSpritePadsY: Int = 0 45 - @JvmField var enabledImage: ImageRGB? = null 46 - @JvmField var typeFaceShadowed: Boolean = false 47 - @JvmField var parentId: Int = 0 48 - @JvmField var enabledText: String? = null 49 - @JvmField var zoom: Int = 0 50 - @JvmField var rotationX: Int = 0 51 - @JvmField var rotationY: Int = 0 52 - @JvmField var hoveredPopup: Int = 0 53 - @JvmField var conditionValues: IntArray? = null 54 - @JvmField var children: IntArray? = null 55 - @JvmField var yOffset: Int = 0 56 - @JvmField var enabledColor: Int = 0 57 - @JvmField var disabledHoveredColor: Int = 0 58 - @JvmField var options: Array<String?>? = null 59 - @JvmField var itemSpritePadsX: Int = 0 60 - @JvmField var images: Array<ImageRGB?>? = null 61 - @JvmField var enabledModelType: Int = 0 62 - @JvmField var enabledModelId: Int = 0 63 - @JvmField var tooltip: String? = null 64 - @JvmField var items: IntArray? = null 65 - @JvmField var typeFaceCentered: Boolean = false 66 - @JvmField var conditionTypes: IntArray? = null 67 - @JvmField var itemSwapable: Boolean = false 68 - @JvmField var childrenY: IntArray? = null 69 - @JvmField var optionCircumfix: String? = null 70 - @JvmField var modelType: Int = 0 71 - @JvmField var modelId: Int = 0 72 - @JvmField var scrollLimit: Int = 0 73 - @JvmField var disabledAnimation: Int = 0 74 - @JvmField var enabledAnimation: Int = 0 75 - @JvmField var itemUsable: Boolean = false 76 - @JvmField var actionType: Int = 0 15 + var optionText: String? = null 16 + var disabledImage: ImageRGB? = null 17 + var imageY: IntArray? = null 18 + var id: Int = 0 19 + var itemDeletesDraged: Boolean = false 20 + var anInt218: Int = 0 21 + var hiddenUntilHovered: Boolean = false 22 + var alpha: Byte = 0 23 + var imageX: IntArray? = null 24 + var optionAttributes: Int = 0 25 + var itemAmounts: IntArray? = null 26 + var unknownOne: Int = 0 27 + var enabledHoveredColor: Int = 0 28 + var animationDuration: Int = 0 29 + var xOffset: Int = 0 30 + var isInventory: Boolean = false 31 + var disabledText: String? = null 32 + var scrollPosition: Int = 0 33 + var childrenX: IntArray? = null 34 + var unknownTwo: Boolean = false 35 + var cs1opcodes: Array<IntArray?>? = null 36 + var animationFrame: Int = 0 37 + var type: Int = 0 38 + var typeFaces: TypeFace? = null 39 + var height: Int = 0 40 + var filled: Boolean = false 41 + var disabledColor: Int = 0 42 + var width: Int = 0 43 + var contentType: Int = 0 44 + var itemSpritePadsY: Int = 0 45 + var enabledImage: ImageRGB? = null 46 + var typeFaceShadowed: Boolean = false 47 + var parentId: Int = 0 48 + var enabledText: String? = null 49 + var zoom: Int = 0 50 + var rotationX: Int = 0 51 + var rotationY: Int = 0 52 + var hoveredPopup: Int = 0 53 + var conditionValues: IntArray? = null 54 + var children: IntArray? = null 55 + var yOffset: Int = 0 56 + var enabledColor: Int = 0 57 + var disabledHoveredColor: Int = 0 58 + var options: Array<String?>? = null 59 + var itemSpritePadsX: Int = 0 60 + var images: Array<ImageRGB?>? = null 61 + var enabledModelType: Int = 0 62 + var enabledModelId: Int = 0 63 + var tooltip: String? = null 64 + var items: IntArray? = null 65 + var typeFaceCentered: Boolean = false 66 + var conditionTypes: IntArray? = null 67 + var itemSwapable: Boolean = false 68 + var childrenY: IntArray? = null 69 + var optionCircumfix: String? = null 70 + var modelType: Int = 0 71 + var modelId: Int = 0 72 + var scrollLimit: Int = 0 73 + var disabledAnimation: Int = 0 74 + var enabledAnimation: Int = 0 75 + var itemUsable: Boolean = false 76 + var actionType: Int = 0 77 77 78 78 fun swapItems(originalSlot: Int, newSlot: Int) { 79 79 var originalItem = items!![originalSlot] ··· 123 123 } 124 124 125 125 companion object { 126 - @JvmField var mediaArchive: Archive? = null 127 - @JvmField var interfaces: Array<Widget?>? = null 128 - @JvmField var fonts: Array<TypeFace?>? = null 129 - @JvmField var anInt243: Int = 0 130 - @JvmField var instanceWidgetParent: Int = -1 131 - @JvmField var spriteCache: Cache? = null 132 - @JvmField var anInt255: Int = -1 133 - @JvmField var anInt277: Int = -1 134 - @JvmField var anInt280: Int = 0 135 - @JvmField var data: Array<ByteArray?>? = null 136 - @JvmField var modelCache: Cache = Cache(30) 126 + var mediaArchive: Archive? = null 127 + var interfaces: Array<Widget?>? = null 128 + var fonts: Array<TypeFace?>? = null 129 + var anInt243: Int = 0 130 + var instanceWidgetParent: Int = -1 131 + var spriteCache: Cache? = null 132 + var anInt255: Int = -1 133 + var anInt277: Int = -1 134 + var anInt280: Int = 0 135 + var data: Array<ByteArray?>? = null 136 + var modelCache: Cache = Cache(30) 137 + 137 138 138 - @JvmStatic 139 139 fun getImage(spriteId: Int, spriteName: String): ImageRGB? { 140 140 val spriteHash = (TextUtils.spriteToHash(spriteName).toLong() shl 8) + spriteId 141 141 var sprite = spriteCache!!.get(spriteHash) as ImageRGB? ··· 150 150 } 151 151 } 152 152 153 - @JvmStatic 153 + 154 154 fun forId(id: Int): Widget { 155 155 if (interfaces!![id] == null) { 156 156 val buf = Buffer(data!![id]!!) ··· 160 160 return interfaces!![id]!! 161 161 } 162 162 163 - @JvmStatic 163 + 164 164 fun parse(parentId: Int, buffer: Buffer, widgetIndex: Int): Widget { 165 165 var idx = widgetIndex 166 166 val widget = Widget() ··· 346 346 return widget 347 347 } 348 348 349 - @JvmStatic 349 + 350 350 fun load(widgetArchive: Archive, fonts: Array<TypeFace?>, mediaArchive: Archive) { 351 351 spriteCache = Cache(50000) 352 352 val buffer = Buffer(widgetArchive.getFile("data")!!) ··· 379 379 } 380 380 } 381 381 382 - @JvmStatic 382 + 383 383 fun method200(i: Int) { 384 384 if (i == -1) return 385 385 for (j in interfaces!!.indices) ··· 387 387 interfaces!![j] = null 388 388 } 389 389 390 - @JvmStatic 390 + 391 391 fun setModel(modelType: Int, model: Model?, modelId: Int) { 392 392 modelCache.removeAll() 393 393 if (model != null && modelType != 4) 394 394 modelCache.put(model, ((modelType shl 16) + modelId).toLong()) 395 395 } 396 396 397 - @JvmStatic 397 + 398 398 fun reset() { 399 399 interfaces = null 400 400 mediaArchive = null
+6 -6
src/main/java/com/jagex/runescape/collection/Cache.kt
··· 8 8 * Used throughout the client for texture, model, and animation caching where 9 9 * re-decoding from the cache archive is expensive but memory is bounded. 10 10 */ 11 - class Cache(@JvmField val capacity: Int) { 12 - @JvmField var misses: Int = 0 13 - @JvmField var hits: Int = 0 14 - @JvmField var remaining: Int = capacity 15 - @JvmField val hashTable: HashTable = HashTable(1024) 16 - @JvmField val queue: Queue = Queue() 11 + class Cache(val capacity: Int) { 12 + var misses: Int = 0 13 + var hits: Int = 0 14 + var remaining: Int = capacity 15 + val hashTable: HashTable = HashTable(1024) 16 + val queue: Queue = Queue() 17 17 18 18 fun get(id: Long): CacheableNode? { 19 19 val node = hashTable.get(id) as? CacheableNode
+2 -2
src/main/java/com/jagex/runescape/collection/CacheableNode.kt
··· 13 13 * here to make the dual-link design explicit. 14 14 */ 15 15 open class CacheableNode : Node() { 16 - @JvmField var nextQueue: CacheableNode? = null 17 - @JvmField var prevQueue: CacheableNode? = null 16 + var nextQueue: CacheableNode? = null 17 + var prevQueue: CacheableNode? = null 18 18 19 19 fun clear() { 20 20 if (prevQueue == null) return
+2 -2
src/main/java/com/jagex/runescape/collection/HashTable.kt
··· 7 7 * function is simply `id AND (size - 1)`, which means [size] must be a power 8 8 * of two for correct distribution. This matches the original client behavior. 9 9 */ 10 - class HashTable(@JvmField val size: Int) { 11 - @JvmField val cache: Array<Node> = Array(size) { Node().also { it.next = it; it.previous = it } } 10 + class HashTable(val size: Int) { 11 + val cache: Array<Node> = Array(size) { Node().also { it.next = it; it.previous = it } } 12 12 13 13 fun get(id: Long): Node? { 14 14 val bucket = cache[(id and (size - 1).toLong()).toInt()]
+3 -3
src/main/java/com/jagex/runescape/collection/Node.kt
··· 11 11 * [next]/[previous] form a circular doubly-linked list within each bucket. 12 12 */ 13 13 open class Node { 14 - @JvmField var id: Long = 0 15 - @JvmField var next: Node? = null 16 - @JvmField var previous: Node? = null 14 + var id: Long = 0 15 + var next: Node? = null 16 + var previous: Node? = null 17 17 18 18 fun remove() { 19 19 if (previous != null) {
+2 -2
src/main/java/com/jagex/runescape/collection/Queue.kt
··· 9 9 * checks at list boundaries — a classic intrusive-list trick. 10 10 */ 11 11 class Queue { 12 - @JvmField val head: CacheableNode = CacheableNode() 13 - @JvmField var current: CacheableNode? = null 12 + val head: CacheableNode = CacheableNode() 13 + var current: CacheableNode? = null 14 14 15 15 init { 16 16 head.nextQueue = head
+17 -17
src/main/java/com/jagex/runescape/config/Configuration.kt
··· 11 11 * If neither is found, the hardcoded defaults below are used. 12 12 */ 13 13 object Configuration { 14 - @JvmField var SERVER_ADDRESS = "127.0.0.1" 15 - @JvmField var CACHE_NAME = ".377cache" 16 - @JvmField var GAME_PORT = 43594 17 - @JvmField var ONDEMAND_PORT = 43596 18 - @JvmField var JAGGRAB_PORT = 43595 19 - @JvmField var HTTP_PORT = 80 20 - @JvmField var JAGGRAB_ENABLED = true 21 - @JvmField var RSA_ENABLED = false 22 - @JvmField var RSA_PUBLIC_KEY: BigInteger = BigInteger("65537") 23 - @JvmField var RSA_MODULUS: BigInteger = BigInteger( 14 + var SERVER_ADDRESS = "127.0.0.1" 15 + var CACHE_NAME = ".377cache" 16 + var GAME_PORT = 43594 17 + var ONDEMAND_PORT = 43596 18 + var JAGGRAB_PORT = 43595 19 + var HTTP_PORT = 80 20 + var JAGGRAB_ENABLED = true 21 + var RSA_ENABLED = false 22 + var RSA_PUBLIC_KEY: BigInteger = BigInteger("65537") 23 + var RSA_MODULUS: BigInteger = BigInteger( 24 24 "170266381807335046121774073514220583891686029487165562794998484549236036467227" + 25 25 "923571770256617931840775621072487838687650522710227973331693237285456731778528" + 26 26 "244126984080232314114323601116304887478969296070648644633713088027922830600712" + 27 27 "492972687351204275625149978223159432963210789506993409208545916714905193639" 28 28 ) 29 - @JvmField var USE_STATIC_DETAILS = false 30 - @JvmField var USERNAME = "Promises" 31 - @JvmField var PASSWORD = "Testing" 32 - @JvmField var ROOFS_ENABLED = true 33 - @JvmField var FREE_TELEPORTS = false 34 - @JvmField var DEBUG_CONTEXT = true 29 + var USE_STATIC_DETAILS = false 30 + var USERNAME = "Promises" 31 + var PASSWORD = "Testing" 32 + var ROOFS_ENABLED = true 33 + var FREE_TELEPORTS = false 34 + var DEBUG_CONTEXT = true 35 35 36 - @JvmStatic 36 + 37 37 @Suppress("UNCHECKED_CAST") 38 38 fun read() { 39 39 try {
+1 -1
src/main/java/com/jagex/runescape/config/IncomingPacket.kt
··· 5 5 * integer opcode the server sends. The client's packet handler switches on 6 6 * these to dispatch rendering, UI updates, entity sync, etc. 7 7 */ 8 - enum class IncomingPacket(@JvmField val id: Int) { 8 + enum class IncomingPacket(val id: Int) { 9 9 REMOVE_LANDSCAPE_OBJECT(88), 10 10 SET_LANDSCAPE_OBJECT(152), 11 11 REMOVE_GROUND_ITEM(208),
+14 -14
src/main/java/com/jagex/runescape/media/Animation.kt
··· 4 4 5 5 class Animation { 6 6 7 - @JvmField var delay: Int = 0 8 - @JvmField var animationSkins: Skins? = null 9 - @JvmField var transformCount: Int = 0 10 - @JvmField var opcodeTable: IntArray = IntArray(0) 11 - @JvmField var modifier1: IntArray = IntArray(0) 12 - @JvmField var modifier2: IntArray = IntArray(0) 13 - @JvmField var modifier3: IntArray = IntArray(0) 7 + var delay: Int = 0 8 + var animationSkins: Skins? = null 9 + var transformCount: Int = 0 10 + var opcodeTable: IntArray = IntArray(0) 11 + var modifier1: IntArray = IntArray(0) 12 + var modifier2: IntArray = IntArray(0) 13 + var modifier3: IntArray = IntArray(0) 14 14 15 15 companion object { 16 - @JvmField var cache: Array<Animation?>? = null 17 - @JvmField var noAlpha: BooleanArray? = null 16 + var cache: Array<Animation?>? = null 17 + var noAlpha: BooleanArray? = null 18 + 18 19 19 - @JvmStatic 20 20 fun method235(i: Int) { 21 21 cache = arrayOfNulls(i + 1) 22 22 noAlpha = BooleanArray(i + 1) { true } 23 23 } 24 24 25 - @JvmStatic 25 + 26 26 fun method236(bs: ByteArray) { 27 27 val buffer = Buffer(bs) 28 28 buffer.currentPosition = bs.size - 8 ··· 109 109 } 110 110 } 111 111 112 - @JvmStatic 112 + 113 113 fun reset() { 114 114 cache = null 115 115 } 116 116 117 - @JvmStatic 117 + 118 118 fun getAnimation(animationId: Int): Animation? { 119 119 return cache?.get(animationId) 120 120 } 121 121 122 - @JvmStatic 122 + 123 123 fun exists(i: Int): Boolean { 124 124 return i == -1 125 125 }
+6 -6
src/main/java/com/jagex/runescape/media/ProducingGraphicsBuffer.kt
··· 11 11 12 12 class ProducingGraphicsBuffer(width: Int, height: Int, component: Component) : ImageProducer, ImageObserver { 13 13 14 - @JvmField var pixels: IntArray = IntArray(width * height) 15 - @JvmField var width: Int = width 16 - @JvmField var height: Int = height 17 - @JvmField var colorModel: ColorModel = DirectColorModel(32, 0xff0000, 65280, 255) 18 - @JvmField var imageConsumer: ImageConsumer? = null 19 - @JvmField var image: Image 14 + var pixels: IntArray = IntArray(width * height) 15 + var width: Int = width 16 + var height: Int = height 17 + var colorModel: ColorModel = DirectColorModel(32, 0xff0000, 65280, 255) 18 + var imageConsumer: ImageConsumer? = null 19 + var image: Image 20 20 21 21 init { 22 22 image = component.createImage(this)
+28 -28
src/main/java/com/jagex/runescape/media/Rasterizer.kt
··· 6 6 open class Rasterizer : CacheableNode() { 7 7 8 8 companion object { 9 - @JvmStatic lateinit var pixels: IntArray 10 - @JvmField var width: Int = 0 11 - @JvmField var height: Int = 0 12 - @JvmField var topY: Int = 0 13 - @JvmField var bottomY: Int = 0 14 - @JvmField var topX: Int = 0 15 - @JvmField var bottomX: Int = 0 16 - @JvmField var viewportRx: Int = 0 17 - @JvmField var centerX: Int = 0 18 - @JvmField var centerY: Int = 0 9 + lateinit var pixels: IntArray 10 + var width: Int = 0 11 + var height: Int = 0 12 + var topY: Int = 0 13 + var bottomY: Int = 0 14 + var topX: Int = 0 15 + var bottomX: Int = 0 16 + var viewportRx: Int = 0 17 + var centerX: Int = 0 18 + var centerY: Int = 0 19 19 20 - @JvmStatic 20 + 21 21 fun createRasterizer(pixels: IntArray, width: Int, height: Int) { 22 22 Companion.pixels = pixels 23 23 Companion.width = width ··· 25 25 setCoordinates(0, 0, height, width) 26 26 } 27 27 28 - @JvmStatic 28 + 29 29 fun resetCoordinates() { 30 30 topX = 0 31 31 topY = 0 ··· 35 35 centerX = bottomX / 2 36 36 } 37 37 38 - @JvmStatic 38 + 39 39 fun resize(topX: Int, topY: Int, bottomX: Int, bottomY: Int) { 40 40 if (Companion.topX < topX) Companion.topX = topX 41 41 if (Companion.topY < topY) Companion.topY = topY ··· 43 43 if (Companion.bottomY > bottomY) Companion.bottomY = bottomY 44 44 } 45 45 46 - @JvmStatic 46 + 47 47 fun setCoordinates(y: Int, x: Int, height: Int, width: Int) { 48 48 var cx = x 49 49 var cy = y ··· 62 62 centerY = bottomY / 2 63 63 } 64 64 65 - @JvmStatic 65 + 66 66 fun resetPixels() { 67 67 val pixelCount = width * height 68 68 for (pixel in 0 until pixelCount) 69 69 pixels[pixel] = 0 70 70 } 71 71 72 - @JvmStatic 72 + 73 73 fun drawFilledRectangleAlpha(x: Int, y: Int, width: Int, height: Int, colour: Int, alpha: Int) { 74 74 var dx = x 75 75 var dy = y ··· 97 97 } 98 98 } 99 99 100 - @JvmStatic 100 + 101 101 fun drawFilledRectangle(x: Int, y: Int, width: Int, height: Int, colour: Int) { 102 102 var dx = x 103 103 var dy = y ··· 116 116 } 117 117 } 118 118 119 - @JvmStatic 119 + 120 120 fun drawUnfilledRectangle(x: Int, y: Int, width: Int, height: Int, color: Int) { 121 121 drawHorizontalLine(x, y, width, color) 122 122 drawHorizontalLine(x, y + height - 1, width, color) ··· 124 124 drawVerticalLine(x + width - 1, y, height, color) 125 125 } 126 126 127 - @JvmStatic 127 + 128 128 fun drawUnfilledRectangleAlpha(x: Int, y: Int, width: Int, height: Int, colour: Int, alpha: Int) { 129 129 drawHorizontalLineAlpha(x, y, width, colour, alpha) 130 130 drawHorizontalLineAlpha(x, y + height - 1, width, colour, alpha) ··· 134 134 } 135 135 } 136 136 137 - @JvmStatic 137 + 138 138 fun drawHorizontalLine(x: Int, y: Int, length: Int, colour: Int) { 139 139 var dx = x 140 140 var dl = length ··· 146 146 pixels[pixelOffset + pixel] = colour 147 147 } 148 148 149 - @JvmStatic 149 + 150 150 fun drawHorizontalLineAlpha(x: Int, y: Int, length: Int, colour: Int, alpha: Int) { 151 151 var dx = x 152 152 var dl = length ··· 167 167 } 168 168 } 169 169 170 - @JvmStatic 170 + 171 171 fun drawVerticalLine(x: Int, y: Int, length: Int, colour: Int) { 172 172 var dy = y 173 173 var dl = length ··· 179 179 pixels[pixelOffset + pixel * width] = colour 180 180 } 181 181 182 - @JvmStatic 182 + 183 183 fun drawVerticalLineAlpha(x: Int, y: Int, length: Int, colour: Int, alpha: Int) { 184 184 var dy = y 185 185 var dl = length ··· 201 201 } 202 202 } 203 203 204 - @JvmStatic 204 + 205 205 fun drawDiagonalLine(x: Int, y: Int, destX: Int, destY: Int, linecolor: Int) { 206 206 var cx = x 207 207 var cy = y ··· 250 250 } 251 251 } 252 252 253 - @JvmStatic 253 + 254 254 fun drawCircle(x: Int, y: Int, radius: Int, color: Int) { 255 255 var r = radius 256 256 var cy = y ··· 309 309 } 310 310 } 311 311 312 - @JvmStatic 312 + 313 313 fun drawCircleAlpha(x: Int, y: Int, radius: Int, color: Int, alpha: Int) { 314 314 if (alpha == 0) return 315 315 if (alpha == 256) { drawCircle(x, y, radius, color); return } ··· 383 383 pixels[x + y * width] = color 384 384 } 385 385 386 - @JvmStatic 386 + 387 387 fun clearPixels() { 388 388 var i = 0 389 389 val pixelToClear = width * height - 7 ··· 396 396 pixels[i++] = 0 397 397 } 398 398 399 - @JvmStatic 399 + 400 400 fun destroy() { 401 401 pixels = IntArray(0) 402 402 }
+41 -41
src/main/java/com/jagex/runescape/media/Rasterizer3D.kt
··· 6 6 class Rasterizer3D : Rasterizer() { 7 7 8 8 companion object { 9 - @JvmField 9 + 10 10 var lowMemory: Boolean = true 11 11 12 - @JvmField 12 + 13 13 var restrict_edges: Boolean = false 14 14 15 - @JvmField 15 + 16 16 var opaque: Boolean = false 17 17 18 - @JvmField 18 + 19 19 var notTextured: Boolean = true 20 20 21 - @JvmField 21 + 22 22 var alpha: Int = 0 23 23 24 - @JvmField 24 + 25 25 var center_x: Int = 0 26 26 27 - @JvmField 27 + 28 28 var center_y: Int = 0 29 29 30 - @JvmField 30 + 31 31 var shadowDecay: IntArray? = IntArray(512) 32 32 33 - @JvmField 33 + 34 34 var reciprocal16: IntArray? = IntArray(2048) 35 35 36 - @JvmField 36 + 37 37 var SINE: IntArray? = IntArray(2048) 38 38 39 - @JvmField 39 + 40 40 var COSINE: IntArray? = IntArray(2048) 41 41 42 - @JvmField 42 + 43 43 var lineOffsets: IntArray? = null 44 44 45 - @JvmField 45 + 46 46 var loadedTextureCount: Int = 0 47 47 48 - @JvmField 48 + 49 49 var textureImages: Array<IndexedImage?>? = arrayOfNulls(50) 50 50 51 - @JvmField 51 + 52 52 var textureIsTransparent: BooleanArray? = BooleanArray(50) 53 53 54 - @JvmField 54 + 55 55 var averageTextureColour: IntArray? = IntArray(50) 56 56 57 - @JvmField 57 + 58 58 var textureTexelPoolPointer: Int = 0 59 59 60 - @JvmField 60 + 61 61 var texelArrayPool: Array<IntArray?>? = null 62 62 63 - @JvmField 63 + 64 64 var texelCache: Array<IntArray?>? = arrayOfNulls(50) 65 65 66 - @JvmField 66 + 67 67 var textureLastUsed: IntArray? = IntArray(50) 68 68 69 - @JvmField 69 + 70 70 var textureGetCount: Int = 0 71 71 72 - @JvmField 72 + 73 73 var hsl2rgb: IntArray? = IntArray(0x10000) 74 74 75 - @JvmField 75 + 76 76 var texturePalettes: Array<IntArray?>? = arrayOfNulls(50) 77 77 78 78 private var useLatestShadeLine: Boolean = true 79 79 80 - @JvmStatic 80 + 81 81 fun reset() { 82 82 shadowDecay = null 83 83 SINE = null ··· 93 93 texturePalettes = null 94 94 } 95 95 96 - @JvmStatic 96 + 97 97 fun setDefaultBounds() { 98 98 lineOffsets = IntArray(Rasterizer.height) 99 99 for (i in 0 until height) { ··· 103 103 center_y = height / 2 104 104 } 105 105 106 - @JvmStatic 106 + 107 107 fun setBounds(width: Int, height: Int) { 108 108 lineOffsets = IntArray(height) 109 109 for (i in 0 until height) { ··· 113 113 center_y = height / 2 114 114 } 115 115 116 - @JvmStatic 116 + 117 117 fun clearTextureCache() { 118 118 texelArrayPool = null 119 119 for (i in 0 until 50) { ··· 121 121 } 122 122 } 123 123 124 - @JvmStatic 124 + 125 125 fun resetTextures(texturePoolSize: Int) { 126 126 if (texelArrayPool == null) { 127 127 textureTexelPoolPointer = texturePoolSize //was parameter ··· 136 136 } 137 137 } 138 138 139 - @JvmStatic 139 + 140 140 fun unpackTextures(jagexArchive: Archive) { 141 141 loadedTextureCount = 0 142 142 for (i in 0 until 50) { ··· 160 160 */ 161 161 } 162 162 163 - @JvmStatic 163 + 164 164 fun getAverageRgbColorForTexture(textureId: Int): Int { 165 165 if (averageTextureColour!![textureId] != 0) { 166 166 return averageTextureColour!![textureId] ··· 184 184 return rgb 185 185 } 186 186 187 - @JvmStatic 187 + 188 188 fun resetTexture(textureId: Int) { 189 189 if (texelCache!![textureId] == null) { 190 190 return ··· 193 193 texelCache!![textureId] = null 194 194 } 195 195 196 - @JvmStatic 196 + 197 197 fun getTexturePixels(textureId: Int): IntArray { 198 198 textureLastUsed!![textureId] = textureGetCount++ 199 199 if (texelCache!![textureId] != null) { ··· 261 261 return texels 262 262 } 263 263 264 - @JvmStatic 264 + 265 265 fun calculatePalette(brightness: Double) { 266 266 @Suppress("NAME_SHADOWING") 267 267 var brightness = brightness ··· 350 350 } 351 351 } 352 352 353 - @JvmStatic 353 + 354 354 private fun adjustBrightness(rgb: Int, intensity: Double): Int { 355 355 var r = (rgb shr 16).toDouble() / 256.0 356 356 var g = ((rgb shr 8) and 0xff).toDouble() / 256.0 ··· 364 364 return (r_byte shl 16) + (g_byte shl 8) + b_byte 365 365 } 366 366 367 - @JvmStatic 367 + 368 368 fun drawShadedTriangle( 369 369 y_a: Int, y_b: Int, y_c: Int, x_a: Int, x_b: Int, x_c: Int, 370 370 z_a: Int, z_b: Int, z_c: Int ··· 854 854 855 855 //562 drawshadedline 856 856 //has vertex blending :O 857 - @JvmStatic 857 + 858 858 fun drawShadedLine562(dest: IntArray, dest_off: Int, startX: Int, endX: Int, colorIndex: Int, grad: Int) { 859 859 @Suppress("NAME_SHADOWING") 860 860 var dest_off = dest_off ··· 958 958 } 959 959 } 960 960 961 - @JvmStatic 961 + 962 962 fun drawShadedLine(dest: IntArray, dest_off: Int, start_x: Int, end_x: Int, color_index: Int, grad: Int) { 963 963 if (!useLatestShadeLine) { //divert all calls to the new method as its better 964 964 drawShadedLine562(dest, dest_off, start_x, end_x, color_index, grad) ··· 1072 1072 } 1073 1073 } 1074 1074 1075 - @JvmStatic 1075 + 1076 1076 fun drawFlatTriangle(y_a: Int, y_b: Int, y_c: Int, x_a: Int, x_b: Int, x_c: Int, color: Int) { 1077 1077 @Suppress("NAME_SHADOWING") 1078 1078 var y_a = y_a ··· 1467 1467 } 1468 1468 } 1469 1469 1470 - @JvmStatic 1470 + 1471 1471 fun drawScanLine(dest: IntArray, dest_off: Int, loops: Int, start_x: Int, end_x: Int) { 1472 1472 @Suppress("NAME_SHADOWING") 1473 1473 var dest_off = dest_off ··· 1533 1533 } 1534 1534 } 1535 1535 1536 - @JvmStatic 1536 + 1537 1537 fun drawTexturedTriangle( 1538 1538 y_a: Int, y_b: Int, y_c: Int, x_a: Int, x_b: Int, x_c: Int, 1539 1539 grad_a: Int, grad_b: Int, grad_c: Int, Px: Int, Mx: Int, ··· 2135 2135 } 2136 2136 } 2137 2137 2138 - @JvmStatic 2138 + 2139 2139 fun drawTexturedLine( 2140 2140 dest: IntArray, texture: IntArray, dest_off: Int, start_x: Int, end_x: Int, shadeValue: Int, 2141 2141 gradient: Int, arg7: Int, arg8: Int, arg9: Int, arg10: Int, arg11: Int, arg12: Int
+3 -3
src/main/java/com/jagex/runescape/media/Skins.kt
··· 4 4 5 5 class Skins(buffer: Buffer) { 6 6 7 - @JvmField val count: Int 8 - @JvmField val opcodes: IntArray 9 - @JvmField val skinList: Array<IntArray> 7 + val count: Int 8 + val opcodes: IntArray 9 + val skinList: Array<IntArray> 10 10 11 11 init { 12 12 count = buffer.getUnsignedByte()
+4 -4
src/main/java/com/jagex/runescape/media/VertexNormal.kt
··· 1 1 package com.jagex.runescape.media 2 2 3 3 class VertexNormal { 4 - @JvmField var x: Int = 0 5 - @JvmField var y: Int = 0 6 - @JvmField var z: Int = 0 7 - @JvmField var magnitude: Int = 0 4 + var x: Int = 0 5 + var y: Int = 0 6 + var z: Int = 0 7 + var magnitude: Int = 0 8 8 }
+9 -9
src/main/java/com/jagex/runescape/media/renderable/GameAnimableObject.kt
··· 4 4 import com.jagex.runescape.media.Animation 5 5 6 6 class GameAnimableObject( 7 - @JvmField var plane: Int, 7 + var plane: Int, 8 8 loopCycle: Int, 9 9 loopCycleOffset: Int, 10 10 animationIndex: Int, 11 - @JvmField var z: Int, 12 - @JvmField var y: Int, 13 - @JvmField var x: Int 11 + var z: Int, 12 + var y: Int, 13 + var x: Int 14 14 ) : Renderable() { 15 - @JvmField var transformCompleted: Boolean = false 16 - @JvmField var eclapsedFrames: Int = 0 17 - @JvmField var duration: Int = 0 18 - @JvmField var animation: SpotAnimation = SpotAnimation.cache!![animationIndex]!! 19 - @JvmField var loopCycle: Int = loopCycle + loopCycleOffset 15 + var transformCompleted: Boolean = false 16 + var eclapsedFrames: Int = 0 17 + var duration: Int = 0 18 + var animation: SpotAnimation = SpotAnimation.cache!![animationIndex]!! 19 + var loopCycle: Int = loopCycle + loopCycleOffset 20 20 21 21 fun nextFrame(frame: Int) { 22 22 val seq = animation.sequences!!
+14 -14
src/main/java/com/jagex/runescape/media/renderable/GameObject.kt
··· 6 6 import com.jagex.runescape.cache.media.AnimationSequence 7 7 8 8 class GameObject( 9 - @JvmField var objectId: Int, 10 - @JvmField var face: Int, 11 - @JvmField var clickType: Int, 12 - @JvmField var vertexHeightRight: Int, 13 - @JvmField var vertexHeightTopRight: Int, 14 - @JvmField var vertexHeight: Int, 15 - @JvmField var vertexHeightTop: Int, 9 + var objectId: Int, 10 + var face: Int, 11 + var clickType: Int, 12 + var vertexHeightRight: Int, 13 + var vertexHeightTopRight: Int, 14 + var vertexHeight: Int, 15 + var vertexHeightTop: Int, 16 16 animationId: Int, 17 17 flag: Boolean 18 18 ) : Renderable() { 19 - @JvmField var animationSequence: AnimationSequence? = null 20 - @JvmField var varbitId: Int 21 - @JvmField var configId: Int 22 - @JvmField var childrenIds: IntArray? = null 23 - @JvmField var animationCycleDelay: Int = 0 24 - @JvmField var animationFrame: Int = 0 19 + var animationSequence: AnimationSequence? = null 20 + var varbitId: Int 21 + var configId: Int 22 + var childrenIds: IntArray? = null 23 + var animationCycleDelay: Int = 0 24 + var animationFrame: Int = 0 25 25 26 26 init { 27 27 if (animationId != -1) { ··· 84 84 } 85 85 86 86 companion object { 87 - @JvmStatic lateinit var client: Game 87 + lateinit var client: Game 88 88 } 89 89 }
+2 -2
src/main/java/com/jagex/runescape/media/renderable/Item.kt
··· 3 3 import com.jagex.runescape.cache.def.ItemDefinition 4 4 5 5 class Item : Renderable() { 6 - @JvmField var itemId: Int = 0 7 - @JvmField var itemCount: Int = 0 6 + var itemId: Int = 0 7 + var itemCount: Int = 0 8 8 9 9 override fun getRotatedModel(): Model? { 10 10 val itemDefinition = ItemDefinition.lookup(itemId)
+35 -35
src/main/java/com/jagex/runescape/media/renderable/Model.kt
··· 6 6 7 7 class Model : Renderable { 8 8 9 - @JvmField 9 + 10 10 var vertexCount: Int = 0 11 11 12 - @JvmField 12 + 13 13 var verticesX: IntArray = IntArray(0) 14 14 15 - @JvmField 15 + 16 16 var verticesY: IntArray = IntArray(0) 17 17 18 - @JvmField 18 + 19 19 var verticesZ: IntArray = IntArray(0) 20 20 21 - @JvmField 21 + 22 22 var triangleCount: Int = 0 23 23 24 - @JvmField 24 + 25 25 var trianglePointsX: IntArray = IntArray(0) 26 26 27 - @JvmField 27 + 28 28 var trianglePointsY: IntArray = IntArray(0) 29 29 30 - @JvmField 30 + 31 31 var trianglePointsZ: IntArray = IntArray(0) 32 32 33 33 private var triangleHSLA: IntArray? = null 34 34 private var triangleHSLB: IntArray? = null 35 35 private var triangleHSLC: IntArray? = null 36 36 37 - @JvmField 37 + 38 38 var triangleDrawType: IntArray? = null 39 39 40 40 private var trianglePriorities: IntArray? = null 41 41 private var triangleAlphaValues: IntArray? = null 42 42 43 - @JvmField 43 + 44 44 var triangleColorValues: IntArray? = null 45 45 46 46 private var trianglePriority: Int = 0 ··· 50 50 private var texturedTrianglePointsZ: IntArray = IntArray(0) 51 51 private var packedLightInfo: Int = 0 52 52 53 - @JvmField 53 + 54 54 var worldX: Int = 0 55 55 56 - @JvmField 56 + 57 57 var worldZ: Int = 0 58 58 59 - @JvmField 59 + 60 60 var diagonal2DAboveOrigin: Int = 0 61 61 62 - @JvmField 62 + 63 63 var maxY: Int = 0 64 64 65 65 private var diagonal3D: Int = 0 66 66 private var diagonal3DAboveOrigin: Int = 0 67 67 68 - @JvmField 68 + 69 69 var objectHeight: Int = 0 70 70 71 71 private var vertexSkins: IntArray? = null 72 72 private var triangleSkinValues: IntArray? = null 73 73 74 - @JvmField 74 + 75 75 var vectorSkin: Array<IntArray>? = null 76 76 77 - @JvmField 77 + 78 78 var triangleSkin: Array<IntArray>? = null 79 79 80 - @JvmField 80 + 81 81 var singleTile: Boolean = false 82 82 83 - @JvmField 83 + 84 84 var vertexNormalOffset: Array<VertexNormal?>? = null 85 85 86 86 constructor() ··· 1848 1848 } 1849 1849 1850 1850 companion object { 1851 - @JvmField 1851 + 1852 1852 var EMPTY_MODEL: Model = Model() 1853 1853 1854 - @JvmField 1854 + 1855 1855 var requester: Requester? = null 1856 1856 1857 - @JvmField 1857 + 1858 1858 var gameScreenClickable: Boolean = false 1859 1859 1860 - @JvmField 1860 + 1861 1861 var cursorX: Int = 0 1862 1862 1863 - @JvmField 1863 + 1864 1864 var cursorY: Int = 0 1865 1865 1866 - @JvmField 1866 + 1867 1867 var resourceCount: Int = 0 1868 1868 1869 - @JvmField 1869 + 1870 1870 var hoveredHash: IntArray? = IntArray(1000) 1871 1871 1872 - @JvmField 1872 + 1873 1873 var SINE: IntArray? = null 1874 1874 1875 - @JvmField 1875 + 1876 1876 var COSINE: IntArray? = null 1877 1877 1878 1878 private var tmpVerticesX: IntArray? = IntArray(2000) ··· 1911 1911 reciprocal16 = Rasterizer3D.reciprocal16 1912 1912 } 1913 1913 1914 - @JvmStatic 1914 + 1915 1915 fun reset() { 1916 1916 modelHeaders = null 1917 1917 restrictEdges = null ··· 1935 1935 reciprocal16 = null 1936 1936 } 1937 1937 1938 - @JvmStatic 1938 + 1939 1939 fun init(modelCount: Int, requester: Requester?) { 1940 1940 modelHeaders = arrayOfNulls(modelCount) 1941 1941 Model.requester = requester 1942 1942 } 1943 1943 1944 - @JvmStatic 1944 + 1945 1945 fun loadModelHeader(modelData: ByteArray?, modelId: Int) { 1946 1946 if (modelData == null) { 1947 1947 val modelHeader = ModelHeader() ··· 2017 2017 offset += zDataLength 2018 2018 } 2019 2019 2020 - @JvmStatic 2020 + 2021 2021 fun resetModel(model: Int) { 2022 2022 modelHeaders!![model] = null 2023 2023 } 2024 2024 2025 - @JvmStatic 2025 + 2026 2026 fun getModel(model: Int): Model? { 2027 2027 if (modelHeaders == null) { 2028 2028 return null ··· 2036 2036 } 2037 2037 } 2038 2038 2039 - @JvmStatic 2039 + 2040 2040 fun loaded(id: Int): Boolean { 2041 2041 if (modelHeaders == null) { 2042 2042 return false ··· 2050 2050 } 2051 2051 } 2052 2052 2053 - @JvmStatic 2053 + 2054 2054 private fun mixLightness(i: Int, j: Int, k: Int): Int { 2055 2055 @Suppress("NAME_SHADOWING") 2056 2056 var j = j
+17 -17
src/main/java/com/jagex/runescape/media/renderable/ModelHeader.kt
··· 1 1 package com.jagex.runescape.media.renderable 2 2 3 3 class ModelHeader { 4 - @JvmField var modelData: ByteArray? = null 5 - @JvmField var vertexCount: Int = 0 6 - @JvmField var triangleCount: Int = 0 7 - @JvmField var texturedTriangleCount: Int = 0 8 - @JvmField var vertexDirectionOffset: Int = 0 9 - @JvmField var xDataOffset: Int = 0 10 - @JvmField var yDataOffset: Int = 0 11 - @JvmField var zDataOffset: Int = 0 12 - @JvmField var vertexSkinOffset: Int = 0 13 - @JvmField var triangleDataOffset: Int = 0 14 - @JvmField var triangleTypeOffset: Int = 0 15 - @JvmField var colorDataOffset: Int = 0 16 - @JvmField var texturePointerOffset: Int = 0 17 - @JvmField var trianglePriorityOffset: Int = 0 18 - @JvmField var triangleAlphaOffset: Int = 0 19 - @JvmField var triangleSkinOffset: Int = 0 20 - @JvmField var uvMapTriangleOffset: Int = 0 4 + var modelData: ByteArray? = null 5 + var vertexCount: Int = 0 6 + var triangleCount: Int = 0 7 + var texturedTriangleCount: Int = 0 8 + var vertexDirectionOffset: Int = 0 9 + var xDataOffset: Int = 0 10 + var yDataOffset: Int = 0 11 + var zDataOffset: Int = 0 12 + var vertexSkinOffset: Int = 0 13 + var triangleDataOffset: Int = 0 14 + var triangleTypeOffset: Int = 0 15 + var colorDataOffset: Int = 0 16 + var texturePointerOffset: Int = 0 17 + var trianglePriorityOffset: Int = 0 18 + var triangleAlphaOffset: Int = 0 19 + var triangleSkinOffset: Int = 0 20 + var uvMapTriangleOffset: Int = 0 21 21 }
+26 -26
src/main/java/com/jagex/runescape/media/renderable/Projectile.kt
··· 4 4 import com.jagex.runescape.media.Animation 5 5 6 6 class Projectile( 7 - @JvmField var sceneId: Int, 7 + var sceneId: Int, 8 8 endHeight: Int, 9 - @JvmField var startDistanceFromTarget: Int, 9 + var startDistanceFromTarget: Int, 10 10 projectileY: Int, 11 11 graphicsId: Int, 12 12 speed: Int, 13 - @JvmField var startSlope: Int, 13 + var startSlope: Int, 14 14 targetedEntityIndex: Int, 15 15 height: Int, 16 16 projectileX: Int, 17 17 delay: Int 18 18 ) : Renderable() { 19 - @JvmField var animation: SpotAnimation = SpotAnimation.cache!![graphicsId]!! 20 - @JvmField var currentX: Double = 0.0 21 - @JvmField var currentY: Double = 0.0 22 - @JvmField var currentHeight: Double = 0.0 23 - @JvmField var targetedEntityId: Int = targetedEntityIndex 24 - @JvmField var aBoolean1561: Boolean = false 25 - @JvmField var anInt1562: Int = 0 26 - @JvmField var anInt1563: Int = 0 27 - @JvmField var delay: Int = delay 28 - @JvmField var endCycle: Int = speed 29 - @JvmField var animationFrame: Int = 0 30 - @JvmField var duration: Int = 0 31 - @JvmField var speedVectorX: Double = 0.0 32 - @JvmField var speedVectorY: Double = 0.0 33 - @JvmField var speedVectorScalar: Double = 0.0 34 - @JvmField var speedVectorZ: Double = 0.0 35 - @JvmField var aBoolean1573: Boolean = true 36 - @JvmField var heightOffset: Double = 0.0 37 - @JvmField var moving: Boolean = false 38 - @JvmField var startX: Int = projectileX 39 - @JvmField var startY: Int = projectileY 40 - @JvmField var startHeight: Int = height 41 - @JvmField var endHeight: Int = endHeight 19 + var animation: SpotAnimation = SpotAnimation.cache!![graphicsId]!! 20 + var currentX: Double = 0.0 21 + var currentY: Double = 0.0 22 + var currentHeight: Double = 0.0 23 + var targetedEntityId: Int = targetedEntityIndex 24 + var aBoolean1561: Boolean = false 25 + var anInt1562: Int = 0 26 + var anInt1563: Int = 0 27 + var delay: Int = delay 28 + var endCycle: Int = speed 29 + var animationFrame: Int = 0 30 + var duration: Int = 0 31 + var speedVectorX: Double = 0.0 32 + var speedVectorY: Double = 0.0 33 + var speedVectorScalar: Double = 0.0 34 + var speedVectorZ: Double = 0.0 35 + var aBoolean1573: Boolean = true 36 + var heightOffset: Double = 0.0 37 + var moving: Boolean = false 38 + var startX: Int = projectileX 39 + var startY: Int = projectileY 40 + var startHeight: Int = height 41 + var endHeight: Int = endHeight 42 42 43 43 fun trackTarget(targetX: Int, targetY: Int, k: Int, loopCycle: Int) { 44 44 if (!moving) {
+2 -2
src/main/java/com/jagex/runescape/media/renderable/Renderable.kt
··· 4 4 import com.jagex.runescape.media.VertexNormal 5 5 6 6 open class Renderable : CacheableNode() { 7 - @JvmField var verticesNormal: Array<VertexNormal>? = null 8 - @JvmField var modelHeight: Int = 1000 7 + var verticesNormal: Array<VertexNormal>? = null 8 + var modelHeight: Int = 1000 9 9 10 10 open fun renderAtPoint(i: Int, j: Int, k: Int, l: Int, i1: Int, j1: Int, k1: Int, l1: Int, i2: Int) { 11 11 val model = getRotatedModel()
+54 -54
src/main/java/com/jagex/runescape/media/renderable/actor/Actor.kt
··· 4 4 import com.jagex.runescape.media.renderable.Renderable 5 5 6 6 abstract class Actor : Renderable() { 7 - @JvmField var forcedChat: String? = null 8 - @JvmField var textCycle: Int = 100 9 - @JvmField var textColour: Int = 0 10 - @JvmField var nextStepOrientation: Int = 0 11 - @JvmField var pulseCycle: Int = 0 12 - @JvmField var pathX: IntArray = IntArray(10) 13 - @JvmField var pathY: IntArray = IntArray(10) 14 - @JvmField var movementAnimation: Int = -1 15 - @JvmField var displayedMovementFrames: Int = 0 16 - @JvmField var movementCycle: Int = 0 17 - @JvmField var runningQueue: BooleanArray = BooleanArray(10) 18 - @JvmField var dynamic: Boolean = false 19 - @JvmField var textEffect: Int = 0 7 + var forcedChat: String? = null 8 + var textCycle: Int = 100 9 + var textColour: Int = 0 10 + var nextStepOrientation: Int = 0 11 + var pulseCycle: Int = 0 12 + var pathX: IntArray = IntArray(10) 13 + var pathY: IntArray = IntArray(10) 14 + var movementAnimation: Int = -1 15 + var displayedMovementFrames: Int = 0 16 + var movementCycle: Int = 0 17 + var runningQueue: BooleanArray = BooleanArray(10) 18 + var dynamic: Boolean = false 19 + var textEffect: Int = 0 20 20 init { modelHeight = 200 } 21 - @JvmField var endCycle: Int = -1000 22 - @JvmField var healthRatio: Int = 0 23 - @JvmField var healthScale: Int = 0 24 - @JvmField var faceX: Int = 0 25 - @JvmField var faceY: Int = 0 26 - @JvmField var turnSpeed: Int = 32 27 - @JvmField var boundaryDimension: Int = 1 28 - @JvmField var movementStartX: Int = 0 29 - @JvmField var movementEndX: Int = 0 30 - @JvmField var movementStartY: Int = 0 31 - @JvmField var movementEndY: Int = 0 32 - @JvmField var moveCycleEnd: Int = 0 33 - @JvmField var moveCycleStart: Int = 0 34 - @JvmField var moveDirection: Int = 0 35 - @JvmField var faceActor: Int = -1 36 - @JvmField var worldX: Int = 0 37 - @JvmField var worldY: Int = 0 38 - @JvmField var currentRotation: Int = 0 39 - @JvmField var stillPathPosition: Int = 0 40 - @JvmField var graphic: Int = -1 41 - @JvmField var currentAnimation: Int = 0 42 - @JvmField var animationCycle: Int = 0 43 - @JvmField var spotGraphicDelay: Int = 0 44 - @JvmField var spotGraphicHeight: Int = 0 45 - @JvmField var walkAnimationId: Int = -1 46 - @JvmField var turnAroundAnimationId: Int = -1 47 - @JvmField var turnRightAnimationId: Int = -1 48 - @JvmField var turnLeftAnimationId: Int = -1 49 - @JvmField var resyncWalkCycle: Int = 0 50 - @JvmField var emoteAnimation: Int = -1 51 - @JvmField var displayedEmoteFrames: Int = 0 52 - @JvmField var animationSequence: Int = 0 53 - @JvmField var animationDelay: Int = 0 54 - @JvmField var animationResetCycle: Int = 0 55 - @JvmField var runAnimationId: Int = -1 56 - @JvmField var hitDamages: IntArray = IntArray(4) 57 - @JvmField var hitTypes: IntArray = IntArray(4) 58 - @JvmField var hitCycles: IntArray = IntArray(4) 59 - @JvmField var pathLength: Int = 0 60 - @JvmField var idleAnimation: Int = -1 61 - @JvmField var standTurnAnimationId: Int = -1 21 + var endCycle: Int = -1000 22 + var healthRatio: Int = 0 23 + var healthScale: Int = 0 24 + var faceX: Int = 0 25 + var faceY: Int = 0 26 + var turnSpeed: Int = 32 27 + var boundaryDimension: Int = 1 28 + var movementStartX: Int = 0 29 + var movementEndX: Int = 0 30 + var movementStartY: Int = 0 31 + var movementEndY: Int = 0 32 + var moveCycleEnd: Int = 0 33 + var moveCycleStart: Int = 0 34 + var moveDirection: Int = 0 35 + var faceActor: Int = -1 36 + var worldX: Int = 0 37 + var worldY: Int = 0 38 + var currentRotation: Int = 0 39 + var stillPathPosition: Int = 0 40 + var graphic: Int = -1 41 + var currentAnimation: Int = 0 42 + var animationCycle: Int = 0 43 + var spotGraphicDelay: Int = 0 44 + var spotGraphicHeight: Int = 0 45 + var walkAnimationId: Int = -1 46 + var turnAroundAnimationId: Int = -1 47 + var turnRightAnimationId: Int = -1 48 + var turnLeftAnimationId: Int = -1 49 + var resyncWalkCycle: Int = 0 50 + var emoteAnimation: Int = -1 51 + var displayedEmoteFrames: Int = 0 52 + var animationSequence: Int = 0 53 + var animationDelay: Int = 0 54 + var animationResetCycle: Int = 0 55 + var runAnimationId: Int = -1 56 + var hitDamages: IntArray = IntArray(4) 57 + var hitTypes: IntArray = IntArray(4) 58 + var hitCycles: IntArray = IntArray(4) 59 + var pathLength: Int = 0 60 + var idleAnimation: Int = -1 61 + var standTurnAnimationId: Int = -1 62 62 63 63 fun resetPath() { 64 64 pathLength = 0
+1 -1
src/main/java/com/jagex/runescape/media/renderable/actor/Npc.kt
··· 7 7 import com.jagex.runescape.media.renderable.Model 8 8 9 9 class Npc : Actor() { 10 - @JvmField var npcDefinition: ActorDefinition? = null 10 + var npcDefinition: ActorDefinition? = null 11 11 12 12 fun getChildModel(): Model? { 13 13 if (emoteAnimation >= 0 && animationDelay == 0) {
+23 -23
src/main/java/com/jagex/runescape/media/renderable/actor/Player.kt
··· 14 14 15 15 class Player : Actor() { 16 16 17 - @JvmField var objectX: Int = 0 18 - @JvmField var drawHeight: Int = 0 19 - @JvmField var objectY: Int = 0 20 - @JvmField var playerModel: Model? = null 21 - @JvmField var headIcon: Int = -1 17 + var objectX: Int = 0 18 + var drawHeight: Int = 0 19 + var objectY: Int = 0 20 + var playerModel: Model? = null 21 + var headIcon: Int = -1 22 22 private var cachedModel: Long = -1L 23 - @JvmField var drawHeight2: Int = 0 24 - @JvmField var playerName: String? = null 25 - @JvmField var appearance: IntArray = IntArray(12) 26 - @JvmField var combatLevel: Int = 0 23 + var drawHeight2: Int = 0 24 + var playerName: String? = null 25 + var appearance: IntArray = IntArray(12) 26 + var combatLevel: Int = 0 27 27 private var appearanceHash: Long = 0L 28 28 private var gender: Int = 0 29 - @JvmField var isSkulled: Int = -1 30 - @JvmField var npcDefinition: ActorDefinition? = null 31 - @JvmField var visible: Boolean = false 32 - @JvmField var skillLevel: Int = 0 33 - @JvmField var appearanceColors: IntArray = IntArray(5) 34 - @JvmField var preventRotation: Boolean = false 35 - @JvmField var objectAppearanceStartTick: Int = 0 36 - @JvmField var objectAppearanceEndTick: Int = 0 37 - @JvmField var teamId: Int = 0 38 - @JvmField var objectMinTileX: Int = 0 39 - @JvmField var objectMinTileY: Int = 0 40 - @JvmField var objectMaxTileX: Int = 0 41 - @JvmField var objectMaxTileY: Int = 0 29 + var isSkulled: Int = -1 30 + var npcDefinition: ActorDefinition? = null 31 + var visible: Boolean = false 32 + var skillLevel: Int = 0 33 + var appearanceColors: IntArray = IntArray(5) 34 + var preventRotation: Boolean = false 35 + var objectAppearanceStartTick: Int = 0 36 + var objectAppearanceEndTick: Int = 0 37 + var teamId: Int = 0 38 + var objectMinTileX: Int = 0 39 + var objectMinTileY: Int = 0 40 + var objectMaxTileX: Int = 0 41 + var objectMaxTileY: Int = 0 42 42 43 43 fun getHeadModel(): Model? { 44 44 if (!visible) return null ··· 294 294 } 295 295 296 296 companion object { 297 - @JvmField var modelCache: Cache? = Cache(260) 297 + var modelCache: Cache? = Cache(260) 298 298 } 299 299 }
+5 -5
src/main/java/com/jagex/runescape/net/Buffer.kt
··· 21 21 */ 22 22 open class Buffer : CacheableNode { 23 23 24 - @JvmField var buffer: ByteArray 25 - @JvmField var currentPosition: Int = 0 26 - @JvmField var bitPosition: Int = 0 27 - @JvmField var random: ISAACCipher? = null 24 + var buffer: ByteArray 25 + var currentPosition: Int = 0 26 + var bitPosition: Int = 0 27 + var random: ISAACCipher? = null 28 28 29 29 constructor() { 30 30 buffer = ByteArray(0) ··· 356 356 0x1fffffff, 0x3fffffff, 0x7fffffff, -1 357 357 ) 358 358 359 - @JvmStatic 359 + 360 360 fun allocate(sizeMode: Int): Buffer { 361 361 val buf = Buffer() 362 362 buf.currentPosition = 0
+10 -10
src/main/java/com/jagex/runescape/net/BufferedConnection.kt
··· 13 13 * This prevents large outbound packets from stalling the game loop. 14 14 */ 15 15 class BufferedConnection( 16 - @JvmField val gameStub: GameShell, 17 - @JvmField val socket: Socket 16 + val gameStub: GameShell, 17 + val socket: Socket 18 18 ) : Runnable { 19 19 20 - @JvmField val inputStream: InputStream 21 - @JvmField val outputStream: OutputStream 22 - @JvmField var closed: Boolean = false 23 - @JvmField var buffer: ByteArray? = null 24 - @JvmField var writerPosition: Int = 0 25 - @JvmField var bufferPosition: Int = 0 26 - @JvmField var writing: Boolean = false 27 - @JvmField var ioError: Boolean = false 20 + val inputStream: InputStream 21 + val outputStream: OutputStream 22 + var closed: Boolean = false 23 + var buffer: ByteArray? = null 24 + var writerPosition: Int = 0 25 + var bufferPosition: Int = 0 26 + var writing: Boolean = false 27 + var ioError: Boolean = false 28 28 29 29 init { 30 30 socket.soTimeout = 30000
+5 -5
src/main/java/com/jagex/runescape/net/requester/OnDemandNode.kt
··· 8 8 * [CacheableNode] hierarchy so it can be stored in [com.jagex.runescape.collection.Queue]. 9 9 */ 10 10 class OnDemandNode : CacheableNode() { 11 - @JvmField var type: Int = 0 12 - @JvmField var fileId: Int = 0 13 - @JvmField var cyclesSinceSend: Int = 0 14 - @JvmField var buffer: ByteArray? = null 15 - @JvmField var immediate: Boolean = true 11 + var type: Int = 0 12 + var fileId: Int = 0 13 + var cyclesSinceSend: Int = 0 14 + var buffer: ByteArray? = null 15 + var immediate: Boolean = true 16 16 }
+43 -43
src/main/java/com/jagex/runescape/net/requester/OnDemandRequester.kt
··· 22 22 */ 23 23 class OnDemandRequester : Requester(), Runnable { 24 24 25 - @JvmField var anInt1334: Int = 0 26 - @JvmField var modelIndex: ByteArray? = null 27 - @JvmField var regShouldPreload: IntArray? = null 28 - @JvmField var filePriorities: Array<ByteArray?> = arrayOfNulls(4) 29 - @JvmField var expectData: Boolean = false 30 - @JvmField var running: Boolean = true 31 - @JvmField var wanted: LinkedList = LinkedList() 32 - @JvmField var highestPriority: Int = 0 33 - @JvmField var immediateRequestsSent: Int = 0 34 - @JvmField var anInt1343: Int = 0 35 - @JvmField var fileCrc: Array<IntArray?> = arrayOfNulls(4) 36 - @JvmField var anInt1345: Int = 0 37 - @JvmField var regHash: IntArray? = null 38 - @JvmField var message: String = "" 39 - @JvmField var cycle: Int = 0 40 - @JvmField var outputStream: OutputStream? = null 41 - @JvmField var anInt1350: Int = 0 42 - @JvmField var aClass6_1351: LinkedList = LinkedList() 43 - @JvmField var aBoolean1352: Boolean = false 44 - @JvmField var idleCycles: Int = 0 45 - @JvmField var crc32: CRC32 = CRC32() 46 - @JvmField var socket: Socket? = null 47 - @JvmField var completed: LinkedList = LinkedList() 48 - @JvmField var immediateRequests: LinkedList = LinkedList() 49 - @JvmField var deflateOut: ByteArray = ByteArray(65000) 50 - @JvmField var regMapIndex: IntArray? = null 51 - @JvmField var offset: Int = 0 52 - @JvmField var toRead: Int = 0 53 - @JvmField var anInt1363: Int = 0 54 - @JvmField var inputBuffer: ByteArray = ByteArray(500) 55 - @JvmField var regLandIndex: IntArray? = null 56 - @JvmField var midiIndex: IntArray? = null 57 - @JvmField var anInt1367: Int = 591 58 - @JvmField var immediateRequests1: Queue = Queue() 59 - @JvmField var inputStream: InputStream? = null 60 - @JvmField var onDemandNode: OnDemandNode? = null 61 - @JvmField var client: Game? = null 62 - @JvmField var toRequest: LinkedList = LinkedList() 63 - @JvmField var sinceKeepAlive: Int = 0 64 - @JvmField var animIndex: IntArray? = null 65 - @JvmField var fileVersions: Array<IntArray?> = arrayOfNulls(4) 66 - @JvmField var lastSocketOpen: Long = 0 67 - @JvmField var requestFails: Int = 0 25 + var anInt1334: Int = 0 26 + var modelIndex: ByteArray? = null 27 + var regShouldPreload: IntArray? = null 28 + var filePriorities: Array<ByteArray?> = arrayOfNulls(4) 29 + var expectData: Boolean = false 30 + var running: Boolean = true 31 + var wanted: LinkedList = LinkedList() 32 + var highestPriority: Int = 0 33 + var immediateRequestsSent: Int = 0 34 + var anInt1343: Int = 0 35 + var fileCrc: Array<IntArray?> = arrayOfNulls(4) 36 + var anInt1345: Int = 0 37 + var regHash: IntArray? = null 38 + var message: String = "" 39 + var cycle: Int = 0 40 + var outputStream: OutputStream? = null 41 + var anInt1350: Int = 0 42 + var aClass6_1351: LinkedList = LinkedList() 43 + var aBoolean1352: Boolean = false 44 + var idleCycles: Int = 0 45 + var crc32: CRC32 = CRC32() 46 + var socket: Socket? = null 47 + var completed: LinkedList = LinkedList() 48 + var immediateRequests: LinkedList = LinkedList() 49 + var deflateOut: ByteArray = ByteArray(65000) 50 + var regMapIndex: IntArray? = null 51 + var offset: Int = 0 52 + var toRead: Int = 0 53 + var anInt1363: Int = 0 54 + var inputBuffer: ByteArray = ByteArray(500) 55 + var regLandIndex: IntArray? = null 56 + var midiIndex: IntArray? = null 57 + var anInt1367: Int = 591 58 + var immediateRequests1: Queue = Queue() 59 + var inputStream: InputStream? = null 60 + var onDemandNode: OnDemandNode? = null 61 + var client: Game? = null 62 + var toRequest: LinkedList = LinkedList() 63 + var sinceKeepAlive: Int = 0 64 + var animIndex: IntArray? = null 65 + var fileVersions: Array<IntArray?> = arrayOfNulls(4) 66 + var lastSocketOpen: Long = 0 67 + var requestFails: Int = 0 68 68 69 69 fun verify(expectedVersion: Int, expectedCrc: Int, data: ByteArray?): Boolean { 70 70 if (data == null || data.size < 2) return false
+8 -8
src/main/java/com/jagex/runescape/scene/GroundItemTile.kt
··· 3 3 import com.jagex.runescape.media.renderable.Renderable 4 4 5 5 class GroundItemTile { 6 - @JvmField var z: Int = 0 7 - @JvmField var x: Int = 0 8 - @JvmField var y: Int = 0 9 - @JvmField var firstGroundItem: Renderable? = null 10 - @JvmField var secondGroundItem: Renderable? = null 11 - @JvmField var thirdGroundItem: Renderable? = null 12 - @JvmField var uid: Int = 0 13 - @JvmField var heightOffset: Int = 0 6 + var z: Int = 0 7 + var x: Int = 0 8 + var y: Int = 0 9 + var firstGroundItem: Renderable? = null 10 + var secondGroundItem: Renderable? = null 11 + var thirdGroundItem: Renderable? = null 12 + var uid: Int = 0 13 + var heightOffset: Int = 0 14 14 }
+14 -14
src/main/java/com/jagex/runescape/scene/InteractiveObject.kt
··· 3 3 import com.jagex.runescape.media.renderable.Renderable 4 4 5 5 class InteractiveObject { 6 - @JvmField var z: Int = 0 7 - @JvmField var worldZ: Int = 0 8 - @JvmField var worldX: Int = 0 9 - @JvmField var worldY: Int = 0 10 - @JvmField var renderable: Renderable? = null 11 - @JvmField var rotation: Int = 0 12 - @JvmField var tileLeft: Int = 0 13 - @JvmField var tileRight: Int = 0 14 - @JvmField var tileTop: Int = 0 15 - @JvmField var tileBottom: Int = 0 16 - @JvmField var renderPriority: Int = 0 17 - @JvmField var cycle: Int = 0 18 - @JvmField var uid: Int = 0 19 - @JvmField var config: Byte = 0 6 + var z: Int = 0 7 + var worldZ: Int = 0 8 + var worldX: Int = 0 9 + var worldY: Int = 0 10 + var renderable: Renderable? = null 11 + var rotation: Int = 0 12 + var tileLeft: Int = 0 13 + var tileRight: Int = 0 14 + var tileTop: Int = 0 15 + var tileBottom: Int = 0 16 + var renderPriority: Int = 0 17 + var cycle: Int = 0 18 + var uid: Int = 0 19 + var config: Byte = 0 20 20 }
+36 -36
src/main/java/com/jagex/runescape/scene/MapRegion.kt
··· 12 12 import com.jagex.runescape.scene.util.TiledUtils 13 13 14 14 class MapRegion( 15 - @JvmField var sizeX: Int, 16 - @JvmField var sizeZ: Int, 17 - @JvmField var tileFlags: Array<Array<ByteArray>>, 18 - @JvmField var tileHeight: Array<Array<IntArray>> 15 + var sizeX: Int, 16 + var sizeZ: Int, 17 + var tileFlags: Array<Array<ByteArray>>, 18 + var tileHeight: Array<Array<IntArray>> 19 19 ) { 20 - @JvmField var overlayRotations: Array<Array<ByteArray>> = Array(4) { Array(sizeX) { ByteArray(sizeZ) } } 21 - @JvmField var hueBuffer: IntArray = IntArray(sizeZ) 22 - @JvmField var saturationBuffer: IntArray = IntArray(sizeZ) 23 - @JvmField var lightnessBuffer: IntArray = IntArray(sizeZ) 24 - @JvmField var hueDivider: IntArray = IntArray(sizeZ) 25 - @JvmField var bufferSize: IntArray = IntArray(sizeZ) 26 - @JvmField var overlayClippingPaths: Array<Array<ByteArray>> = Array(4) { Array(sizeX) { ByteArray(sizeZ) } } 27 - @JvmField var overlayFloorIds: Array<Array<ByteArray>> = Array(4) { Array(sizeX) { ByteArray(sizeZ) } } 28 - @JvmField var underlayFloorIds: Array<Array<ByteArray>> = Array(4) { Array(sizeX) { ByteArray(sizeZ) } } 29 - @JvmField var objectShadowData: Array<Array<ByteArray>> = Array(4) { Array(sizeX + 1) { ByteArray(sizeZ + 1) } } 30 - @JvmField var tileLightness: Array<IntArray> = Array(sizeX + 1) { IntArray(sizeZ + 1) } 31 - @JvmField var anInt166: Int = 69 32 - @JvmField var tileCullingBitmap: Array<Array<IntArray>> = Array(4) { Array(sizeX + 1) { IntArray(sizeZ + 1) } } 20 + var overlayRotations: Array<Array<ByteArray>> = Array(4) { Array(sizeX) { ByteArray(sizeZ) } } 21 + var hueBuffer: IntArray = IntArray(sizeZ) 22 + var saturationBuffer: IntArray = IntArray(sizeZ) 23 + var lightnessBuffer: IntArray = IntArray(sizeZ) 24 + var hueDivider: IntArray = IntArray(sizeZ) 25 + var bufferSize: IntArray = IntArray(sizeZ) 26 + var overlayClippingPaths: Array<Array<ByteArray>> = Array(4) { Array(sizeX) { ByteArray(sizeZ) } } 27 + var overlayFloorIds: Array<Array<ByteArray>> = Array(4) { Array(sizeX) { ByteArray(sizeZ) } } 28 + var underlayFloorIds: Array<Array<ByteArray>> = Array(4) { Array(sizeX) { ByteArray(sizeZ) } } 29 + var objectShadowData: Array<Array<ByteArray>> = Array(4) { Array(sizeX + 1) { ByteArray(sizeZ + 1) } } 30 + var tileLightness: Array<IntArray> = Array(sizeX + 1) { IntArray(sizeZ + 1) } 31 + var anInt166: Int = 69 32 + var tileCullingBitmap: Array<Array<IntArray>> = Array(4) { Array(sizeX + 1) { IntArray(sizeZ + 1) } } 33 33 34 34 fun getVisibilityPlaneFor(x: Int, y: Int, plane: Int): Int { 35 35 if ((tileFlags[plane][x][y].toInt() and 8) != 0) return 0 ··· 818 818 } 819 819 820 820 companion object { 821 - @JvmField var hueOffset: Int = (Math.random() * 17.0).toInt() - 8 822 - @JvmField var lightnessOffset: Int = (Math.random() * 33.0).toInt() - 16 823 - @JvmField var setZ: Int = 99 824 - @JvmField var onBuildTimePlane: Int = 0 825 - @JvmField var lowMemory: Boolean = true 821 + var hueOffset: Int = (Math.random() * 17.0).toInt() - 8 822 + var lightnessOffset: Int = (Math.random() * 33.0).toInt() - 16 823 + var setZ: Int = 99 824 + var onBuildTimePlane: Int = 0 825 + var lowMemory: Boolean = true 826 826 827 - @JvmStatic val FACE_OFFSET_X = intArrayOf(1, 0, -1, 0) 828 - @JvmStatic val FACE_OFFSET_Y = intArrayOf(0, -1, 0, 1) 829 - @JvmStatic val WALL_CORNER_ORIENTATION = intArrayOf(16, 32, 64, 128) 830 - @JvmStatic val POWERS_OF_TWO = intArrayOf(1, 2, 4, 8) 827 + val FACE_OFFSET_X = intArrayOf(1, 0, -1, 0) 828 + val FACE_OFFSET_Y = intArrayOf(0, -1, 0, 1) 829 + val WALL_CORNER_ORIENTATION = intArrayOf(16, 32, 64, 128) 830 + val POWERS_OF_TWO = intArrayOf(1, 2, 4, 8) 831 831 832 - @JvmStatic 832 + 833 833 fun randomNoise(x: Int, y: Int): Int { 834 834 var n = x + y * 57 835 835 n = (n shl 13) xor n ··· 837 837 return (noise shr 19) and 0xff 838 838 } 839 839 840 - @JvmStatic 840 + 841 841 fun perlinNoise(x: Int, y: Int, scale: Int): Int { 842 842 val scaledX = x / scale 843 843 val muX = x and (scale - 1) ··· 852 852 return interpolate(iv1, iv2, muY, scale) 853 853 } 854 854 855 - @JvmStatic 855 + 856 856 fun forceRenderObject(x: Int, y: Int, z: Int, objectId: Int, type: Int, plane: Int, face: Int, scene: Scene, collisionMap: CollisionMap, groundArray: Array<Array<IntArray>>) { 857 857 val vertexHeightSW = groundArray[plane][x][y] 858 858 val vertexHeightSE = groundArray[plane][x + 1][y] ··· 1005 1005 } 1006 1006 } 1007 1007 1008 - @JvmStatic 1008 + 1009 1009 fun passiveRequestGameObjectModels(onDemandRequester: OnDemandRequester, buffer: Buffer) { 1010 1010 var gameObjectId = -1 1011 1011 while (true) { ··· 1022 1022 } 1023 1023 } 1024 1024 1025 - @JvmStatic 1025 + 1026 1026 fun method170(type: Int, objectId: Int): Boolean { 1027 1027 val gameObjectDefinition = GameObjectDefinition.getDefinition(objectId) 1028 1028 var adjustedType = type ··· 1031 1031 return gameObjectDefinition.method432(26261, adjustedType) 1032 1032 } 1033 1033 1034 - @JvmStatic 1034 + 1035 1035 fun trimHSLLightness(hsl: Int, lightness: Int): Int { 1036 1036 if (hsl == -1) return 12345678 1037 1037 var l = (lightness * (hsl and 0x7f)) / 128 ··· 1040 1040 return (hsl and 0xff80) + l 1041 1041 } 1042 1042 1043 - @JvmStatic 1043 + 1044 1044 fun regionCached(regionX: Int, regionY: Int, objectData: ByteArray): Boolean { 1045 1045 var cached = true 1046 1046 val objectDataStream = Buffer(objectData) ··· 1078 1078 return cached 1079 1079 } 1080 1080 1081 - @JvmStatic 1081 + 1082 1082 fun interpolate(a: Int, b: Int, delta: Int, deltaScale: Int): Int { 1083 1083 val f = (65536 - Rasterizer3D.COSINE!![(delta * 1024) / deltaScale]) shr 1 1084 1084 return ((a * (65536 - f)) shr 16) + ((b * f) shr 16) 1085 1085 } 1086 1086 1087 - @JvmStatic 1087 + 1088 1088 fun randomNoiseWeighedSum(x: Int, y: Int): Int { 1089 1089 val vDist2 = randomNoise(x - 1, y - 1) + randomNoise(x + 1, y - 1) + randomNoise(x - 1, y + 1) + randomNoise(x + 1, y + 1) 1090 1090 val vDist1 = randomNoise(x - 1, y) + randomNoise(x + 1, y) + randomNoise(x, y - 1) + randomNoise(x, y + 1) ··· 1092 1092 return vDist2 / 16 + vDist1 / 8 + vLocal / 4 1093 1093 } 1094 1094 1095 - @JvmStatic 1095 + 1096 1096 fun calculateVertexHeight(x: Int, y: Int): Int { 1097 1097 var mapHeight = (perlinNoise(x + 45365, y + 91923, 4) - 128 + ((perlinNoise(x + 10294, y + 37821, 2) - 128) shr 1) + ((perlinNoise(x, y, 1) - 128) shr 2)) 1098 1098 mapHeight = (mapHeight.toDouble() * 0.3).toInt() + 35
+67 -67
src/main/java/com/jagex/runescape/scene/Scene.kt
··· 11 11 12 12 class Scene(heightMap: Array<Array<IntArray>>) { 13 13 14 - @JvmField var mapSizeZ: Int 15 - @JvmField var mapSizeX: Int 16 - @JvmField var mapSizeY: Int 17 - @JvmField var heightMap: Array<Array<IntArray>> 18 - @JvmField var tileArray: GroundArray<SceneTile> 19 - @JvmField var currentPositionZ: Int = 0 20 - @JvmField var sceneSpawnRequestsCacheCurrentPos: Int = 0 21 - @JvmField var sceneSpawnRequestsCache: Array<InteractiveObject?> 22 - @JvmField var tileRenderCycle: Array<Array<IntArray>> 23 - @JvmField var vertexTagsA: IntArray 24 - @JvmField var vertexTagsB: IntArray 25 - @JvmField var occlusionCycle: Int = 0 26 - @JvmField var tileShapePoints: Array<IntArray> = arrayOf( 14 + var mapSizeZ: Int 15 + var mapSizeX: Int 16 + var mapSizeY: Int 17 + var heightMap: Array<Array<IntArray>> 18 + var tileArray: GroundArray<SceneTile> 19 + var currentPositionZ: Int = 0 20 + var sceneSpawnRequestsCacheCurrentPos: Int = 0 21 + var sceneSpawnRequestsCache: Array<InteractiveObject?> 22 + var tileRenderCycle: Array<Array<IntArray>> 23 + var vertexTagsA: IntArray 24 + var vertexTagsB: IntArray 25 + var occlusionCycle: Int = 0 26 + var tileShapePoints: Array<IntArray> = arrayOf( 27 27 IntArray(16), 28 28 intArrayOf(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 29 29 intArrayOf(1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1), ··· 38 38 intArrayOf(0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1), 39 39 intArrayOf(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1) 40 40 ) 41 - @JvmField var tileShapeIndices: Array<IntArray> = arrayOf( 41 + var tileShapeIndices: Array<IntArray> = arrayOf( 42 42 intArrayOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15), 43 43 intArrayOf(12, 8, 4, 0, 13, 9, 5, 1, 14, 10, 6, 2, 15, 11, 7, 3), 44 44 intArrayOf(15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0), ··· 2175 2175 } 2176 2176 2177 2177 companion object { 2178 - @JvmField var lowMemory: Boolean = true 2178 + var lowMemory: Boolean = true 2179 2179 2180 - @JvmStatic var deferredObjectCount: Int = 0 2181 - @JvmStatic var plane: Int = 0 2182 - @JvmStatic var cycle: Int = 0 2183 - @JvmStatic var currentPositionX: Int = 0 2184 - @JvmStatic var mapBoundsX: Int = 0 2185 - @JvmStatic var currentPositionY: Int = 0 2186 - @JvmStatic var mapBoundsY: Int = 0 2187 - @JvmStatic var cameraPositionTileX: Int = 0 2188 - @JvmStatic var cameraPositionTileY: Int = 0 2189 - @JvmStatic var cameraPosX: Int = 0 2190 - @JvmStatic var cameraPosZ: Int = 0 2191 - @JvmStatic var cameraPosY: Int = 0 2192 - @JvmStatic var curveSineY: Int = 0 2193 - @JvmStatic var curveCosineY: Int = 0 2194 - @JvmStatic var curveSineX: Int = 0 2195 - @JvmStatic var curveCosineX: Int = 0 2196 - @JvmField var interactiveObjects: Array<InteractiveObject?>? = arrayOfNulls(100) 2197 - @JvmField val faceOffsetX2: IntArray = intArrayOf(53, -53, -53, 53) 2198 - @JvmField val faceOffsetY2: IntArray = intArrayOf(-53, -53, 53, 53) 2199 - @JvmField val faceOffsetX3: IntArray = intArrayOf(-45, 45, 45, -45) 2200 - @JvmField val faceOffsetY3: IntArray = intArrayOf(45, 45, -45, -45) 2201 - @JvmStatic var clicked: Boolean = false 2202 - @JvmStatic var clickX: Int = 0 2203 - @JvmStatic var clickY: Int = 0 2204 - @JvmField var clickedTileX: Int = -1 2205 - @JvmField var clickedTileY: Int = -1 2206 - @JvmStatic var CULLING_PLANES: Int = 4 2207 - @JvmField var cullingClusterPointer: IntArray? = IntArray(CULLING_PLANES) 2208 - @JvmField var cullingClusters: Array<Array<SceneCluster?>>? = Array(CULLING_PLANES) { arrayOfNulls(500) } 2209 - @JvmStatic var processedCullingClustersPointer: Int = 0 2210 - @JvmField var processedCullingClusters: Array<SceneCluster?>? = arrayOfNulls(500) 2211 - @JvmField var tileList: LinkedList? = LinkedList() 2212 - @JvmField val WALL_DRAW_FLAGS_0: IntArray = intArrayOf(19, 55, 38, 155, 255, 110, 137, 205, 76) 2213 - @JvmField val WALL_ORIENTATION_FLAGS: IntArray = intArrayOf(160, 192, 80, 96, 0, 144, 80, 48, 160) 2214 - @JvmField val TILE_WALL_DRAW_FLAGS_1: IntArray = intArrayOf(76, 8, 137, 4, 0, 1, 38, 2, 19) 2215 - @JvmField val WALL_UNCULL_FLAGS_0: IntArray = intArrayOf(0, 0, 2, 0, 0, 2, 1, 1, 0) 2216 - @JvmField val WALL_UNCULL_FLAGS_1: IntArray = intArrayOf(2, 0, 0, 2, 0, 0, 0, 4, 4) 2217 - @JvmField val WALL_UNCULL_FLAGS_2: IntArray = intArrayOf(0, 4, 4, 8, 0, 0, 8, 0, 0) 2218 - @JvmField val WALL_UNCULL_FLAGS_3: IntArray = intArrayOf(1, 1, 0, 0, 0, 8, 0, 0, 8) 2219 - @JvmField val textureRGB: IntArray = intArrayOf( 2180 + var deferredObjectCount: Int = 0 2181 + var plane: Int = 0 2182 + var cycle: Int = 0 2183 + var currentPositionX: Int = 0 2184 + var mapBoundsX: Int = 0 2185 + var currentPositionY: Int = 0 2186 + var mapBoundsY: Int = 0 2187 + var cameraPositionTileX: Int = 0 2188 + var cameraPositionTileY: Int = 0 2189 + var cameraPosX: Int = 0 2190 + var cameraPosZ: Int = 0 2191 + var cameraPosY: Int = 0 2192 + var curveSineY: Int = 0 2193 + var curveCosineY: Int = 0 2194 + var curveSineX: Int = 0 2195 + var curveCosineX: Int = 0 2196 + var interactiveObjects: Array<InteractiveObject?>? = arrayOfNulls(100) 2197 + val faceOffsetX2: IntArray = intArrayOf(53, -53, -53, 53) 2198 + val faceOffsetY2: IntArray = intArrayOf(-53, -53, 53, 53) 2199 + val faceOffsetX3: IntArray = intArrayOf(-45, 45, 45, -45) 2200 + val faceOffsetY3: IntArray = intArrayOf(45, 45, -45, -45) 2201 + var clicked: Boolean = false 2202 + var clickX: Int = 0 2203 + var clickY: Int = 0 2204 + var clickedTileX: Int = -1 2205 + var clickedTileY: Int = -1 2206 + var CULLING_PLANES: Int = 4 2207 + var cullingClusterPointer: IntArray? = IntArray(CULLING_PLANES) 2208 + var cullingClusters: Array<Array<SceneCluster?>>? = Array(CULLING_PLANES) { arrayOfNulls(500) } 2209 + var processedCullingClustersPointer: Int = 0 2210 + var processedCullingClusters: Array<SceneCluster?>? = arrayOfNulls(500) 2211 + var tileList: LinkedList? = LinkedList() 2212 + val WALL_DRAW_FLAGS_0: IntArray = intArrayOf(19, 55, 38, 155, 255, 110, 137, 205, 76) 2213 + val WALL_ORIENTATION_FLAGS: IntArray = intArrayOf(160, 192, 80, 96, 0, 144, 80, 48, 160) 2214 + val TILE_WALL_DRAW_FLAGS_1: IntArray = intArrayOf(76, 8, 137, 4, 0, 1, 38, 2, 19) 2215 + val WALL_UNCULL_FLAGS_0: IntArray = intArrayOf(0, 0, 2, 0, 0, 2, 1, 1, 0) 2216 + val WALL_UNCULL_FLAGS_1: IntArray = intArrayOf(2, 0, 0, 2, 0, 0, 0, 4, 4) 2217 + val WALL_UNCULL_FLAGS_2: IntArray = intArrayOf(0, 4, 4, 8, 0, 0, 8, 0, 0) 2218 + val WALL_UNCULL_FLAGS_3: IntArray = intArrayOf(1, 1, 0, 0, 0, 8, 0, 0, 8) 2219 + val textureRGB: IntArray = intArrayOf( 2220 2220 41, 39248, 41, 4643, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 43086, 2221 2221 41, 41, 41, 41, 41, 41, 41, 8602, 41, 28992, 41, 41, 41, 41, 41, 5056, 2222 2222 41, 41, 41, 7079, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 3131, 41, 41, 41 2223 2223 ) 2224 - @JvmField var TILE_VISIBILITY_MAPS: Array<Array<Array<BooleanArray>>>? = Array(8) { Array(32) { Array(51) { BooleanArray(51) } } } 2225 - @JvmField var TILE_VISIBILITY_MAP: Array<BooleanArray>? = null 2226 - @JvmStatic var screenCenterX: Int = 0 2227 - @JvmStatic var screenCenterY: Int = 0 2228 - @JvmStatic var screenMinX: Int = 0 2229 - @JvmStatic var screenMinY: Int = 0 2230 - @JvmStatic var screenMaxX: Int = 0 2231 - @JvmStatic var screenMaxY: Int = 0 2224 + var TILE_VISIBILITY_MAPS: Array<Array<Array<BooleanArray>>>? = Array(8) { Array(32) { Array(51) { BooleanArray(51) } } } 2225 + var TILE_VISIBILITY_MAP: Array<BooleanArray>? = null 2226 + var screenCenterX: Int = 0 2227 + var screenCenterY: Int = 0 2228 + var screenMinX: Int = 0 2229 + var screenMinY: Int = 0 2230 + var screenMaxX: Int = 0 2231 + var screenMaxY: Int = 0 2232 2232 2233 - @JvmStatic 2233 + 2234 2234 fun nullLoader() { 2235 2235 interactiveObjects = null 2236 2236 cullingClusterPointer = null ··· 2240 2240 TILE_VISIBILITY_MAP = null 2241 2241 } 2242 2242 2243 - @JvmStatic 2243 + 2244 2244 fun createCullingCluster( 2245 2245 z: Int, highestX: Int, lowestX: Int, highestY: Int, lowestY: Int, 2246 2246 highestZ: Int, lowestZ: Int, searchMask: Int ··· 2261 2261 cullingClusterPointer!![z]++ 2262 2262 } 2263 2263 2264 - @JvmStatic 2264 + 2265 2265 fun method277(l: Int, k: Int, i1: Int, i: Int, ai: IntArray) { 2266 2266 screenMinX = 0 2267 2267 screenMinY = 0 ··· 2331 2331 } 2332 2332 } 2333 2333 2334 - @JvmStatic 2334 + 2335 2335 private fun method278(i: Int, j: Int, l: Int): Boolean { 2336 2336 val i1 = (i * curveSineX + j * curveCosineX) shr 16 2337 2337 val j1 = (i * curveCosineX - j * curveSineX) shr 16
+18 -18
src/main/java/com/jagex/runescape/scene/SceneCluster.kt
··· 1 1 package com.jagex.runescape.scene 2 2 3 3 class SceneCluster { 4 - @JvmField var tileStartX: Int = 0 5 - @JvmField var tileEndX: Int = 0 6 - @JvmField var tileStartY: Int = 0 7 - @JvmField var tileEndY: Int = 0 8 - @JvmField var searchMask: Int = 0 9 - @JvmField var worldStartX: Int = 0 10 - @JvmField var worldEndX: Int = 0 11 - @JvmField var worldStartY: Int = 0 12 - @JvmField var worldEndY: Int = 0 13 - @JvmField var worldEndZ: Int = 0 14 - @JvmField var worldStartZ: Int = 0 15 - @JvmField var tileDistanceEnum: Int = 0 16 - @JvmField var worldDistanceFromCameraStartX: Int = 0 17 - @JvmField var worldDistanceFromCameraEndX: Int = 0 18 - @JvmField var worldDistanceFromCameraStartY: Int = 0 19 - @JvmField var worldDistanceFromCameraEndY: Int = 0 20 - @JvmField var worldDistanceFromCameraStartZ: Int = 0 21 - @JvmField var worldDistanceFromCameraEndZ: Int = 0 4 + var tileStartX: Int = 0 5 + var tileEndX: Int = 0 6 + var tileStartY: Int = 0 7 + var tileEndY: Int = 0 8 + var searchMask: Int = 0 9 + var worldStartX: Int = 0 10 + var worldEndX: Int = 0 11 + var worldStartY: Int = 0 12 + var worldEndY: Int = 0 13 + var worldEndZ: Int = 0 14 + var worldStartZ: Int = 0 15 + var tileDistanceEnum: Int = 0 16 + var worldDistanceFromCameraStartX: Int = 0 17 + var worldDistanceFromCameraEndX: Int = 0 18 + var worldDistanceFromCameraStartY: Int = 0 19 + var worldDistanceFromCameraEndY: Int = 0 20 + var worldDistanceFromCameraStartZ: Int = 0 21 + var worldDistanceFromCameraEndZ: Int = 0 22 22 }
+12 -12
src/main/java/com/jagex/runescape/scene/SpawnObjectNode.kt
··· 3 3 import com.jagex.runescape.collection.Node 4 4 5 5 class SpawnObjectNode : Node() { 6 - @JvmField var locationIndex: Int = 0 7 - @JvmField var locationRotation: Int = 0 8 - @JvmField var locationType: Int = 0 9 - @JvmField var index: Int = 0 10 - @JvmField var rotation: Int = 0 11 - @JvmField var type: Int = 0 12 - @JvmField var cycle: Int = -1 13 - @JvmField var plane: Int = 0 14 - @JvmField var classType: Int = 0 15 - @JvmField var x: Int = 0 16 - @JvmField var y: Int = 0 17 - @JvmField var spawnCycle: Int = 0 6 + var locationIndex: Int = 0 7 + var locationRotation: Int = 0 8 + var locationType: Int = 0 9 + var index: Int = 0 10 + var rotation: Int = 0 11 + var type: Int = 0 12 + var cycle: Int = -1 13 + var plane: Int = 0 14 + var classType: Int = 0 15 + var x: Int = 0 16 + var y: Int = 0 17 + var spawnCycle: Int = 0 18 18 }
+22 -22
src/main/java/com/jagex/runescape/scene/tile/ComplexTile.kt
··· 5 5 cA: Int, cAA: Int, cB: Int, cBA: Int, cC: Int, cCA: Int, cD: Int, cDA: Int, overlayRGB: Int, 6 6 underlayRGB: Int 7 7 ) { 8 - @JvmField var originalVertexX: IntArray 9 - @JvmField var originalVertexY: IntArray 10 - @JvmField var originalVertexZ: IntArray 11 - @JvmField var triangleHSLA: IntArray 12 - @JvmField var triangleHSLB: IntArray 13 - @JvmField var triangleHSLC: IntArray 14 - @JvmField var triangleA: IntArray 15 - @JvmField var triangleB: IntArray 16 - @JvmField var triangleC: IntArray 17 - @JvmField var triangleTexture: IntArray? = null 18 - @JvmField var flat: Boolean 19 - @JvmField var shape: Int = shape 20 - @JvmField var rotation: Int = rotation 21 - @JvmField var underlayRGB: Int = underlayRGB 22 - @JvmField var overlayRGB: Int = overlayRGB 8 + var originalVertexX: IntArray 9 + var originalVertexY: IntArray 10 + var originalVertexZ: IntArray 11 + var triangleHSLA: IntArray 12 + var triangleHSLB: IntArray 13 + var triangleHSLC: IntArray 14 + var triangleA: IntArray 15 + var triangleB: IntArray 16 + var triangleC: IntArray 17 + var triangleTexture: IntArray? = null 18 + var flat: Boolean 19 + var shape: Int = shape 20 + var rotation: Int = rotation 21 + var underlayRGB: Int = underlayRGB 22 + var overlayRGB: Int = overlayRGB 23 23 24 24 init { 25 25 flat = yA == yB && yA == yD && yA == yC ··· 190 190 } 191 191 192 192 companion object { 193 - @JvmField var screenX: IntArray = IntArray(6) 194 - @JvmField var screenY: IntArray = IntArray(6) 195 - @JvmField var viewspaceX: IntArray = IntArray(6) 196 - @JvmField var viewspaceY: IntArray = IntArray(6) 197 - @JvmField var viewspaceZ: IntArray = IntArray(6) 198 - @JvmField val shapedTilePointData: Array<IntArray> = arrayOf(intArrayOf(1, 3, 5, 7), intArrayOf(1, 3, 5, 7), intArrayOf(1, 3, 5, 7), 193 + var screenX: IntArray = IntArray(6) 194 + var screenY: IntArray = IntArray(6) 195 + var viewspaceX: IntArray = IntArray(6) 196 + var viewspaceY: IntArray = IntArray(6) 197 + var viewspaceZ: IntArray = IntArray(6) 198 + val shapedTilePointData: Array<IntArray> = arrayOf(intArrayOf(1, 3, 5, 7), intArrayOf(1, 3, 5, 7), intArrayOf(1, 3, 5, 7), 199 199 intArrayOf(1, 3, 5, 7, 6), intArrayOf(1, 3, 5, 7, 6), intArrayOf(1, 3, 5, 7, 6), intArrayOf(1, 3, 5, 7, 6), intArrayOf(1, 3, 5, 7, 2, 6), 200 200 intArrayOf(1, 3, 5, 7, 2, 8), intArrayOf(1, 3, 5, 7, 2, 8), intArrayOf(1, 3, 5, 7, 11, 12), intArrayOf(1, 3, 5, 7, 11, 12), 201 201 intArrayOf(1, 3, 5, 7, 13, 14)) 202 - @JvmField val shapedTileElementData: Array<IntArray> = arrayOf(intArrayOf(0, 1, 2, 3, 0, 0, 1, 3), intArrayOf(1, 1, 2, 3, 1, 0, 1, 3), 202 + val shapedTileElementData: Array<IntArray> = arrayOf(intArrayOf(0, 1, 2, 3, 0, 0, 1, 3), intArrayOf(1, 1, 2, 3, 1, 0, 1, 3), 203 203 intArrayOf(0, 1, 2, 3, 1, 0, 1, 3), intArrayOf(0, 0, 1, 2, 0, 0, 2, 4, 1, 0, 4, 3), intArrayOf(0, 0, 1, 4, 0, 0, 4, 3, 1, 1, 2, 4), 204 204 intArrayOf(0, 0, 4, 3, 1, 0, 1, 2, 1, 0, 2, 4), intArrayOf(0, 1, 2, 4, 1, 0, 1, 4, 1, 0, 4, 3), 205 205 intArrayOf(0, 4, 1, 2, 0, 4, 2, 5, 1, 0, 4, 5, 1, 0, 5, 3), intArrayOf(0, 4, 1, 2, 0, 4, 2, 3, 0, 4, 3, 5, 1, 0, 4, 5),
+6 -6
src/main/java/com/jagex/runescape/scene/tile/FloorDecoration.kt
··· 3 3 import com.jagex.runescape.media.renderable.Renderable 4 4 5 5 class FloorDecoration { 6 - @JvmField var z: Int = 0 7 - @JvmField var x: Int = 0 8 - @JvmField var y: Int = 0 9 - @JvmField var renderable: Renderable? = null 10 - @JvmField var uid: Int = 0 11 - @JvmField var config: Byte = 0 6 + var z: Int = 0 7 + var x: Int = 0 8 + var y: Int = 0 9 + var renderable: Renderable? = null 10 + var uid: Int = 0 11 + var config: Byte = 0 12 12 }
+7 -7
src/main/java/com/jagex/runescape/scene/tile/GenericTile.kt
··· 1 1 package com.jagex.runescape.scene.tile 2 2 3 3 class GenericTile( 4 - @JvmField var colourA: Int, 5 - @JvmField var colourB: Int, 6 - @JvmField var colourC: Int, 7 - @JvmField var colourD: Int, 8 - @JvmField var texture: Int, 9 - @JvmField var rgbColor: Int, 10 - @JvmField var flat: Boolean 4 + var colourA: Int, 5 + var colourB: Int, 6 + var colourC: Int, 7 + var colourD: Int, 8 + var texture: Int, 9 + var rgbColor: Int, 10 + var flat: Boolean 11 11 )
+23 -23
src/main/java/com/jagex/runescape/scene/tile/SceneTile.kt
··· 5 5 import com.jagex.runescape.scene.InteractiveObject 6 6 7 7 class SceneTile( 8 - @JvmField var x: Int, 9 - @JvmField var y: Int, 10 - @JvmField var z: Int 8 + var x: Int, 9 + var y: Int, 10 + var z: Int 11 11 ) : Node() { 12 - @JvmField var renderLevel: Int = z 13 - @JvmField var plainTile: GenericTile? = null 14 - @JvmField var shapedTile: ComplexTile? = null 15 - @JvmField var wall: Wall? = null 16 - @JvmField var wallDecoration: WallDecoration? = null 17 - @JvmField var floorDecoration: FloorDecoration? = null 18 - @JvmField var groundItemTile: GroundItemTile? = null 19 - @JvmField var entityCount: Int = 0 20 - @JvmField var interactiveObjects: Array<InteractiveObject?> = arrayOfNulls(5) 21 - @JvmField var sceneSpawnRequestsSize: IntArray = IntArray(5) 22 - @JvmField var interactiveObjectsSizeOR: Int = 0 23 - @JvmField var logicHeight: Int = 0 24 - @JvmField var draw: Boolean = false 25 - @JvmField var visible: Boolean = false 26 - @JvmField var drawEntities: Boolean = false 27 - @JvmField var wallCullDirection: Int = 0 28 - @JvmField var wallUncullDirection: Int = 0 29 - @JvmField var wallCullOppositeDirection: Int = 0 30 - @JvmField var wallDrawFlags: Int = 0 31 - @JvmField var tileBelow: SceneTile? = null 12 + var renderLevel: Int = z 13 + var plainTile: GenericTile? = null 14 + var shapedTile: ComplexTile? = null 15 + var wall: Wall? = null 16 + var wallDecoration: WallDecoration? = null 17 + var floorDecoration: FloorDecoration? = null 18 + var groundItemTile: GroundItemTile? = null 19 + var entityCount: Int = 0 20 + var interactiveObjects: Array<InteractiveObject?> = arrayOfNulls(5) 21 + var sceneSpawnRequestsSize: IntArray = IntArray(5) 22 + var interactiveObjectsSizeOR: Int = 0 23 + var logicHeight: Int = 0 24 + var draw: Boolean = false 25 + var visible: Boolean = false 26 + var drawEntities: Boolean = false 27 + var wallCullDirection: Int = 0 28 + var wallUncullDirection: Int = 0 29 + var wallCullOppositeDirection: Int = 0 30 + var wallDrawFlags: Int = 0 31 + var tileBelow: SceneTile? = null 32 32 }
+9 -9
src/main/java/com/jagex/runescape/scene/tile/Wall.kt
··· 3 3 import com.jagex.runescape.media.renderable.Renderable 4 4 5 5 class Wall { 6 - @JvmField var z: Int = 0 7 - @JvmField var x: Int = 0 8 - @JvmField var y: Int = 0 9 - @JvmField var orientation: Int = 0 10 - @JvmField var orientation2: Int = 0 11 - @JvmField var primary: Renderable? = null 12 - @JvmField var secondary: Renderable? = null 13 - @JvmField var uid: Int = 0 14 - @JvmField var config: Byte = 0 6 + var z: Int = 0 7 + var x: Int = 0 8 + var y: Int = 0 9 + var orientation: Int = 0 10 + var orientation2: Int = 0 11 + var primary: Renderable? = null 12 + var secondary: Renderable? = null 13 + var uid: Int = 0 14 + var config: Byte = 0 15 15 }
+8 -8
src/main/java/com/jagex/runescape/scene/tile/WallDecoration.kt
··· 3 3 import com.jagex.runescape.media.renderable.Renderable 4 4 5 5 class WallDecoration { 6 - @JvmField var z: Int = 0 7 - @JvmField var x: Int = 0 8 - @JvmField var y: Int = 0 9 - @JvmField var configBits: Int = 0 10 - @JvmField var face: Int = 0 11 - @JvmField var renderable: Renderable? = null 12 - @JvmField var uid: Int = 0 13 - @JvmField var config: Byte = 0 6 + var z: Int = 0 7 + var x: Int = 0 8 + var y: Int = 0 9 + var configBits: Int = 0 10 + var face: Int = 0 11 + var renderable: Renderable? = null 12 + var uid: Int = 0 13 + var config: Byte = 0 14 14 }
+5 -5
src/main/java/com/jagex/runescape/scene/util/CollisionMap.kt
··· 1 1 package com.jagex.runescape.scene.util 2 2 3 3 class CollisionMap( 4 - @JvmField var height: Int, 5 - @JvmField var width: Int 4 + var height: Int, 5 + var width: Int 6 6 ) { 7 - @JvmField var insetX: Int = 0 8 - @JvmField var insetY: Int = 0 9 - @JvmField var clippingData: Array<IntArray> = Array(width) { IntArray(height) } 7 + var insetX: Int = 0 8 + var insetY: Int = 0 9 + var clippingData: Array<IntArray> = Array(width) { IntArray(height) } 10 10 11 11 init { 12 12 reset()
+4 -4
src/main/java/com/jagex/runescape/scene/util/TiledUtils.kt
··· 2 2 3 3 object TiledUtils { 4 4 5 - @JvmStatic 5 + 6 6 fun getRotatedMapChunkX(x: Int, y: Int, rotation: Int): Int { 7 7 val rot = rotation and 3 8 8 if (rot == 0) return x ··· 10 10 return if (rot == 2) 7 - x else 7 - y 11 11 } 12 12 13 - @JvmStatic 13 + 14 14 fun getRotatedMapChunkY(x: Int, y: Int, rotation: Int): Int { 15 15 val rot = rotation and 3 16 16 if (rot == 0) return y ··· 18 18 return if (rot == 2) 7 - y else x 19 19 } 20 20 21 - @JvmStatic 21 + 22 22 fun getRotatedLandscapeChunkX(rotation: Int, objectSizeY: Int, x: Int, y: Int, objectSizeX: Int): Int { 23 23 val rot = rotation and 3 24 24 if (rot == 0) return x ··· 26 26 return if (rot == 2) 7 - x - (objectSizeX - 1) else 7 - y - (objectSizeY - 1) 27 27 } 28 28 29 - @JvmStatic 29 + 30 30 fun getRotatedLandscapeChunkY(y: Int, objectSizeY: Int, rotation: Int, objectSizeX: Int, x: Int): Int { 31 31 val rot = rotation and 3 32 32 if (rot == 0) return y
+8 -8
src/main/java/com/jagex/runescape/sound/SoundFilter.kt
··· 10 10 * the cache, then applies them during [SoundTrackInstrument.synthesize]. 11 11 */ 12 12 class SoundFilter { 13 - @JvmField var numPairs = IntArray(2) 14 - @JvmField var pairPhase = Array(2) { Array(2) { IntArray(4) } } 15 - @JvmField var magnitude = Array(2) { Array(2) { IntArray(4) } } 16 - @JvmField var unity = IntArray(2) 13 + var numPairs = IntArray(2) 14 + var pairPhase = Array(2) { Array(2) { IntArray(4) } } 15 + var magnitude = Array(2) { Array(2) { IntArray(4) } } 16 + var unity = IntArray(2) 17 17 18 18 fun adaptMagnitude(i: Int, f: Float, dir: Int): Float { 19 19 var alpha = magnitude[i][0][dir] + f * (magnitude[i][1][dir] - magnitude[i][0][dir]) ··· 100 100 } 101 101 102 102 companion object { 103 - @JvmField var _coefficient = Array(2) { FloatArray(8) } 104 - @JvmField var coefficient = Array(2) { IntArray(8) } 105 - @JvmField var _invUnity: Float = 0f 106 - @JvmField var invUnity: Int = 0 103 + var _coefficient = Array(2) { FloatArray(8) } 104 + var coefficient = Array(2) { IntArray(8) } 105 + var _invUnity: Float = 0f 106 + var invUnity: Int = 0 107 107 } 108 108 }
+2 -6
src/main/java/com/jagex/runescape/sound/SoundPlayer.kt
··· 120 120 private val soundQueue = ConcurrentLinkedQueue<QueuedSound>() 121 121 @Volatile private var running: Boolean = false 122 122 123 - @JvmField var volume: Int = 0 123 + var volume: Int = 0 124 124 125 125 private val activeSounds = mutableListOf<QueuedSound>() 126 126 ··· 144 144 return out.toByteArray() 145 145 } 146 146 147 - @JvmStatic 147 + 148 148 fun shutdown() { 149 149 running = false 150 150 mixerThread?.interrupt() 151 151 } 152 152 153 - @JvmStatic 154 - fun setVolume(level: Int) { volume = level } 155 153 156 - @JvmStatic 157 - fun getVolume(): Int = volume 158 154 } 159 155 }
+10 -10
src/main/java/com/jagex/runescape/sound/SoundTrack.kt
··· 9 9 */ 10 10 class SoundTrack(i: Int) { 11 11 12 - @JvmField var instruments = arrayOfNulls<SoundTrackInstrument>(10) 13 - @JvmField var loopBegin: Int = 0 14 - @JvmField var loopEnd: Int = 0 12 + var instruments = arrayOfNulls<SoundTrackInstrument>(10) 13 + var loopBegin: Int = 0 14 + var loopEnd: Int = 0 15 15 16 16 init { 17 17 @Suppress("ControlFlowWithEmptyBody") ··· 118 118 } 119 119 120 120 companion object { 121 - @JvmField var aByte664: Byte = 6 122 - @JvmField var tracks = arrayOfNulls<SoundTrack>(5000) 123 - @JvmField var trackDelays = IntArray(5000) 124 - @JvmField var _buffer: ByteArray? = null 125 - @JvmField var buffer: Buffer = Buffer(ByteArray(0)) 121 + var aByte664: Byte = 6 122 + var tracks = arrayOfNulls<SoundTrack>(5000) 123 + var trackDelays = IntArray(5000) 124 + var _buffer: ByteArray? = null 125 + var buffer: Buffer = Buffer(ByteArray(0)) 126 + 126 127 127 - @JvmStatic 128 128 fun load(buffer: Buffer) { 129 129 _buffer = ByteArray(0x6baa8) 130 130 Companion.buffer = Buffer(_buffer!!) ··· 138 138 } 139 139 } 140 140 141 - @JvmStatic 141 + 142 142 fun data(trackId: Int, loops: Int): Buffer? { 143 143 return tracks[trackId]?.encode(loops) 144 144 }
+11 -11
src/main/java/com/jagex/runescape/sound/SoundTrackEnvelope.kt
··· 8 8 * phases with linear interpolation between peak values. 9 9 */ 10 10 class SoundTrackEnvelope { 11 - @JvmField var numPhases: Int = 0 12 - @JvmField var phaseDuration: IntArray? = null 13 - @JvmField var phasePeak: IntArray? = null 14 - @JvmField var smart: Int = 0 15 - @JvmField var end: Int = 0 16 - @JvmField var form: Int = 0 17 - @JvmField var critical: Int = 0 18 - @JvmField var phaseIndex: Int = 0 19 - @JvmField var step: Int = 0 20 - @JvmField var amplitude: Int = 0 21 - @JvmField var ticks: Int = 0 11 + var numPhases: Int = 0 12 + var phaseDuration: IntArray? = null 13 + var phasePeak: IntArray? = null 14 + var smart: Int = 0 15 + var end: Int = 0 16 + var form: Int = 0 17 + var critical: Int = 0 18 + var phaseIndex: Int = 0 19 + var step: Int = 0 20 + var amplitude: Int = 0 21 + var ticks: Int = 0 22 22 23 23 fun decode(buffer: Buffer) { 24 24 form = buffer.getUnsignedByte()
+26 -26
src/main/java/com/jagex/runescape/sound/SoundTrackInstrument.kt
··· 13 13 * avoid allocation during audio playback. 14 14 */ 15 15 class SoundTrackInstrument { 16 - @JvmField var pitchEnvelope: SoundTrackEnvelope? = null 17 - @JvmField var volumeEnvelope: SoundTrackEnvelope? = null 18 - @JvmField var pitchModEnvelope: SoundTrackEnvelope? = null 19 - @JvmField var pitchModAmpEnvelope: SoundTrackEnvelope? = null 20 - @JvmField var volumeModEnvelope: SoundTrackEnvelope? = null 21 - @JvmField var volumeModAmpEnvelope: SoundTrackEnvelope? = null 22 - @JvmField var gatingReleaseEnvelope: SoundTrackEnvelope? = null 23 - @JvmField var gatingAttackEnvelope: SoundTrackEnvelope? = null 24 - @JvmField var oscillVolume = IntArray(5) 25 - @JvmField var oscillPitchDelta = IntArray(5) 26 - @JvmField var oscillDelay = IntArray(5) 27 - @JvmField var delayTime: Int = 0 28 - @JvmField var delayFeedback: Int = 100 29 - @JvmField var filter: SoundFilter? = null 30 - @JvmField var filterEnvelope: SoundTrackEnvelope? = null 31 - @JvmField var soundMillis: Int = 500 32 - @JvmField var pauseMillis: Int = 0 16 + var pitchEnvelope: SoundTrackEnvelope? = null 17 + var volumeEnvelope: SoundTrackEnvelope? = null 18 + var pitchModEnvelope: SoundTrackEnvelope? = null 19 + var pitchModAmpEnvelope: SoundTrackEnvelope? = null 20 + var volumeModEnvelope: SoundTrackEnvelope? = null 21 + var volumeModAmpEnvelope: SoundTrackEnvelope? = null 22 + var gatingReleaseEnvelope: SoundTrackEnvelope? = null 23 + var gatingAttackEnvelope: SoundTrackEnvelope? = null 24 + var oscillVolume = IntArray(5) 25 + var oscillPitchDelta = IntArray(5) 26 + var oscillDelay = IntArray(5) 27 + var delayTime: Int = 0 28 + var delayFeedback: Int = 100 29 + var filter: SoundFilter? = null 30 + var filterEnvelope: SoundTrackEnvelope? = null 31 + var soundMillis: Int = 500 32 + var pauseMillis: Int = 0 33 33 34 34 fun synthesize(nS: Int, dt: Int): IntArray { 35 35 for (position in 0 until nS) buffer!![position] = 0 ··· 241 241 } 242 242 243 243 companion object { 244 - @JvmField var buffer: IntArray? = null 245 - @JvmField var noise: IntArray? = null 246 - @JvmField var sine: IntArray? = null 247 - @JvmField var phases = IntArray(5) 248 - @JvmField var delays = IntArray(5) 249 - @JvmField var volumeStep = IntArray(5) 250 - @JvmField var pitchStep = IntArray(5) 251 - @JvmField var pitchBaseStep = IntArray(5) 244 + var buffer: IntArray? = null 245 + var noise: IntArray? = null 246 + var sine: IntArray? = null 247 + var phases = IntArray(5) 248 + var delays = IntArray(5) 249 + var volumeStep = IntArray(5) 250 + var pitchStep = IntArray(5) 251 + var pitchBaseStep = IntArray(5) 252 252 253 - @JvmStatic 253 + 254 254 fun decode() { 255 255 noise = IntArray(32768) 256 256 for (i in 0 until 32768)
+4 -4
src/main/java/com/jagex/runescape/util/ChatEncoder.kt
··· 12 12 private val message = CharArray(100) 13 13 private val messageBuffer = Buffer(ByteArray(100)) 14 14 15 - @JvmField 15 + 16 16 val VALID_CHARACTERS = charArrayOf( 17 17 ' ', 'e', 't', 'a', 'o', 'i', 'h', 'n', 's', 'r', 'd', 'l', 'u', 'm', 'w', 18 18 'c', 'y', 'f', 'g', 'p', 'b', 'v', 'k', 'x', 'j', 'q', 'z', '0', '1', '2', ··· 21 21 '[', ']' 22 22 ) 23 23 24 - @JvmStatic 24 + 25 25 fun get(length: Int, buffer: Buffer): String { 26 26 var count = 0 27 27 var validCharacterIndex = -1 ··· 67 67 return String(message, 0, count) 68 68 } 69 69 70 - @JvmStatic 70 + 71 71 fun put(chatMessage: String, buffer: Buffer) { 72 72 var msg = chatMessage 73 73 if (msg.length > 80) msg = msg.substring(0, 80) ··· 103 103 if (pending != -1) buffer.putByte(pending shl 4) 104 104 } 105 105 106 - @JvmStatic 106 + 107 107 fun formatChatMessage(chatMessage: String): String { 108 108 messageBuffer.currentPosition = 0 109 109 put(chatMessage, messageBuffer)
+2 -2
src/main/java/com/jagex/runescape/util/LinkedList.kt
··· 9 9 * request queues, completed file lists, etc. 10 10 */ 11 11 class LinkedList { 12 - @JvmField val head: Node = Node() 13 - @JvmField var current: Node? = null 12 + val head: Node = Node() 13 + var current: Node? = null 14 14 15 15 init { 16 16 head.next = head
+6 -6
src/main/java/com/jagex/runescape/util/MouseCapturer.kt
··· 7 7 * smoothing. The client reads accumulated samples from [coordsX]/[coordsY] 8 8 * each frame to interpolate mouse movement for camera rotation and tooltips. 9 9 */ 10 - class MouseCapturer(@JvmField val client: Game) : Runnable { 11 - @JvmField var capturing = true 12 - @JvmField val coordsY = IntArray(500) 13 - @JvmField val objectLock = Any() 14 - @JvmField var coord = 0 15 - @JvmField val coordsX = IntArray(500) 10 + class MouseCapturer(val client: Game) : Runnable { 11 + var capturing = true 12 + val coordsY = IntArray(500) 13 + val objectLock = Any() 14 + var coord = 0 15 + val coordsX = IntArray(500) 16 16 17 17 override fun run() { 18 18 while (capturing) {
+1 -1
src/main/java/com/jagex/runescape/util/PacketConstants.kt
··· 6 6 * two bytes (variable short), 0 = no payload. 7 7 */ 8 8 object PacketConstants { 9 - @JvmField 9 + 10 10 val PACKET_SIZES = intArrayOf(0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 6, 0, 0, 11 11 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, -2, 0, 0, 0, 0, 0, 12 12 6, 0, 0, 0, -1, 0, 0, 0, 4, 0, 0, 0, -2, 0, 0, 0, 2, 23, 0, 9, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, -2, 0, 0,
+24 -24
src/main/java/com/jagex/runescape/util/SignLink.kt
··· 231 231 companion object { 232 232 const val CLIENT_REVISION = 377 233 233 234 - @JvmField var uid = 0 235 - @JvmField var storeId = 32 236 - @JvmField var cacheData: RandomAccessFile? = null 237 - @JvmField val cacheIndex = arrayOfNulls<RandomAccessFile>(5) 234 + var uid = 0 235 + var storeId = 32 236 + var cacheData: RandomAccessFile? = null 237 + val cacheIndex = arrayOfNulls<RandomAccessFile>(5) 238 238 239 239 private var active = false 240 240 private var threadLiveId = 0 ··· 244 244 private var threadRequestPriority = 1 245 245 private var threadRequest: Runnable? = null 246 246 private var dnsRequest: String? = null 247 - @JvmField var dns: String? = null 247 + var dns: String? = null 248 248 private var urlRequest: String? = null 249 249 private var urlStream: DataInputStream? = null 250 250 private var saveLength = 0 ··· 252 252 private var saveBuffer: ByteArray? = null 253 253 private var play = false 254 254 private var midiPosition = 0 255 - @JvmField var midi: String? = null 256 - @JvmField var midiVolume = 0 257 - @JvmField var fadeMidi = 0 255 + var midi: String? = null 256 + var midiVolume = 0 257 + var fadeMidi = 0 258 258 private var midiPlay = false 259 259 private var wavePosition = 0 260 - @JvmField var waveVolume = 0 261 - @JvmField var reportError = true 262 - @JvmField var errorName = "" 263 - @JvmField var music: Sequencer? = null 260 + var waveVolume = 0 261 + var reportError = true 262 + var errorName = "" 263 + var music: Sequencer? = null 264 264 private var synthesizer: Synthesizer? = null 265 265 private var cachedReceiver: Receiver? = null 266 266 267 - @JvmStatic 267 + 268 268 fun initialize(address: InetAddress) { 269 269 threadLiveId = (Math.random() * 99999999.0).toInt() 270 270 if (active) { ··· 288 288 /** 289 289 * Sets MIDI volume via CC#7 (Main Volume) on all 16 channels. 290 290 */ 291 - @JvmStatic 291 + 292 292 fun setVolume(value: Int) { 293 293 midiVolume = value 294 294 if (synthesizer == null) return ··· 312 312 } 313 313 } 314 314 315 - @JvmStatic 315 + 316 316 fun findcachedir(): String { 317 317 val sep = File.separator 318 318 val dir = System.getProperty("user.home") + sep + CACHE_NAME + sep ··· 323 323 return dir 324 324 } 325 325 326 - @JvmStatic 326 + 327 327 fun secondaryLocation(): String { 328 328 val file = File("c:/.377cache/") 329 329 if (!file.exists()) file.mkdir() ··· 349 349 } 350 350 } 351 351 352 - @JvmStatic 352 + 353 353 @Synchronized 354 354 @Throws(IOException::class) 355 355 fun openSocket(port: Int): Socket { ··· 360 360 return socket ?: throw IOException("could not open socket") 361 361 } 362 362 363 - @JvmStatic 363 + 364 364 @Synchronized 365 365 @Throws(IOException::class) 366 366 fun openURL(url: String): DataInputStream { ··· 371 371 return urlStream ?: throw IOException("could not open: $url") 372 372 } 373 373 374 - @JvmStatic 374 + 375 375 @Synchronized 376 376 fun dnsLookup(host: String) { 377 377 dns = host 378 378 dnsRequest = host 379 379 } 380 380 381 - @JvmStatic 381 + 382 382 @Synchronized 383 383 fun startThread(runnable: Runnable, priority: Int) { 384 384 threadRequestPriority = priority 385 385 threadRequest = runnable 386 386 } 387 387 388 - @JvmStatic 388 + 389 389 @Synchronized 390 390 fun saveWave(data: ByteArray, length: Int): Boolean { 391 391 if (length > 2_000_000 || saveRequest != null) return false ··· 397 397 return true 398 398 } 399 399 400 - @JvmStatic 400 + 401 401 @Synchronized 402 402 fun replayWave(): Boolean { 403 403 if (saveRequest != null) return false ··· 407 407 return true 408 408 } 409 409 410 - @JvmStatic 410 + 411 411 @Synchronized 412 412 fun saveMidi(data: ByteArray, length: Int) { 413 413 if (length > 2_000_000 || saveRequest != null) return ··· 418 418 saveRequest = "jingle$midiPosition.mid" 419 419 } 420 420 421 - @JvmStatic 421 + 422 422 fun reportError(error: String) { 423 423 println("Error: $error") 424 424 }
+3 -3
src/main/java/com/jagex/runescape/util/SkillConstants.kt
··· 1 1 package com.jagex.runescape.util 2 2 3 3 object SkillConstants { 4 - @JvmField var SKILL_COUNT = 25 4 + var SKILL_COUNT = 25 5 5 6 - @JvmField 6 + 7 7 val SKILL_NAMES = arrayOf( 8 8 "attack", "defence", "strength", "hitpoints", "ranged", "prayer", 9 9 "magic", "cooking", "woodcutting", "fletching", "fishing", "firemaking", ··· 12 12 "-unused-" 13 13 ) 14 14 15 - @JvmField 15 + 16 16 val SKILL_TOGGLES = booleanArrayOf( 17 17 true, true, true, true, true, true, true, true, true, true, true, 18 18 true, true, true, true, true, true, true, true, true, true,
+7 -7
src/main/java/com/jagex/runescape/util/TextUtils.kt
··· 6 6 * a single 64-bit value. Sprite names use a base-61 hash. 7 7 */ 8 8 object TextUtils { 9 - @JvmField 9 + 10 10 val VALID_CHARACTERS = charArrayOf( 11 11 '_', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 12 12 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 13 13 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 14 14 ) 15 15 16 - @JvmStatic 16 + 17 17 fun nameToLong(name: String): Long { 18 18 var longName = 0L 19 19 for (i in 0 until minOf(name.length, 12)) { ··· 31 31 return longName 32 32 } 33 33 34 - @JvmStatic 34 + 35 35 fun longToName(longName: Long): String { 36 36 var remaining = longName 37 37 if (remaining <= 0L || remaining >= 0x5b5b57f8a98a5dd1L) return "invalid_name" ··· 46 46 return String(name, 12 - length, length) 47 47 } 48 48 49 - @JvmStatic 49 + 50 50 fun spriteToHash(sprite: String): Long { 51 51 val upper = sprite.uppercase() 52 52 var hash = 0L ··· 57 57 return hash 58 58 } 59 59 60 - @JvmStatic 60 + 61 61 fun decodeAddress(address: Int): String = 62 62 "${address ushr 24 and 0xff}.${address ushr 16 and 0xff}.${address ushr 8 and 0xff}.${address and 0xff}" 63 63 64 - @JvmStatic 64 + 65 65 fun formatName(name: String): String { 66 66 if (name.isEmpty()) return name 67 67 val chars = name.toCharArray() ··· 79 79 return String(chars) 80 80 } 81 81 82 - @JvmStatic 82 + 83 83 fun censorPassword(password: String?): String { 84 84 if (password.isNullOrEmpty()) return "" 85 85 return "*".repeat(password.length)