1
1
package com .jagex .runescape .cache .def ;
2
2
3
- import com .jagex .runescape .* ;
3
+ import com .jagex .runescape .HuffmanEncoding ;
4
4
import com .jagex .runescape .cache .CacheArchive ;
5
- import com .jagex .runescape .input .MouseHandler ;
6
5
import com .jagex .runescape .io .Buffer ;
7
- import com .jagex .runescape .media .renderable .actor .Player ;
8
- import com .jagex .runescape .media .renderable .actor .PlayerAppearance ;
9
- import com .jagex .runescape .net .PacketBuffer ;
10
6
import com .jagex .runescape .node .CachedNode ;
7
+ import com .jagex .runescape .node .NodeCache ;
11
8
import com .jagex .runescape .scene .GroundItemTile ;
12
9
13
10
public class VarbitDefinition extends CachedNode {
14
- public static ProducingGraphicsBuffer gameScreenImageProducer ;
15
- public static int anInt2359 = 0 ;
16
- public static int [] anIntArray2361 = new int []{0 , 1 , 3 , 7 , 15 , 31 , 63 , 127 , 255 , 511 , 1023 , 2047 , 4095 , 8191 , 16383 , 32767 , 65535 , 131071 , 262143 , 524287 , 1048575 , 2097151 , 4194303 , 8388607 , 16777215 , 33554431 , 67108863 , 134217727 , 268435455 , 536870911 , 1073741823 , 2147483647 , -1 };
17
- public static CacheArchive aCacheArchive_2364 ;
18
- public static int destinationX = 0 ;
19
11
public static int [] varbitMasks = new int [32 ];
12
+ public static NodeCache varbitDefinitionCache = new NodeCache (64 );
13
+ public static CacheArchive gameDefinitionsCacheArchive ;
20
14
15
+ // Pre-calculate varbit masks
21
16
static {
22
17
int i = 2 ;
23
18
for (int i_7_ = 0 ; i_7_ < 32 ; i_7_ ++) {
@@ -31,14 +26,14 @@ public class VarbitDefinition extends CachedNode {
31
26
public int mostSignificantBit ;
32
27
33
28
public static VarbitDefinition getDefinition (int varbitId ) {
34
- VarbitDefinition varbitDefinition = (VarbitDefinition ) Class57 . varbitDefinitionCache .get (varbitId );
29
+ VarbitDefinition varbitDefinition = (VarbitDefinition ) varbitDefinitionCache .get (varbitId );
35
30
if (varbitDefinition != null )
36
31
return varbitDefinition ;
37
- byte [] is = RSCanvas . aCacheArchive_61 .getFile (14 , varbitId );
32
+ byte [] cacheData = gameDefinitionsCacheArchive .getFile (14 , varbitId );
38
33
varbitDefinition = new VarbitDefinition ();
39
- if (is != null )
40
- varbitDefinition .readValues (new Buffer (is ));
41
- Class57 . varbitDefinitionCache .put (varbitId , varbitDefinition );
34
+ if (cacheData != null )
35
+ varbitDefinition .readValues (new Buffer (cacheData ));
36
+ varbitDefinitionCache .put (varbitId , varbitDefinition );
42
37
return varbitDefinition ;
43
38
}
44
39
@@ -56,6 +51,27 @@ public static int getVarbitValue(int varbitId) {
56
51
return GroundItemTile .varPlayers [varPlayerIndex ] >> leastSignificantBit & mask ;
57
52
}
58
53
54
+ public static void setVarbitValue (int value , int varbitId ) {
55
+ VarbitDefinition varbitDefinition = getDefinition (varbitId );
56
+ int index = varbitDefinition .index ;
57
+ int leastSignificantBit = varbitDefinition .leastSignificantBit ;
58
+ int mostSignificantBit = varbitDefinition .mostSignificantBit ;
59
+ int mask = varbitMasks [mostSignificantBit + -leastSignificantBit ];
60
+ if (value < 0 || mask < value )
61
+ value = 0 ;
62
+ mask <<= leastSignificantBit ;
63
+ GroundItemTile .varPlayers [index ] = UnderlayDefinition .bitWiseOR (HuffmanEncoding .bitWiseAND (GroundItemTile .varPlayers [index ], mask ^ 0xffffffff ), HuffmanEncoding .bitWiseAND (mask , value << leastSignificantBit ));
64
+ }
65
+
66
+ public static void initializeVarbitDefinitionCache (CacheArchive cacheArchive ) {
67
+ gameDefinitionsCacheArchive = cacheArchive ;
68
+
69
+ }
70
+
71
+ public static void clearVarbitDefinitionCache () {
72
+ varbitDefinitionCache .clear ();
73
+ }
74
+
59
75
public void readValues (Buffer buffer ) {
60
76
while (true ) {
61
77
int opCode = buffer .getUnsignedByte ();
0 commit comments