Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -78,6 +78,7 @@ public class Instructions
|
|||||||
add(CC_SETSIZE, "cc_setsize");
|
add(CC_SETSIZE, "cc_setsize");
|
||||||
add(CC_SETHIDE, "cc_sethide");
|
add(CC_SETHIDE, "cc_sethide");
|
||||||
add(CC_SETNOCLICKTHROUGH, "cc_setnoclickthrough");
|
add(CC_SETNOCLICKTHROUGH, "cc_setnoclickthrough");
|
||||||
|
add(CC_SETNOSCROLLTHROUGH, "cc_setnoscrollthrough");
|
||||||
add(CC_SETSCROLLPOS, "cc_setscrollpos");
|
add(CC_SETSCROLLPOS, "cc_setscrollpos");
|
||||||
add(CC_SETCOLOUR, "cc_setcolour");
|
add(CC_SETCOLOUR, "cc_setcolour");
|
||||||
add(CC_SETFILL, "cc_setfill");
|
add(CC_SETFILL, "cc_setfill");
|
||||||
@@ -287,11 +288,14 @@ public class Instructions
|
|||||||
add(SETSHOWLOADINGMESSAGES, "setshowloadingmessages");
|
add(SETSHOWLOADINGMESSAGES, "setshowloadingmessages");
|
||||||
add(SETTAPTODROP, "settaptodrop");
|
add(SETTAPTODROP, "settaptodrop");
|
||||||
add(GETTAPTODROP, "gettaptodrop");
|
add(GETTAPTODROP, "gettaptodrop");
|
||||||
|
add(SETOCULUSORBSPEED, "setoculusorbspeed");
|
||||||
add(GETCANVASSIZE, "getcanvassize");
|
add(GETCANVASSIZE, "getcanvassize");
|
||||||
add(SETHIDEUSERNAME, "sethideusername");
|
add(SETHIDEUSERNAME, "sethideusername");
|
||||||
add(GETHIDEUSERNAME, "gethideusername");
|
add(GETHIDEUSERNAME, "gethideusername");
|
||||||
add(SETREMEMBERUSERNAME, "setrememberusername");
|
add(SETREMEMBERUSERNAME, "setrememberusername");
|
||||||
add(GETREMEMBERUSERNAME, "getrememberusername");
|
add(GETREMEMBERUSERNAME, "getrememberusername");
|
||||||
|
add(SETTITLEMUSICENABLED, "settitlemusicenabled");
|
||||||
|
add(GETTITLEMUSICENABLED, "gettitlemusicenabled");
|
||||||
add(SOUND_SYNTH, "sound_synth");
|
add(SOUND_SYNTH, "sound_synth");
|
||||||
add(SOUND_SONG, "sound_song");
|
add(SOUND_SONG, "sound_song");
|
||||||
add(SOUND_JINGLE, "sound_jingle");
|
add(SOUND_JINGLE, "sound_jingle");
|
||||||
@@ -411,6 +415,7 @@ public class Instructions
|
|||||||
add(REMOVETAGS, "removetags");
|
add(REMOVETAGS, "removetags");
|
||||||
add(STRING_INDEXOF_CHAR, "string_indexof_char");
|
add(STRING_INDEXOF_CHAR, "string_indexof_char");
|
||||||
add(STRING_INDEXOF_STRING, "string_indexof_string");
|
add(STRING_INDEXOF_STRING, "string_indexof_string");
|
||||||
|
add(UPPERCASE, "uppercase");
|
||||||
add(OC_NAME, "oc_name");
|
add(OC_NAME, "oc_name");
|
||||||
add(OC_OP, "oc_op");
|
add(OC_OP, "oc_op");
|
||||||
add(OC_IOP, "oc_iop");
|
add(OC_IOP, "oc_iop");
|
||||||
@@ -461,6 +466,7 @@ public class Instructions
|
|||||||
add(WORLDLIST_NEXT, "worldlist_next");
|
add(WORLDLIST_NEXT, "worldlist_next");
|
||||||
add(WORLDLIST_SPECIFIC, "worldlist_specific");
|
add(WORLDLIST_SPECIFIC, "worldlist_specific");
|
||||||
add(WORLDLIST_SORT, "worldlist_sort");
|
add(WORLDLIST_SORT, "worldlist_sort");
|
||||||
|
add(GETWORLDINFO, "getworldinfo");
|
||||||
add(SETFOLLOWEROPSLOWPRIORITY, "setfolloweropslowpriority");
|
add(SETFOLLOWEROPSLOWPRIORITY, "setfolloweropslowpriority");
|
||||||
add(NC_PARAM, "nc_param");
|
add(NC_PARAM, "nc_param");
|
||||||
add(LC_PARAM, "lc_param");
|
add(LC_PARAM, "lc_param");
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ public class Opcodes
|
|||||||
public static final int CC_SETSIZE = 1001;
|
public static final int CC_SETSIZE = 1001;
|
||||||
public static final int CC_SETHIDE = 1003;
|
public static final int CC_SETHIDE = 1003;
|
||||||
public static final int CC_SETNOCLICKTHROUGH = 1005;
|
public static final int CC_SETNOCLICKTHROUGH = 1005;
|
||||||
|
public static final int CC_SETNOSCROLLTHROUGH = 1006;
|
||||||
public static final int CC_SETSCROLLPOS = 1100;
|
public static final int CC_SETSCROLLPOS = 1100;
|
||||||
public static final int CC_SETCOLOUR = 1101;
|
public static final int CC_SETCOLOUR = 1101;
|
||||||
public static final int CC_SETFILL = 1102;
|
public static final int CC_SETFILL = 1102;
|
||||||
@@ -278,11 +279,14 @@ public class Opcodes
|
|||||||
public static final int SETSHOWLOADINGMESSAGES = 3126;
|
public static final int SETSHOWLOADINGMESSAGES = 3126;
|
||||||
public static final int SETTAPTODROP = 3127;
|
public static final int SETTAPTODROP = 3127;
|
||||||
public static final int GETTAPTODROP = 3128;
|
public static final int GETTAPTODROP = 3128;
|
||||||
|
public static final int SETOCULUSORBSPEED = 3129;
|
||||||
public static final int GETCANVASSIZE = 3132;
|
public static final int GETCANVASSIZE = 3132;
|
||||||
public static final int SETHIDEUSERNAME = 3141;
|
public static final int SETHIDEUSERNAME = 3141;
|
||||||
public static final int GETHIDEUSERNAME = 3142;
|
public static final int GETHIDEUSERNAME = 3142;
|
||||||
public static final int SETREMEMBERUSERNAME = 3143;
|
public static final int SETREMEMBERUSERNAME = 3143;
|
||||||
public static final int GETREMEMBERUSERNAME = 3144;
|
public static final int GETREMEMBERUSERNAME = 3144;
|
||||||
|
public static final int SETTITLEMUSICENABLED = 3146;
|
||||||
|
public static final int GETTITLEMUSICENABLED = 3147;
|
||||||
public static final int SOUND_SYNTH = 3200;
|
public static final int SOUND_SYNTH = 3200;
|
||||||
public static final int SOUND_SONG = 3201;
|
public static final int SOUND_SONG = 3201;
|
||||||
public static final int SOUND_JINGLE = 3202;
|
public static final int SOUND_JINGLE = 3202;
|
||||||
@@ -402,6 +406,7 @@ public class Opcodes
|
|||||||
public static final int REMOVETAGS = 4119;
|
public static final int REMOVETAGS = 4119;
|
||||||
public static final int STRING_INDEXOF_CHAR = 4120;
|
public static final int STRING_INDEXOF_CHAR = 4120;
|
||||||
public static final int STRING_INDEXOF_STRING = 4121;
|
public static final int STRING_INDEXOF_STRING = 4121;
|
||||||
|
public static final int UPPERCASE = 4122;
|
||||||
public static final int OC_NAME = 4200;
|
public static final int OC_NAME = 4200;
|
||||||
public static final int OC_OP = 4201;
|
public static final int OC_OP = 4201;
|
||||||
public static final int OC_IOP = 4202;
|
public static final int OC_IOP = 4202;
|
||||||
@@ -452,6 +457,7 @@ public class Opcodes
|
|||||||
public static final int WORLDLIST_NEXT = 6502;
|
public static final int WORLDLIST_NEXT = 6502;
|
||||||
public static final int WORLDLIST_SPECIFIC = 6506;
|
public static final int WORLDLIST_SPECIFIC = 6506;
|
||||||
public static final int WORLDLIST_SORT = 6507;
|
public static final int WORLDLIST_SORT = 6507;
|
||||||
|
public static final int GETWORLDINFO = 6511;
|
||||||
public static final int SETFOLLOWEROPSLOWPRIORITY = 6512;
|
public static final int SETFOLLOWEROPSLOWPRIORITY = 6512;
|
||||||
public static final int NC_PARAM = 6513;
|
public static final int NC_PARAM = 6513;
|
||||||
public static final int LC_PARAM = 6514;
|
public static final int LC_PARAM = 6514;
|
||||||
|
|||||||
+152
@@ -0,0 +1,152 @@
|
|||||||
|
package net.runelite.deob.deobfuscators.transformers;
|
||||||
|
|
||||||
|
import java.util.ListIterator;
|
||||||
|
import net.runelite.asm.ClassFile;
|
||||||
|
import net.runelite.asm.ClassGroup;
|
||||||
|
import net.runelite.asm.Field;
|
||||||
|
import net.runelite.asm.Method;
|
||||||
|
import net.runelite.asm.Type;
|
||||||
|
import net.runelite.asm.attributes.Code;
|
||||||
|
import net.runelite.asm.attributes.code.Instruction;
|
||||||
|
import net.runelite.asm.attributes.code.Instructions;
|
||||||
|
import net.runelite.asm.attributes.code.instruction.types.PushConstantInstruction;
|
||||||
|
import net.runelite.asm.attributes.code.instructions.GetStatic;
|
||||||
|
import net.runelite.asm.attributes.code.instructions.ILoad;
|
||||||
|
import net.runelite.asm.attributes.code.instructions.IfICmpEq;
|
||||||
|
import net.runelite.asm.attributes.code.instructions.IfICmpNe;
|
||||||
|
import net.runelite.asm.attributes.code.instructions.LDC;
|
||||||
|
import net.runelite.asm.attributes.code.instructions.PutStatic;
|
||||||
|
import net.runelite.asm.attributes.code.instructions.VReturn;
|
||||||
|
import net.runelite.asm.pool.Class;
|
||||||
|
import net.runelite.asm.signature.Signature;
|
||||||
|
import net.runelite.deob.Transformer;
|
||||||
|
import net.runelite.deob.deobfuscators.transformers.scriptopcodes.ScriptOpcode;
|
||||||
|
import org.objectweb.asm.Opcodes;
|
||||||
|
import static org.objectweb.asm.Opcodes.ACC_FINAL;
|
||||||
|
import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
|
||||||
|
import static org.objectweb.asm.Opcodes.ACC_STATIC;
|
||||||
|
|
||||||
|
public class ScriptOpcodesTransformer implements Transformer // robots in disguise
|
||||||
|
{
|
||||||
|
private static final String SCRIPT_OPCODES = "net/runelite/rs/ScriptOpcodes";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void transform(ClassGroup group)
|
||||||
|
{
|
||||||
|
initializeOpcodesClassFile(group);
|
||||||
|
|
||||||
|
for (ClassFile cf : group.getClasses())
|
||||||
|
{
|
||||||
|
if (cf.getName().startsWith("net/runelite/rs"))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Method m : cf.getMethods())
|
||||||
|
{
|
||||||
|
if (!m.isStatic())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!m.getDescriptor().getArguments().contains(new Type("LScript;")) && !m.getDescriptor().getArguments().contains(new Type("LScriptEvent;")))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean varIndexIsKnownAnd0 = m.getDescriptor().getArguments().contains(new Type("LScript;"));
|
||||||
|
|
||||||
|
Code code = m.getCode();
|
||||||
|
Instructions ins = code.getInstructions();
|
||||||
|
ListIterator<Instruction> it = ins.getInstructions().listIterator();
|
||||||
|
|
||||||
|
Instruction i;
|
||||||
|
while (it.hasNext())
|
||||||
|
{
|
||||||
|
i = it.next();
|
||||||
|
|
||||||
|
if (!(i instanceof ILoad) || (varIndexIsKnownAnd0 && ((ILoad) i).getVariableIndex() != 0))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = it.next();
|
||||||
|
|
||||||
|
if (!(i instanceof PushConstantInstruction) ||
|
||||||
|
!(((PushConstantInstruction) i).getConstant() instanceof Number))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
int val = ((Number) ((PushConstantInstruction) i).getConstant()).intValue();
|
||||||
|
String name = ScriptOpcode.nameFromID(val);
|
||||||
|
|
||||||
|
i = it.next();
|
||||||
|
|
||||||
|
if (name == null || !(i instanceof IfICmpNe || i instanceof IfICmpEq))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
it.previous();
|
||||||
|
it.previous();
|
||||||
|
|
||||||
|
net.runelite.asm.pool.Field pool = new net.runelite.asm.pool.Field(
|
||||||
|
new Class(SCRIPT_OPCODES),
|
||||||
|
name,
|
||||||
|
Type.INT
|
||||||
|
);
|
||||||
|
|
||||||
|
GetStatic getStatic = new GetStatic(ins, pool);
|
||||||
|
it.set(getStatic);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void initializeOpcodesClassFile(ClassGroup group)
|
||||||
|
{
|
||||||
|
ClassFile scriptOpcodes = group.findClass(SCRIPT_OPCODES);
|
||||||
|
if (scriptOpcodes == null)
|
||||||
|
{
|
||||||
|
scriptOpcodes = new ClassFile(group);
|
||||||
|
scriptOpcodes.setName(SCRIPT_OPCODES);
|
||||||
|
scriptOpcodes.setSuperName(Type.OBJECT.getInternalName());
|
||||||
|
scriptOpcodes.setAccess(Opcodes.ACC_PUBLIC);
|
||||||
|
group.addClass(scriptOpcodes);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scriptOpcodes.getFields().clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
Method clinit = scriptOpcodes.findMethod("<clinit>");
|
||||||
|
if (clinit == null)
|
||||||
|
{
|
||||||
|
clinit = new Method(scriptOpcodes, "<clinit>", new Signature("()V"));
|
||||||
|
clinit.setStatic(true);
|
||||||
|
Code code = new Code(clinit);
|
||||||
|
code.setMaxStack(1);
|
||||||
|
clinit.setCode(code);
|
||||||
|
scriptOpcodes.addMethod(clinit);
|
||||||
|
}
|
||||||
|
|
||||||
|
Code code = clinit.getCode();
|
||||||
|
Instructions ins = code.getInstructions();
|
||||||
|
|
||||||
|
for (ScriptOpcode opcode : ScriptOpcode.values())
|
||||||
|
{
|
||||||
|
Field field = new Field(scriptOpcodes, opcode.name(), Type.INT);
|
||||||
|
field.setAccessFlags(ACC_PUBLIC | ACC_STATIC | ACC_FINAL);
|
||||||
|
field.setValue(opcode.opcode);
|
||||||
|
scriptOpcodes.addField(field);
|
||||||
|
|
||||||
|
LDC ldc = new LDC(ins, opcode.opcode);
|
||||||
|
PutStatic put = new PutStatic(ins, field);
|
||||||
|
ins.addInstruction(0, ldc);
|
||||||
|
ins.addInstruction(1, put);
|
||||||
|
}
|
||||||
|
|
||||||
|
ins.addInstruction(new VReturn(ins));
|
||||||
|
}
|
||||||
|
}
|
||||||
+517
@@ -0,0 +1,517 @@
|
|||||||
|
package net.runelite.deob.deobfuscators.transformers.scriptopcodes;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public enum ScriptOpcode
|
||||||
|
{
|
||||||
|
// This class is pretty much the same as net.runelite.cache.script.Opcodes, and should be updated alongside that
|
||||||
|
|
||||||
|
ICONST(0),
|
||||||
|
GET_VARP(1),
|
||||||
|
SET_VARP(2),
|
||||||
|
SCONST(3),
|
||||||
|
JUMP(6),
|
||||||
|
IF_ICMPNE(7),
|
||||||
|
IF_ICMPEQ(8),
|
||||||
|
IF_ICMPLT(9),
|
||||||
|
IF_ICMPGT(10),
|
||||||
|
RETURN(21),
|
||||||
|
GET_VARBIT(25),
|
||||||
|
SET_VARBIT(27),
|
||||||
|
IF_ICMPLE(31),
|
||||||
|
IF_ICMPGE(32),
|
||||||
|
ILOAD(33),
|
||||||
|
ISTORE(34),
|
||||||
|
SLOAD(35),
|
||||||
|
SSTORE(36),
|
||||||
|
JOIN_STRING(37),
|
||||||
|
POP_INT(38),
|
||||||
|
POP_STRING(39),
|
||||||
|
INVOKE(40),
|
||||||
|
GET_VARC_INT(42),
|
||||||
|
SET_VARC_INT(43),
|
||||||
|
DEFINE_ARRAY(44),
|
||||||
|
GET_ARRAY_INT(45),
|
||||||
|
SET_ARRAY_INT(46),
|
||||||
|
GET_VARC_STRING_OLD(47),
|
||||||
|
SET_VARC_STRING_OLD(48),
|
||||||
|
GET_VARC_STRING(49),
|
||||||
|
SET_VARC_STRING(50),
|
||||||
|
SWITCH(60),
|
||||||
|
CC_CREATE(100),
|
||||||
|
CC_DELETE(101),
|
||||||
|
CC_DELETEALL(102),
|
||||||
|
CC_FIND(200),
|
||||||
|
IF_FIND(201),
|
||||||
|
CC_SETPOSITION(1000),
|
||||||
|
CC_SETSIZE(1001),
|
||||||
|
CC_SETHIDE(1003),
|
||||||
|
CC_SETNOCLICKTHROUGH(1005),
|
||||||
|
CC_SETNOSCROLLTHROUGH(1006),
|
||||||
|
CC_SETSCROLLPOS(1100),
|
||||||
|
CC_SETCOLOUR(1101),
|
||||||
|
CC_SETFILL(1102),
|
||||||
|
CC_SETTRANS(1103),
|
||||||
|
CC_SETLINEWID(1104),
|
||||||
|
CC_SETGRAPHIC(1105),
|
||||||
|
CC_SET2DANGLE(1106),
|
||||||
|
CC_SETTILING(1107),
|
||||||
|
CC_SETMODEL(1108),
|
||||||
|
CC_SETMODELANGLE(1109),
|
||||||
|
CC_SETMODELANIM(1110),
|
||||||
|
CC_SETMODELORTHOG(1111),
|
||||||
|
CC_SETTEXT(1112),
|
||||||
|
CC_SETTEXTFONT(1113),
|
||||||
|
CC_SETTEXTALIGN(1114),
|
||||||
|
CC_SETTEXTSHADOW(1115),
|
||||||
|
CC_SETOUTLINE(1116),
|
||||||
|
CC_SETGRAPHICSHADOW(1117),
|
||||||
|
CC_SETVFLIP(1118),
|
||||||
|
CC_SETHFLIP(1119),
|
||||||
|
CC_SETSCROLLSIZE(1120),
|
||||||
|
CC_RESUME_PAUSEBUTTON(1121),
|
||||||
|
CC_SETFILLCOLOUR(1123),
|
||||||
|
CC_SETLINEDIRECTION(1126),
|
||||||
|
CC_SETOBJECT(1200),
|
||||||
|
CC_SETNPCHEAD(1201),
|
||||||
|
CC_SETPLAYERHEAD_SELF(1202),
|
||||||
|
CC_SETOBJECT_NONUM(1205),
|
||||||
|
CC_SETOBJECT_ALWAYS_NUM(1212),
|
||||||
|
CC_SETOP(1300),
|
||||||
|
CC_SETDRAGGABLE(1301),
|
||||||
|
CC_SETDRAGGABLEBEHAVIOR(1302),
|
||||||
|
CC_SETDRAGDEADZONE(1303),
|
||||||
|
CC_SETDRAGDEADTIME(1304),
|
||||||
|
CC_SETOPBASE(1305),
|
||||||
|
CC_SETTARGETVERB(1306),
|
||||||
|
CC_CLEAROPS(1307),
|
||||||
|
CC_SETONCLICK(1400),
|
||||||
|
CC_SETONHOLD(1401),
|
||||||
|
CC_SETONRELEASE(1402),
|
||||||
|
CC_SETONMOUSEOVER(1403),
|
||||||
|
CC_SETONMOUSELEAVE(1404),
|
||||||
|
CC_SETONDRAG(1405),
|
||||||
|
CC_SETONTARGETLEAVE(1406),
|
||||||
|
CC_SETONVARTRANSMIT(1407),
|
||||||
|
CC_SETONTIMER(1408),
|
||||||
|
CC_SETONOP(1409),
|
||||||
|
CC_SETONDRAGCOMPLETE(1410),
|
||||||
|
CC_SETONCLICKREPEAT(1411),
|
||||||
|
CC_SETONMOUSEREPEAT(1412),
|
||||||
|
CC_SETONINVTRANSMIT(1414),
|
||||||
|
CC_SETONSTATTRANSMIT(1415),
|
||||||
|
CC_SETONTARGETENTER(1416),
|
||||||
|
CC_SETONSCROLLWHEEL(1417),
|
||||||
|
CC_SETONCHATTRANSMIT(1418),
|
||||||
|
CC_SETONKEY(1419),
|
||||||
|
CC_SETONFRIENDTRANSMIT(1420),
|
||||||
|
CC_SETONCLANTRANSMIT(1421),
|
||||||
|
CC_SETONMISCTRANSMIT(1422),
|
||||||
|
CC_SETONDIALOGABORT(1423),
|
||||||
|
CC_SETONSUBCHANGE(1424),
|
||||||
|
CC_SETONSTOCKTRANSMIT(1425),
|
||||||
|
CC_SETONRESIZE(1427),
|
||||||
|
CC_GETX(1500),
|
||||||
|
CC_GETY(1501),
|
||||||
|
CC_GETWIDTH(1502),
|
||||||
|
CC_GETHEIGHT(1503),
|
||||||
|
CC_GETHIDE(1504),
|
||||||
|
CC_GETLAYER(1505),
|
||||||
|
CC_GETSCROLLX(1600),
|
||||||
|
CC_GETSCROLLY(1601),
|
||||||
|
CC_GETTEXT(1602),
|
||||||
|
CC_GETSCROLLWIDTH(1603),
|
||||||
|
CC_GETSCROLLHEIGHT(1604),
|
||||||
|
CC_GETMODELZOOM(1605),
|
||||||
|
CC_GETMODELANGLE_X(1606),
|
||||||
|
CC_GETMODELANGLE_Z(1607),
|
||||||
|
CC_GETMODELANGLE_Y(1608),
|
||||||
|
CC_GETTRANS(1609),
|
||||||
|
CC_GETCOLOUR(1611),
|
||||||
|
CC_GETFILLCOLOUR(1612),
|
||||||
|
CC_GETINVOBJECT(1700),
|
||||||
|
CC_GETINVCOUNT(1701),
|
||||||
|
CC_GETID(1702),
|
||||||
|
CC_GETTARGETMASK(1800),
|
||||||
|
CC_GETOP(1801),
|
||||||
|
CC_GETOPBASE(1802),
|
||||||
|
CC_CALLONRESIZE(1927),
|
||||||
|
IF_SETPOSITION(2000),
|
||||||
|
IF_SETSIZE(2001),
|
||||||
|
IF_SETHIDE(2003),
|
||||||
|
IF_SETNOCLICKTHROUGH(2005),
|
||||||
|
IF_SETSCROLLPOS(2100),
|
||||||
|
IF_SETCOLOUR(2101),
|
||||||
|
IF_SETFILL(2102),
|
||||||
|
IF_SETTRANS(2103),
|
||||||
|
IF_SETLINEWID(2104),
|
||||||
|
IF_SETGRAPHIC(2105),
|
||||||
|
IF_SET2DANGLE(2106),
|
||||||
|
IF_SETTILING(2107),
|
||||||
|
IF_SETMODEL(2108),
|
||||||
|
IF_SETMODELANGLE(2109),
|
||||||
|
IF_SETMODELANIM(2110),
|
||||||
|
IF_SETMODELORTHOG(2111),
|
||||||
|
IF_SETTEXT(2112),
|
||||||
|
IF_SETTEXTFONT(2113),
|
||||||
|
IF_SETTEXTALIGN(2114),
|
||||||
|
IF_SETTEXTSHADOW(2115),
|
||||||
|
IF_SETOUTLINE(2116),
|
||||||
|
IF_SETGRAPHICSHADOW(2117),
|
||||||
|
IF_SETVFLIP(2118),
|
||||||
|
IF_SETHFLIP(2119),
|
||||||
|
IF_SETSCROLLSIZE(2120),
|
||||||
|
IF_RESUME_PAUSEBUTTON(2121),
|
||||||
|
IF_SETFILLCOLOUR(2123),
|
||||||
|
IF_SETLINEDIRECTION(2126),
|
||||||
|
IF_SETOBJECT(2200),
|
||||||
|
IF_SETNPCHEAD(2201),
|
||||||
|
IF_SETPLAYERHEAD_SELF(2202),
|
||||||
|
IF_SETOBJECT_NONUM(2205),
|
||||||
|
IF_SETOBJECT_ALWAYS_NUM(2212),
|
||||||
|
IF_SETOP(2300),
|
||||||
|
IF_SETDRAGGABLE(2301),
|
||||||
|
IF_SETDRAGGABLEBEHAVIOR(2302),
|
||||||
|
IF_SETDRAGDEADZONE(2303),
|
||||||
|
IF_SETDRAGDEADTIME(2304),
|
||||||
|
IF_SETOPBASE(2305),
|
||||||
|
IF_SETTARGETVERB(2306),
|
||||||
|
IF_CLEAROPS(2307),
|
||||||
|
IF_SETOPKEY(2350),
|
||||||
|
IF_SETOPTKEY(2351),
|
||||||
|
IF_SETOPKEYRATE(2352),
|
||||||
|
IF_SETOPTKEYRATE(2353),
|
||||||
|
IF_SETOPKEYIGNOREHELD(2354),
|
||||||
|
IF_SETOPTKEYIGNOREHELD(2355),
|
||||||
|
IF_SETONCLICK(2400),
|
||||||
|
IF_SETONHOLD(2401),
|
||||||
|
IF_SETONRELEASE(2402),
|
||||||
|
IF_SETONMOUSEOVER(2403),
|
||||||
|
IF_SETONMOUSELEAVE(2404),
|
||||||
|
IF_SETONDRAG(2405),
|
||||||
|
IF_SETONTARGETLEAVE(2406),
|
||||||
|
IF_SETONVARTRANSMIT(2407),
|
||||||
|
IF_SETONTIMER(2408),
|
||||||
|
IF_SETONOP(2409),
|
||||||
|
IF_SETONDRAGCOMPLETE(2410),
|
||||||
|
IF_SETONCLICKREPEAT(2411),
|
||||||
|
IF_SETONMOUSEREPEAT(2412),
|
||||||
|
IF_SETONINVTRANSMIT(2414),
|
||||||
|
IF_SETONSTATTRANSMIT(2415),
|
||||||
|
IF_SETONTARGETENTER(2416),
|
||||||
|
IF_SETONSCROLLWHEEL(2417),
|
||||||
|
IF_SETONCHATTRANSMIT(2418),
|
||||||
|
IF_SETONKEY(2419),
|
||||||
|
IF_SETONFRIENDTRANSMIT(2420),
|
||||||
|
IF_SETONCLANTRANSMIT(2421),
|
||||||
|
IF_SETONMISCTRANSMIT(2422),
|
||||||
|
IF_SETONDIALOGABORT(2423),
|
||||||
|
IF_SETONSUBCHANGE(2424),
|
||||||
|
IF_SETONSTOCKTRANSMIT(2425),
|
||||||
|
IF_SETONRESIZE(2427),
|
||||||
|
IF_GETX(2500),
|
||||||
|
IF_GETY(2501),
|
||||||
|
IF_GETWIDTH(2502),
|
||||||
|
IF_GETHEIGHT(2503),
|
||||||
|
IF_GETHIDE(2504),
|
||||||
|
IF_GETLAYER(2505),
|
||||||
|
IF_GETSCROLLX(2600),
|
||||||
|
IF_GETSCROLLY(2601),
|
||||||
|
IF_GETTEXT(2602),
|
||||||
|
IF_GETSCROLLWIDTH(2603),
|
||||||
|
IF_GETSCROLLHEIGHT(2604),
|
||||||
|
IF_GETMODELZOOM(2605),
|
||||||
|
IF_GETMODELANGLE_X(2606),
|
||||||
|
IF_GETMODELANGLE_Z(2607),
|
||||||
|
IF_GETMODELANGLE_Y(2608),
|
||||||
|
IF_GETTRANS(2609),
|
||||||
|
IF_GETCOLOUR(2611),
|
||||||
|
IF_GETFILLCOLOUR(2612),
|
||||||
|
IF_GETINVOBJECT(2700),
|
||||||
|
IF_GETINVCOUNT(2701),
|
||||||
|
IF_HASSUB(2702),
|
||||||
|
IF_GETTOP(2706),
|
||||||
|
IF_GETTARGETMASK(2800),
|
||||||
|
IF_GETOP(2801),
|
||||||
|
IF_GETOPBASE(2802),
|
||||||
|
IF_CALLONRESIZE(2927),
|
||||||
|
MES(3100),
|
||||||
|
ANIM(3101),
|
||||||
|
IF_CLOSE(3103),
|
||||||
|
RESUME_COUNTDIALOG(3104),
|
||||||
|
RESUME_NAMEDIALOG(3105),
|
||||||
|
RESUME_STRINGDIALOG(3106),
|
||||||
|
OPPLAYER(3107),
|
||||||
|
IF_DRAGPICKUP(3108),
|
||||||
|
CC_DRAGPICKUP(3109),
|
||||||
|
MOUSECAM(3110),
|
||||||
|
GETREMOVEROOFS(3111),
|
||||||
|
SETREMOVEROOFS(3112),
|
||||||
|
OPENURL(3113),
|
||||||
|
RESUME_OBJDIALOG(3115),
|
||||||
|
BUG_REPORT(3116),
|
||||||
|
SETSHIFTCLICKDROP(3117),
|
||||||
|
SETSHOWMOUSEOVERTEXT(3118),
|
||||||
|
RENDERSELF(3119),
|
||||||
|
SETSHOWMOUSECROSS(3125),
|
||||||
|
SETSHOWLOADINGMESSAGES(3126),
|
||||||
|
SETTAPTODROP(3127),
|
||||||
|
GETTAPTODROP(3128),
|
||||||
|
SETOCULUSORBSPEED(3129),
|
||||||
|
GETCANVASSIZE(3132),
|
||||||
|
SETHIDEUSERNAME(3141),
|
||||||
|
GETHIDEUSERNAME(3142),
|
||||||
|
SETREMEMBERUSERNAME(3143),
|
||||||
|
GETREMEMBERUSERNAME(3144),
|
||||||
|
SETTITLEMUSICENABLED(3146),
|
||||||
|
GETTITLEMUSICENABLED(3147),
|
||||||
|
SOUND_SYNTH(3200),
|
||||||
|
SOUND_SONG(3201),
|
||||||
|
SOUND_JINGLE(3202),
|
||||||
|
CLIENTCLOCK(3300),
|
||||||
|
INV_GETOBJ(3301),
|
||||||
|
INV_GETNUM(3302),
|
||||||
|
INV_TOTAL(3303),
|
||||||
|
INV_SIZE(3304),
|
||||||
|
STAT(3305),
|
||||||
|
STAT_BASE(3306),
|
||||||
|
STAT_XP(3307),
|
||||||
|
COORD(3308),
|
||||||
|
COORDX(3309),
|
||||||
|
COORDZ(3310),
|
||||||
|
COORDY(3311),
|
||||||
|
MAP_MEMBERS(3312),
|
||||||
|
INVOTHER_GETOBJ(3313),
|
||||||
|
INVOTHER_GETNUM(3314),
|
||||||
|
INVOTHER_TOTAL(3315),
|
||||||
|
STAFFMODLEVEL(3316),
|
||||||
|
REBOOTTIMER(3317),
|
||||||
|
MAP_WORLD(3318),
|
||||||
|
RUNENERGY_VISIBLE(3321),
|
||||||
|
RUNWEIGHT_VISIBLE(3322),
|
||||||
|
PLAYERMOD(3323),
|
||||||
|
WORLDFLAGS(3324),
|
||||||
|
MOVECOORD(3325),
|
||||||
|
ENUM_STRING(3400),
|
||||||
|
ENUM(3408),
|
||||||
|
ENUM_GETOUTPUTCOUNT(3411),
|
||||||
|
FRIEND_COUNT(3600),
|
||||||
|
FRIEND_GETNAME(3601),
|
||||||
|
FRIEND_GETWORLD(3602),
|
||||||
|
FRIEND_GETRANK(3603),
|
||||||
|
FRIEND_SETRANK(3604),
|
||||||
|
FRIEND_ADD(3605),
|
||||||
|
FRIEND_DEL(3606),
|
||||||
|
IGNORE_ADD(3607),
|
||||||
|
IGNORE_DEL(3608),
|
||||||
|
FRIEND_TEST(3609),
|
||||||
|
CLAN_GETCHATDISPLAYNAME(3611),
|
||||||
|
CLAN_GETCHATCOUNT(3612),
|
||||||
|
CLAN_GETCHATUSERNAME(3613),
|
||||||
|
CLAN_GETCHATUSERWORLD(3614),
|
||||||
|
CLAN_GETCHATUSERRANK(3615),
|
||||||
|
CLAN_GETCHATMINKICK(3616),
|
||||||
|
CLAN_KICKUSER(3617),
|
||||||
|
CLAN_GETCHATRANK(3618),
|
||||||
|
CLAN_JOINCHAT(3619),
|
||||||
|
CLAN_LEAVECHAT(3620),
|
||||||
|
IGNORE_COUNT(3621),
|
||||||
|
IGNORE_GETNAME(3622),
|
||||||
|
IGNORE_TEST(3623),
|
||||||
|
CLAN_ISSELF(3624),
|
||||||
|
CLAN_GETCHATOWNERNAME(3625),
|
||||||
|
CLAN_ISFRIEND(3626),
|
||||||
|
CLAN_ISIGNORE(3627),
|
||||||
|
STOCKMARKET_GETOFFERTYPE(3903),
|
||||||
|
STOCKMARKET_GETOFFERITEM(3904),
|
||||||
|
STOCKMARKET_GETOFFERPRICE(3905),
|
||||||
|
STOCKMARKET_GETOFFERCOUNT(3906),
|
||||||
|
STOCKMARKET_GETOFFERCOMPLETEDCOUNT(3907),
|
||||||
|
STOCKMARKET_GETOFFERCOMPLETEDGOLD(3908),
|
||||||
|
STOCKMARKET_ISOFFEREMPTY(3910),
|
||||||
|
STOCKMARKET_ISOFFERSTABLE(3911),
|
||||||
|
STOCKMARKET_ISOFFERFINISHED(3912),
|
||||||
|
STOCKMARKET_ISOFFERADDING(3913),
|
||||||
|
TRADINGPOST_SORTBY_NAME(3914),
|
||||||
|
TRADINGPOST_SORTBY_PRICE(3915),
|
||||||
|
TRADINGPOST_SORTFILTERBY_WORLD(3916),
|
||||||
|
TRADINGPOST_SORTBY_AGE(3917),
|
||||||
|
TRADINGPOST_SORTBY_COUNT(3918),
|
||||||
|
TRADINGPOST_GETTOTALOFFERS(3919),
|
||||||
|
TRADINGPOST_GETOFFERWORLD(3920),
|
||||||
|
TRADINGPOST_GETOFFERNAME(3921),
|
||||||
|
TRADINGPOST_GETOFFERPREVIOUSNAME(3922),
|
||||||
|
TRADINGPOST_GETOFFERAGE(3923),
|
||||||
|
TRADINGPOST_GETOFFERCOUNT(3924),
|
||||||
|
TRADINGPOST_GETOFFERPRICE(3925),
|
||||||
|
TRADINGPOST_GETOFFERITEM(3926),
|
||||||
|
ADD(4000),
|
||||||
|
SUB(4001),
|
||||||
|
MULTIPLY(4002),
|
||||||
|
DIV(4003),
|
||||||
|
RANDOM(4004),
|
||||||
|
RANDOMINC(4005),
|
||||||
|
INTERPOLATE(4006),
|
||||||
|
ADDPERCENT(4007),
|
||||||
|
SETBIT(4008),
|
||||||
|
CLEARBIT(4009),
|
||||||
|
TESTBIT(4010),
|
||||||
|
MOD(4011),
|
||||||
|
POW(4012),
|
||||||
|
INVPOW(4013),
|
||||||
|
AND(4014),
|
||||||
|
OR(4015),
|
||||||
|
SCALE(4018),
|
||||||
|
APPEND_NUM(4100),
|
||||||
|
APPEND(4101),
|
||||||
|
APPEND_SIGNNUM(4102),
|
||||||
|
LOWERCASE(4103),
|
||||||
|
FROMDATE(4104),
|
||||||
|
TEXT_GENDER(4105),
|
||||||
|
TOSTRING(4106),
|
||||||
|
COMPARE(4107),
|
||||||
|
PARAHEIGHT(4108),
|
||||||
|
PARAWIDTH(4109),
|
||||||
|
TEXT_SWITCH(4110),
|
||||||
|
ESCAPE(4111),
|
||||||
|
APPEND_CHAR(4112),
|
||||||
|
CHAR_ISPRINTABLE(4113),
|
||||||
|
CHAR_ISALPHANUMERIC(4114),
|
||||||
|
CHAR_ISALPHA(4115),
|
||||||
|
CHAR_ISNUMERIC(4116),
|
||||||
|
STRING_LENGTH(4117),
|
||||||
|
SUBSTRING(4118),
|
||||||
|
REMOVETAGS(4119),
|
||||||
|
STRING_INDEXOF_CHAR(4120),
|
||||||
|
STRING_INDEXOF_STRING(4121),
|
||||||
|
UPPERCASE(4122),
|
||||||
|
OC_NAME(4200),
|
||||||
|
OC_OP(4201),
|
||||||
|
OC_IOP(4202),
|
||||||
|
OC_COST(4203),
|
||||||
|
OC_STACKABLE(4204),
|
||||||
|
OC_CERT(4205),
|
||||||
|
OC_UNCERT(4206),
|
||||||
|
OC_MEMBERS(4207),
|
||||||
|
OC_PLACEHOLDER(4208),
|
||||||
|
OC_UNPLACEHOLDER(4209),
|
||||||
|
OC_FIND(4210),
|
||||||
|
OC_FINDNEXT(4211),
|
||||||
|
OC_FINDRESET(4212),
|
||||||
|
CHAT_GETFILTER_PUBLIC(5000),
|
||||||
|
CHAT_SETFILTER(5001),
|
||||||
|
CHAT_SENDABUSEREPORT(5002),
|
||||||
|
CHAT_GETHISTORY_BYTYPEANDLINE(5003),
|
||||||
|
CHAT_GETHISTORY_BYUID(5004),
|
||||||
|
CHAT_GETFILTER_PRIVATE(5005),
|
||||||
|
CHAT_SENDPUBLIC(5008),
|
||||||
|
CHAT_SENDPRIVATE(5009),
|
||||||
|
CHAT_PLAYERNAME(5015),
|
||||||
|
CHAT_GETFILTER_TRADE(5016),
|
||||||
|
CHAT_GETHISTORYLENGTH(5017),
|
||||||
|
CHAT_GETNEXTUID(5018),
|
||||||
|
CHAT_GETPREVUID(5019),
|
||||||
|
DOCHEAT(5020),
|
||||||
|
CHAT_SETMESSAGEFILTER(5021),
|
||||||
|
CHAT_GETMESSAGEFILTER(5022),
|
||||||
|
GETWINDOWMODE(5306),
|
||||||
|
SETWINDOWMODE(5307),
|
||||||
|
GETDEFAULTWINDOWMODE(5308),
|
||||||
|
SETDEFAULTWINDOWMODE(5309),
|
||||||
|
CAM_FORCEANGLE(5504),
|
||||||
|
CAM_GETANGLE_XA(5505),
|
||||||
|
CAM_GETANGLE_YA(5506),
|
||||||
|
CAM_SETFOLLOWHEIGHT(5530),
|
||||||
|
CAM_GETFOLLOWHEIGHT(5531),
|
||||||
|
LOGOUT(5630),
|
||||||
|
VIEWPORT_SETFOV(6200),
|
||||||
|
VIEWPORT_SETZOOM(6201),
|
||||||
|
VIEWPORT_CLAMPFOV(6202),
|
||||||
|
VIEWPORT_GETEFFECTIVESIZE(6203),
|
||||||
|
VIEWPORT_GETZOOM(6204),
|
||||||
|
VIEWPORT_GETFOV(6205),
|
||||||
|
WORLDLIST_FETCH(6500),
|
||||||
|
WORLDLIST_START(6501),
|
||||||
|
WORLDLIST_NEXT(6502),
|
||||||
|
WORLDLIST_SPECIFIC(6506),
|
||||||
|
WORLDLIST_SORT(6507),
|
||||||
|
GETWORLDINFO(6511),
|
||||||
|
SETFOLLOWEROPSLOWPRIORITY(6512),
|
||||||
|
NC_PARAM(6513),
|
||||||
|
LC_PARAM(6514),
|
||||||
|
OC_PARAM(6515),
|
||||||
|
STRUCT_PARAM(6516),
|
||||||
|
ON_MOBILE(6518),
|
||||||
|
CLIENTTYPE(6519),
|
||||||
|
BATTERYLEVEL(6524),
|
||||||
|
BATTERYCHARGING(6525),
|
||||||
|
WIFIAVAILABLE(6526),
|
||||||
|
WORLDMAP_GETMAPNAME(6601),
|
||||||
|
WORLDMAP_SETMAP(6602),
|
||||||
|
WORLDMAP_GETZOOM(6603),
|
||||||
|
WORLDMAP_SETZOOM(6604),
|
||||||
|
WORLDMAP_ISLOADED(6605),
|
||||||
|
WORLDMAP_JUMPTODISPLAYCOORD(6606),
|
||||||
|
WORLDMAP_JUMPTODISPLAYCOORD_INSTANT(6607),
|
||||||
|
WORLDMAP_JUMPTOSOURCECOORD(6608),
|
||||||
|
WORLDMAP_JUMPTOSOURCECOORD_INSTANT(6609),
|
||||||
|
WORLDMAP_GETDISPLAYPOSITION(6610),
|
||||||
|
WORLDMAP_GETCONFIGORIGIN(6611),
|
||||||
|
WORLDMAP_GETCONFIGSIZE(6612),
|
||||||
|
WORLDMAP_GETCONFIGBOUNDS(6613),
|
||||||
|
WORLDMAP_GETCONFIGZOOM(6614),
|
||||||
|
WORLDMAP_GETCURRENTMAP(6616),
|
||||||
|
WORLDMAP_GETDISPLAYCOORD(6617),
|
||||||
|
WORLDMAP_COORDINMAP(6621),
|
||||||
|
WORLDMAP_GETSIZE(6622),
|
||||||
|
WORLDMAP_PERPETUALFLASH(6628),
|
||||||
|
WORLDMAP_FLASHELEMENT(6629),
|
||||||
|
WORLDMAP_FLASHELEMENTCATEGORY(6630),
|
||||||
|
WORLDMAP_STOPCURRENTFLASHES(6631),
|
||||||
|
WORLDMAP_DISABLEELEMENTS(6632),
|
||||||
|
WORLDMAP_DISABLEELEMENT(6633),
|
||||||
|
WORLDMAP_DISABLEELEMENTCATEGORY(6634),
|
||||||
|
WORLDMAP_GETDISABLEELEMENTS(6635),
|
||||||
|
WORLDMAP_GETDISABLEELEMENT(6636),
|
||||||
|
WORLDMAP_GETDISABLEELEMENTCATEGORY(6637),
|
||||||
|
WORLDMAP_LISTELEMENT_START(6639),
|
||||||
|
WORLDMAP_LISTELEMENT_NEXT(6640),
|
||||||
|
MEC_TEXT(6693),
|
||||||
|
MEC_TEXTSIZE(6694),
|
||||||
|
MEC_CATEGORY(6695),
|
||||||
|
MEC_SPRITE(6696);
|
||||||
|
|
||||||
|
public final int opcode;
|
||||||
|
|
||||||
|
ScriptOpcode(int opcode)
|
||||||
|
{
|
||||||
|
this.opcode = opcode;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final Map<Integer, ScriptOpcode> map;
|
||||||
|
|
||||||
|
static
|
||||||
|
{
|
||||||
|
ImmutableMap.Builder<Integer, ScriptOpcode> builder = ImmutableMap.builder();
|
||||||
|
|
||||||
|
for (ScriptOpcode value : values())
|
||||||
|
{
|
||||||
|
builder.put(value.opcode, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
map = builder.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String nameFromID(int opcode)
|
||||||
|
{
|
||||||
|
ScriptOpcode op = map.get(opcode);
|
||||||
|
|
||||||
|
if (op == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return op.name();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -24,9 +24,12 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.deob.updater;
|
package net.runelite.deob.updater;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import net.runelite.asm.ClassFile;
|
import net.runelite.asm.ClassFile;
|
||||||
import net.runelite.asm.ClassGroup;
|
import net.runelite.asm.ClassGroup;
|
||||||
import net.runelite.asm.Method;
|
import net.runelite.asm.Method;
|
||||||
|
import net.runelite.asm.attributes.code.LocalVariable;
|
||||||
|
import net.runelite.asm.attributes.code.Parameter;
|
||||||
import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping;
|
import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping;
|
||||||
|
|
||||||
public class ParameterRenamer
|
public class ParameterRenamer
|
||||||
@@ -49,9 +52,39 @@ public class ParameterRenamer
|
|||||||
for (Method sourceM : sourceCF.getMethods())
|
for (Method sourceM : sourceCF.getMethods())
|
||||||
{
|
{
|
||||||
Method destM = (Method) mapping.get(sourceM);
|
Method destM = (Method) mapping.get(sourceM);
|
||||||
if (destM != null)
|
if (sourceM.getParameters() != null && !sourceM.getParameters().isEmpty() && destM.getParameters().size() >= 1)
|
||||||
{
|
{
|
||||||
destM.setParameters(sourceM.getParameters());
|
List<Parameter> oldParams = destM.getParameters();
|
||||||
|
for (int i = 0; i < sourceM.getParameters().size(); i++)
|
||||||
|
{
|
||||||
|
String name = sourceM.getParameters().get(i).getName();
|
||||||
|
if (name.matches("arg[0-9]") || name.length() <= 2 && (name.charAt(0) != 'x' || name.charAt(0) != 'y'))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Parameter oldParam = oldParams.get(i);
|
||||||
|
LocalVariable oldVar = oldParam.getLocalVariable();
|
||||||
|
|
||||||
|
Parameter newParam = new Parameter(name, oldParam.getAccess());
|
||||||
|
oldParams.set(i, newParam);
|
||||||
|
|
||||||
|
if (oldVar == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
LocalVariable newVar = new LocalVariable(
|
||||||
|
name,
|
||||||
|
oldVar.getDesc(),
|
||||||
|
oldVar.getSignature(),
|
||||||
|
oldVar.getStart(),
|
||||||
|
oldVar.getEnd(),
|
||||||
|
oldVar.getIndex()
|
||||||
|
);
|
||||||
|
|
||||||
|
newParam.setLocalVariable(newVar);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import net.runelite.deob.deobfuscators.mapping.AnnotationIntegrityChecker;
|
|||||||
import net.runelite.deob.deobfuscators.mapping.AnnotationMapper;
|
import net.runelite.deob.deobfuscators.mapping.AnnotationMapper;
|
||||||
import net.runelite.deob.deobfuscators.mapping.Mapper;
|
import net.runelite.deob.deobfuscators.mapping.Mapper;
|
||||||
import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping;
|
import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping;
|
||||||
|
import net.runelite.deob.deobfuscators.transformers.ScriptOpcodesTransformer;
|
||||||
import net.runelite.deob.util.JarUtil;
|
import net.runelite.deob.util.JarUtil;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -72,6 +73,8 @@ public class UpdateMappings
|
|||||||
|
|
||||||
ParameterRenamer pr = new ParameterRenamer(group1, group2, mapping);
|
ParameterRenamer pr = new ParameterRenamer(group1, group2, mapping);
|
||||||
pr.run();
|
pr.run();
|
||||||
|
|
||||||
|
new ScriptOpcodesTransformer().transform(group2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void save(File out) throws IOException
|
public void save(File out) throws IOException
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package net.runelite.deob.updater;
|
package net.runelite.deob.updater;
|
||||||
|
|
||||||
|
import com.google.common.base.Strings;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import net.runelite.asm.ClassFile;
|
import net.runelite.asm.ClassFile;
|
||||||
import net.runelite.asm.ClassGroup;
|
import net.runelite.asm.ClassGroup;
|
||||||
@@ -39,6 +40,12 @@ public class AnnotationCleaner
|
|||||||
|
|
||||||
log.debug("Checking {}", c.toString());
|
log.debug("Checking {}", c.toString());
|
||||||
|
|
||||||
|
String implementingName = DeobAnnotations.getImplements(c);
|
||||||
|
if (!Strings.isNullOrEmpty(implementingName))
|
||||||
|
{
|
||||||
|
assertEquals(c + " implements " + implementingName + " but is called " + c.getClassName(), implementingName, c.getClassName());
|
||||||
|
}
|
||||||
|
|
||||||
for (Field f : c.getFields())
|
for (Field f : c.getFields())
|
||||||
{
|
{
|
||||||
Annotations an = f.getAnnotations();
|
Annotations an = f.getAnnotations();
|
||||||
@@ -48,11 +55,11 @@ public class AnnotationCleaner
|
|||||||
|
|
||||||
if (exportedName == null)
|
if (exportedName == null)
|
||||||
{
|
{
|
||||||
assertTrue("Field " + fieldName + " isn't obfuscated but doesn't have @Export.", Deob.isObfuscated(fieldName) || fieldName.contains("$"));
|
assertTrue("Field " + c.getClassName() + '.' + fieldName + " isn't obfuscated but doesn't have @Export.", Deob.isObfuscated(fieldName) || fieldName.equals(DeobAnnotations.getObfuscatedName(an)) || DeobAnnotations.getObfuscatedName(an) == null);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
assertEquals("Field " + fieldName + " has " + exportedName + " in @Export", fieldName, exportedName);
|
assertEquals("Field " + c.getClassName() + '.' + fieldName + " has " + exportedName + " in @Export", fieldName, exportedName);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Method m : c.getMethods())
|
for (Method m : c.getMethods())
|
||||||
@@ -64,11 +71,11 @@ public class AnnotationCleaner
|
|||||||
|
|
||||||
if (exportedName == null)
|
if (exportedName == null)
|
||||||
{
|
{
|
||||||
assertTrue("Method " + fieldName + " isn't obfuscated but doesn't have @Export.", Deob.isObfuscated(fieldName) || fieldName.endsWith("init>") || fieldName.equals("values") || fieldName.equals("valueOf") || fieldName.startsWith("compareTo") || fieldName.equals("equals") || fieldName.equals("hashCode") || fieldName.equals("compare"));
|
assertTrue("Method " + c.getClassName() + '.' + fieldName + " isn't obfuscated but doesn't have @Export.", Deob.isObfuscated(fieldName) || fieldName.equals(DeobAnnotations.getObfuscatedName(an)) || DeobAnnotations.getObfuscatedName(an) == null);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
assertEquals("Method " + fieldName + " has " + exportedName + " in @Export", fieldName, exportedName);
|
assertEquals("Method " + c.getClassName() + '.' + fieldName + " has " + exportedName + " in @Export", fieldName, exportedName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ import net.runelite.deob.deobfuscators.mapping.AnnotationIntegrityChecker;
|
|||||||
import net.runelite.deob.deobfuscators.mapping.AnnotationMapper;
|
import net.runelite.deob.deobfuscators.mapping.AnnotationMapper;
|
||||||
import net.runelite.deob.deobfuscators.mapping.Mapper;
|
import net.runelite.deob.deobfuscators.mapping.Mapper;
|
||||||
import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping;
|
import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping;
|
||||||
|
import net.runelite.deob.deobfuscators.transformers.ScriptOpcodesTransformer;
|
||||||
import net.runelite.deob.util.JarUtil;
|
import net.runelite.deob.util.JarUtil;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Ignore;
|
import org.junit.Ignore;
|
||||||
@@ -87,6 +88,19 @@ public class UpdateMappingsTest
|
|||||||
check(group1, group2);
|
check(group1, group2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Ignore
|
||||||
|
public void testScriptopcodes() throws Exception
|
||||||
|
{
|
||||||
|
File client = new File("C:\\Users\\Lucas\\IdeaProjects\\runelitexxx\\client.jar");
|
||||||
|
|
||||||
|
ClassGroup group = JarUtil.loadJar(client);
|
||||||
|
|
||||||
|
new ScriptOpcodesTransformer().transform(group);
|
||||||
|
|
||||||
|
JarUtil.saveJar(group, new File("C:/Users/Lucas/Desktop/Apapapapapap.jar"));
|
||||||
|
}
|
||||||
|
|
||||||
private void unannotate(ClassGroup group)
|
private void unannotate(ClassGroup group)
|
||||||
{
|
{
|
||||||
for (ClassFile cf : group.getClasses())
|
for (ClassFile cf : group.getClasses())
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ public class HookClass
|
|||||||
@SerializedName("class")
|
@SerializedName("class")
|
||||||
String clazz;
|
String clazz;
|
||||||
String name;
|
String name;
|
||||||
int access;
|
|
||||||
List<HookField> fields;
|
List<HookField> fields;
|
||||||
List<HookMethod> methods;
|
List<HookMethod> methods;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ public class HookField
|
|||||||
String field;
|
String field;
|
||||||
String owner;
|
String owner;
|
||||||
String name;
|
String name;
|
||||||
int access;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString()
|
public String toString()
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ import net.runelite.asm.Type;
|
|||||||
import net.runelite.asm.attributes.Annotations;
|
import net.runelite.asm.attributes.Annotations;
|
||||||
import net.runelite.asm.attributes.annotation.Annotation;
|
import net.runelite.asm.attributes.annotation.Annotation;
|
||||||
import net.runelite.asm.attributes.annotation.Element;
|
import net.runelite.asm.attributes.annotation.Element;
|
||||||
|
import net.runelite.asm.attributes.code.LocalVariable;
|
||||||
|
import net.runelite.asm.attributes.code.Parameter;
|
||||||
import net.runelite.asm.signature.Signature;
|
import net.runelite.asm.signature.Signature;
|
||||||
import net.runelite.asm.signature.util.VirtualMethods;
|
import net.runelite.asm.signature.util.VirtualMethods;
|
||||||
import static net.runelite.deob.DeobAnnotations.EXPORT;
|
import static net.runelite.deob.DeobAnnotations.EXPORT;
|
||||||
@@ -97,7 +99,7 @@ public class HookImporter
|
|||||||
@Ignore
|
@Ignore
|
||||||
public void importHooks()
|
public void importHooks()
|
||||||
{
|
{
|
||||||
int classes = 0, fields = 0, methods = 0, access = 0;
|
int classes = 0, fields = 0, methods = 0, params = 0;
|
||||||
NameMappings mappings = new NameMappings();
|
NameMappings mappings = new NameMappings();
|
||||||
|
|
||||||
for (HookClass hc : hooks)
|
for (HookClass hc : hooks)
|
||||||
@@ -107,12 +109,6 @@ public class HookImporter
|
|||||||
|
|
||||||
assert cf != null;
|
assert cf != null;
|
||||||
|
|
||||||
if (cf.getAccess() != hc.access)
|
|
||||||
{
|
|
||||||
cf.setAccess(hc.access);
|
|
||||||
++access;
|
|
||||||
}
|
|
||||||
|
|
||||||
String implementsName = getAnnotation(cf.getAnnotations(), IMPLEMENTS);
|
String implementsName = getAnnotation(cf.getAnnotations(), IMPLEMENTS);
|
||||||
if (implementsName.isEmpty())
|
if (implementsName.isEmpty())
|
||||||
{
|
{
|
||||||
@@ -122,23 +118,28 @@ public class HookImporter
|
|||||||
++classes;
|
++classes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!implementsName.isEmpty() && !implementsName.equals(hc.clazz))
|
||||||
|
{
|
||||||
|
logger.info("Runestar calls class {} {}, while we call it {}", hc.name, hc.clazz, implementsName);
|
||||||
|
}
|
||||||
|
|
||||||
for (HookField fh : hc.fields)
|
for (HookField fh : hc.fields)
|
||||||
{
|
{
|
||||||
|
if (fh.field.startsWith("__"))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
ClassFile cf2 = findClassWithObfuscatedName(fh.owner);
|
ClassFile cf2 = findClassWithObfuscatedName(fh.owner);
|
||||||
assert cf2 != null;
|
assert cf2 != null;
|
||||||
|
|
||||||
Field f = findFieldWithObfuscatedName(cf2, fh.name);
|
Field f = findFieldWithObfuscatedName(cf2, fh.name);
|
||||||
if (f == null)
|
if (f == null)
|
||||||
{
|
{
|
||||||
|
logger.warn("Missing field {}", fh); // inlined constant maybe?
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (f.getAccessFlags() != fh.access)
|
|
||||||
{
|
|
||||||
f.setAccessFlags(fh.access);
|
|
||||||
++access;
|
|
||||||
}
|
|
||||||
|
|
||||||
String exportedName = getAnnotation(f.getAnnotations(), EXPORT);
|
String exportedName = getAnnotation(f.getAnnotations(), EXPORT);
|
||||||
if (exportedName.isEmpty())
|
if (exportedName.isEmpty())
|
||||||
{
|
{
|
||||||
@@ -155,11 +156,20 @@ public class HookImporter
|
|||||||
mappings.map(f.getPoolField(), deobfuscatedFieldName);
|
mappings.map(f.getPoolField(), deobfuscatedFieldName);
|
||||||
++fields;
|
++fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!exportedName.isEmpty() && !exportedName.equals(fh.field))
|
||||||
|
{
|
||||||
|
logger.info("Runestar calls field {}.{} {}, while we call it {}", fh.owner, fh.name, fh.field, exportedName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
outer:
|
outer:
|
||||||
for (HookMethod hm : hc.methods)
|
for (HookMethod hm : hc.methods)
|
||||||
{
|
{
|
||||||
|
if (hm.method.startsWith("__"))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
ClassFile cf2 = findClassWithObfuscatedName(hm.owner);
|
ClassFile cf2 = findClassWithObfuscatedName(hm.owner);
|
||||||
assert cf2 != null;
|
assert cf2 != null;
|
||||||
@@ -171,10 +181,40 @@ public class HookImporter
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m.getAccessFlags() != hm.access)
|
if (hm.parameters != null && !hm.parameters.isEmpty() && m.getParameters().size() >= 1)
|
||||||
{
|
{
|
||||||
m.setAccessFlags(hm.access);
|
List<Parameter> oldParams = m.getParameters();
|
||||||
++access;
|
for (int i = 0; i < hm.parameters.size(); i++)
|
||||||
|
{
|
||||||
|
String name = hm.parameters.get(i);
|
||||||
|
if (name.matches("arg[0-9]") || name.length() <= 2 && (name.charAt(0) != 'x' && name.charAt(0) != 'y'))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Parameter oldParam = oldParams.get(i);
|
||||||
|
LocalVariable oldVar = oldParam.getLocalVariable();
|
||||||
|
|
||||||
|
Parameter newParam = new Parameter(name, oldParam.getAccess());
|
||||||
|
oldParams.set(i, newParam);
|
||||||
|
params++;
|
||||||
|
|
||||||
|
if (oldVar == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
LocalVariable newVar = new LocalVariable(
|
||||||
|
name,
|
||||||
|
oldVar.getDesc(),
|
||||||
|
oldVar.getSignature(),
|
||||||
|
oldVar.getStart(),
|
||||||
|
oldVar.getEnd(),
|
||||||
|
oldVar.getIndex()
|
||||||
|
);
|
||||||
|
|
||||||
|
newParam.setLocalVariable(newVar);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// maybe only the base class method is exported
|
// maybe only the base class method is exported
|
||||||
@@ -184,6 +224,10 @@ public class HookImporter
|
|||||||
String exportedName = getAnnotation(method.getAnnotations(), EXPORT);
|
String exportedName = getAnnotation(method.getAnnotations(), EXPORT);
|
||||||
if (!exportedName.isEmpty())
|
if (!exportedName.isEmpty())
|
||||||
{
|
{
|
||||||
|
if (!exportedName.equals(hm.method))
|
||||||
|
{
|
||||||
|
logger.info("Runestar calls {}.{} {}, while we call it {}", hm.owner, hm.name, hm.method, exportedName);
|
||||||
|
}
|
||||||
continue outer;
|
continue outer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -198,7 +242,7 @@ public class HookImporter
|
|||||||
Renamer renamer = new Renamer(mappings);
|
Renamer renamer = new Renamer(mappings);
|
||||||
renamer.run(group);
|
renamer.run(group);
|
||||||
|
|
||||||
logger.info("Imported {} classes, {} fields, {} methods, {} access levels", classes, fields, methods, access);
|
logger.info("Imported {} classes, {} fields, {} methods, {} params", classes, fields, methods, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ClassFile findClassWithObfuscatedName(String name)
|
private ClassFile findClassWithObfuscatedName(String name)
|
||||||
@@ -259,8 +303,7 @@ public class HookImporter
|
|||||||
{
|
{
|
||||||
for (Element e : a.getElements())
|
for (Element e : a.getElements())
|
||||||
{
|
{
|
||||||
String str = (String) e.getValue();
|
return (String) e.getValue();
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,13 +313,13 @@ public class HookImporter
|
|||||||
private Signature getObfuscatedMethodSignature(Method method)
|
private Signature getObfuscatedMethodSignature(Method method)
|
||||||
{
|
{
|
||||||
String sig = getAnnotation(method.getAnnotations(), OBFUSCATED_SIGNATURE);
|
String sig = getAnnotation(method.getAnnotations(), OBFUSCATED_SIGNATURE);
|
||||||
if (sig.isEmpty() == false)
|
if (sig.isEmpty())
|
||||||
{
|
|
||||||
return new Signature(sig); // if it is annotated, use that
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
return method.getDescriptor();
|
return method.getDescriptor();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return new Signature(sig); // if it is annotated, use that
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
package net.runelite.runesuite;
|
package net.runelite.runesuite;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class HookMethod
|
public class HookMethod
|
||||||
{
|
{
|
||||||
String method;
|
String method;
|
||||||
String owner;
|
String owner;
|
||||||
String name;
|
String name;
|
||||||
int access;
|
List<String> parameters;
|
||||||
String[] parameters;
|
|
||||||
String descriptor;
|
String descriptor;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -33,6 +33,7 @@ import net.runelite.asm.ClassGroup;
|
|||||||
import net.runelite.asm.Method;
|
import net.runelite.asm.Method;
|
||||||
import net.runelite.asm.Type;
|
import net.runelite.asm.Type;
|
||||||
import net.runelite.asm.attributes.Annotations;
|
import net.runelite.asm.attributes.Annotations;
|
||||||
|
import net.runelite.asm.attributes.Code;
|
||||||
import net.runelite.asm.attributes.annotation.Annotation;
|
import net.runelite.asm.attributes.annotation.Annotation;
|
||||||
import net.runelite.asm.attributes.code.Instruction;
|
import net.runelite.asm.attributes.code.Instruction;
|
||||||
import net.runelite.asm.attributes.code.InstructionType;
|
import net.runelite.asm.attributes.code.InstructionType;
|
||||||
@@ -89,9 +90,9 @@ public class InjectHookMethod
|
|||||||
obfuscatedClassName = DeobAnnotations.getObfuscatedName(cf.getAnnotations());
|
obfuscatedClassName = DeobAnnotations.getObfuscatedName(cf.getAnnotations());
|
||||||
|
|
||||||
// might be a constructor
|
// might be a constructor
|
||||||
if (obfuscatedMethodName == null && method.getName().equals("<init>"))
|
if (obfuscatedMethodName == null)
|
||||||
{
|
{
|
||||||
obfuscatedMethodName = "<init>";
|
obfuscatedMethodName = method.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
assert obfuscatedClassName != null : "hook on method in class with no obfuscated name";
|
assert obfuscatedClassName != null : "hook on method in class with no obfuscated name";
|
||||||
@@ -110,7 +111,12 @@ public class InjectHookMethod
|
|||||||
|
|
||||||
private void injectHookMethod(Method hookMethod, String hookName, boolean end, Method deobMethod, Method vanillaMethod, boolean useHooks) throws InjectionException
|
private void injectHookMethod(Method hookMethod, String hookName, boolean end, Method deobMethod, Method vanillaMethod, boolean useHooks) throws InjectionException
|
||||||
{
|
{
|
||||||
Instructions instructions = vanillaMethod.getCode().getInstructions();
|
Code code = vanillaMethod.getCode();
|
||||||
|
if (code == null)
|
||||||
|
{
|
||||||
|
logger.warn(vanillaMethod + " code is null");
|
||||||
|
}
|
||||||
|
Instructions instructions = code.getInstructions();
|
||||||
|
|
||||||
Signature.Builder builder = new Signature.Builder()
|
Signature.Builder builder = new Signature.Builder()
|
||||||
.setReturnType(Type.VOID); // Hooks always return void
|
.setReturnType(Type.VOID); // Hooks always return void
|
||||||
|
|||||||
@@ -27,6 +27,33 @@ public class InjectUtil
|
|||||||
|
|
||||||
public static Method findMethod(Inject inject, String name) throws InjectionException
|
public static Method findMethod(Inject inject, String name) throws InjectionException
|
||||||
{
|
{
|
||||||
|
return findMethod(inject, name, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Method findMethod(Inject inject, String name, String hint) throws InjectionException
|
||||||
|
{
|
||||||
|
if (hint != null)
|
||||||
|
{
|
||||||
|
ClassFile c = inject.getDeobfuscated().findClass(hint);
|
||||||
|
|
||||||
|
if (c == null)
|
||||||
|
{
|
||||||
|
throw new InjectionException("Class " + hint + " doesn't exist. (check capitalization)");
|
||||||
|
}
|
||||||
|
|
||||||
|
Method deob = c.findMethod(name);
|
||||||
|
|
||||||
|
if (deob != null)
|
||||||
|
{
|
||||||
|
String obfuscatedName = DeobAnnotations.getObfuscatedName(deob.getAnnotations());
|
||||||
|
Signature obfuscatedSignature = DeobAnnotations.getObfuscatedSignature(deob);
|
||||||
|
|
||||||
|
ClassFile ob = inject.toObClass(c);
|
||||||
|
|
||||||
|
return ob.findMethod(obfuscatedName, (obfuscatedSignature != null) ? obfuscatedSignature : deob.getDescriptor());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (ClassFile c : inject.getDeobfuscated().getClasses())
|
for (ClassFile c : inject.getDeobfuscated().getClasses())
|
||||||
{
|
{
|
||||||
for (Method m : c.getMethods())
|
for (Method m : c.getMethods())
|
||||||
|
|||||||
@@ -76,8 +76,8 @@ public class DrawAfterWidgets
|
|||||||
|
|
||||||
@Export("drawLoggedIn")
|
@Export("drawLoggedIn")
|
||||||
final void drawLoggedIn() {
|
final void drawLoggedIn() {
|
||||||
if(rootWidgetGroup != -1) {
|
if(rootInterface != -1) {
|
||||||
ClientPreferences.method1809(rootWidgetGroup);
|
ClientPreferences.method1809(rootInterface);
|
||||||
}
|
}
|
||||||
|
|
||||||
int var1;
|
int var1;
|
||||||
@@ -94,9 +94,9 @@ public class DrawAfterWidgets
|
|||||||
__client_lq = -1;
|
__client_lq = -1;
|
||||||
__client_ln = -1;
|
__client_ln = -1;
|
||||||
UserComparator6.__fg_jh = null;
|
UserComparator6.__fg_jh = null;
|
||||||
if(rootWidgetGroup != -1) {
|
if(rootInterface != -1) {
|
||||||
rootWidgetCount = 0;
|
rootWidgetCount = 0;
|
||||||
Interpreter.method1977(rootWidgetGroup, 0, 0, SoundCache.canvasWidth, Huffman.canvasHeight, 0, 0, -1);
|
Interpreter.method1977(rootInterface, 0, 0, SoundCache.canvasWidth, Huffman.canvasHeight, 0, 0, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
< -- here appearantly
|
< -- here appearantly
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class RenderDraw
|
|||||||
Stopwatch stopwatch = Stopwatch.createStarted();
|
Stopwatch stopwatch = Stopwatch.createStarted();
|
||||||
|
|
||||||
net.runelite.asm.Method obmethod = findMethod(inject, "drawTile");
|
net.runelite.asm.Method obmethod = findMethod(inject, "drawTile");
|
||||||
Method renderDraw = findMethod(inject, "renderDraw").getPoolMethod();
|
Method renderDraw = findMethod(inject, "draw", "Entity").getPoolMethod();
|
||||||
|
|
||||||
Instructions ins = obmethod.getCode().getInstructions();
|
Instructions ins = obmethod.getCode().getInstructions();
|
||||||
replace(ins, renderDraw);
|
replace(ins, renderDraw);
|
||||||
@@ -69,7 +69,7 @@ public class RenderDraw
|
|||||||
}
|
}
|
||||||
else if (count != 21)
|
else if (count != 21)
|
||||||
{
|
{
|
||||||
log.warn("Found {} renderDraws while 21 were expected. Rev update?", count);
|
log.warn("Found {} draws while 21 were expected. Rev update?", count);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
* list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
|
||||||
* and/or other materials provided with the distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
package net.runelite.api;
|
|
||||||
|
|
||||||
public interface PacketBuffer
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@@ -200,4 +200,9 @@ public final class ScriptID
|
|||||||
* Join a clan, duh
|
* Join a clan, duh
|
||||||
*/
|
*/
|
||||||
public static final int CUSTOM_JOIN_CLAN = 10690;
|
public static final int CUSTOM_JOIN_CLAN = 10690;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a public message
|
||||||
|
*/
|
||||||
|
public static final int PUBLICMSG = 13337;
|
||||||
}
|
}
|
||||||
@@ -24,7 +24,9 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.api.events;
|
package net.runelite.api.events;
|
||||||
|
|
||||||
|
import lombok.AccessLevel;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.Setter;
|
||||||
import net.runelite.api.MenuAction;
|
import net.runelite.api.MenuAction;
|
||||||
import net.runelite.api.MenuEntry;
|
import net.runelite.api.MenuEntry;
|
||||||
|
|
||||||
@@ -45,6 +47,13 @@ public class MenuOptionClicked
|
|||||||
public MenuOptionClicked(MenuEntry entry)
|
public MenuOptionClicked(MenuEntry entry)
|
||||||
{
|
{
|
||||||
menuEntry = entry;
|
menuEntry = entry;
|
||||||
|
authentic = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MenuOptionClicked(MenuEntry entry, boolean authentic)
|
||||||
|
{
|
||||||
|
menuEntry = entry;
|
||||||
|
this.authentic = authentic;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -129,4 +138,10 @@ public class MenuOptionClicked
|
|||||||
{
|
{
|
||||||
this.consumed = true;
|
this.consumed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether or not the event is authentic.
|
||||||
|
*/
|
||||||
|
@Setter(AccessLevel.PRIVATE)
|
||||||
|
private boolean authentic;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,4 +35,10 @@ public final class WidgetType
|
|||||||
public static final int TEXT_INVENTORY = 7;
|
public static final int TEXT_INVENTORY = 7;
|
||||||
public static final int IF1_TOOLTIP = 8;
|
public static final int IF1_TOOLTIP = 8;
|
||||||
public static final int LINE = 9;
|
public static final int LINE = 9;
|
||||||
|
public static final int FPS = 1336;
|
||||||
|
public static final int VIEWPORT = 1337;
|
||||||
|
public static final int MINIMAP = 1338;
|
||||||
|
public static final int COMPASS = 1339;
|
||||||
|
public static final int WORLD_MAP = 1400;
|
||||||
|
public static final int WORLD_MAP_OVERVIEW = 1401;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -438,7 +438,7 @@ public class MenuManager
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onMenuOptionClicked(MenuOptionClicked event)
|
public void onMenuOptionClicked(MenuOptionClicked event)
|
||||||
{
|
{
|
||||||
if (!client.isMenuOpen())
|
if (!client.isMenuOpen() && event.isAuthentic())
|
||||||
{
|
{
|
||||||
rebuildLeftClickMenu();
|
rebuildLeftClickMenu();
|
||||||
|
|
||||||
|
|||||||
@@ -445,7 +445,7 @@ public class BoostsPlugin extends Plugin
|
|||||||
this.displayInfoboxes = config.displayInfoboxes();
|
this.displayInfoboxes = config.displayInfoboxes();
|
||||||
this.displayIcons = config.displayIcons();
|
this.displayIcons = config.displayIcons();
|
||||||
this.boldIconFont = config.boldIconFont();
|
this.boldIconFont = config.boldIconFont();
|
||||||
this.displayNextBuffChange = config.displayNextDebuffChange();
|
this.displayNextBuffChange = config.displayNextBuffChange();
|
||||||
this.displayNextDebuffChange = config.displayNextDebuffChange();
|
this.displayNextDebuffChange = config.displayNextDebuffChange();
|
||||||
this.boostThreshold = config.boostThreshold();
|
this.boostThreshold = config.boostThreshold();
|
||||||
this.groupNotifications = config.groupNotifications();
|
this.groupNotifications = config.groupNotifications();
|
||||||
|
|||||||
-128
@@ -1,128 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2018, Fluffeh <berserkfluff@gmail.com>
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
* list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
|
||||||
* and/or other materials provided with the distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
package net.runelite.client.plugins.flinching;
|
|
||||||
|
|
||||||
import java.awt.Color;
|
|
||||||
import net.runelite.client.config.Config;
|
|
||||||
import net.runelite.client.config.ConfigGroup;
|
|
||||||
import net.runelite.client.config.ConfigItem;
|
|
||||||
import net.runelite.client.config.Stub;
|
|
||||||
|
|
||||||
@ConfigGroup("flinching")
|
|
||||||
public interface FlinchingConfig extends Config
|
|
||||||
{
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "flinchStub",
|
|
||||||
name = "Flinch",
|
|
||||||
description = "",
|
|
||||||
position = 1
|
|
||||||
)
|
|
||||||
default Stub flinchStub()
|
|
||||||
{
|
|
||||||
return new Stub();
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
position = 2,
|
|
||||||
keyName = "flinchOnHitReceivedDelay",
|
|
||||||
name = "Flinch Hit Received Delay",
|
|
||||||
description = "Slightly longer delay after being attacked milliseconds",
|
|
||||||
parent = "flinchStub"
|
|
||||||
)
|
|
||||||
default int getFlinchAttackedDelay()
|
|
||||||
{
|
|
||||||
return 6600;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
position = 3,
|
|
||||||
keyName = "flinchDelay",
|
|
||||||
name = "Flinch Timer Delay",
|
|
||||||
description = "Shows the appropriate time to attack while flinching milliseconds",
|
|
||||||
parent = "flinchStub"
|
|
||||||
)
|
|
||||||
default int getFlinchDelay()
|
|
||||||
{
|
|
||||||
return 5400;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
keyName = "overlayStub",
|
|
||||||
name = "Overlay",
|
|
||||||
description = "",
|
|
||||||
position = 4
|
|
||||||
)
|
|
||||||
default Stub overlayStub()
|
|
||||||
{
|
|
||||||
return new Stub();
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
position = 5,
|
|
||||||
keyName = "flinchOverlaySize",
|
|
||||||
name = "Overlay Diameter",
|
|
||||||
description = "Flinch overlay timer diameter",
|
|
||||||
parent = "overlayStub"
|
|
||||||
)
|
|
||||||
default int getFlinchOverlaySize()
|
|
||||||
{
|
|
||||||
return 30;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
position = 6,
|
|
||||||
keyName = "hexColorFlinch",
|
|
||||||
name = "Overlay Color",
|
|
||||||
description = "Color of flinching timer overlay",
|
|
||||||
parent = "overlayStub"
|
|
||||||
)
|
|
||||||
default Color getFlinchOverlayColor()
|
|
||||||
{
|
|
||||||
return Color.CYAN;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
position = 7,
|
|
||||||
keyName = "flinchResetOnHit",
|
|
||||||
name = "Reset on Hit",
|
|
||||||
description = "Timer resets after every attack from your character"
|
|
||||||
)
|
|
||||||
default boolean getFlinchResetOnHit()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConfigItem(
|
|
||||||
position = 8,
|
|
||||||
keyName = "flinchResetOnHitReceived",
|
|
||||||
name = "Reset on Hit Received",
|
|
||||||
description = "Timer resets when your character gets attacked"
|
|
||||||
)
|
|
||||||
default boolean getFlinchResetOnHitReceived()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-115
@@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2018, Fluffeh <berserkfluff@gmail.com>
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
* list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
|
||||||
* and/or other materials provided with the distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
package net.runelite.client.plugins.flinching;
|
|
||||||
|
|
||||||
|
|
||||||
import java.awt.Color;
|
|
||||||
import java.awt.Dimension;
|
|
||||||
import java.awt.Graphics2D;
|
|
||||||
import java.util.Map;
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import javax.inject.Singleton;
|
|
||||||
import net.runelite.api.Client;
|
|
||||||
import net.runelite.api.Perspective;
|
|
||||||
import net.runelite.api.Point;
|
|
||||||
import net.runelite.api.coords.LocalPoint;
|
|
||||||
import net.runelite.api.coords.WorldPoint;
|
|
||||||
import net.runelite.client.ui.overlay.Overlay;
|
|
||||||
import net.runelite.client.ui.overlay.OverlayLayer;
|
|
||||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
|
||||||
import net.runelite.client.ui.overlay.components.ProgressPieComponent;
|
|
||||||
|
|
||||||
@Singleton
|
|
||||||
public class FlinchingOverlay extends Overlay
|
|
||||||
{
|
|
||||||
private final Client client;
|
|
||||||
private final FlinchingPlugin plugin;
|
|
||||||
|
|
||||||
private Color color;
|
|
||||||
private Color borderColor;
|
|
||||||
|
|
||||||
private int overlaySize;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
FlinchingOverlay(Client client, FlinchingPlugin plugin)
|
|
||||||
{
|
|
||||||
setPosition(OverlayPosition.DYNAMIC);
|
|
||||||
setLayer(OverlayLayer.ABOVE_SCENE);
|
|
||||||
this.plugin = plugin;
|
|
||||||
this.client = client;
|
|
||||||
|
|
||||||
overlaySize = this.plugin.getFlinchOverlaySize();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Dimension render(Graphics2D graphics)
|
|
||||||
{
|
|
||||||
drawOverlays(graphics);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateConfig()
|
|
||||||
{
|
|
||||||
borderColor = plugin.getFlinchOverlayColor();
|
|
||||||
color = new Color(borderColor.getRed(), borderColor.getGreen(), borderColor.getBlue(), 100);
|
|
||||||
|
|
||||||
overlaySize = plugin.getFlinchOverlaySize();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void drawOverlays(Graphics2D graphics)
|
|
||||||
{
|
|
||||||
for (Map.Entry<Integer, FlinchingTarget> entry : plugin.GetTargets().entrySet())
|
|
||||||
{
|
|
||||||
FlinchingTarget target = entry.getValue();
|
|
||||||
|
|
||||||
drawFlinchTimer(graphics, target.worldLocation, target.GetRemainingTimePercent());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void drawFlinchTimer(Graphics2D graphics, WorldPoint targetLocation, double fillAmount)
|
|
||||||
{
|
|
||||||
if (targetLocation.getPlane() != client.getPlane())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
LocalPoint localLoc = LocalPoint.fromWorld(client, targetLocation);
|
|
||||||
if (localLoc == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Point loc = Perspective.localToCanvas(client, localLoc, client.getPlane());
|
|
||||||
|
|
||||||
ProgressPieComponent pie = new ProgressPieComponent();
|
|
||||||
pie.setDiameter(overlaySize);
|
|
||||||
pie.setFill(color);
|
|
||||||
pie.setBorderColor(borderColor);
|
|
||||||
pie.setPosition(loc);
|
|
||||||
pie.setProgress(fillAmount);
|
|
||||||
pie.render(graphics);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-310
@@ -1,310 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2018, Fluffeh <berserkfluff@gmail.com>
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
* list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
|
||||||
* and/or other materials provided with the distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
package net.runelite.client.plugins.flinching;
|
|
||||||
|
|
||||||
import com.google.inject.Provides;
|
|
||||||
import java.awt.Color;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Map;
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import javax.inject.Singleton;
|
|
||||||
import lombok.AccessLevel;
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import net.runelite.api.Actor;
|
|
||||||
import net.runelite.api.Client;
|
|
||||||
import net.runelite.api.GameState;
|
|
||||||
import net.runelite.api.NPC;
|
|
||||||
import net.runelite.api.Player;
|
|
||||||
import net.runelite.api.events.ConfigChanged;
|
|
||||||
import net.runelite.api.events.GameStateChanged;
|
|
||||||
import net.runelite.api.events.GameTick;
|
|
||||||
import net.runelite.api.events.HitsplatApplied;
|
|
||||||
import net.runelite.api.events.NpcDespawned;
|
|
||||||
import net.runelite.client.config.ConfigManager;
|
|
||||||
import net.runelite.client.eventbus.Subscribe;
|
|
||||||
import net.runelite.client.plugins.Plugin;
|
|
||||||
import net.runelite.client.plugins.PluginDescriptor;
|
|
||||||
import net.runelite.client.plugins.PluginType;
|
|
||||||
import net.runelite.client.ui.overlay.OverlayManager;
|
|
||||||
|
|
||||||
|
|
||||||
@Slf4j
|
|
||||||
@Singleton
|
|
||||||
@PluginDescriptor(
|
|
||||||
name = "Flinching Timer",
|
|
||||||
description = "Time your attacks while flinching",
|
|
||||||
tags = {"overlay", "flinching", "timers", "combat"},
|
|
||||||
type = PluginType.PVM,
|
|
||||||
enabledByDefault = false
|
|
||||||
)
|
|
||||||
|
|
||||||
public class FlinchingPlugin extends Plugin
|
|
||||||
{
|
|
||||||
@Inject
|
|
||||||
private Client client;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private OverlayManager overlayManager;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private FlinchingConfig config;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private FlinchingOverlay overlay;
|
|
||||||
|
|
||||||
private int currentWorld = -1;
|
|
||||||
|
|
||||||
private int currentInteractingId = -1;
|
|
||||||
private final Map<Integer, FlinchingTarget> flinchingTargets = new HashMap<>();
|
|
||||||
|
|
||||||
private boolean resetOnHit = true;
|
|
||||||
private boolean resetOnHitReceived = true;
|
|
||||||
|
|
||||||
private int getFlinchAttackedDelay;
|
|
||||||
private int getFlinchDelay;
|
|
||||||
@Getter(AccessLevel.PACKAGE)
|
|
||||||
private int flinchOverlaySize;
|
|
||||||
@Getter(AccessLevel.PACKAGE)
|
|
||||||
private Color flinchOverlayColor;
|
|
||||||
private boolean getFlinchResetOnHit;
|
|
||||||
private boolean getFlinchResetOnHitReceived;
|
|
||||||
|
|
||||||
@Provides
|
|
||||||
FlinchingConfig provideConfig(ConfigManager configManager)
|
|
||||||
{
|
|
||||||
return configManager.getConfig(FlinchingConfig.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void startUp()
|
|
||||||
{
|
|
||||||
updateConfig();
|
|
||||||
|
|
||||||
overlayManager.add(overlay);
|
|
||||||
|
|
||||||
overlay.updateConfig();
|
|
||||||
resetOnHit = this.getFlinchResetOnHit;
|
|
||||||
resetOnHitReceived = this.getFlinchResetOnHitReceived;
|
|
||||||
|
|
||||||
ClearTargets();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void shutDown()
|
|
||||||
{
|
|
||||||
ClearTargets();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Subscribe
|
|
||||||
public void onConfigChanged(ConfigChanged event)
|
|
||||||
{
|
|
||||||
if (event.getGroup().equals("flinching"))
|
|
||||||
{
|
|
||||||
updateConfig();
|
|
||||||
|
|
||||||
overlay.updateConfig();
|
|
||||||
resetOnHit = this.getFlinchResetOnHit;
|
|
||||||
resetOnHitReceived = this.getFlinchResetOnHitReceived;
|
|
||||||
|
|
||||||
for (Map.Entry<Integer, FlinchingTarget> integerFlinchingTargetEntry : flinchingTargets.entrySet())
|
|
||||||
{
|
|
||||||
FlinchingTarget target = integerFlinchingTargetEntry.getValue();
|
|
||||||
if (target != null)
|
|
||||||
{
|
|
||||||
target.SetDelayTime(this.getFlinchDelay, this.getFlinchAttackedDelay);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Subscribe
|
|
||||||
public void onGameStateChanged(GameStateChanged event)
|
|
||||||
{
|
|
||||||
if (event.getGameState() == GameState.LOGGED_IN)
|
|
||||||
{
|
|
||||||
if (currentWorld == -1)
|
|
||||||
{
|
|
||||||
currentWorld = client.getWorld();
|
|
||||||
}
|
|
||||||
else if (currentWorld != client.getWorld())
|
|
||||||
{
|
|
||||||
ClearTargets();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ClearTargets()
|
|
||||||
{
|
|
||||||
Iterator<Map.Entry<Integer, FlinchingTarget>> it = flinchingTargets.entrySet().iterator();
|
|
||||||
|
|
||||||
while (it.hasNext())
|
|
||||||
{
|
|
||||||
it.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Subscribe
|
|
||||||
private void onGameTick(GameTick tick)
|
|
||||||
{
|
|
||||||
if (client.getGameState() == GameState.LOGGED_IN)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
TickTargets();
|
|
||||||
checkInteracting();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Subscribe
|
|
||||||
public void onHitsplatApplied(HitsplatApplied hitsplatApplied)
|
|
||||||
{
|
|
||||||
Actor actor = hitsplatApplied.getActor();
|
|
||||||
|
|
||||||
if (actor instanceof NPC)
|
|
||||||
{
|
|
||||||
NPC hitTarget = (NPC) actor;
|
|
||||||
|
|
||||||
int hitId = hitTarget.getId();
|
|
||||||
if (hitId == currentInteractingId)
|
|
||||||
{
|
|
||||||
if (!flinchingTargets.containsKey(hitId))
|
|
||||||
{
|
|
||||||
TargetGained(hitTarget);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FlinchingTarget currentTarget = flinchingTargets.get(hitId);
|
|
||||||
if (currentTarget != null)
|
|
||||||
{
|
|
||||||
if (resetOnHit)
|
|
||||||
{
|
|
||||||
currentTarget.TargetHit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (resetOnHitReceived && actor == client.getLocalPlayer())
|
|
||||||
{
|
|
||||||
PlayerHit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void checkInteracting()
|
|
||||||
{
|
|
||||||
Player localPlayer = client.getLocalPlayer();
|
|
||||||
Actor interacting = localPlayer.getInteracting();
|
|
||||||
|
|
||||||
if (interacting instanceof NPC)
|
|
||||||
{
|
|
||||||
NPC newTarget = (NPC) interacting;
|
|
||||||
currentInteractingId = newTarget.getId();
|
|
||||||
|
|
||||||
if (newTarget.getHealth() <= 0 || newTarget.isDead())
|
|
||||||
{
|
|
||||||
if (flinchingTargets.containsKey(currentInteractingId))
|
|
||||||
{
|
|
||||||
flinchingTargets.remove(currentInteractingId);
|
|
||||||
currentInteractingId = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void TickTargets()
|
|
||||||
{
|
|
||||||
Iterator<Map.Entry<Integer, FlinchingTarget>> it = flinchingTargets.entrySet().iterator();
|
|
||||||
|
|
||||||
while (it.hasNext())
|
|
||||||
{
|
|
||||||
FlinchingTarget target = it.next().getValue();
|
|
||||||
if (target != null)
|
|
||||||
{
|
|
||||||
target.Tick();
|
|
||||||
if (!target.isActive)
|
|
||||||
{
|
|
||||||
it.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
it.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Subscribe
|
|
||||||
public void onNpcDespawned(NpcDespawned npcDespawned)
|
|
||||||
{
|
|
||||||
NPC actor = npcDespawned.getNpc();
|
|
||||||
|
|
||||||
int actorId = actor.getId();
|
|
||||||
if (actor.isDead() && flinchingTargets.containsKey(actorId))
|
|
||||||
{
|
|
||||||
TargetLost(actorId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void TargetLost(int targetId)
|
|
||||||
{
|
|
||||||
flinchingTargets.remove(targetId);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void TargetGained(NPC _newTarget)
|
|
||||||
{
|
|
||||||
FlinchingTarget newTarget = new FlinchingTarget(_newTarget);
|
|
||||||
newTarget.SetDelayTime(config.getFlinchDelay(), config.getFlinchAttackedDelay());
|
|
||||||
flinchingTargets.put(_newTarget.getId(), newTarget);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PlayerHit()
|
|
||||||
{
|
|
||||||
for (Map.Entry<Integer, FlinchingTarget> integerFlinchingTargetEntry : flinchingTargets.entrySet())
|
|
||||||
{
|
|
||||||
FlinchingTarget target = integerFlinchingTargetEntry.getValue();
|
|
||||||
if (target != null)
|
|
||||||
{
|
|
||||||
target.PlayerHit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<Integer, FlinchingTarget> GetTargets()
|
|
||||||
{
|
|
||||||
return (flinchingTargets);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateConfig()
|
|
||||||
{
|
|
||||||
this.getFlinchAttackedDelay = config.getFlinchAttackedDelay();
|
|
||||||
this.getFlinchDelay = config.getFlinchDelay();
|
|
||||||
this.flinchOverlaySize = config.getFlinchOverlaySize();
|
|
||||||
this.flinchOverlayColor = config.getFlinchOverlayColor();
|
|
||||||
this.getFlinchResetOnHit = config.getFlinchResetOnHit();
|
|
||||||
this.getFlinchResetOnHitReceived = config.getFlinchResetOnHitReceived();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-145
@@ -1,145 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2018, Fluffeh <berserkfluff@gmail.com>
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
* list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
|
||||||
* and/or other materials provided with the distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
package net.runelite.client.plugins.flinching;
|
|
||||||
|
|
||||||
import java.time.Duration;
|
|
||||||
import java.time.Instant;
|
|
||||||
import lombok.AccessLevel;
|
|
||||||
import lombok.Getter;
|
|
||||||
import net.runelite.api.NPC;
|
|
||||||
import net.runelite.api.coords.WorldPoint;
|
|
||||||
|
|
||||||
public class FlinchingTarget
|
|
||||||
{
|
|
||||||
private int currentDisplayLength = 5400;
|
|
||||||
|
|
||||||
private boolean usingHitDelay = false;
|
|
||||||
|
|
||||||
private int displayLength = 5400;
|
|
||||||
private int displayHitReceivedLength = 6600;
|
|
||||||
private Instant lastAttacked;
|
|
||||||
|
|
||||||
public boolean isActive;
|
|
||||||
|
|
||||||
@Getter(AccessLevel.PACKAGE)
|
|
||||||
private int objectId;
|
|
||||||
private NPC targetObject;
|
|
||||||
|
|
||||||
@Getter(AccessLevel.PACKAGE)
|
|
||||||
public WorldPoint worldLocation;
|
|
||||||
|
|
||||||
FlinchingTarget(NPC target)
|
|
||||||
{
|
|
||||||
isActive = true;
|
|
||||||
|
|
||||||
this.targetObject = target;
|
|
||||||
this.lastAttacked = Instant.now();
|
|
||||||
this.objectId = target.getId();
|
|
||||||
this.worldLocation = target.getWorldLocation();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TargetHit()
|
|
||||||
{
|
|
||||||
boolean shouldHit = true;
|
|
||||||
if (usingHitDelay)
|
|
||||||
{
|
|
||||||
if (GetRemainingTime() > displayLength)
|
|
||||||
{
|
|
||||||
shouldHit = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (shouldHit)
|
|
||||||
{
|
|
||||||
lastAttacked = Instant.now();
|
|
||||||
|
|
||||||
usingHitDelay = false;
|
|
||||||
currentDisplayLength = displayLength;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
double GetRemainingTimePercent()
|
|
||||||
{
|
|
||||||
double remainingTime = GetRemainingTime();
|
|
||||||
double timePercent = remainingTime / currentDisplayLength;
|
|
||||||
if (timePercent < 0)
|
|
||||||
{
|
|
||||||
timePercent = 0;
|
|
||||||
}
|
|
||||||
else if (timePercent > 1)
|
|
||||||
{
|
|
||||||
timePercent = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (timePercent);
|
|
||||||
}
|
|
||||||
|
|
||||||
private double GetRemainingTime()
|
|
||||||
{
|
|
||||||
Duration duration = Duration.between(lastAttacked, Instant.now());
|
|
||||||
return ((currentDisplayLength - ((double) duration.toMillis())));
|
|
||||||
}
|
|
||||||
|
|
||||||
void Tick()
|
|
||||||
{
|
|
||||||
if (targetObject == null)
|
|
||||||
{
|
|
||||||
isActive = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
worldLocation = targetObject.getWorldLocation();
|
|
||||||
|
|
||||||
double remainingTime = GetRemainingTime();
|
|
||||||
if (remainingTime <= 0)
|
|
||||||
{
|
|
||||||
isActive = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetDelayTime(int delayTime, int delayHitReceivedTime)
|
|
||||||
{
|
|
||||||
displayLength = delayTime;
|
|
||||||
displayHitReceivedLength = delayHitReceivedTime;
|
|
||||||
|
|
||||||
if (usingHitDelay)
|
|
||||||
{
|
|
||||||
currentDisplayLength = displayHitReceivedLength;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
currentDisplayLength = displayLength;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerHit()
|
|
||||||
{
|
|
||||||
usingHitDelay = true;
|
|
||||||
currentDisplayLength = displayHitReceivedLength;
|
|
||||||
|
|
||||||
lastAttacked = Instant.now();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -36,6 +36,7 @@ import net.runelite.api.Client;
|
|||||||
import net.runelite.api.GameState;
|
import net.runelite.api.GameState;
|
||||||
import net.runelite.api.events.ConfigChanged;
|
import net.runelite.api.events.ConfigChanged;
|
||||||
import net.runelite.api.events.FocusChanged;
|
import net.runelite.api.events.FocusChanged;
|
||||||
|
import net.runelite.api.events.GameStateChanged;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
import net.runelite.client.eventbus.Subscribe;
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
import net.runelite.client.plugins.Plugin;
|
import net.runelite.client.plugins.Plugin;
|
||||||
@@ -93,6 +94,10 @@ public class FpsPlugin extends Plugin
|
|||||||
|
|
||||||
private final ScheduledExecutorService pingExecutorService = new ExecutorServiceExceptionLogger(Executors.newSingleThreadScheduledExecutor());
|
private final ScheduledExecutorService pingExecutorService = new ExecutorServiceExceptionLogger(Executors.newSingleThreadScheduledExecutor());
|
||||||
|
|
||||||
|
private boolean loaded = false;
|
||||||
|
|
||||||
|
private boolean shutdown;
|
||||||
|
|
||||||
@Getter(AccessLevel.PACKAGE)
|
@Getter(AccessLevel.PACKAGE)
|
||||||
private FpsLimitMode limitMode;
|
private FpsLimitMode limitMode;
|
||||||
|
|
||||||
@@ -128,6 +133,12 @@ public class FpsPlugin extends Plugin
|
|||||||
overlay.onFocusChanged(event);
|
overlay.onFocusChanged(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onGameStateChanged(GameStateChanged event)
|
||||||
|
{
|
||||||
|
shutdown = event.getGameState() != GameState.LOGGED_IN;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void startUp() throws Exception
|
protected void startUp() throws Exception
|
||||||
{
|
{
|
||||||
@@ -137,7 +148,13 @@ public class FpsPlugin extends Plugin
|
|||||||
overlayManager.add(overlay);
|
overlayManager.add(overlay);
|
||||||
drawManager.registerEveryFrameListener(drawListener);
|
drawManager.registerEveryFrameListener(drawListener);
|
||||||
drawListener.reloadConfig();
|
drawListener.reloadConfig();
|
||||||
pingExecutorService.scheduleAtFixedRate(this::getPingToCurrentWorld, 5, 5, TimeUnit.SECONDS);
|
shutdown = client.getGameState() != GameState.LOGGED_IN;
|
||||||
|
|
||||||
|
if (!loaded)
|
||||||
|
{
|
||||||
|
pingExecutorService.scheduleAtFixedRate(this::getPingToCurrentWorld, 5, 5, TimeUnit.SECONDS);
|
||||||
|
loaded = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -145,12 +162,12 @@ public class FpsPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
overlayManager.remove(overlay);
|
overlayManager.remove(overlay);
|
||||||
drawManager.unregisterEveryFrameListener(drawListener);
|
drawManager.unregisterEveryFrameListener(drawListener);
|
||||||
pingExecutorService.shutdown();
|
shutdown = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getPingToCurrentWorld()
|
private void getPingToCurrentWorld()
|
||||||
{
|
{
|
||||||
if (client.getGameState().equals(GameState.LOGGED_IN) && drawPing)
|
if (!shutdown && drawPing)
|
||||||
{
|
{
|
||||||
ping = Ping.ping(String.format("oldschool%d.runescape.com", client.getWorld() - 300));
|
ping = Ping.ping(String.format("oldschool%d.runescape.com", client.getWorld() - 300));
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-1
@@ -1064,13 +1064,18 @@ public class MenuEntrySwapperPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (option.equals("talk-to"))
|
if (option.equals("talk-to") || option.equals("attack"))
|
||||||
{
|
{
|
||||||
if (this.swapPickpocket)
|
if (this.swapPickpocket)
|
||||||
{
|
{
|
||||||
swap(client, "pickpocket", option, target, true);
|
swap(client, "pickpocket", option, target, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (option.equals("talk-to"))
|
||||||
|
{
|
||||||
|
|
||||||
if (this.swapHardWoodGrove && target.contains("rionasta"))
|
if (this.swapHardWoodGrove && target.contains("rionasta"))
|
||||||
{
|
{
|
||||||
swap(client, "send-parcel", option, target, true);
|
swap(client, "send-parcel", option, target, true);
|
||||||
|
|||||||
+10
@@ -142,4 +142,14 @@ public interface MotherlodeConfig extends Config
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "payDirtMsg",
|
||||||
|
name = "Pay-dirt!",
|
||||||
|
description = "Send a public message saying \"Pay-dirt!\" every time a dwarf says \"Pay-dirt!\"",
|
||||||
|
position = 99
|
||||||
|
)
|
||||||
|
default boolean payDirtMsg()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+41
-4
@@ -26,6 +26,7 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.motherlode;
|
package net.runelite.client.plugins.motherlode;
|
||||||
|
|
||||||
|
import com.google.common.base.Strings;
|
||||||
import com.google.common.collect.HashMultiset;
|
import com.google.common.collect.HashMultiset;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import com.google.common.collect.Multiset;
|
import com.google.common.collect.Multiset;
|
||||||
@@ -63,6 +64,8 @@ import net.runelite.api.Item;
|
|||||||
import net.runelite.api.ItemContainer;
|
import net.runelite.api.ItemContainer;
|
||||||
import net.runelite.api.ItemID;
|
import net.runelite.api.ItemID;
|
||||||
import net.runelite.api.MenuAction;
|
import net.runelite.api.MenuAction;
|
||||||
|
import net.runelite.api.NPC;
|
||||||
|
import net.runelite.api.NpcID;
|
||||||
import static net.runelite.api.ObjectID.DEPLETED_VEIN_26665;
|
import static net.runelite.api.ObjectID.DEPLETED_VEIN_26665;
|
||||||
import static net.runelite.api.ObjectID.DEPLETED_VEIN_26666;
|
import static net.runelite.api.ObjectID.DEPLETED_VEIN_26666;
|
||||||
import static net.runelite.api.ObjectID.DEPLETED_VEIN_26667;
|
import static net.runelite.api.ObjectID.DEPLETED_VEIN_26667;
|
||||||
@@ -75,6 +78,7 @@ import static net.runelite.api.ObjectID.ROCKFALL;
|
|||||||
import static net.runelite.api.ObjectID.ROCKFALL_26680;
|
import static net.runelite.api.ObjectID.ROCKFALL_26680;
|
||||||
import net.runelite.api.Perspective;
|
import net.runelite.api.Perspective;
|
||||||
import net.runelite.api.Player;
|
import net.runelite.api.Player;
|
||||||
|
import net.runelite.api.ScriptID;
|
||||||
import net.runelite.api.Varbits;
|
import net.runelite.api.Varbits;
|
||||||
import net.runelite.api.WallObject;
|
import net.runelite.api.WallObject;
|
||||||
import net.runelite.api.coords.LocalPoint;
|
import net.runelite.api.coords.LocalPoint;
|
||||||
@@ -89,6 +93,7 @@ import net.runelite.api.events.GameStateChanged;
|
|||||||
import net.runelite.api.events.ItemContainerChanged;
|
import net.runelite.api.events.ItemContainerChanged;
|
||||||
import net.runelite.api.events.GameTick;
|
import net.runelite.api.events.GameTick;
|
||||||
import net.runelite.api.events.MenuOptionClicked;
|
import net.runelite.api.events.MenuOptionClicked;
|
||||||
|
import net.runelite.api.events.OverheadTextChanged;
|
||||||
import net.runelite.api.events.VarbitChanged;
|
import net.runelite.api.events.VarbitChanged;
|
||||||
import net.runelite.api.events.WallObjectChanged;
|
import net.runelite.api.events.WallObjectChanged;
|
||||||
import net.runelite.api.events.WallObjectDespawned;
|
import net.runelite.api.events.WallObjectDespawned;
|
||||||
@@ -105,6 +110,7 @@ import net.runelite.client.plugins.Plugin;
|
|||||||
import net.runelite.client.plugins.PluginDescriptor;
|
import net.runelite.client.plugins.PluginDescriptor;
|
||||||
import net.runelite.client.task.Schedule;
|
import net.runelite.client.task.Schedule;
|
||||||
import net.runelite.client.ui.overlay.OverlayManager;
|
import net.runelite.client.ui.overlay.OverlayManager;
|
||||||
|
import net.runelite.client.util.Text;
|
||||||
|
|
||||||
@PluginDescriptor(
|
@PluginDescriptor(
|
||||||
name = "Motherlode Mine",
|
name = "Motherlode Mine",
|
||||||
@@ -212,6 +218,7 @@ public class MotherlodePlugin extends Plugin
|
|||||||
private boolean notifyOnIdle;
|
private boolean notifyOnIdle;
|
||||||
@Getter(AccessLevel.PACKAGE)
|
@Getter(AccessLevel.PACKAGE)
|
||||||
private boolean showTargetVein;
|
private boolean showTargetVein;
|
||||||
|
private boolean payDirtMsg;
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
MotherlodeConfig getConfig(ConfigManager configManager)
|
MotherlodeConfig getConfig(ConfigManager configManager)
|
||||||
@@ -321,7 +328,7 @@ public class MotherlodePlugin extends Plugin
|
|||||||
period = 1,
|
period = 1,
|
||||||
unit = ChronoUnit.SECONDS
|
unit = ChronoUnit.SECONDS
|
||||||
)
|
)
|
||||||
public void checkMining()
|
void checkMining()
|
||||||
{
|
{
|
||||||
if (!inMlm)
|
if (!inMlm)
|
||||||
{
|
{
|
||||||
@@ -722,9 +729,6 @@ public class MotherlodePlugin extends Plugin
|
|||||||
/**
|
/**
|
||||||
* Checks if the given point is "upstairs" in the mlm.
|
* Checks if the given point is "upstairs" in the mlm.
|
||||||
* The upper floor is actually on z=0.
|
* The upper floor is actually on z=0.
|
||||||
*
|
|
||||||
* @param localPoint
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
boolean isUpstairs(LocalPoint localPoint)
|
boolean isUpstairs(LocalPoint localPoint)
|
||||||
{
|
{
|
||||||
@@ -755,5 +759,38 @@ public class MotherlodePlugin extends Plugin
|
|||||||
this.showOresFound = config.showOresFound();
|
this.showOresFound = config.showOresFound();
|
||||||
this.notifyOnIdle = config.notifyOnIdle();
|
this.notifyOnIdle = config.notifyOnIdle();
|
||||||
this.showTargetVein = config.showTargetVein();
|
this.showTargetVein = config.showTargetVein();
|
||||||
|
this.payDirtMsg = config.payDirtMsg();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
private void onOverheadTextChanged(OverheadTextChanged event)
|
||||||
|
{
|
||||||
|
if (!payDirtMsg || Strings.isNullOrEmpty(event.getOverheadText()) || !(event.getActor() instanceof NPC))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (((NPC) event.getActor()).getId())
|
||||||
|
{
|
||||||
|
case NpcID.MINER_5606:
|
||||||
|
case NpcID.MINER_5813:
|
||||||
|
case NpcID.MINER_5814:
|
||||||
|
case NpcID.MINER_6565:
|
||||||
|
case NpcID.MINER_6567:
|
||||||
|
case NpcID.MINER_6568:
|
||||||
|
case NpcID.MINER_6569:
|
||||||
|
case NpcID.MINER_6570:
|
||||||
|
case NpcID.MINER_6571:
|
||||||
|
case NpcID.MINER_6572:
|
||||||
|
case NpcID.MINER_6645:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("pay-dirt!".equals(Text.standardize(event.getOverheadText())))
|
||||||
|
{
|
||||||
|
client.runScript(ScriptID.PUBLICMSG, "Pay-dirt!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
@@ -51,6 +51,7 @@ import net.runelite.client.eventbus.Subscribe;
|
|||||||
import net.runelite.client.game.NPCManager;
|
import net.runelite.client.game.NPCManager;
|
||||||
import net.runelite.client.plugins.Plugin;
|
import net.runelite.client.plugins.Plugin;
|
||||||
import net.runelite.client.plugins.PluginDescriptor;
|
import net.runelite.client.plugins.PluginDescriptor;
|
||||||
|
import net.runelite.client.plugins.PluginType;
|
||||||
import net.runelite.client.ui.overlay.OverlayManager;
|
import net.runelite.client.ui.overlay.OverlayManager;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -58,6 +59,7 @@ import net.runelite.client.ui.overlay.OverlayManager;
|
|||||||
name = "NPC Status Timer",
|
name = "NPC Status Timer",
|
||||||
description = "Adds a timer on NPC's for their attacks and flinching.",
|
description = "Adds a timer on NPC's for their attacks and flinching.",
|
||||||
tags = {"flinch", "npc"},
|
tags = {"flinch", "npc"},
|
||||||
|
type = PluginType.PVM,
|
||||||
enabledByDefault = false
|
enabledByDefault = false
|
||||||
)
|
)
|
||||||
@Singleton
|
@Singleton
|
||||||
|
|||||||
+11
@@ -115,4 +115,15 @@ public interface NpcAggroAreaConfig extends Config
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "sendNotification",
|
||||||
|
name = "Send notification",
|
||||||
|
description = "Send a notification when the timer runs out",
|
||||||
|
position = 7
|
||||||
|
)
|
||||||
|
default boolean sendNotification()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -86,6 +86,10 @@ class NpcAggroAreaOverlay extends Overlay
|
|||||||
outlineColor.getBlue(),
|
outlineColor.getBlue(),
|
||||||
100);
|
100);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
plugin.doNotification();
|
||||||
|
}
|
||||||
|
|
||||||
renderPath(graphics, lines, outlineColor);
|
renderPath(graphics, lines, outlineColor);
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
+24
@@ -27,6 +27,7 @@ package net.runelite.client.plugins.npcunaggroarea;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
|
import net.runelite.api.Player;
|
||||||
import net.runelite.api.geometry.Geometry;
|
import net.runelite.api.geometry.Geometry;
|
||||||
import com.google.common.base.Splitter;
|
import com.google.common.base.Splitter;
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
@@ -56,6 +57,7 @@ import net.runelite.api.events.ConfigChanged;
|
|||||||
import net.runelite.api.events.GameStateChanged;
|
import net.runelite.api.events.GameStateChanged;
|
||||||
import net.runelite.api.events.GameTick;
|
import net.runelite.api.events.GameTick;
|
||||||
import net.runelite.api.events.NpcSpawned;
|
import net.runelite.api.events.NpcSpawned;
|
||||||
|
import net.runelite.client.Notifier;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
import net.runelite.client.eventbus.Subscribe;
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
import net.runelite.client.game.ItemManager;
|
import net.runelite.client.game.ItemManager;
|
||||||
@@ -116,6 +118,9 @@ public class NpcAggroAreaPlugin extends Plugin
|
|||||||
@Inject
|
@Inject
|
||||||
private ConfigManager configManager;
|
private ConfigManager configManager;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private Notifier notifier;
|
||||||
|
|
||||||
@Getter(AccessLevel.PACKAGE)
|
@Getter(AccessLevel.PACKAGE)
|
||||||
private final WorldPoint[] safeCenters = new WorldPoint[2];
|
private final WorldPoint[] safeCenters = new WorldPoint[2];
|
||||||
|
|
||||||
@@ -137,12 +142,15 @@ public class NpcAggroAreaPlugin extends Plugin
|
|||||||
private boolean showNotWorkingOverlay;
|
private boolean showNotWorkingOverlay;
|
||||||
@Getter(AccessLevel.PACKAGE)
|
@Getter(AccessLevel.PACKAGE)
|
||||||
private boolean hideOverlayHint;
|
private boolean hideOverlayHint;
|
||||||
|
@Getter(AccessLevel.PACKAGE)
|
||||||
|
private boolean sendNotification;
|
||||||
|
|
||||||
private WorldPoint lastPlayerLocation;
|
private WorldPoint lastPlayerLocation;
|
||||||
private WorldPoint previousUnknownCenter;
|
private WorldPoint previousUnknownCenter;
|
||||||
private boolean loggingIn;
|
private boolean loggingIn;
|
||||||
private List<String> npcNamePatterns;
|
private List<String> npcNamePatterns;
|
||||||
private boolean notWorkingOverlayShown = false;
|
private boolean notWorkingOverlayShown = false;
|
||||||
|
private boolean hasSentNotification = false;
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
NpcAggroAreaConfig provideConfig(ConfigManager configManager)
|
NpcAggroAreaConfig provideConfig(ConfigManager configManager)
|
||||||
@@ -259,6 +267,7 @@ public class NpcAggroAreaPlugin extends Plugin
|
|||||||
BufferedImage image = itemManager.getImage(ItemID.ENSOULED_DEMON_HEAD);
|
BufferedImage image = itemManager.getImage(ItemID.ENSOULED_DEMON_HEAD);
|
||||||
currentTimer = new AggressionTimer(duration, image, this, active && this.showTimer);
|
currentTimer = new AggressionTimer(duration, image, this, active && this.showTimer);
|
||||||
infoBoxManager.addInfoBox(currentTimer);
|
infoBoxManager.addInfoBox(currentTimer);
|
||||||
|
hasSentNotification = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetTimer()
|
private void resetTimer()
|
||||||
@@ -417,6 +426,9 @@ public class NpcAggroAreaPlugin extends Plugin
|
|||||||
npcNamePatterns = NAME_SPLITTER.splitToList(this.configNpcNamePatterns);
|
npcNamePatterns = NAME_SPLITTER.splitToList(this.configNpcNamePatterns);
|
||||||
recheckActive();
|
recheckActive();
|
||||||
break;
|
break;
|
||||||
|
case "sendNotification":
|
||||||
|
hasSentNotification = false;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -507,6 +519,17 @@ public class NpcAggroAreaPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void doNotification()
|
||||||
|
{
|
||||||
|
if (hasSentNotification)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
final Player local = client.getLocalPlayer();
|
||||||
|
hasSentNotification = true;
|
||||||
|
notifier.notify("[" + local.getName() + "]'s aggression timer has run out!");
|
||||||
|
}
|
||||||
|
|
||||||
private void updateConfig()
|
private void updateConfig()
|
||||||
{
|
{
|
||||||
this.alwaysActive = config.alwaysActive();
|
this.alwaysActive = config.alwaysActive();
|
||||||
@@ -516,5 +539,6 @@ public class NpcAggroAreaPlugin extends Plugin
|
|||||||
this.aggroAreaColor = config.aggroAreaColor();
|
this.aggroAreaColor = config.aggroAreaColor();
|
||||||
this.showNotWorkingOverlay = config.showNotWorkingOverlay();
|
this.showNotWorkingOverlay = config.showNotWorkingOverlay();
|
||||||
this.hideOverlayHint = config.hideOverlayHint();
|
this.hideOverlayHint = config.hideOverlayHint();
|
||||||
|
this.sendNotification = config.sendNotification();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -85,7 +85,7 @@ public class RunepouchOverlay extends WidgetItemOverlay
|
|||||||
|
|
||||||
assert AMOUNT_VARBITS.length == RUNE_VARBITS.length;
|
assert AMOUNT_VARBITS.length == RUNE_VARBITS.length;
|
||||||
|
|
||||||
graphics.setFont(FontManager.getSmallFont(graphics.getFont()));
|
graphics.setFont(FontManager.getRunescapeSmallFont());
|
||||||
|
|
||||||
Point location = itemWidget.getCanvasLocation();
|
Point location = itemWidget.getCanvasLocation();
|
||||||
StringBuilder tooltipBuilder = new StringBuilder();
|
StringBuilder tooltipBuilder = new StringBuilder();
|
||||||
|
|||||||
+1
-1
@@ -66,7 +66,7 @@ public enum ItemType
|
|||||||
{
|
{
|
||||||
return ItemType.AMMO;
|
return ItemType.AMMO;
|
||||||
}
|
}
|
||||||
if (item.getName().contains("rune"))
|
if (item.getName().toLowerCase().contains("rune"))
|
||||||
{
|
{
|
||||||
return ItemType.RUNE;
|
return ItemType.RUNE;
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-1
@@ -401,7 +401,13 @@ public class SuppliesTrackerPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
quantity -= newItem.getQuantity();
|
quantity -= newItem.getQuantity();
|
||||||
}
|
}
|
||||||
buildEntries(oldItem.getId(), quantity);
|
// ensure that only positive quantities are added since it is reported
|
||||||
|
// that sometimes checkUsedRunes is called on the same tick that a player
|
||||||
|
// gains runes in their inventory
|
||||||
|
if (quantity > 0)
|
||||||
|
{
|
||||||
|
buildEntries(oldItem.getId(), quantity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
;;;
|
||||||
|
;
|
||||||
|
; Copyright (c) 2019, Lucas <https://github.com/Lucwousin>
|
||||||
|
; All rights reserved.
|
||||||
|
;
|
||||||
|
; Redistribution and use in source and binary forms, with or without
|
||||||
|
; modification, are permitted provided that the following conditions are met:
|
||||||
|
;
|
||||||
|
; 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
; list of conditions and the following disclaimer.
|
||||||
|
; 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
; this list of conditions and the following disclaimer in the documentation
|
||||||
|
; and/or other materials provided with the distribution.
|
||||||
|
;
|
||||||
|
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
; ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; ;
|
||||||
|
; Send a public message ;
|
||||||
|
; ;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
.id 13337
|
||||||
|
.int_stack_count 0
|
||||||
|
.string_stack_count 1
|
||||||
|
.int_var_count 0
|
||||||
|
.string_var_count 1
|
||||||
|
sload 0
|
||||||
|
iconst 0
|
||||||
|
chat_sendpublic
|
||||||
|
return
|
||||||
@@ -66,7 +66,7 @@ public abstract class CameraMixin implements RSClient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@FieldHook("cameraPitchTarget")
|
@FieldHook("camAngleX")
|
||||||
@Inject
|
@Inject
|
||||||
static void onCameraPitchTargetChanged(int idx)
|
static void onCameraPitchTargetChanged(int idx)
|
||||||
{
|
{
|
||||||
|
|||||||
+7
-7
@@ -15,12 +15,12 @@ import net.runelite.api.mixins.Mixin;
|
|||||||
import net.runelite.api.mixins.Replace;
|
import net.runelite.api.mixins.Replace;
|
||||||
import net.runelite.api.mixins.Shadow;
|
import net.runelite.api.mixins.Shadow;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import net.runelite.rs.api.RSAbstractIndexCache;
|
import net.runelite.rs.api.RSAbstractArchive;
|
||||||
import net.runelite.rs.api.RSClient;
|
import net.runelite.rs.api.RSClient;
|
||||||
import net.runelite.rs.api.RSIndexCache;
|
import net.runelite.rs.api.RSArchive;
|
||||||
|
|
||||||
@Mixin(RSAbstractIndexCache.class)
|
@Mixin(RSAbstractArchive.class)
|
||||||
public abstract class RSAbstractIndexCacheMixin implements RSAbstractIndexCache
|
public abstract class RSAbstractArchiveMixin implements RSAbstractArchive
|
||||||
{
|
{
|
||||||
@Shadow("client")
|
@Shadow("client")
|
||||||
private static RSClient client;
|
private static RSClient client;
|
||||||
@@ -35,14 +35,14 @@ public abstract class RSAbstractIndexCacheMixin implements RSAbstractIndexCache
|
|||||||
return overlayOutdated;
|
return overlayOutdated;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Copy("takeRecord")
|
@Copy("takeFile")
|
||||||
abstract byte[] rs$getConfigData(int archiveId, int fileId);
|
abstract byte[] rs$getConfigData(int archiveId, int fileId);
|
||||||
|
|
||||||
@Replace("takeRecord")
|
@Replace("takeFile")
|
||||||
public byte[] rl$getConfigData(int archiveId, int fileId)
|
public byte[] rl$getConfigData(int archiveId, int fileId)
|
||||||
{
|
{
|
||||||
byte[] rsData = rs$getConfigData(archiveId, fileId);
|
byte[] rsData = rs$getConfigData(archiveId, fileId);
|
||||||
RSIndexCache indexData = (RSIndexCache) this;
|
RSArchive indexData = (RSArchive) this;
|
||||||
|
|
||||||
if (!OverlayIndex.hasOverlay(indexData.getIndex(), archiveId))
|
if (!OverlayIndex.hasOverlay(indexData.getIndex(), archiveId))
|
||||||
{
|
{
|
||||||
@@ -51,7 +51,6 @@ import net.runelite.api.MenuEntry;
|
|||||||
import net.runelite.api.MessageNode;
|
import net.runelite.api.MessageNode;
|
||||||
import net.runelite.api.NPC;
|
import net.runelite.api.NPC;
|
||||||
import net.runelite.api.Node;
|
import net.runelite.api.Node;
|
||||||
import net.runelite.api.PacketBuffer;
|
|
||||||
import static net.runelite.api.Perspective.LOCAL_TILE_SIZE;
|
import static net.runelite.api.Perspective.LOCAL_TILE_SIZE;
|
||||||
import net.runelite.api.Player;
|
import net.runelite.api.Player;
|
||||||
import net.runelite.api.Point;
|
import net.runelite.api.Point;
|
||||||
@@ -111,8 +110,9 @@ import net.runelite.api.mixins.MethodHook;
|
|||||||
import net.runelite.api.mixins.Mixin;
|
import net.runelite.api.mixins.Mixin;
|
||||||
import net.runelite.api.mixins.Replace;
|
import net.runelite.api.mixins.Replace;
|
||||||
import net.runelite.api.mixins.Shadow;
|
import net.runelite.api.mixins.Shadow;
|
||||||
|
import net.runelite.rs.api.RSPacketBuffer;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import net.runelite.rs.api.RSAbstractIndexCache;
|
import net.runelite.rs.api.RSAbstractArchive;
|
||||||
import net.runelite.rs.api.RSChatChannel;
|
import net.runelite.rs.api.RSChatChannel;
|
||||||
import net.runelite.rs.api.RSClanChat;
|
import net.runelite.rs.api.RSClanChat;
|
||||||
import net.runelite.rs.api.RSClient;
|
import net.runelite.rs.api.RSClient;
|
||||||
@@ -1253,9 +1253,16 @@ public abstract class RSClientMixin implements RSClient
|
|||||||
@Replace("menuAction")
|
@Replace("menuAction")
|
||||||
static void rl$menuAction(int actionParam, int widgetId, int menuAction, int id, String menuOption, String menuTarget, int var6, int var7)
|
static void rl$menuAction(int actionParam, int widgetId, int menuAction, int id, String menuOption, String menuTarget, int var6, int var7)
|
||||||
{
|
{
|
||||||
|
boolean authentic = true;
|
||||||
|
if (menuTarget != null && menuTarget.startsWith("!AUTHENTIC"))
|
||||||
|
{
|
||||||
|
authentic = false;
|
||||||
|
menuTarget = menuTarget.substring(10);
|
||||||
|
}
|
||||||
|
|
||||||
if (printMenuActions && client.getLogger().isDebugEnabled())
|
if (printMenuActions && client.getLogger().isDebugEnabled())
|
||||||
{
|
{
|
||||||
client.getLogger().debug("Menuaction: {} {} {} {} {} {} {} {}", actionParam, widgetId, menuAction, id, menuOption, menuTarget, var6, var7);
|
client.getLogger().debug("Menuaction: {} {} {} {} {} {} {} {} {}", actionParam, widgetId, menuAction, id, menuOption, menuTarget, var6, var7, authentic);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Along the way, the RuneScape client may change a menuAction by incrementing it with 2000.
|
/* Along the way, the RuneScape client may change a menuAction by incrementing it with 2000.
|
||||||
@@ -1275,7 +1282,8 @@ public abstract class RSClientMixin implements RSClient
|
|||||||
actionParam,
|
actionParam,
|
||||||
widgetId,
|
widgetId,
|
||||||
false
|
false
|
||||||
)
|
),
|
||||||
|
authentic
|
||||||
);
|
);
|
||||||
|
|
||||||
client.getCallbacks().post(menuOptionClicked);
|
client.getCallbacks().post(menuOptionClicked);
|
||||||
@@ -1289,6 +1297,13 @@ public abstract class RSClientMixin implements RSClient
|
|||||||
menuOptionClicked.getIdentifier(), menuOptionClicked.getOption(), menuOptionClicked.getTarget(), var6, var7);
|
menuOptionClicked.getIdentifier(), menuOptionClicked.getOption(), menuOptionClicked.getTarget(), var6, var7);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Inject
|
||||||
|
public void invokeMenuAction(int actionParam, int widgetId, int menuAction, int id, String menuOption, String menuTarget, int var6, int var7)
|
||||||
|
{
|
||||||
|
client.sendMenuAction(actionParam, widgetId, menuAction, id, menuOption, "!AUTHENTIC" + menuTarget, var6, var7);
|
||||||
|
}
|
||||||
|
|
||||||
@FieldHook("Login_username")
|
@FieldHook("Login_username")
|
||||||
@Inject
|
@Inject
|
||||||
public static void onUsernameChanged(int idx)
|
public static void onUsernameChanged(int idx)
|
||||||
@@ -1329,7 +1344,7 @@ public abstract class RSClientMixin implements RSClient
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@MethodHook("updateNpcs")
|
@MethodHook("updateNpcs")
|
||||||
public static void updateNpcs(boolean var0, PacketBuffer var1)
|
public static void updateNpcs(boolean var0, RSPacketBuffer var1)
|
||||||
{
|
{
|
||||||
client.getCallbacks().updateNpcs();
|
client.getCallbacks().updateNpcs();
|
||||||
}
|
}
|
||||||
@@ -1355,13 +1370,13 @@ public abstract class RSClientMixin implements RSClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@MethodHook("methodDraw")
|
@MethodHook("draw")
|
||||||
public void methodDraw(boolean var1)
|
public void draw(boolean var1)
|
||||||
{
|
{
|
||||||
callbacks.clientMainLoop();
|
callbacks.clientMainLoop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@MethodHook("drawWidgetGroup")
|
@MethodHook("drawInterface")
|
||||||
@Inject
|
@Inject
|
||||||
public static void renderWidgetLayer(Widget[] widgets, int parentId, int minX, int minY, int maxX, int maxY, int x, int y, int var8)
|
public static void renderWidgetLayer(Widget[] widgets, int parentId, int minX, int minY, int maxX, int maxY, int x, int y, int var8)
|
||||||
{
|
{
|
||||||
@@ -1464,7 +1479,7 @@ public abstract class RSClientMixin implements RSClient
|
|||||||
@Override
|
@Override
|
||||||
public RSSprite[] getSprites(IndexDataBase source, int archiveId, int fileId)
|
public RSSprite[] getSprites(IndexDataBase source, int archiveId, int fileId)
|
||||||
{
|
{
|
||||||
RSAbstractIndexCache rsSource = (RSAbstractIndexCache) source;
|
RSAbstractArchive rsSource = (RSAbstractArchive) source;
|
||||||
byte[] configData = rsSource.getConfigData(archiveId, fileId);
|
byte[] configData = rsSource.getConfigData(archiveId, fileId);
|
||||||
if (configData == null)
|
if (configData == null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public abstract class RSHealthBarDefinitionMixin implements RSHealthBarDefinitio
|
|||||||
@Shadow("client")
|
@Shadow("client")
|
||||||
private static RSClient client;
|
private static RSClient client;
|
||||||
|
|
||||||
@MethodHook(value = "read", end = true)
|
@MethodHook(value = "decode", end = true)
|
||||||
@Inject
|
@Inject
|
||||||
public void onRead(RSBuffer buffer)
|
public void onRead(RSBuffer buffer)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -44,10 +44,10 @@ public abstract class RSTextureMixin implements RSTexture
|
|||||||
@Inject
|
@Inject
|
||||||
private float rl$v;
|
private float rl$v;
|
||||||
|
|
||||||
@Copy("Texture_animate")
|
@Copy("animate")
|
||||||
public abstract void rs$animate(int diff);
|
public abstract void rs$animate(int diff);
|
||||||
|
|
||||||
@Replace("Texture_animate")
|
@Replace("animate")
|
||||||
public void rl$animate(int diff)
|
public void rl$animate(int diff)
|
||||||
{
|
{
|
||||||
// The client animates textures by cycling the backing pixels of the texture each fram
|
// The client animates textures by cycling the backing pixels of the texture each fram
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import net.runelite.api.mixins.Copy;
|
|||||||
import net.runelite.api.mixins.Inject;
|
import net.runelite.api.mixins.Inject;
|
||||||
import net.runelite.api.mixins.Mixin;
|
import net.runelite.api.mixins.Mixin;
|
||||||
import net.runelite.api.mixins.Replace;
|
import net.runelite.api.mixins.Replace;
|
||||||
import net.runelite.rs.api.RSAbstractIndexCache;
|
import net.runelite.rs.api.RSAbstractArchive;
|
||||||
import net.runelite.rs.api.RSClient;
|
import net.runelite.rs.api.RSClient;
|
||||||
import net.runelite.rs.api.RSSprite;
|
import net.runelite.rs.api.RSSprite;
|
||||||
|
|
||||||
@@ -35,13 +35,13 @@ public abstract class SpriteMixin implements RSClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Copy("readSprite")
|
@Copy("readSprite")
|
||||||
public static RSSprite rs$loadSprite(RSAbstractIndexCache var0, int var1, int var2)
|
public static RSSprite rs$loadSprite(RSAbstractArchive var0, int var1, int var2)
|
||||||
{
|
{
|
||||||
throw new RuntimeException();
|
throw new RuntimeException();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Replace("readSprite")
|
@Replace("readSprite")
|
||||||
public static RSSprite rl$loadSprite(RSAbstractIndexCache var0, int var1, int var2)
|
public static RSSprite rl$loadSprite(RSAbstractArchive var0, int var1, int var2)
|
||||||
{
|
{
|
||||||
Sprite sprite = spriteOverrides.get(var1);
|
Sprite sprite = spriteOverrides.get(var1);
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -3,8 +3,8 @@ package net.runelite.rs.api;
|
|||||||
import net.runelite.api.IndexDataBase;
|
import net.runelite.api.IndexDataBase;
|
||||||
import net.runelite.mapping.Import;
|
import net.runelite.mapping.Import;
|
||||||
|
|
||||||
public interface RSAbstractIndexCache extends IndexDataBase
|
public interface RSAbstractArchive extends IndexDataBase
|
||||||
{
|
{
|
||||||
@Import("takeRecord")
|
@Import("takeFile")
|
||||||
byte[] getConfigData(int archiveId, int fileId);
|
byte[] getConfigData(int archiveId, int fileId);
|
||||||
}
|
}
|
||||||
@@ -100,7 +100,7 @@ public interface RSActor extends RSEntity, Actor
|
|||||||
|
|
||||||
// Idle animation
|
// Idle animation
|
||||||
|
|
||||||
@Import("idleSequence")
|
@Import("readySequence")
|
||||||
@Override
|
@Override
|
||||||
void setIdlePoseAnimation(int animation);
|
void setIdlePoseAnimation(int animation);
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@ package net.runelite.rs.api;
|
|||||||
|
|
||||||
import net.runelite.mapping.Import;
|
import net.runelite.mapping.Import;
|
||||||
|
|
||||||
public interface RSIndexCache extends RSAbstractIndexCache
|
public interface RSArchive extends RSAbstractArchive
|
||||||
{
|
{
|
||||||
@Import("index")
|
@Import("index")
|
||||||
int getIndex();
|
int getIndex();
|
||||||
@@ -5,7 +5,7 @@ import net.runelite.mapping.Import;
|
|||||||
|
|
||||||
public interface RSBuddy extends ChatPlayer, RSUser
|
public interface RSBuddy extends ChatPlayer, RSUser
|
||||||
{
|
{
|
||||||
@Import("world0")
|
@Import("getWorld")
|
||||||
@Override
|
@Override
|
||||||
int getWorld();
|
int getWorld();
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public interface RSClient extends RSGameShell, Client
|
|||||||
@Override
|
@Override
|
||||||
int getFPS();
|
int getFPS();
|
||||||
|
|
||||||
@Import("minimapOrientation")
|
@Import("camAngleY")
|
||||||
@Override
|
@Override
|
||||||
int getMapAngle();
|
int getMapAngle();
|
||||||
|
|
||||||
@@ -187,7 +187,7 @@ public interface RSClient extends RSGameShell, Client
|
|||||||
@Override
|
@Override
|
||||||
void setDraggedOnWidget(Widget widget);
|
void setDraggedOnWidget(Widget widget);
|
||||||
|
|
||||||
@Import("widgets")
|
@Import("interfaceComponents")
|
||||||
RSWidget[][] getWidgets();
|
RSWidget[][] getWidgets();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -390,8 +390,7 @@ public interface RSClient extends RSGameShell, Client
|
|||||||
RSSprite createItemSprite(int itemId, int quantity, int thickness, int borderColor, int stackable, boolean noted);
|
RSSprite createItemSprite(int itemId, int quantity, int thickness, int borderColor, int stackable, boolean noted);
|
||||||
|
|
||||||
@Import("menuAction")
|
@Import("menuAction")
|
||||||
@Override
|
void sendMenuAction(int n2, int n3, int n4, int n5, String string, String string2, int n6, int n7);
|
||||||
void invokeMenuAction(int n2, int n3, int n4, int n5, String string, String string2, int n6, int n7);
|
|
||||||
|
|
||||||
@Import("decodeSprite")
|
@Import("decodeSprite")
|
||||||
void decodeSprite(byte[] data);
|
void decodeSprite(byte[] data);
|
||||||
@@ -441,19 +440,19 @@ public interface RSClient extends RSGameShell, Client
|
|||||||
@Import("indexedSpritePalette")
|
@Import("indexedSpritePalette")
|
||||||
void setIndexedSpritePalette(int[] indexedSpritePalette);
|
void setIndexedSpritePalette(int[] indexedSpritePalette);
|
||||||
|
|
||||||
@Import("indexCache8")
|
@Import("archive8")
|
||||||
@Override
|
@Override
|
||||||
RSAbstractIndexCache getIndexSprites();
|
RSAbstractArchive getIndexSprites();
|
||||||
|
|
||||||
@Import("indexCache12")
|
@Import("archive12")
|
||||||
@Override
|
@Override
|
||||||
RSAbstractIndexCache getIndexScripts();
|
RSAbstractArchive getIndexScripts();
|
||||||
|
|
||||||
@Import("widgetClickMasks")
|
@Import("widgetClickMasks")
|
||||||
@Override
|
@Override
|
||||||
RSNodeHashTable getWidgetFlags();
|
RSNodeHashTable getWidgetFlags();
|
||||||
|
|
||||||
@Import("widgetGroupParents")
|
@Import("interfaceParents")
|
||||||
@Override
|
@Override
|
||||||
RSNodeHashTable getComponentTable();
|
RSNodeHashTable getComponentTable();
|
||||||
|
|
||||||
@@ -514,7 +513,7 @@ public interface RSClient extends RSGameShell, Client
|
|||||||
* Get the widget top group. widgets[topGroup] contains widgets with
|
* Get the widget top group. widgets[topGroup] contains widgets with
|
||||||
* parentId -1, which are the widget roots.
|
* parentId -1, which are the widget roots.
|
||||||
*/
|
*/
|
||||||
@Import("rootWidgetGroup")
|
@Import("rootInterface")
|
||||||
int getWidgetRoot();
|
int getWidgetRoot();
|
||||||
|
|
||||||
@Import("WorldMapElement_cached")
|
@Import("WorldMapElement_cached")
|
||||||
@@ -662,10 +661,10 @@ public interface RSClient extends RSGameShell, Client
|
|||||||
*
|
*
|
||||||
* (1) JAU - Jagex Angle Unit; 1/1024 of a revolution
|
* (1) JAU - Jagex Angle Unit; 1/1024 of a revolution
|
||||||
*/
|
*/
|
||||||
@Import("cameraPitchTarget")
|
@Import("camAngleX")
|
||||||
int getCameraPitchTarget();
|
int getCameraPitchTarget();
|
||||||
|
|
||||||
@Import("cameraPitchTarget")
|
@Import("camAngleX")
|
||||||
void setCameraPitchTarget(int pitch);
|
void setCameraPitchTarget(int pitch);
|
||||||
|
|
||||||
@Import("Scene_cameraPitchSine")
|
@Import("Scene_cameraPitchSine")
|
||||||
@@ -1015,7 +1014,7 @@ public interface RSClient extends RSGameShell, Client
|
|||||||
boolean isSpellSelected();
|
boolean isSpellSelected();
|
||||||
|
|
||||||
@Import("readSoundEffect")
|
@Import("readSoundEffect")
|
||||||
RSSoundEffect getTrack(RSAbstractIndexCache indexData, int id, int var0);
|
RSSoundEffect getTrack(RSAbstractArchive indexData, int id, int var0);
|
||||||
|
|
||||||
@Import("createRawPcmStream")
|
@Import("createRawPcmStream")
|
||||||
RSRawPcmStream createRawPcmStream(RSRawSound audioNode, int var0, int volume);
|
RSRawPcmStream createRawPcmStream(RSRawSound audioNode, int var0, int volume);
|
||||||
@@ -1023,8 +1022,8 @@ public interface RSClient extends RSGameShell, Client
|
|||||||
@Import("pcmStreamMixer")
|
@Import("pcmStreamMixer")
|
||||||
RSPcmStreamMixer getSoundEffectAudioQueue();
|
RSPcmStreamMixer getSoundEffectAudioQueue();
|
||||||
|
|
||||||
@Import("indexCache4")
|
@Import("archive4")
|
||||||
RSAbstractIndexCache getIndexCache4();
|
RSAbstractArchive getIndexCache4();
|
||||||
|
|
||||||
@Import("decimator")
|
@Import("decimator")
|
||||||
RSDecimator getSoundEffectResampler();
|
RSDecimator getSoundEffectResampler();
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public interface RSEntity extends RSNode, Renderable
|
|||||||
@Override
|
@Override
|
||||||
RSModel getModel();
|
RSModel getModel();
|
||||||
|
|
||||||
@Import("renderDraw")
|
@Import("draw")
|
||||||
@Override
|
@Override
|
||||||
void draw(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash);
|
void draw(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ public interface RSEnumDefinition extends EnumDefinition, RSDualNode
|
|||||||
@Override
|
@Override
|
||||||
int[] getIntVals();
|
int[] getIntVals();
|
||||||
|
|
||||||
@Import("stringVals")
|
@Import("strVals")
|
||||||
@Override
|
@Override
|
||||||
String[] getStringVals();
|
String[] getStringVals();
|
||||||
|
|
||||||
@Import("defaultInt")
|
@Import("defaultInt")
|
||||||
int getDefaultInt();
|
int getDefaultInt();
|
||||||
|
|
||||||
@Import("defaultString")
|
@Import("defaultStr")
|
||||||
String getDefaultString();
|
String getDefaultString();
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@ package net.runelite.rs.api;
|
|||||||
import net.runelite.api.WidgetNode;
|
import net.runelite.api.WidgetNode;
|
||||||
import net.runelite.mapping.Import;
|
import net.runelite.mapping.Import;
|
||||||
|
|
||||||
public interface RSWidgetGroupParent extends RSNode, WidgetNode
|
public interface RSInterfaceParent extends RSNode, WidgetNode
|
||||||
{
|
{
|
||||||
@Import("group")
|
@Import("group")
|
||||||
@Override
|
@Override
|
||||||
@@ -9,7 +9,7 @@ public interface RSNPCDefinition extends NPCDefinition
|
|||||||
@Override
|
@Override
|
||||||
String getName();
|
String getName();
|
||||||
|
|
||||||
@Import("archives")
|
@Import("models")
|
||||||
@Override
|
@Override
|
||||||
int[] getModels();
|
int[] getModels();
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
package net.runelite.rs.api;
|
package net.runelite.rs.api;
|
||||||
|
|
||||||
import net.runelite.api.PacketBuffer;
|
public interface RSPacketBuffer
|
||||||
|
|
||||||
public interface RSPacketBuffer extends PacketBuffer
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,6 @@ public interface RSScene extends Scene
|
|||||||
@Import("ySize")
|
@Import("ySize")
|
||||||
int getMaxZ();
|
int getMaxZ();
|
||||||
|
|
||||||
@Import("Scene_minPlane")
|
@Import("minPlane")
|
||||||
int getMinLevel();
|
int getMinLevel();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ import net.runelite.mapping.Import;
|
|||||||
|
|
||||||
public interface RSVarbitDefinition extends RSDualNode
|
public interface RSVarbitDefinition extends RSDualNode
|
||||||
{
|
{
|
||||||
@Import("varp")
|
@Import("baseVar")
|
||||||
int getIndex();
|
int getIndex();
|
||||||
|
|
||||||
@Import("lowBit")
|
@Import("startBit")
|
||||||
int getLeastSignificantBit();
|
int getLeastSignificantBit();
|
||||||
|
|
||||||
@Import("highBit")
|
@Import("endBit")
|
||||||
int getMostSignificantBit();
|
int getMostSignificantBit();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -312,7 +312,7 @@ public interface RSWidget extends Widget
|
|||||||
@Override
|
@Override
|
||||||
void setHasListener(boolean hasListener);
|
void setHasListener(boolean hasListener);
|
||||||
|
|
||||||
@Import("onKeyListener")
|
@Import("onKey")
|
||||||
@Override
|
@Override
|
||||||
Object[] getOnKeyListener();
|
Object[] getOnKeyListener();
|
||||||
|
|
||||||
@@ -320,11 +320,11 @@ public interface RSWidget extends Widget
|
|||||||
@Override
|
@Override
|
||||||
Object[] getOnLoadListener();
|
Object[] getOnLoadListener();
|
||||||
|
|
||||||
@Import("onDialogAbortListener")
|
@Import("onDialogAbort")
|
||||||
@Override
|
@Override
|
||||||
void setOnDialogAbortListener(Object... args);
|
void setOnDialogAbortListener(Object... args);
|
||||||
|
|
||||||
@Import("onKeyListener")
|
@Import("onKey")
|
||||||
@Override
|
@Override
|
||||||
void setOnKeyListener(Object... args);
|
void setOnKeyListener(Object... args);
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public interface RSWorldMap extends RenderOverview
|
|||||||
@Override
|
@Override
|
||||||
RSWorldMapManager getWorldMapManager();
|
RSWorldMapManager getWorldMapManager();
|
||||||
|
|
||||||
@Import("initializeWorldMap")
|
@Import("initializeWorldMapManager")
|
||||||
@Override
|
@Override
|
||||||
void initializeWorldMap(WorldMapData var1);
|
void initializeWorldMap(WorldMapData var1);
|
||||||
|
|
||||||
|
|||||||
+219
-219
@@ -6,8 +6,8 @@ import net.runelite.mapping.ObfuscatedName;
|
|||||||
import net.runelite.mapping.ObfuscatedSignature;
|
import net.runelite.mapping.ObfuscatedSignature;
|
||||||
|
|
||||||
@ObfuscatedName("ir")
|
@ObfuscatedName("ir")
|
||||||
@Implements("AbstractIndexCache")
|
@Implements("AbstractArchive")
|
||||||
public abstract class AbstractIndexCache {
|
public abstract class AbstractArchive {
|
||||||
@ObfuscatedName("qb")
|
@ObfuscatedName("qb")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "Lco;"
|
signature = "Lco;"
|
||||||
@@ -37,53 +37,53 @@ public abstract class AbstractIndexCache {
|
|||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "Lit;"
|
signature = "Lit;"
|
||||||
)
|
)
|
||||||
@Export("indexCache0")
|
@Export("archive0")
|
||||||
static IndexCache indexCache0;
|
static Archive archive0;
|
||||||
@ObfuscatedName("f")
|
@ObfuscatedName("f")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = 1694798923
|
intValue = 1694798923
|
||||||
)
|
)
|
||||||
@Export("archiveCount")
|
@Export("groupCount")
|
||||||
int archiveCount;
|
int groupCount;
|
||||||
@ObfuscatedName("q")
|
@ObfuscatedName("q")
|
||||||
@Export("archiveIds")
|
@Export("groupIds")
|
||||||
int[] archiveIds;
|
int[] groupIds;
|
||||||
@ObfuscatedName("w")
|
@ObfuscatedName("w")
|
||||||
@Export("archiveNameHashes")
|
@Export("groupNameHashes")
|
||||||
int[] archiveNameHashes;
|
int[] groupNameHashes;
|
||||||
@ObfuscatedName("o")
|
@ObfuscatedName("o")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "Llv;"
|
signature = "Llv;"
|
||||||
)
|
)
|
||||||
@Export("archiveNameHashTable")
|
@Export("groupNameHashTable")
|
||||||
IntHashTable archiveNameHashTable;
|
IntHashTable groupNameHashTable;
|
||||||
@ObfuscatedName("u")
|
@ObfuscatedName("u")
|
||||||
@Export("archiveCrcs")
|
@Export("groupCrcs")
|
||||||
int[] archiveCrcs;
|
int[] groupCrcs;
|
||||||
@ObfuscatedName("g")
|
@ObfuscatedName("g")
|
||||||
@Export("archiveVersions")
|
@Export("groupVersions")
|
||||||
int[] archiveVersions;
|
int[] groupVersions;
|
||||||
@ObfuscatedName("l")
|
@ObfuscatedName("l")
|
||||||
@Export("recordCounts")
|
@Export("fileCounts")
|
||||||
int[] recordCounts;
|
int[] fileCounts;
|
||||||
@ObfuscatedName("e")
|
@ObfuscatedName("e")
|
||||||
@Export("recordIds")
|
@Export("fileIds")
|
||||||
int[][] recordIds;
|
int[][] fileIds;
|
||||||
@ObfuscatedName("x")
|
@ObfuscatedName("x")
|
||||||
@Export("recordNameHashes")
|
@Export("fileNameHashes")
|
||||||
int[][] recordNameHashes;
|
int[][] fileNameHashes;
|
||||||
@ObfuscatedName("d")
|
@ObfuscatedName("d")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "[Llv;"
|
signature = "[Llv;"
|
||||||
)
|
)
|
||||||
@Export("recordNameHashTables")
|
@Export("fileNameHashTables")
|
||||||
IntHashTable[] recordNameHashTables;
|
IntHashTable[] fileNameHashTables;
|
||||||
@ObfuscatedName("k")
|
@ObfuscatedName("k")
|
||||||
@Export("archives")
|
@Export("groups")
|
||||||
Object[] archives;
|
Object[] groups;
|
||||||
@ObfuscatedName("n")
|
@ObfuscatedName("n")
|
||||||
@Export("records")
|
@Export("files")
|
||||||
Object[][] records;
|
Object[][] files;
|
||||||
@ObfuscatedName("a")
|
@ObfuscatedName("a")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = -530370811
|
intValue = -530370811
|
||||||
@@ -91,15 +91,15 @@ public abstract class AbstractIndexCache {
|
|||||||
@Export("hash")
|
@Export("hash")
|
||||||
public int hash;
|
public int hash;
|
||||||
@ObfuscatedName("z")
|
@ObfuscatedName("z")
|
||||||
@Export("releaseArchives")
|
@Export("releaseGroups")
|
||||||
boolean releaseArchives;
|
boolean releaseGroups;
|
||||||
@ObfuscatedName("j")
|
@ObfuscatedName("j")
|
||||||
@Export("shallowRecords")
|
@Export("shallowFiles")
|
||||||
boolean shallowRecords;
|
boolean shallowFiles;
|
||||||
|
|
||||||
AbstractIndexCache(boolean var1, boolean var2) {
|
AbstractArchive(boolean var1, boolean var2) {
|
||||||
this.releaseArchives = var1;
|
this.releaseGroups = var1;
|
||||||
this.shallowRecords = var2;
|
this.shallowFiles = var2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
@@ -107,8 +107,8 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "([BB)V",
|
signature = "([BB)V",
|
||||||
garbageValue = "0"
|
garbageValue = "0"
|
||||||
)
|
)
|
||||||
@Export("setIndexReference")
|
@Export("decodeIndex")
|
||||||
void setIndexReference(byte[] var1) {
|
void decodeIndex(byte[] var1) {
|
||||||
this.hash = WallDecoration.method3257(var1, var1.length);
|
this.hash = WallDecoration.method3257(var1, var1.length);
|
||||||
Buffer var2 = new Buffer(Strings.decompressBytes(var1));
|
Buffer var2 = new Buffer(Strings.decompressBytes(var1));
|
||||||
int var3 = var2.readUnsignedByte();
|
int var3 = var2.readUnsignedByte();
|
||||||
@@ -119,57 +119,57 @@ public abstract class AbstractIndexCache {
|
|||||||
|
|
||||||
int var4 = var2.readUnsignedByte();
|
int var4 = var2.readUnsignedByte();
|
||||||
if (var3 >= 7) {
|
if (var3 >= 7) {
|
||||||
this.archiveCount = var2.method50();
|
this.groupCount = var2.method50();
|
||||||
} else {
|
} else {
|
||||||
this.archiveCount = var2.readUnsignedShort();
|
this.groupCount = var2.readUnsignedShort();
|
||||||
}
|
}
|
||||||
|
|
||||||
int var5 = 0;
|
int var5 = 0;
|
||||||
int var6 = -1;
|
int var6 = -1;
|
||||||
this.archiveIds = new int[this.archiveCount];
|
this.groupIds = new int[this.groupCount];
|
||||||
int var7;
|
int var7;
|
||||||
if (var3 >= 7) {
|
if (var3 >= 7) {
|
||||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||||
this.archiveIds[var7] = var5 += var2.method50();
|
this.groupIds[var7] = var5 += var2.method50();
|
||||||
if (this.archiveIds[var7] > var6) {
|
if (this.groupIds[var7] > var6) {
|
||||||
var6 = this.archiveIds[var7];
|
var6 = this.groupIds[var7];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||||
this.archiveIds[var7] = var5 += var2.readUnsignedShort();
|
this.groupIds[var7] = var5 += var2.readUnsignedShort();
|
||||||
if (this.archiveIds[var7] > var6) {
|
if (this.groupIds[var7] > var6) {
|
||||||
var6 = this.archiveIds[var7];
|
var6 = this.groupIds[var7];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.archiveCrcs = new int[var6 + 1];
|
this.groupCrcs = new int[var6 + 1];
|
||||||
this.archiveVersions = new int[var6 + 1];
|
this.groupVersions = new int[var6 + 1];
|
||||||
this.recordCounts = new int[var6 + 1];
|
this.fileCounts = new int[var6 + 1];
|
||||||
this.recordIds = new int[var6 + 1][];
|
this.fileIds = new int[var6 + 1][];
|
||||||
this.archives = new Object[var6 + 1];
|
this.groups = new Object[var6 + 1];
|
||||||
this.records = new Object[var6 + 1][];
|
this.files = new Object[var6 + 1][];
|
||||||
if (var4 != 0) {
|
if (var4 != 0) {
|
||||||
this.archiveNameHashes = new int[var6 + 1];
|
this.groupNameHashes = new int[var6 + 1];
|
||||||
|
|
||||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||||
this.archiveNameHashes[this.archiveIds[var7]] = var2.readInt();
|
this.groupNameHashes[this.groupIds[var7]] = var2.readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.archiveNameHashTable = new IntHashTable(this.archiveNameHashes);
|
this.groupNameHashTable = new IntHashTable(this.groupNameHashes);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||||
this.archiveCrcs[this.archiveIds[var7]] = var2.readInt();
|
this.groupCrcs[this.groupIds[var7]] = var2.readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||||
this.archiveVersions[this.archiveIds[var7]] = var2.readInt();
|
this.groupVersions[this.groupIds[var7]] = var2.readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||||
this.recordCounts[this.archiveIds[var7]] = var2.readUnsignedShort();
|
this.fileCounts[this.groupIds[var7]] = var2.readUnsignedShort();
|
||||||
}
|
}
|
||||||
|
|
||||||
int var8;
|
int var8;
|
||||||
@@ -178,55 +178,55 @@ public abstract class AbstractIndexCache {
|
|||||||
int var11;
|
int var11;
|
||||||
int var12;
|
int var12;
|
||||||
if (var3 >= 7) {
|
if (var3 >= 7) {
|
||||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||||
var8 = this.archiveIds[var7];
|
var8 = this.groupIds[var7];
|
||||||
var9 = this.recordCounts[var8];
|
var9 = this.fileCounts[var8];
|
||||||
var5 = 0;
|
var5 = 0;
|
||||||
var10 = -1;
|
var10 = -1;
|
||||||
this.recordIds[var8] = new int[var9];
|
this.fileIds[var8] = new int[var9];
|
||||||
|
|
||||||
for (var11 = 0; var11 < var9; ++var11) {
|
for (var11 = 0; var11 < var9; ++var11) {
|
||||||
var12 = this.recordIds[var8][var11] = var5 += var2.method50();
|
var12 = this.fileIds[var8][var11] = var5 += var2.method50();
|
||||||
if (var12 > var10) {
|
if (var12 > var10) {
|
||||||
var10 = var12;
|
var10 = var12;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.records[var8] = new Object[var10 + 1];
|
this.files[var8] = new Object[var10 + 1];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||||
var8 = this.archiveIds[var7];
|
var8 = this.groupIds[var7];
|
||||||
var9 = this.recordCounts[var8];
|
var9 = this.fileCounts[var8];
|
||||||
var5 = 0;
|
var5 = 0;
|
||||||
var10 = -1;
|
var10 = -1;
|
||||||
this.recordIds[var8] = new int[var9];
|
this.fileIds[var8] = new int[var9];
|
||||||
|
|
||||||
for (var11 = 0; var11 < var9; ++var11) {
|
for (var11 = 0; var11 < var9; ++var11) {
|
||||||
var12 = this.recordIds[var8][var11] = var5 += var2.readUnsignedShort();
|
var12 = this.fileIds[var8][var11] = var5 += var2.readUnsignedShort();
|
||||||
if (var12 > var10) {
|
if (var12 > var10) {
|
||||||
var10 = var12;
|
var10 = var12;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.records[var8] = new Object[var10 + 1];
|
this.files[var8] = new Object[var10 + 1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var4 != 0) {
|
if (var4 != 0) {
|
||||||
this.recordNameHashes = new int[var6 + 1][];
|
this.fileNameHashes = new int[var6 + 1][];
|
||||||
this.recordNameHashTables = new IntHashTable[var6 + 1];
|
this.fileNameHashTables = new IntHashTable[var6 + 1];
|
||||||
|
|
||||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||||
var8 = this.archiveIds[var7];
|
var8 = this.groupIds[var7];
|
||||||
var9 = this.recordCounts[var8];
|
var9 = this.fileCounts[var8];
|
||||||
this.recordNameHashes[var8] = new int[this.records[var8].length];
|
this.fileNameHashes[var8] = new int[this.files[var8].length];
|
||||||
|
|
||||||
for (var10 = 0; var10 < var9; ++var10) {
|
for (var10 = 0; var10 < var9; ++var10) {
|
||||||
this.recordNameHashes[var8][this.recordIds[var8][var10]] = var2.readInt();
|
this.fileNameHashes[var8][this.fileIds[var8][var10]] = var2.readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.recordNameHashTables[var8] = new IntHashTable(this.recordNameHashes[var8]);
|
this.fileNameHashTables[var8] = new IntHashTable(this.fileNameHashes[var8]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,9 +248,9 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(III)[B",
|
signature = "(III)[B",
|
||||||
garbageValue = "1945577069"
|
garbageValue = "1945577069"
|
||||||
)
|
)
|
||||||
@Export("takeRecord")
|
@Export("takeFile")
|
||||||
public byte[] takeRecord(int var1, int var2) {
|
public byte[] takeFile(int group, int file) {
|
||||||
return this.takeRecordEncrypted(var1, var2, (int[])null);
|
return this.takeFileEncrypted(group, file, (int[])null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("w")
|
@ObfuscatedName("w")
|
||||||
@@ -258,23 +258,23 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(II[II)[B",
|
signature = "(II[II)[B",
|
||||||
garbageValue = "-1363136655"
|
garbageValue = "-1363136655"
|
||||||
)
|
)
|
||||||
@Export("takeRecordEncrypted")
|
@Export("takeFileEncrypted")
|
||||||
public byte[] takeRecordEncrypted(int var1, int var2, int[] var3) {
|
public byte[] takeFileEncrypted(int group, int file, int[] xteaKey) {
|
||||||
if (var1 >= 0 && var1 < this.records.length && this.records[var1] != null && var2 >= 0 && var2 < this.records[var1].length) {
|
if (group >= 0 && group < this.files.length && this.files[group] != null && file >= 0 && file < this.files[group].length) {
|
||||||
if (this.records[var1][var2] == null) {
|
if (this.files[group][file] == null) {
|
||||||
boolean var4 = this.buildRecords(var1, var3);
|
boolean var4 = this.buildFiles(group, xteaKey);
|
||||||
if (!var4) {
|
if (!var4) {
|
||||||
this.loadArchive(var1);
|
this.loadGroup(group);
|
||||||
var4 = this.buildRecords(var1, var3);
|
var4 = this.buildFiles(group, xteaKey);
|
||||||
if (!var4) {
|
if (!var4) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
byte[] var5 = TextureProvider.byteArrayFromObject(this.records[var1][var2], false);
|
byte[] var5 = TextureProvider.byteArrayFromObject(this.files[group][file], false);
|
||||||
if (this.shallowRecords) {
|
if (this.shallowFiles) {
|
||||||
this.records[var1][var2] = null;
|
this.files[group][file] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return var5;
|
return var5;
|
||||||
@@ -288,16 +288,16 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(III)Z",
|
signature = "(III)Z",
|
||||||
garbageValue = "-1822260214"
|
garbageValue = "-1822260214"
|
||||||
)
|
)
|
||||||
@Export("tryLoadRecord")
|
@Export("tryLoadFile")
|
||||||
public boolean tryLoadRecord(int var1, int var2) {
|
public boolean tryLoadFile(int group, int file) {
|
||||||
if (var1 >= 0 && var1 < this.records.length && this.records[var1] != null && var2 >= 0 && var2 < this.records[var1].length) {
|
if (group >= 0 && group < this.files.length && this.files[group] != null && file >= 0 && file < this.files[group].length) {
|
||||||
if (this.records[var1][var2] != null) {
|
if (this.files[group][file] != null) {
|
||||||
return true;
|
return true;
|
||||||
} else if (this.archives[var1] != null) {
|
} else if (this.groups[group] != null) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
this.loadArchive(var1);
|
this.loadGroup(group);
|
||||||
return this.archives[var1] != null;
|
return this.groups[group] != null;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
@@ -310,10 +310,10 @@ public abstract class AbstractIndexCache {
|
|||||||
garbageValue = "-1923759754"
|
garbageValue = "-1923759754"
|
||||||
)
|
)
|
||||||
public boolean method1(int var1) {
|
public boolean method1(int var1) {
|
||||||
if (this.records.length == 1) {
|
if (this.files.length == 1) {
|
||||||
return this.tryLoadRecord(0, var1);
|
return this.tryLoadFile(0, var1);
|
||||||
} else if (this.records[var1].length == 1) {
|
} else if (this.files[var1].length == 1) {
|
||||||
return this.tryLoadRecord(var1, 0);
|
return this.tryLoadFile(var1, 0);
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException();
|
throw new RuntimeException();
|
||||||
}
|
}
|
||||||
@@ -324,13 +324,13 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(II)Z",
|
signature = "(II)Z",
|
||||||
garbageValue = "-374594123"
|
garbageValue = "-374594123"
|
||||||
)
|
)
|
||||||
@Export("tryLoadArchive")
|
@Export("tryLoadGroup")
|
||||||
public boolean tryLoadArchive(int var1) {
|
public boolean tryLoadGroup(int group) {
|
||||||
if (this.archives[var1] != null) {
|
if (this.groups[group] != null) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
this.loadArchive(var1);
|
this.loadGroup(group);
|
||||||
return this.archives[var1] != null;
|
return this.groups[group] != null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -342,11 +342,11 @@ public abstract class AbstractIndexCache {
|
|||||||
public boolean method2() {
|
public boolean method2() {
|
||||||
boolean var1 = true;
|
boolean var1 = true;
|
||||||
|
|
||||||
for (int var2 = 0; var2 < this.archiveIds.length; ++var2) {
|
for (int var2 = 0; var2 < this.groupIds.length; ++var2) {
|
||||||
int var3 = this.archiveIds[var2];
|
int var3 = this.groupIds[var2];
|
||||||
if (this.archives[var3] == null) {
|
if (this.groups[var3] == null) {
|
||||||
this.loadArchive(var3);
|
this.loadGroup(var3);
|
||||||
if (this.archives[var3] == null) {
|
if (this.groups[var3] == null) {
|
||||||
var1 = false;
|
var1 = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -360,9 +360,9 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(II)I",
|
signature = "(II)I",
|
||||||
garbageValue = "-1809769865"
|
garbageValue = "-1809769865"
|
||||||
)
|
)
|
||||||
@Export("archiveLoadPercent")
|
@Export("groupLoadPercent")
|
||||||
int archiveLoadPercent(int var1) {
|
int groupLoadPercent(int var1) {
|
||||||
return this.archives[var1] != null ? 100 : 0;
|
return this.groups[var1] != null ? 100 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("x")
|
@ObfuscatedName("x")
|
||||||
@@ -370,12 +370,12 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(IS)[B",
|
signature = "(IS)[B",
|
||||||
garbageValue = "-10015"
|
garbageValue = "-10015"
|
||||||
)
|
)
|
||||||
@Export("takeRecordFlat")
|
@Export("takeFileFlat")
|
||||||
public byte[] takeRecordFlat(int var1) {
|
public byte[] takeFileFlat(int groupOrFile) {
|
||||||
if (this.records.length == 1) {
|
if (this.files.length == 1) {
|
||||||
return this.takeRecord(0, var1);
|
return this.takeFile(0, groupOrFile);
|
||||||
} else if (this.records[var1].length == 1) {
|
} else if (this.files[groupOrFile].length == 1) {
|
||||||
return this.takeRecord(var1, 0);
|
return this.takeFile(groupOrFile, 0);
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException();
|
throw new RuntimeException();
|
||||||
}
|
}
|
||||||
@@ -386,21 +386,21 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(III)[B",
|
signature = "(III)[B",
|
||||||
garbageValue = "-755739011"
|
garbageValue = "-755739011"
|
||||||
)
|
)
|
||||||
@Export("getRecord")
|
@Export("getFile")
|
||||||
public byte[] getRecord(int var1, int var2) {
|
public byte[] getFile(int group, int file) {
|
||||||
if (var1 >= 0 && var1 < this.records.length && this.records[var1] != null && var2 >= 0 && var2 < this.records[var1].length) {
|
if (group >= 0 && group < this.files.length && this.files[group] != null && file >= 0 && file < this.files[group].length) {
|
||||||
if (this.records[var1][var2] == null) {
|
if (this.files[group][file] == null) {
|
||||||
boolean var3 = this.buildRecords(var1, (int[])null);
|
boolean var3 = this.buildFiles(group, (int[])null);
|
||||||
if (!var3) {
|
if (!var3) {
|
||||||
this.loadArchive(var1);
|
this.loadGroup(group);
|
||||||
var3 = this.buildRecords(var1, (int[])null);
|
var3 = this.buildFiles(group, (int[])null);
|
||||||
if (!var3) {
|
if (!var3) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
byte[] var4 = TextureProvider.byteArrayFromObject(this.records[var1][var2], false);
|
byte[] var4 = TextureProvider.byteArrayFromObject(this.files[group][file], false);
|
||||||
return var4;
|
return var4;
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
@@ -412,12 +412,12 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(IB)[B",
|
signature = "(IB)[B",
|
||||||
garbageValue = "68"
|
garbageValue = "68"
|
||||||
)
|
)
|
||||||
@Export("getRecordFlat")
|
@Export("getFileFlat")
|
||||||
public byte[] getRecordFlat(int var1) {
|
public byte[] getFileFlat(int groupOrFile) {
|
||||||
if (this.records.length == 1) {
|
if (this.files.length == 1) {
|
||||||
return this.getRecord(0, var1);
|
return this.getFile(0, groupOrFile);
|
||||||
} else if (this.records[var1].length == 1) {
|
} else if (this.files[groupOrFile].length == 1) {
|
||||||
return this.getRecord(var1, 0);
|
return this.getFile(groupOrFile, 0);
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException();
|
throw new RuntimeException();
|
||||||
}
|
}
|
||||||
@@ -428,8 +428,8 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(II)V",
|
signature = "(II)V",
|
||||||
garbageValue = "-1829145107"
|
garbageValue = "-1829145107"
|
||||||
)
|
)
|
||||||
@Export("loadArchive")
|
@Export("loadGroup")
|
||||||
void loadArchive(int var1) {
|
void loadGroup(int group) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("j")
|
@ObfuscatedName("j")
|
||||||
@@ -438,7 +438,7 @@ public abstract class AbstractIndexCache {
|
|||||||
garbageValue = "28"
|
garbageValue = "28"
|
||||||
)
|
)
|
||||||
public int[] method3(int var1) {
|
public int[] method3(int var1) {
|
||||||
return var1 >= 0 && var1 < this.recordIds.length ? this.recordIds[var1] : null;
|
return var1 >= 0 && var1 < this.fileIds.length ? this.fileIds[var1] : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("s")
|
@ObfuscatedName("s")
|
||||||
@@ -447,7 +447,7 @@ public abstract class AbstractIndexCache {
|
|||||||
garbageValue = "1178362496"
|
garbageValue = "1178362496"
|
||||||
)
|
)
|
||||||
public int method4(int var1) {
|
public int method4(int var1) {
|
||||||
return this.records[var1].length;
|
return this.files[var1].length;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("t")
|
@ObfuscatedName("t")
|
||||||
@@ -456,7 +456,7 @@ public abstract class AbstractIndexCache {
|
|||||||
garbageValue = "1702434573"
|
garbageValue = "1702434573"
|
||||||
)
|
)
|
||||||
public int method5() {
|
public int method5() {
|
||||||
return this.records.length;
|
return this.files.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("y")
|
@ObfuscatedName("y")
|
||||||
@@ -465,8 +465,8 @@ public abstract class AbstractIndexCache {
|
|||||||
garbageValue = "38"
|
garbageValue = "38"
|
||||||
)
|
)
|
||||||
public void method6() {
|
public void method6() {
|
||||||
for (int var1 = 0; var1 < this.archives.length; ++var1) {
|
for (int var1 = 0; var1 < this.groups.length; ++var1) {
|
||||||
this.archives[var1] = null;
|
this.groups[var1] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -477,8 +477,8 @@ public abstract class AbstractIndexCache {
|
|||||||
garbageValue = "330258899"
|
garbageValue = "330258899"
|
||||||
)
|
)
|
||||||
public void method7(int var1) {
|
public void method7(int var1) {
|
||||||
for (int var2 = 0; var2 < this.records[var1].length; ++var2) {
|
for (int var2 = 0; var2 < this.files[var1].length; ++var2) {
|
||||||
this.records[var1][var2] = null;
|
this.files[var1][var2] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -489,10 +489,10 @@ public abstract class AbstractIndexCache {
|
|||||||
garbageValue = "-709581639"
|
garbageValue = "-709581639"
|
||||||
)
|
)
|
||||||
public void method8() {
|
public void method8() {
|
||||||
for (int var1 = 0; var1 < this.records.length; ++var1) {
|
for (int var1 = 0; var1 < this.files.length; ++var1) {
|
||||||
if (this.records[var1] != null) {
|
if (this.files[var1] != null) {
|
||||||
for (int var2 = 0; var2 < this.records[var1].length; ++var2) {
|
for (int var2 = 0; var2 < this.files[var1].length; ++var2) {
|
||||||
this.records[var1][var2] = null;
|
this.files[var1][var2] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -504,14 +504,14 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(I[II)Z",
|
signature = "(I[II)Z",
|
||||||
garbageValue = "-1835696874"
|
garbageValue = "-1835696874"
|
||||||
)
|
)
|
||||||
@Export("buildRecords")
|
@Export("buildFiles")
|
||||||
boolean buildRecords(int var1, int[] var2) {
|
boolean buildFiles(int group, int[] xteaKey) {
|
||||||
if (this.archives[var1] == null) {
|
if (this.groups[group] == null) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
int var3 = this.recordCounts[var1];
|
int var3 = this.fileCounts[group];
|
||||||
int[] var4 = this.recordIds[var1];
|
int[] var4 = this.fileIds[group];
|
||||||
Object[] var5 = this.records[var1];
|
Object[] var5 = this.files[group];
|
||||||
boolean var6 = true;
|
boolean var6 = true;
|
||||||
|
|
||||||
for (int var7 = 0; var7 < var3; ++var7) {
|
for (int var7 = 0; var7 < var3; ++var7) {
|
||||||
@@ -525,17 +525,17 @@ public abstract class AbstractIndexCache {
|
|||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
byte[] var18;
|
byte[] var18;
|
||||||
if (var2 == null || var2[0] == 0 && var2[1] == 0 && var2[2] == 0 && var2[3] == 0) {
|
if (xteaKey == null || xteaKey[0] == 0 && xteaKey[1] == 0 && xteaKey[2] == 0 && xteaKey[3] == 0) {
|
||||||
var18 = TextureProvider.byteArrayFromObject(this.archives[var1], false);
|
var18 = TextureProvider.byteArrayFromObject(this.groups[group], false);
|
||||||
} else {
|
} else {
|
||||||
var18 = TextureProvider.byteArrayFromObject(this.archives[var1], true);
|
var18 = TextureProvider.byteArrayFromObject(this.groups[group], true);
|
||||||
Buffer var8 = new Buffer(var18);
|
Buffer var8 = new Buffer(var18);
|
||||||
var8.xteaDecrypt(var2, 5, var8.array.length);
|
var8.xteaDecrypt(xteaKey, 5, var8.array.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
byte[] var19 = Strings.decompressBytes(var18);
|
byte[] var19 = Strings.decompressBytes(var18);
|
||||||
if (this.releaseArchives) {
|
if (this.releaseGroups) {
|
||||||
this.archives[var1] = null;
|
this.groups[group] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var3 > 1) {
|
if (var3 > 1) {
|
||||||
@@ -580,13 +580,13 @@ public abstract class AbstractIndexCache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (var14 = 0; var14 < var3; ++var14) {
|
for (var14 = 0; var14 < var3; ++var14) {
|
||||||
if (!this.shallowRecords) {
|
if (!this.shallowFiles) {
|
||||||
var5[var4[var14]] = Projectile.byteArrayToObject(var20[var14], false);
|
var5[var4[var14]] = Projectile.byteArrayToObject(var20[var14], false);
|
||||||
} else {
|
} else {
|
||||||
var5[var4[var14]] = var20[var14];
|
var5[var4[var14]] = var20[var14];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (!this.shallowRecords) {
|
} else if (!this.shallowFiles) {
|
||||||
var5[var4[0]] = Projectile.byteArrayToObject(var19, false);
|
var5[var4[0]] = Projectile.byteArrayToObject(var19, false);
|
||||||
} else {
|
} else {
|
||||||
var5[var4[0]] = var19;
|
var5[var4[0]] = var19;
|
||||||
@@ -602,10 +602,10 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(Ljava/lang/String;I)I",
|
signature = "(Ljava/lang/String;I)I",
|
||||||
garbageValue = "-224510300"
|
garbageValue = "-224510300"
|
||||||
)
|
)
|
||||||
@Export("getArchiveId")
|
@Export("getGroupId")
|
||||||
public int getArchiveId(String var1) {
|
public int getGroupId(String groupName) {
|
||||||
var1 = var1.toLowerCase();
|
groupName = groupName.toLowerCase();
|
||||||
return this.archiveNameHashTable.get(Client.hashString(var1));
|
return this.groupNameHashTable.get(Client.hashString(groupName));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("v")
|
@ObfuscatedName("v")
|
||||||
@@ -613,10 +613,10 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(ILjava/lang/String;I)I",
|
signature = "(ILjava/lang/String;I)I",
|
||||||
garbageValue = "-443631072"
|
garbageValue = "-443631072"
|
||||||
)
|
)
|
||||||
@Export("getRecordId")
|
@Export("getFileId")
|
||||||
public int getRecordId(int var1, String var2) {
|
public int getFileId(int group, String fileName) {
|
||||||
var2 = var2.toLowerCase();
|
fileName = fileName.toLowerCase();
|
||||||
return this.recordNameHashTables[var1].get(Client.hashString(var2));
|
return this.fileNameHashTables[group].get(Client.hashString(fileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("ag")
|
@ObfuscatedName("ag")
|
||||||
@@ -627,11 +627,11 @@ public abstract class AbstractIndexCache {
|
|||||||
public boolean method9(String var1, String var2) {
|
public boolean method9(String var1, String var2) {
|
||||||
var1 = var1.toLowerCase();
|
var1 = var1.toLowerCase();
|
||||||
var2 = var2.toLowerCase();
|
var2 = var2.toLowerCase();
|
||||||
int var3 = this.archiveNameHashTable.get(Client.hashString(var1));
|
int var3 = this.groupNameHashTable.get(Client.hashString(var1));
|
||||||
if (var3 < 0) {
|
if (var3 < 0) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
int var4 = this.recordNameHashTables[var3].get(Client.hashString(var2));
|
int var4 = this.fileNameHashTables[var3].get(Client.hashString(var2));
|
||||||
return var4 >= 0;
|
return var4 >= 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -641,13 +641,13 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(Ljava/lang/String;Ljava/lang/String;S)[B",
|
signature = "(Ljava/lang/String;Ljava/lang/String;S)[B",
|
||||||
garbageValue = "-22726"
|
garbageValue = "-22726"
|
||||||
)
|
)
|
||||||
@Export("takeRecordByNames")
|
@Export("takeFileByNames")
|
||||||
public byte[] takeRecordByNames(String var1, String var2) {
|
public byte[] takeFileByNames(String groupName, String fileName) {
|
||||||
var1 = var1.toLowerCase();
|
groupName = groupName.toLowerCase();
|
||||||
var2 = var2.toLowerCase();
|
fileName = fileName.toLowerCase();
|
||||||
int var3 = this.archiveNameHashTable.get(Client.hashString(var1));
|
int var3 = this.groupNameHashTable.get(Client.hashString(groupName));
|
||||||
int var4 = this.recordNameHashTables[var3].get(Client.hashString(var2));
|
int var4 = this.fileNameHashTables[var3].get(Client.hashString(fileName));
|
||||||
return this.takeRecord(var3, var4);
|
return this.takeFile(var3, var4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("aj")
|
@ObfuscatedName("aj")
|
||||||
@@ -655,13 +655,13 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(Ljava/lang/String;Ljava/lang/String;I)Z",
|
signature = "(Ljava/lang/String;Ljava/lang/String;I)Z",
|
||||||
garbageValue = "2140743930"
|
garbageValue = "2140743930"
|
||||||
)
|
)
|
||||||
@Export("tryLoadRecordByNames")
|
@Export("tryLoadFileByNames")
|
||||||
public boolean tryLoadRecordByNames(String var1, String var2) {
|
public boolean tryLoadFileByNames(String groupName, String fileName) {
|
||||||
var1 = var1.toLowerCase();
|
groupName = groupName.toLowerCase();
|
||||||
var2 = var2.toLowerCase();
|
fileName = fileName.toLowerCase();
|
||||||
int var3 = this.archiveNameHashTable.get(Client.hashString(var1));
|
int var3 = this.groupNameHashTable.get(Client.hashString(groupName));
|
||||||
int var4 = this.recordNameHashTables[var3].get(Client.hashString(var2));
|
int var4 = this.fileNameHashTables[var3].get(Client.hashString(fileName));
|
||||||
return this.tryLoadRecord(var3, var4);
|
return this.tryLoadFile(var3, var4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("av")
|
@ObfuscatedName("av")
|
||||||
@@ -669,11 +669,11 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(Ljava/lang/String;I)Z",
|
signature = "(Ljava/lang/String;I)Z",
|
||||||
garbageValue = "-1282569336"
|
garbageValue = "-1282569336"
|
||||||
)
|
)
|
||||||
@Export("tryLoadArchiveByName")
|
@Export("tryLoadGroupByName")
|
||||||
public boolean tryLoadArchiveByName(String var1) {
|
public boolean tryLoadGroupByName(String groupName) {
|
||||||
var1 = var1.toLowerCase();
|
groupName = groupName.toLowerCase();
|
||||||
int var2 = this.archiveNameHashTable.get(Client.hashString(var1));
|
int var2 = this.groupNameHashTable.get(Client.hashString(groupName));
|
||||||
return this.tryLoadArchive(var2);
|
return this.tryLoadGroup(var2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("ar")
|
@ObfuscatedName("ar")
|
||||||
@@ -683,7 +683,7 @@ public abstract class AbstractIndexCache {
|
|||||||
)
|
)
|
||||||
public void method10(String var1) {
|
public void method10(String var1) {
|
||||||
var1 = var1.toLowerCase();
|
var1 = var1.toLowerCase();
|
||||||
int var2 = this.archiveNameHashTable.get(Client.hashString(var1));
|
int var2 = this.groupNameHashTable.get(Client.hashString(var1));
|
||||||
if (var2 >= 0) {
|
if (var2 >= 0) {
|
||||||
this.vmethod129(var2);
|
this.vmethod129(var2);
|
||||||
}
|
}
|
||||||
@@ -695,11 +695,11 @@ public abstract class AbstractIndexCache {
|
|||||||
signature = "(Ljava/lang/String;I)I",
|
signature = "(Ljava/lang/String;I)I",
|
||||||
garbageValue = "-1645224643"
|
garbageValue = "-1645224643"
|
||||||
)
|
)
|
||||||
@Export("archiveLoadPercentByName")
|
@Export("groupLoadPercentByName")
|
||||||
public int archiveLoadPercentByName(String var1) {
|
public int groupLoadPercentByName(String groupName) {
|
||||||
var1 = var1.toLowerCase();
|
groupName = groupName.toLowerCase();
|
||||||
int var2 = this.archiveNameHashTable.get(Client.hashString(var1));
|
int var2 = this.groupNameHashTable.get(Client.hashString(groupName));
|
||||||
return this.archiveLoadPercent(var2);
|
return this.groupLoadPercent(var2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
@@ -708,28 +708,28 @@ public abstract class AbstractIndexCache {
|
|||||||
garbageValue = "15597880"
|
garbageValue = "15597880"
|
||||||
)
|
)
|
||||||
@Export("readStringIntParameters")
|
@Export("readStringIntParameters")
|
||||||
static final IterableNodeHashTable readStringIntParameters(Buffer var0, IterableNodeHashTable var1) {
|
static final IterableNodeHashTable readStringIntParameters(Buffer buffer, IterableNodeHashTable hashTable) {
|
||||||
int var2 = var0.readUnsignedByte();
|
int var2 = buffer.readUnsignedByte();
|
||||||
int var3;
|
int var3;
|
||||||
if (var1 == null) {
|
if (hashTable == null) {
|
||||||
var3 = World.method1759(var2);
|
var3 = World.method1759(var2);
|
||||||
var1 = new IterableNodeHashTable(var3);
|
hashTable = new IterableNodeHashTable(var3);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var3 = 0; var3 < var2; ++var3) {
|
for (var3 = 0; var3 < var2; ++var3) {
|
||||||
boolean var4 = var0.readUnsignedByte() == 1;
|
boolean var4 = buffer.readUnsignedByte() == 1;
|
||||||
int var5 = var0.readMedium();
|
int var5 = buffer.readMedium();
|
||||||
Object var6;
|
Object var6;
|
||||||
if (var4) {
|
if (var4) {
|
||||||
var6 = new ObjectNode(var0.readStringCp1252NullTerminated());
|
var6 = new ObjectNode(buffer.readStringCp1252NullTerminated());
|
||||||
} else {
|
} else {
|
||||||
var6 = new IntegerNode(var0.readInt());
|
var6 = new IntegerNode(buffer.readInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
var1.put((Node)var6, (long)var5);
|
hashTable.put((Node)var6, (long)var5);
|
||||||
}
|
}
|
||||||
|
|
||||||
return var1;
|
return hashTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
@@ -738,8 +738,8 @@ public abstract class AbstractIndexCache {
|
|||||||
garbageValue = "-4702"
|
garbageValue = "-4702"
|
||||||
)
|
)
|
||||||
@Export("runScript")
|
@Export("runScript")
|
||||||
public static void runScript(ScriptEvent var0) {
|
public static void runScript(ScriptEvent scriptEvent) {
|
||||||
GrandExchangeEvent.runScript0(var0, 500000);
|
GrandExchangeEvent.runScript0(scriptEvent, 500000);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("eg")
|
@ObfuscatedName("eg")
|
||||||
@@ -748,14 +748,14 @@ public abstract class AbstractIndexCache {
|
|||||||
garbageValue = "308670894"
|
garbageValue = "308670894"
|
||||||
)
|
)
|
||||||
static boolean method4585() {
|
static boolean method4585() {
|
||||||
if (Client.indexCacheLoaders != null && Client.indexCacheLoaderIndex < Client.indexCacheLoaders.size()) {
|
if (Client.archiveLoaders != null && Client.archiveLoaderArchive < Client.archiveLoaders.size()) {
|
||||||
while (Client.indexCacheLoaderIndex < Client.indexCacheLoaders.size()) {
|
while (Client.archiveLoaderArchive < Client.archiveLoaders.size()) {
|
||||||
IndexCacheLoader var0 = (IndexCacheLoader)Client.indexCacheLoaders.get(Client.indexCacheLoaderIndex);
|
ArchiveLoader var0 = (ArchiveLoader)Client.archiveLoaders.get(Client.archiveLoaderArchive);
|
||||||
if (!var0.method134()) {
|
if (!var0.method134()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
++Client.indexCacheLoaderIndex;
|
++Client.archiveLoaderArchive;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -13,7 +13,7 @@ public abstract class AbstractByteArrayCopier {
|
|||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "Lit;"
|
signature = "Lit;"
|
||||||
)
|
)
|
||||||
static IndexCache field0;
|
static Archive field0;
|
||||||
|
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
@@ -29,7 +29,7 @@ public abstract class AbstractByteArrayCopier {
|
|||||||
garbageValue = "-2034091753"
|
garbageValue = "-2034091753"
|
||||||
)
|
)
|
||||||
@Export("set")
|
@Export("set")
|
||||||
abstract void set(byte[] var1);
|
abstract void set(byte[] array);
|
||||||
|
|
||||||
@ObfuscatedName("f")
|
@ObfuscatedName("f")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
@@ -42,7 +42,7 @@ public abstract class AbstractByteArrayCopier {
|
|||||||
if (var1 != null) {
|
if (var1 != null) {
|
||||||
return var1;
|
return var1;
|
||||||
} else {
|
} else {
|
||||||
byte[] var2 = VarcInt.field942.takeRecord(19, var0);
|
byte[] var2 = VarcInt.field942.takeFile(19, var0);
|
||||||
var1 = new VarcInt();
|
var1 = new VarcInt();
|
||||||
if (var2 != null) {
|
if (var2 != null) {
|
||||||
var1.method354(new Buffer(var2));
|
var1.method354(new Buffer(var2));
|
||||||
@@ -58,17 +58,17 @@ public abstract class AbstractByteArrayCopier {
|
|||||||
signature = "(II)V",
|
signature = "(II)V",
|
||||||
garbageValue = "-1941491045"
|
garbageValue = "-1941491045"
|
||||||
)
|
)
|
||||||
@Export("unloadWidgetGroup")
|
@Export("unloadInterface")
|
||||||
public static void unloadWidgetGroup(int var0) {
|
public static void unloadInterface(int var0) {
|
||||||
if (var0 != -1 && Widget.loadedWidgetGroups[var0]) {
|
if (var0 != -1 && Widget.loadedInterfaces[var0]) {
|
||||||
Widget.Widget_indexCache.method7(var0);
|
Widget.Widget_archive.method7(var0);
|
||||||
if (Widget.widgets[var0] != null) {
|
if (Widget.interfaceComponents[var0] != null) {
|
||||||
boolean var1 = true;
|
boolean var1 = true;
|
||||||
|
|
||||||
for (int var2 = 0; var2 < Widget.widgets[var0].length; ++var2) {
|
for (int var2 = 0; var2 < Widget.interfaceComponents[var0].length; ++var2) {
|
||||||
if (Widget.widgets[var0][var2] != null) {
|
if (Widget.interfaceComponents[var0][var2] != null) {
|
||||||
if (Widget.widgets[var0][var2].type != 2) {
|
if (Widget.interfaceComponents[var0][var2].type != 2) {
|
||||||
Widget.widgets[var0][var2] = null;
|
Widget.interfaceComponents[var0][var2] = null;
|
||||||
} else {
|
} else {
|
||||||
var1 = false;
|
var1 = false;
|
||||||
}
|
}
|
||||||
@@ -76,10 +76,10 @@ public abstract class AbstractByteArrayCopier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (var1) {
|
if (var1) {
|
||||||
Widget.widgets[var0] = null;
|
Widget.interfaceComponents[var0] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget.loadedWidgetGroups[var0] = false;
|
Widget.loadedInterfaces[var0] = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ public abstract class AbstractByteArrayCopier {
|
|||||||
)
|
)
|
||||||
static void method4024() {
|
static void method4024() {
|
||||||
PacketBufferNode var0 = Interpreter.method1915(ClientPacket.field257, Client.packetWriter.isaacCipher);
|
PacketBufferNode var0 = Interpreter.method1915(ClientPacket.field257, Client.packetWriter.isaacCipher);
|
||||||
var0.packetBuffer.writeByte(SpotAnimationDefinition.method4822());
|
var0.packetBuffer.writeByte(SpotAnimationDefinition.getWindowedMode());
|
||||||
var0.packetBuffer.writeShort(SoundCache.canvasWidth);
|
var0.packetBuffer.writeShort(SoundCache.canvasWidth);
|
||||||
var0.packetBuffer.writeShort(Huffman.canvasHeight);
|
var0.packetBuffer.writeShort(Huffman.canvasHeight);
|
||||||
Client.packetWriter.method241(var0);
|
Client.packetWriter.method241(var0);
|
||||||
|
|||||||
@@ -111,28 +111,28 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
|
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
@Export("drawGlyph")
|
@Export("drawGlyph")
|
||||||
abstract void drawGlyph(byte[] var1, int var2, int var3, int var4, int var5, int var6);
|
abstract void drawGlyph(byte[] pixels, int x, int y, int width, int height, int color);
|
||||||
|
|
||||||
@ObfuscatedName("f")
|
@ObfuscatedName("f")
|
||||||
@Export("drawGlyphAlpha")
|
@Export("drawGlyphAlpha")
|
||||||
abstract void drawGlyphAlpha(byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7);
|
abstract void drawGlyphAlpha(byte[] pixels, int x, int y, int width, int height, int color, int alpha);
|
||||||
|
|
||||||
@ObfuscatedName("l")
|
@ObfuscatedName("l")
|
||||||
@Export("readMetrics")
|
@Export("readMetrics")
|
||||||
void readMetrics(byte[] var1) {
|
void readMetrics(byte[] bytes) {
|
||||||
this.advances = new int[256];
|
this.advances = new int[256];
|
||||||
int var2;
|
int var2;
|
||||||
if (var1.length == 257) {
|
if (bytes.length == 257) {
|
||||||
for (var2 = 0; var2 < this.advances.length; ++var2) {
|
for (var2 = 0; var2 < this.advances.length; ++var2) {
|
||||||
this.advances[var2] = var1[var2] & 255;
|
this.advances[var2] = bytes[var2] & 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.ascent = var1[256] & 255;
|
this.ascent = bytes[256] & 255;
|
||||||
} else {
|
} else {
|
||||||
var2 = 0;
|
var2 = 0;
|
||||||
|
|
||||||
for (int var3 = 0; var3 < 256; ++var3) {
|
for (int var3 = 0; var3 < 256; ++var3) {
|
||||||
this.advances[var3] = var1[var2++] & 255;
|
this.advances[var3] = bytes[var2++] & 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
int[] var12 = new int[256];
|
int[] var12 = new int[256];
|
||||||
@@ -140,11 +140,11 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
|
|
||||||
int var5;
|
int var5;
|
||||||
for (var5 = 0; var5 < 256; ++var5) {
|
for (var5 = 0; var5 < 256; ++var5) {
|
||||||
var12[var5] = var1[var2++] & 255;
|
var12[var5] = bytes[var2++] & 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var5 = 0; var5 < 256; ++var5) {
|
for (var5 = 0; var5 < 256; ++var5) {
|
||||||
var4[var5] = var1[var2++] & 255;
|
var4[var5] = bytes[var2++] & 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte[][] var6 = new byte[256][];
|
byte[][] var6 = new byte[256][];
|
||||||
@@ -155,7 +155,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
byte var9 = 0;
|
byte var9 = 0;
|
||||||
|
|
||||||
for (var7 = 0; var7 < var6[var8].length; ++var7) {
|
for (var7 = 0; var7 < var6[var8].length; ++var7) {
|
||||||
var9 += var1[var2++];
|
var9 += bytes[var2++];
|
||||||
var6[var8][var7] = var9;
|
var6[var8][var7] = var9;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -168,7 +168,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
byte var10 = 0;
|
byte var10 = 0;
|
||||||
|
|
||||||
for (int var11 = 0; var11 < var13[var14].length; ++var11) {
|
for (int var11 = 0; var11 < var13[var14].length; ++var11) {
|
||||||
var10 += var1[var2++];
|
var10 += bytes[var2++];
|
||||||
var13[var14][var11] = var10;
|
var13[var14][var11] = var10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -258,7 +258,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
|
|
||||||
@ObfuscatedName("a")
|
@ObfuscatedName("a")
|
||||||
@Export("breakLines")
|
@Export("breakLines")
|
||||||
public int breakLines(String var1, int[] var2, String[] var3) {
|
public int breakLines(String var1, int[] lineWidths, String[] linesDst) {
|
||||||
if (var1 == null) {
|
if (var1 == null) {
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
@@ -285,7 +285,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
var6.append(var16);
|
var6.append(var16);
|
||||||
var6.append('>');
|
var6.append('>');
|
||||||
if (var16.equals("br")) {
|
if (var16.equals("br")) {
|
||||||
var3[var12] = var6.toString().substring(var5, var6.length());
|
linesDst[var12] = var6.toString().substring(var5, var6.length());
|
||||||
++var12;
|
++var12;
|
||||||
var5 = var6.length();
|
var5 = var6.length();
|
||||||
var4 = 0;
|
var4 = 0;
|
||||||
@@ -334,8 +334,8 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
var9 = 1;
|
var9 = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var2 != null && var4 > var2[var12 < var2.length ? var12 : var2.length - 1] && var7 >= 0) {
|
if (lineWidths != null && var4 > lineWidths[var12 < lineWidths.length ? var12 : lineWidths.length - 1] && var7 >= 0) {
|
||||||
var3[var12] = var6.toString().substring(var5, var7 - var9);
|
linesDst[var12] = var6.toString().substring(var5, var7 - var9);
|
||||||
++var12;
|
++var12;
|
||||||
var5 = var7;
|
var5 = var7;
|
||||||
var7 = -1;
|
var7 = -1;
|
||||||
@@ -354,7 +354,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
|
|
||||||
String var19 = var6.toString();
|
String var19 = var6.toString();
|
||||||
if (var19.length() > var5) {
|
if (var19.length() > var5) {
|
||||||
var3[var12++] = var19.substring(var5, var19.length());
|
linesDst[var12++] = var19.substring(var5, var19.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
return var12;
|
return var12;
|
||||||
@@ -363,8 +363,8 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
|
|
||||||
@ObfuscatedName("z")
|
@ObfuscatedName("z")
|
||||||
@Export("lineWidth")
|
@Export("lineWidth")
|
||||||
public int lineWidth(String var1, int var2) {
|
public int lineWidth(String var1, int lineWidth) {
|
||||||
int var3 = this.breakLines(var1, new int[]{var2}, AbstractFont_lines);
|
int var3 = this.breakLines(var1, new int[]{lineWidth}, AbstractFont_lines);
|
||||||
int var4 = 0;
|
int var4 = 0;
|
||||||
|
|
||||||
for (int var5 = 0; var5 < var3; ++var5) {
|
for (int var5 = 0; var5 < var3; ++var5) {
|
||||||
@@ -379,106 +379,106 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
|
|
||||||
@ObfuscatedName("j")
|
@ObfuscatedName("j")
|
||||||
@Export("lineCount")
|
@Export("lineCount")
|
||||||
public int lineCount(String var1, int var2) {
|
public int lineCount(String var1, int lineWidth) {
|
||||||
return this.breakLines(var1, new int[]{var2}, AbstractFont_lines);
|
return this.breakLines(var1, new int[]{lineWidth}, AbstractFont_lines);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("t")
|
@ObfuscatedName("t")
|
||||||
@Export("draw")
|
@Export("draw")
|
||||||
public void draw(String var1, int var2, int var3, int var4, int var5) {
|
public void draw(String var1, int x, int y, int color, int shadow) {
|
||||||
if (var1 != null) {
|
if (var1 != null) {
|
||||||
this.reset(var4, var5);
|
this.reset(color, shadow);
|
||||||
this.draw0(var1, var2, var3);
|
this.draw0(var1, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("y")
|
@ObfuscatedName("y")
|
||||||
@Export("drawAlpha")
|
@Export("drawAlpha")
|
||||||
public void drawAlpha(String var1, int var2, int var3, int var4, int var5, int var6) {
|
public void drawAlpha(String var1, int x, int y, int color, int shadow, int alpha) {
|
||||||
if (var1 != null) {
|
if (var1 != null) {
|
||||||
this.reset(var4, var5);
|
this.reset(color, shadow);
|
||||||
AbstractFont_alpha = var6;
|
AbstractFont_alpha = alpha;
|
||||||
this.draw0(var1, var2, var3);
|
this.draw0(var1, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("h")
|
@ObfuscatedName("h")
|
||||||
@Export("drawRightAligned")
|
@Export("drawRightAligned")
|
||||||
public void drawRightAligned(String var1, int var2, int var3, int var4, int var5) {
|
public void drawRightAligned(String var1, int x, int y, int color, int shadow) {
|
||||||
if (var1 != null) {
|
if (var1 != null) {
|
||||||
this.reset(var4, var5);
|
this.reset(color, shadow);
|
||||||
this.draw0(var1, var2 - this.stringWidth(var1), var3);
|
this.draw0(var1, x - this.stringWidth(var1), y);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("b")
|
@ObfuscatedName("b")
|
||||||
@Export("drawCentered")
|
@Export("drawCentered")
|
||||||
public void drawCentered(String var1, int var2, int var3, int var4, int var5) {
|
public void drawCentered(String var1, int x, int y, int color, int shadow) {
|
||||||
if (var1 != null) {
|
if (var1 != null) {
|
||||||
this.reset(var4, var5);
|
this.reset(color, shadow);
|
||||||
this.draw0(var1, var2 - this.stringWidth(var1) / 2, var3);
|
this.draw0(var1, x - this.stringWidth(var1) / 2, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("c")
|
@ObfuscatedName("c")
|
||||||
@Export("drawLines")
|
@Export("drawLines")
|
||||||
public int drawLines(String var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10) {
|
public int drawLines(String var1, int x, int y, int width, int height, int color, int shadow, int xAlignment, int yAlignment, int lineHeight) {
|
||||||
if (var1 == null) {
|
if (var1 == null) {
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
this.reset(var6, var7);
|
this.reset(color, shadow);
|
||||||
if (var10 == 0) {
|
if (lineHeight == 0) {
|
||||||
var10 = this.ascent;
|
lineHeight = this.ascent;
|
||||||
}
|
}
|
||||||
|
|
||||||
int[] var11 = new int[]{var4};
|
int[] var11 = new int[]{width};
|
||||||
if (var5 < var10 + this.maxAscent + this.maxDescent && var5 < var10 + var10) {
|
if (height < lineHeight + this.maxAscent + this.maxDescent && height < lineHeight + lineHeight) {
|
||||||
var11 = null;
|
var11 = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
int var12 = this.breakLines(var1, var11, AbstractFont_lines);
|
int var12 = this.breakLines(var1, var11, AbstractFont_lines);
|
||||||
if (var9 == 3 && var12 == 1) {
|
if (yAlignment == 3 && var12 == 1) {
|
||||||
var9 = 1;
|
yAlignment = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int var13;
|
int var13;
|
||||||
int var14;
|
int var14;
|
||||||
if (var9 == 0) {
|
if (yAlignment == 0) {
|
||||||
var13 = var3 + this.maxAscent;
|
var13 = y + this.maxAscent;
|
||||||
} else if (var9 == 1) {
|
} else if (yAlignment == 1) {
|
||||||
var13 = var3 + (var5 - this.maxAscent - this.maxDescent - var10 * (var12 - 1)) / 2 + this.maxAscent;
|
var13 = y + (height - this.maxAscent - this.maxDescent - lineHeight * (var12 - 1)) / 2 + this.maxAscent;
|
||||||
} else if (var9 == 2) {
|
} else if (yAlignment == 2) {
|
||||||
var13 = var3 + var5 - this.maxDescent - var10 * (var12 - 1);
|
var13 = y + height - this.maxDescent - lineHeight * (var12 - 1);
|
||||||
} else {
|
} else {
|
||||||
var14 = (var5 - this.maxAscent - this.maxDescent - var10 * (var12 - 1)) / (var12 + 1);
|
var14 = (height - this.maxAscent - this.maxDescent - lineHeight * (var12 - 1)) / (var12 + 1);
|
||||||
if (var14 < 0) {
|
if (var14 < 0) {
|
||||||
var14 = 0;
|
var14 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
var13 = var3 + var14 + this.maxAscent;
|
var13 = y + var14 + this.maxAscent;
|
||||||
var10 += var14;
|
lineHeight += var14;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var14 = 0; var14 < var12; ++var14) {
|
for (var14 = 0; var14 < var12; ++var14) {
|
||||||
if (var8 == 0) {
|
if (xAlignment == 0) {
|
||||||
this.draw0(AbstractFont_lines[var14], var2, var13);
|
this.draw0(AbstractFont_lines[var14], x, var13);
|
||||||
} else if (var8 == 1) {
|
} else if (xAlignment == 1) {
|
||||||
this.draw0(AbstractFont_lines[var14], var2 + (var4 - this.stringWidth(AbstractFont_lines[var14])) / 2, var13);
|
this.draw0(AbstractFont_lines[var14], x + (width - this.stringWidth(AbstractFont_lines[var14])) / 2, var13);
|
||||||
} else if (var8 == 2) {
|
} else if (xAlignment == 2) {
|
||||||
this.draw0(AbstractFont_lines[var14], var2 + var4 - this.stringWidth(AbstractFont_lines[var14]), var13);
|
this.draw0(AbstractFont_lines[var14], x + width - this.stringWidth(AbstractFont_lines[var14]), var13);
|
||||||
} else if (var14 == var12 - 1) {
|
} else if (var14 == var12 - 1) {
|
||||||
this.draw0(AbstractFont_lines[var14], var2, var13);
|
this.draw0(AbstractFont_lines[var14], x, var13);
|
||||||
} else {
|
} else {
|
||||||
this.calculateLineJustification(AbstractFont_lines[var14], var4);
|
this.calculateLineJustification(AbstractFont_lines[var14], width);
|
||||||
this.draw0(AbstractFont_lines[var14], var2, var13);
|
this.draw0(AbstractFont_lines[var14], x, var13);
|
||||||
AbstractFont_justificationTotal = 0;
|
AbstractFont_justificationTotal = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
var13 += var10;
|
var13 += lineHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
return var12;
|
return var12;
|
||||||
@@ -487,44 +487,44 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
|
|
||||||
@ObfuscatedName("p")
|
@ObfuscatedName("p")
|
||||||
@Export("drawCenteredWave")
|
@Export("drawCenteredWave")
|
||||||
public void drawCenteredWave(String var1, int var2, int var3, int var4, int var5, int var6) {
|
public void drawCenteredWave(String var1, int x, int y, int color, int shadow, int seed) {
|
||||||
if (var1 != null) {
|
if (var1 != null) {
|
||||||
this.reset(var4, var5);
|
this.reset(color, shadow);
|
||||||
int[] var7 = new int[var1.length()];
|
int[] var7 = new int[var1.length()];
|
||||||
|
|
||||||
for (int var8 = 0; var8 < var1.length(); ++var8) {
|
for (int var8 = 0; var8 < var1.length(); ++var8) {
|
||||||
var7[var8] = (int)(Math.sin((double)var8 / 2.0D + (double)var6 / 5.0D) * 5.0D);
|
var7[var8] = (int)(Math.sin((double)var8 / 2.0D + (double)seed / 5.0D) * 5.0D);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.drawWithOffsets0(var1, var2 - this.stringWidth(var1) / 2, var3, (int[])null, var7);
|
this.drawWithOffsets0(var1, x - this.stringWidth(var1) / 2, y, (int[])null, var7);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("v")
|
@ObfuscatedName("v")
|
||||||
@Export("drawCenteredWave2")
|
@Export("drawCenteredWave2")
|
||||||
public void drawCenteredWave2(String var1, int var2, int var3, int var4, int var5, int var6) {
|
public void drawCenteredWave2(String var1, int x, int y, int color, int shadow, int seed) {
|
||||||
if (var1 != null) {
|
if (var1 != null) {
|
||||||
this.reset(var4, var5);
|
this.reset(color, shadow);
|
||||||
int[] var7 = new int[var1.length()];
|
int[] var7 = new int[var1.length()];
|
||||||
int[] var8 = new int[var1.length()];
|
int[] var8 = new int[var1.length()];
|
||||||
|
|
||||||
for (int var9 = 0; var9 < var1.length(); ++var9) {
|
for (int var9 = 0; var9 < var1.length(); ++var9) {
|
||||||
var7[var9] = (int)(Math.sin((double)var9 / 5.0D + (double)var6 / 5.0D) * 5.0D);
|
var7[var9] = (int)(Math.sin((double)var9 / 5.0D + (double)seed / 5.0D) * 5.0D);
|
||||||
var8[var9] = (int)(Math.sin((double)var9 / 3.0D + (double)var6 / 5.0D) * 5.0D);
|
var8[var9] = (int)(Math.sin((double)var9 / 3.0D + (double)seed / 5.0D) * 5.0D);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.drawWithOffsets0(var1, var2 - this.stringWidth(var1) / 2, var3, var7, var8);
|
this.drawWithOffsets0(var1, x - this.stringWidth(var1) / 2, y, var7, var8);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("ag")
|
@ObfuscatedName("ag")
|
||||||
@Export("drawCenteredShake")
|
@Export("drawCenteredShake")
|
||||||
public void drawCenteredShake(String var1, int var2, int var3, int var4, int var5, int var6, int var7) {
|
public void drawCenteredShake(String var1, int x, int y, int color, int shadow, int seed, int seed2) {
|
||||||
if (var1 != null) {
|
if (var1 != null) {
|
||||||
this.reset(var4, var5);
|
this.reset(color, shadow);
|
||||||
double var8 = 7.0D - (double)var7 / 8.0D;
|
double var8 = 7.0D - (double)seed2 / 8.0D;
|
||||||
if (var8 < 0.0D) {
|
if (var8 < 0.0D) {
|
||||||
var8 = 0.0D;
|
var8 = 0.0D;
|
||||||
}
|
}
|
||||||
@@ -532,20 +532,20 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
int[] var10 = new int[var1.length()];
|
int[] var10 = new int[var1.length()];
|
||||||
|
|
||||||
for (int var11 = 0; var11 < var1.length(); ++var11) {
|
for (int var11 = 0; var11 < var1.length(); ++var11) {
|
||||||
var10[var11] = (int)(Math.sin((double)var11 / 1.5D + (double)var6 / 1.0D) * var8);
|
var10[var11] = (int)(Math.sin((double)var11 / 1.5D + (double)seed / 1.0D) * var8);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.drawWithOffsets0(var1, var2 - this.stringWidth(var1) / 2, var3, (int[])null, var10);
|
this.drawWithOffsets0(var1, x - this.stringWidth(var1) / 2, y, (int[])null, var10);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("aq")
|
@ObfuscatedName("aq")
|
||||||
@Export("drawRandomAlphaAndSpacing")
|
@Export("drawRandomAlphaAndSpacing")
|
||||||
public void drawRandomAlphaAndSpacing(String var1, int var2, int var3, int var4, int var5, int var6) {
|
public void drawRandomAlphaAndSpacing(String var1, int x, int y, int color, int shadow, int seed) {
|
||||||
if (var1 != null) {
|
if (var1 != null) {
|
||||||
this.reset(var4, var5);
|
this.reset(color, shadow);
|
||||||
AbstractFont_random.setSeed((long)var6);
|
AbstractFont_random.setSeed((long)seed);
|
||||||
AbstractFont_alpha = 192 + (AbstractFont_random.nextInt() & 31);
|
AbstractFont_alpha = 192 + (AbstractFont_random.nextInt() & 31);
|
||||||
int[] var7 = new int[var1.length()];
|
int[] var7 = new int[var1.length()];
|
||||||
int var8 = 0;
|
int var8 = 0;
|
||||||
@@ -557,20 +557,20 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.drawWithOffsets0(var1, var2, var3, var7, (int[])null);
|
this.drawWithOffsets0(var1, x, y, var7, (int[])null);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("aj")
|
@ObfuscatedName("aj")
|
||||||
@Export("reset")
|
@Export("reset")
|
||||||
void reset(int var1, int var2) {
|
void reset(int color, int shadow) {
|
||||||
AbstractFont_strike = -1;
|
AbstractFont_strike = -1;
|
||||||
AbstractFont_underline = -1;
|
AbstractFont_underline = -1;
|
||||||
AbstractFont_previousShadow = var2;
|
AbstractFont_previousShadow = shadow;
|
||||||
AbstractFont_shadow = var2;
|
AbstractFont_shadow = shadow;
|
||||||
AbstractFont_previousColor = var1;
|
AbstractFont_previousColor = color;
|
||||||
AbstractFont_color = var1;
|
AbstractFont_color = color;
|
||||||
AbstractFont_alpha = 256;
|
AbstractFont_alpha = 256;
|
||||||
AbstractFont_justificationTotal = 0;
|
AbstractFont_justificationTotal = 0;
|
||||||
AbstractFont_justificationCurrent = 0;
|
AbstractFont_justificationCurrent = 0;
|
||||||
@@ -612,7 +612,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
|
|
||||||
@ObfuscatedName("ar")
|
@ObfuscatedName("ar")
|
||||||
@Export("calculateLineJustification")
|
@Export("calculateLineJustification")
|
||||||
void calculateLineJustification(String var1, int var2) {
|
void calculateLineJustification(String var1, int lineWidth) {
|
||||||
int var3 = 0;
|
int var3 = 0;
|
||||||
boolean var4 = false;
|
boolean var4 = false;
|
||||||
|
|
||||||
@@ -628,15 +628,15 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (var3 > 0) {
|
if (var3 > 0) {
|
||||||
AbstractFont_justificationTotal = (var2 - this.stringWidth(var1) << 8) / var3;
|
AbstractFont_justificationTotal = (lineWidth - this.stringWidth(var1) << 8) / var3;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("ac")
|
@ObfuscatedName("ac")
|
||||||
@Export("draw0")
|
@Export("draw0")
|
||||||
void draw0(String var1, int var2, int var3) {
|
void draw0(String var1, int x, int y) {
|
||||||
var3 -= this.ascent;
|
y -= this.ascent;
|
||||||
int var4 = -1;
|
int var4 = -1;
|
||||||
int var5 = -1;
|
int var5 = -1;
|
||||||
|
|
||||||
@@ -658,8 +658,8 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
try {
|
try {
|
||||||
var8 = MouseHandler.method1085(var9.substring(4));
|
var8 = MouseHandler.method1085(var9.substring(4));
|
||||||
IndexedSprite var13 = AbstractFont_modIconSprites[var8];
|
IndexedSprite var13 = AbstractFont_modIconSprites[var8];
|
||||||
var13.drawAt(var2, var3 + this.ascent - var13.height);
|
var13.drawAt(x, y + this.ascent - var13.height);
|
||||||
var2 += var13.width;
|
x += var13.width;
|
||||||
var5 = -1;
|
var5 = -1;
|
||||||
} catch (Exception var11) {
|
} catch (Exception var11) {
|
||||||
}
|
}
|
||||||
@@ -679,7 +679,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
|
|
||||||
if (var4 == -1) {
|
if (var4 == -1) {
|
||||||
if (this.kerning != null && var5 != -1) {
|
if (this.kerning != null && var5 != -1) {
|
||||||
var2 += this.kerning[var7 + (var5 << 8)];
|
x += this.kerning[var7 + (var5 << 8)];
|
||||||
}
|
}
|
||||||
|
|
||||||
int var12 = this.widths[var7];
|
int var12 = this.widths[var7];
|
||||||
@@ -687,33 +687,33 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
if (var7 != ' ') {
|
if (var7 != ' ') {
|
||||||
if (AbstractFont_alpha == 256) {
|
if (AbstractFont_alpha == 256) {
|
||||||
if (AbstractFont_shadow != -1) {
|
if (AbstractFont_shadow != -1) {
|
||||||
AbstractFont_drawGlyph(this.pixels[var7], var2 + this.leftBearings[var7] + 1, var3 + this.topBearings[var7] + 1, var12, var8, AbstractFont_shadow);
|
AbstractFont_drawGlyph(this.pixels[var7], x + this.leftBearings[var7] + 1, y + this.topBearings[var7] + 1, var12, var8, AbstractFont_shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.drawGlyph(this.pixels[var7], var2 + this.leftBearings[var7], var3 + this.topBearings[var7], var12, var8, AbstractFont_color);
|
this.drawGlyph(this.pixels[var7], x + this.leftBearings[var7], y + this.topBearings[var7], var12, var8, AbstractFont_color);
|
||||||
} else {
|
} else {
|
||||||
if (AbstractFont_shadow != -1) {
|
if (AbstractFont_shadow != -1) {
|
||||||
AbstractFont_drawGlyphAlpha(this.pixels[var7], var2 + this.leftBearings[var7] + 1, var3 + this.topBearings[var7] + 1, var12, var8, AbstractFont_shadow, AbstractFont_alpha);
|
AbstractFont_drawGlyphAlpha(this.pixels[var7], x + this.leftBearings[var7] + 1, y + this.topBearings[var7] + 1, var12, var8, AbstractFont_shadow, AbstractFont_alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.drawGlyphAlpha(this.pixels[var7], var2 + this.leftBearings[var7], var3 + this.topBearings[var7], var12, var8, AbstractFont_color, AbstractFont_alpha);
|
this.drawGlyphAlpha(this.pixels[var7], x + this.leftBearings[var7], y + this.topBearings[var7], var12, var8, AbstractFont_color, AbstractFont_alpha);
|
||||||
}
|
}
|
||||||
} else if (AbstractFont_justificationTotal > 0) {
|
} else if (AbstractFont_justificationTotal > 0) {
|
||||||
AbstractFont_justificationCurrent += AbstractFont_justificationTotal;
|
AbstractFont_justificationCurrent += AbstractFont_justificationTotal;
|
||||||
var2 += AbstractFont_justificationCurrent >> 8;
|
x += AbstractFont_justificationCurrent >> 8;
|
||||||
AbstractFont_justificationCurrent &= 255;
|
AbstractFont_justificationCurrent &= 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
int var10 = this.advances[var7];
|
int var10 = this.advances[var7];
|
||||||
if (AbstractFont_strike != -1) {
|
if (AbstractFont_strike != -1) {
|
||||||
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + (int)((double)this.ascent * 0.7D), var10, AbstractFont_strike);
|
Rasterizer2D.Rasterizer2D_drawHorizontalLine(x, y + (int)((double)this.ascent * 0.7D), var10, AbstractFont_strike);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AbstractFont_underline != -1) {
|
if (AbstractFont_underline != -1) {
|
||||||
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + this.ascent + 1, var10, AbstractFont_underline);
|
Rasterizer2D.Rasterizer2D_drawHorizontalLine(x, y + this.ascent + 1, var10, AbstractFont_underline);
|
||||||
}
|
}
|
||||||
|
|
||||||
var2 += var10;
|
x += var10;
|
||||||
var5 = var7;
|
var5 = var7;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -724,8 +724,8 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
|
|
||||||
@ObfuscatedName("ay")
|
@ObfuscatedName("ay")
|
||||||
@Export("drawWithOffsets0")
|
@Export("drawWithOffsets0")
|
||||||
void drawWithOffsets0(String var1, int var2, int var3, int[] var4, int[] var5) {
|
void drawWithOffsets0(String var1, int x, int y, int[] xs, int[] ys) {
|
||||||
var3 -= this.ascent;
|
y -= this.ascent;
|
||||||
int var6 = -1;
|
int var6 = -1;
|
||||||
int var7 = -1;
|
int var7 = -1;
|
||||||
int var8 = 0;
|
int var8 = 0;
|
||||||
@@ -748,14 +748,14 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
if (!var14.equals("gt")) {
|
if (!var14.equals("gt")) {
|
||||||
if (var14.startsWith("img=")) {
|
if (var14.startsWith("img=")) {
|
||||||
try {
|
try {
|
||||||
if (var4 != null) {
|
if (xs != null) {
|
||||||
var11 = var4[var8];
|
var11 = xs[var8];
|
||||||
} else {
|
} else {
|
||||||
var11 = 0;
|
var11 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var5 != null) {
|
if (ys != null) {
|
||||||
var12 = var5[var8];
|
var12 = ys[var8];
|
||||||
} else {
|
} else {
|
||||||
var12 = 0;
|
var12 = 0;
|
||||||
}
|
}
|
||||||
@@ -763,8 +763,8 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
++var8;
|
++var8;
|
||||||
var13 = MouseHandler.method1085(var14.substring(4));
|
var13 = MouseHandler.method1085(var14.substring(4));
|
||||||
IndexedSprite var18 = AbstractFont_modIconSprites[var13];
|
IndexedSprite var18 = AbstractFont_modIconSprites[var13];
|
||||||
var18.drawAt(var11 + var2, var12 + (var3 + this.ascent - var18.height));
|
var18.drawAt(var11 + x, var12 + (y + this.ascent - var18.height));
|
||||||
var2 += var18.width;
|
x += var18.width;
|
||||||
var7 = -1;
|
var7 = -1;
|
||||||
} catch (Exception var16) {
|
} catch (Exception var16) {
|
||||||
}
|
}
|
||||||
@@ -784,19 +784,19 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
|
|
||||||
if (var6 == -1) {
|
if (var6 == -1) {
|
||||||
if (this.kerning != null && var7 != -1) {
|
if (this.kerning != null && var7 != -1) {
|
||||||
var2 += this.kerning[var10 + (var7 << 8)];
|
x += this.kerning[var10 + (var7 << 8)];
|
||||||
}
|
}
|
||||||
|
|
||||||
int var17 = this.widths[var10];
|
int var17 = this.widths[var10];
|
||||||
var11 = this.heights[var10];
|
var11 = this.heights[var10];
|
||||||
if (var4 != null) {
|
if (xs != null) {
|
||||||
var12 = var4[var8];
|
var12 = xs[var8];
|
||||||
} else {
|
} else {
|
||||||
var12 = 0;
|
var12 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var5 != null) {
|
if (ys != null) {
|
||||||
var13 = var5[var8];
|
var13 = ys[var8];
|
||||||
} else {
|
} else {
|
||||||
var13 = 0;
|
var13 = 0;
|
||||||
}
|
}
|
||||||
@@ -805,33 +805,33 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
if (var10 != ' ') {
|
if (var10 != ' ') {
|
||||||
if (AbstractFont_alpha == 256) {
|
if (AbstractFont_alpha == 256) {
|
||||||
if (AbstractFont_shadow != -1) {
|
if (AbstractFont_shadow != -1) {
|
||||||
AbstractFont_drawGlyph(this.pixels[var10], var12 + var2 + this.leftBearings[var10] + 1, var3 + var13 + this.topBearings[var10] + 1, var17, var11, AbstractFont_shadow);
|
AbstractFont_drawGlyph(this.pixels[var10], var12 + x + this.leftBearings[var10] + 1, y + var13 + this.topBearings[var10] + 1, var17, var11, AbstractFont_shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.drawGlyph(this.pixels[var10], var12 + var2 + this.leftBearings[var10], var3 + var13 + this.topBearings[var10], var17, var11, AbstractFont_color);
|
this.drawGlyph(this.pixels[var10], var12 + x + this.leftBearings[var10], y + var13 + this.topBearings[var10], var17, var11, AbstractFont_color);
|
||||||
} else {
|
} else {
|
||||||
if (AbstractFont_shadow != -1) {
|
if (AbstractFont_shadow != -1) {
|
||||||
AbstractFont_drawGlyphAlpha(this.pixels[var10], var12 + var2 + this.leftBearings[var10] + 1, var3 + var13 + this.topBearings[var10] + 1, var17, var11, AbstractFont_shadow, AbstractFont_alpha);
|
AbstractFont_drawGlyphAlpha(this.pixels[var10], var12 + x + this.leftBearings[var10] + 1, y + var13 + this.topBearings[var10] + 1, var17, var11, AbstractFont_shadow, AbstractFont_alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.drawGlyphAlpha(this.pixels[var10], var12 + var2 + this.leftBearings[var10], var3 + var13 + this.topBearings[var10], var17, var11, AbstractFont_color, AbstractFont_alpha);
|
this.drawGlyphAlpha(this.pixels[var10], var12 + x + this.leftBearings[var10], y + var13 + this.topBearings[var10], var17, var11, AbstractFont_color, AbstractFont_alpha);
|
||||||
}
|
}
|
||||||
} else if (AbstractFont_justificationTotal > 0) {
|
} else if (AbstractFont_justificationTotal > 0) {
|
||||||
AbstractFont_justificationCurrent += AbstractFont_justificationTotal;
|
AbstractFont_justificationCurrent += AbstractFont_justificationTotal;
|
||||||
var2 += AbstractFont_justificationCurrent >> 8;
|
x += AbstractFont_justificationCurrent >> 8;
|
||||||
AbstractFont_justificationCurrent &= 255;
|
AbstractFont_justificationCurrent &= 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
int var15 = this.advances[var10];
|
int var15 = this.advances[var10];
|
||||||
if (AbstractFont_strike != -1) {
|
if (AbstractFont_strike != -1) {
|
||||||
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + (int)((double)this.ascent * 0.7D), var15, AbstractFont_strike);
|
Rasterizer2D.Rasterizer2D_drawHorizontalLine(x, y + (int)((double)this.ascent * 0.7D), var15, AbstractFont_strike);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AbstractFont_underline != -1) {
|
if (AbstractFont_underline != -1) {
|
||||||
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + this.ascent, var15, AbstractFont_underline);
|
Rasterizer2D.Rasterizer2D_drawHorizontalLine(x, y + this.ascent, var15, AbstractFont_underline);
|
||||||
}
|
}
|
||||||
|
|
||||||
var2 += var15;
|
x += var15;
|
||||||
var7 = var10;
|
var7 = var10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -907,43 +907,43 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
|
|
||||||
@ObfuscatedName("ah")
|
@ObfuscatedName("ah")
|
||||||
@Export("AbstractFont_drawGlyph")
|
@Export("AbstractFont_drawGlyph")
|
||||||
static void AbstractFont_drawGlyph(byte[] var0, int var1, int var2, int var3, int var4, int var5) {
|
static void AbstractFont_drawGlyph(byte[] pixels, int x, int y, int width, int height, int color) {
|
||||||
int var6 = var1 + var2 * Rasterizer2D.Rasterizer2D_width;
|
int var6 = x + y * Rasterizer2D.Rasterizer2D_width;
|
||||||
int var7 = Rasterizer2D.Rasterizer2D_width - var3;
|
int var7 = Rasterizer2D.Rasterizer2D_width - width;
|
||||||
int var8 = 0;
|
int var8 = 0;
|
||||||
int var9 = 0;
|
int var9 = 0;
|
||||||
int var10;
|
int var10;
|
||||||
if (var2 < Rasterizer2D.Rasterizer2D_yClipStart) {
|
if (y < Rasterizer2D.Rasterizer2D_yClipStart) {
|
||||||
var10 = Rasterizer2D.Rasterizer2D_yClipStart - var2;
|
var10 = Rasterizer2D.Rasterizer2D_yClipStart - y;
|
||||||
var4 -= var10;
|
height -= var10;
|
||||||
var2 = Rasterizer2D.Rasterizer2D_yClipStart;
|
y = Rasterizer2D.Rasterizer2D_yClipStart;
|
||||||
var9 += var3 * var10;
|
var9 += width * var10;
|
||||||
var6 += var10 * Rasterizer2D.Rasterizer2D_width;
|
var6 += var10 * Rasterizer2D.Rasterizer2D_width;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) {
|
if (y + height > Rasterizer2D.Rasterizer2D_yClipEnd) {
|
||||||
var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd;
|
height -= y + height - Rasterizer2D.Rasterizer2D_yClipEnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var1 < Rasterizer2D.Rasterizer2D_xClipStart) {
|
if (x < Rasterizer2D.Rasterizer2D_xClipStart) {
|
||||||
var10 = Rasterizer2D.Rasterizer2D_xClipStart - var1;
|
var10 = Rasterizer2D.Rasterizer2D_xClipStart - x;
|
||||||
var3 -= var10;
|
width -= var10;
|
||||||
var1 = Rasterizer2D.Rasterizer2D_xClipStart;
|
x = Rasterizer2D.Rasterizer2D_xClipStart;
|
||||||
var9 += var10;
|
var9 += var10;
|
||||||
var6 += var10;
|
var6 += var10;
|
||||||
var8 += var10;
|
var8 += var10;
|
||||||
var7 += var10;
|
var7 += var10;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) {
|
if (width + x > Rasterizer2D.Rasterizer2D_xClipEnd) {
|
||||||
var10 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd;
|
var10 = width + x - Rasterizer2D.Rasterizer2D_xClipEnd;
|
||||||
var3 -= var10;
|
width -= var10;
|
||||||
var8 += var10;
|
var8 += var10;
|
||||||
var7 += var10;
|
var7 += var10;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var3 > 0 && var4 > 0) {
|
if (width > 0 && height > 0) {
|
||||||
AbstractFont_placeGlyph(Rasterizer2D.Rasterizer2D_pixels, var0, var5, var9, var6, var3, var4, var7, var8);
|
AbstractFont_placeGlyph(Rasterizer2D.Rasterizer2D_pixels, pixels, color, var9, var6, width, height, var7, var8);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -998,43 +998,43 @@ public abstract class AbstractFont extends Rasterizer2D {
|
|||||||
|
|
||||||
@ObfuscatedName("aw")
|
@ObfuscatedName("aw")
|
||||||
@Export("AbstractFont_drawGlyphAlpha")
|
@Export("AbstractFont_drawGlyphAlpha")
|
||||||
static void AbstractFont_drawGlyphAlpha(byte[] var0, int var1, int var2, int var3, int var4, int var5, int var6) {
|
static void AbstractFont_drawGlyphAlpha(byte[] pixels, int x, int y, int width, int height, int color, int alpha) {
|
||||||
int var7 = var1 + var2 * Rasterizer2D.Rasterizer2D_width;
|
int var7 = x + y * Rasterizer2D.Rasterizer2D_width;
|
||||||
int var8 = Rasterizer2D.Rasterizer2D_width - var3;
|
int var8 = Rasterizer2D.Rasterizer2D_width - width;
|
||||||
int var9 = 0;
|
int var9 = 0;
|
||||||
int var10 = 0;
|
int var10 = 0;
|
||||||
int var11;
|
int var11;
|
||||||
if (var2 < Rasterizer2D.Rasterizer2D_yClipStart) {
|
if (y < Rasterizer2D.Rasterizer2D_yClipStart) {
|
||||||
var11 = Rasterizer2D.Rasterizer2D_yClipStart - var2;
|
var11 = Rasterizer2D.Rasterizer2D_yClipStart - y;
|
||||||
var4 -= var11;
|
height -= var11;
|
||||||
var2 = Rasterizer2D.Rasterizer2D_yClipStart;
|
y = Rasterizer2D.Rasterizer2D_yClipStart;
|
||||||
var10 += var3 * var11;
|
var10 += width * var11;
|
||||||
var7 += var11 * Rasterizer2D.Rasterizer2D_width;
|
var7 += var11 * Rasterizer2D.Rasterizer2D_width;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) {
|
if (y + height > Rasterizer2D.Rasterizer2D_yClipEnd) {
|
||||||
var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd;
|
height -= y + height - Rasterizer2D.Rasterizer2D_yClipEnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var1 < Rasterizer2D.Rasterizer2D_xClipStart) {
|
if (x < Rasterizer2D.Rasterizer2D_xClipStart) {
|
||||||
var11 = Rasterizer2D.Rasterizer2D_xClipStart - var1;
|
var11 = Rasterizer2D.Rasterizer2D_xClipStart - x;
|
||||||
var3 -= var11;
|
width -= var11;
|
||||||
var1 = Rasterizer2D.Rasterizer2D_xClipStart;
|
x = Rasterizer2D.Rasterizer2D_xClipStart;
|
||||||
var10 += var11;
|
var10 += var11;
|
||||||
var7 += var11;
|
var7 += var11;
|
||||||
var9 += var11;
|
var9 += var11;
|
||||||
var8 += var11;
|
var8 += var11;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) {
|
if (width + x > Rasterizer2D.Rasterizer2D_xClipEnd) {
|
||||||
var11 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd;
|
var11 = width + x - Rasterizer2D.Rasterizer2D_xClipEnd;
|
||||||
var3 -= var11;
|
width -= var11;
|
||||||
var9 += var11;
|
var9 += var11;
|
||||||
var8 += var11;
|
var8 += var11;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var3 > 0 && var4 > 0) {
|
if (width > 0 && height > 0) {
|
||||||
AbstractFont_placeGlyphAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var5, var10, var7, var3, var4, var8, var9, var6);
|
AbstractFont_placeGlyphAlpha(Rasterizer2D.Rasterizer2D_pixels, pixels, color, var10, var7, width, height, var8, var9, alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public abstract class AbstractRasterProvider {
|
|||||||
garbageValue = "-430495007"
|
garbageValue = "-430495007"
|
||||||
)
|
)
|
||||||
@Export("drawFull")
|
@Export("drawFull")
|
||||||
public abstract void drawFull(int var1, int var2);
|
public abstract void drawFull(int x, int y);
|
||||||
|
|
||||||
@ObfuscatedName("q")
|
@ObfuscatedName("q")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
@@ -40,7 +40,7 @@ public abstract class AbstractRasterProvider {
|
|||||||
garbageValue = "18"
|
garbageValue = "18"
|
||||||
)
|
)
|
||||||
@Export("draw")
|
@Export("draw")
|
||||||
public abstract void draw(int var1, int var2, int var3, int var4);
|
public abstract void draw(int x, int y, int width, int height);
|
||||||
|
|
||||||
@ObfuscatedName("b")
|
@ObfuscatedName("b")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ public abstract class AbstractSocket {
|
|||||||
garbageValue = "1765046516"
|
garbageValue = "1765046516"
|
||||||
)
|
)
|
||||||
@Export("isAvailable")
|
@Export("isAvailable")
|
||||||
public abstract boolean isAvailable(int var1) throws IOException;
|
public abstract boolean isAvailable(int length) throws IOException;
|
||||||
|
|
||||||
@ObfuscatedName("q")
|
@ObfuscatedName("q")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
@@ -37,7 +37,7 @@ public abstract class AbstractSocket {
|
|||||||
garbageValue = "-1089665746"
|
garbageValue = "-1089665746"
|
||||||
)
|
)
|
||||||
@Export("read")
|
@Export("read")
|
||||||
public abstract int read(byte[] var1, int var2, int var3) throws IOException;
|
public abstract int read(byte[] dst, int dstIndex, int length) throws IOException;
|
||||||
|
|
||||||
@ObfuscatedName("u")
|
@ObfuscatedName("u")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
@@ -45,7 +45,7 @@ public abstract class AbstractSocket {
|
|||||||
garbageValue = "-86"
|
garbageValue = "-86"
|
||||||
)
|
)
|
||||||
@Export("write")
|
@Export("write")
|
||||||
public abstract void write(byte[] var1, int var2, int var3) throws IOException;
|
public abstract void write(byte[] src, int srcIndex, int length) throws IOException;
|
||||||
|
|
||||||
@ObfuscatedName("g")
|
@ObfuscatedName("g")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
@@ -63,7 +63,7 @@ public abstract class AbstractSocket {
|
|||||||
public static void method3488(int var0) {
|
public static void method3488(int var0) {
|
||||||
class214.field1129 = 1;
|
class214.field1129 = 1;
|
||||||
class214.field1130 = null;
|
class214.field1130 = null;
|
||||||
class30.musicTrackArchiveId = -1;
|
class30.musicTrackGroupId = -1;
|
||||||
GrandExchangeOffer.musicTrackFileId = -1;
|
GrandExchangeOffer.musicTrackFileId = -1;
|
||||||
WorldMapLabel.field1039 = 0;
|
WorldMapLabel.field1039 = 0;
|
||||||
RectangleMode.musicTrackBoolean = false;
|
RectangleMode.musicTrackBoolean = false;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import net.runelite.mapping.Export;
|
||||||
import net.runelite.mapping.Implements;
|
import net.runelite.mapping.Implements;
|
||||||
import net.runelite.mapping.ObfuscatedName;
|
import net.runelite.mapping.ObfuscatedName;
|
||||||
import net.runelite.mapping.ObfuscatedSignature;
|
import net.runelite.mapping.ObfuscatedSignature;
|
||||||
@@ -7,18 +8,20 @@ import net.runelite.mapping.ObfuscatedSignature;
|
|||||||
@Implements("AbstractUserComparator")
|
@Implements("AbstractUserComparator")
|
||||||
public abstract class AbstractUserComparator implements Comparator {
|
public abstract class AbstractUserComparator implements Comparator {
|
||||||
@ObfuscatedName("f")
|
@ObfuscatedName("f")
|
||||||
Comparator field3;
|
@Export("nextComparator")
|
||||||
|
Comparator nextComparator;
|
||||||
|
|
||||||
@ObfuscatedName("e")
|
@ObfuscatedName("e")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "(Ljava/util/Comparator;B)V",
|
signature = "(Ljava/util/Comparator;B)V",
|
||||||
garbageValue = "-2"
|
garbageValue = "-2"
|
||||||
)
|
)
|
||||||
final void method11(Comparator var1) {
|
@Export("addComparator")
|
||||||
if (this.field3 == null) {
|
final void addComparator(Comparator var1) {
|
||||||
this.field3 = var1;
|
if (this.nextComparator == null) {
|
||||||
} else if (this.field3 instanceof AbstractUserComparator) {
|
this.nextComparator = var1;
|
||||||
((AbstractUserComparator)this.field3).method11(var1);
|
} else if (this.nextComparator instanceof AbstractUserComparator) {
|
||||||
|
((AbstractUserComparator)this.nextComparator).addComparator(var1);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -28,12 +31,12 @@ public abstract class AbstractUserComparator implements Comparator {
|
|||||||
signature = "(Ljs;Ljs;I)I",
|
signature = "(Ljs;Ljs;I)I",
|
||||||
garbageValue = "-962181316"
|
garbageValue = "-962181316"
|
||||||
)
|
)
|
||||||
protected final int method12(User var1, User var2) {
|
@Export("compareUser")
|
||||||
return this.field3 == null ? 0 : this.field3.compare(var1, var2);
|
protected final int compareUser(User var1, User var2) {
|
||||||
|
return this.nextComparator == null ? 0 : this.nextComparator.compare(var1, var2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("equals")
|
public boolean equals(Object var1) {
|
||||||
public boolean method13(Object var1) {
|
|
||||||
return super.equals(var1);
|
return super.equals(var1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,11 +51,11 @@ public abstract class AbstractUserComparator implements Comparator {
|
|||||||
class214.field1129 = 1;
|
class214.field1129 = 1;
|
||||||
class214.field1130 = null;
|
class214.field1130 = null;
|
||||||
} else if (var0 != -1 && var0 != Client.field112 && Client.field128 != 0 && !Client.field107) {
|
} else if (var0 != -1 && var0 != Client.field112 && Client.field128 != 0 && !Client.field107) {
|
||||||
IndexCache var1 = UserComparator3.indexCache6;
|
Archive var1 = UserComparator3.archive6;
|
||||||
int var2 = Client.field128;
|
int var2 = Client.field128;
|
||||||
class214.field1129 = 1;
|
class214.field1129 = 1;
|
||||||
class214.field1130 = var1;
|
class214.field1130 = var1;
|
||||||
class30.musicTrackArchiveId = var0;
|
class30.musicTrackGroupId = var0;
|
||||||
GrandExchangeOffer.musicTrackFileId = 0;
|
GrandExchangeOffer.musicTrackFileId = 0;
|
||||||
WorldMapLabel.field1039 = var2;
|
WorldMapLabel.field1039 = var2;
|
||||||
RectangleMode.musicTrackBoolean = false;
|
RectangleMode.musicTrackBoolean = false;
|
||||||
|
|||||||
@@ -23,13 +23,13 @@ public abstract class AbstractWorldMapIcon {
|
|||||||
signature = "Lhu;"
|
signature = "Lhu;"
|
||||||
)
|
)
|
||||||
@Export("coord2")
|
@Export("coord2")
|
||||||
public final TileLocation coord2;
|
public final Coord coord2;
|
||||||
@ObfuscatedName("l")
|
@ObfuscatedName("l")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "Lhu;"
|
signature = "Lhu;"
|
||||||
)
|
)
|
||||||
@Export("coord1")
|
@Export("coord1")
|
||||||
public final TileLocation coord1;
|
public final Coord coord1;
|
||||||
@ObfuscatedName("e")
|
@ObfuscatedName("e")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = -521086143
|
intValue = -521086143
|
||||||
@@ -44,7 +44,7 @@ public abstract class AbstractWorldMapIcon {
|
|||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "(Lhu;Lhu;)V"
|
signature = "(Lhu;Lhu;)V"
|
||||||
)
|
)
|
||||||
AbstractWorldMapIcon(TileLocation var1, TileLocation var2) {
|
AbstractWorldMapIcon(Coord var1, Coord var2) {
|
||||||
this.coord1 = var1;
|
this.coord1 = var1;
|
||||||
this.coord2 = var2;
|
this.coord2 = var2;
|
||||||
}
|
}
|
||||||
@@ -54,14 +54,16 @@ public abstract class AbstractWorldMapIcon {
|
|||||||
signature = "(I)I",
|
signature = "(I)I",
|
||||||
garbageValue = "1990181988"
|
garbageValue = "1990181988"
|
||||||
)
|
)
|
||||||
public abstract int vmethod395();
|
@Export("getElement")
|
||||||
|
public abstract int getElement();
|
||||||
|
|
||||||
@ObfuscatedName("f")
|
@ObfuscatedName("f")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "(I)Laj;",
|
signature = "(I)Laj;",
|
||||||
garbageValue = "1159446036"
|
garbageValue = "1159446036"
|
||||||
)
|
)
|
||||||
abstract WorldMapLabel vmethod396();
|
@Export("getLabel")
|
||||||
|
abstract WorldMapLabel getLabel();
|
||||||
|
|
||||||
@ObfuscatedName("q")
|
@ObfuscatedName("q")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
@@ -92,7 +94,7 @@ public abstract class AbstractWorldMapIcon {
|
|||||||
garbageValue = "1150380891"
|
garbageValue = "1150380891"
|
||||||
)
|
)
|
||||||
boolean method19() {
|
boolean method19() {
|
||||||
return this.vmethod395() >= 0;
|
return this.getElement() >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("b")
|
@ObfuscatedName("b")
|
||||||
@@ -104,7 +106,7 @@ public abstract class AbstractWorldMapIcon {
|
|||||||
if (!this.method19()) {
|
if (!this.method19()) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
WorldMapElement var3 = ViewportMouse.getWorldMapElement(this.vmethod395());
|
WorldMapElement var3 = ViewportMouse.getWorldMapElement(this.getElement());
|
||||||
int var4 = this.vmethod397();
|
int var4 = this.vmethod397();
|
||||||
int var5 = this.vmethod398();
|
int var5 = this.vmethod398();
|
||||||
switch(var3.field3287.field3528) {
|
switch(var3.field3287.field3528) {
|
||||||
@@ -153,7 +155,7 @@ public abstract class AbstractWorldMapIcon {
|
|||||||
garbageValue = "1201712205"
|
garbageValue = "1201712205"
|
||||||
)
|
)
|
||||||
boolean method21(int var1, int var2) {
|
boolean method21(int var1, int var2) {
|
||||||
WorldMapLabel var3 = this.vmethod396();
|
WorldMapLabel var3 = this.getLabel();
|
||||||
return var3 == null ? false : (var1 >= this.field5 - var3.width / 2 && var1 <= var3.width / 2 + this.field5 ? var2 >= this.field6 && var2 <= var3.height + this.field6 : false);
|
return var3 == null ? false : (var1 >= this.field5 - var3.width / 2 && var1 <= var3.width / 2 + this.field5 ? var2 >= this.field6 && var2 <= var3.height + this.field6 : false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,9 +164,9 @@ public abstract class AbstractWorldMapIcon {
|
|||||||
signature = "(Lit;Ljava/lang/String;I)V",
|
signature = "(Lit;Ljava/lang/String;I)V",
|
||||||
garbageValue = "-1018878027"
|
garbageValue = "-1018878027"
|
||||||
)
|
)
|
||||||
static void method625(IndexCache var0, String var1) {
|
static void method625(Archive var0, String var1) {
|
||||||
IndexCacheLoader var2 = new IndexCacheLoader(var0, var1);
|
ArchiveLoader var2 = new ArchiveLoader(var0, var1);
|
||||||
Client.indexCacheLoaders.add(var2);
|
Client.archiveLoaders.add(var2);
|
||||||
Client.field140 += var2.field408;
|
Client.field140 += var2.field408;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,9 +61,9 @@ public final class AccessFile {
|
|||||||
|
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
@Export("seek")
|
@Export("seek")
|
||||||
final void seek(long var1) throws IOException {
|
final void seek(long index) throws IOException {
|
||||||
this.file.seek(var1);
|
this.file.seek(index);
|
||||||
this.index = var1;
|
this.index = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("f")
|
@ObfuscatedName("f")
|
||||||
@@ -72,14 +72,14 @@ public final class AccessFile {
|
|||||||
garbageValue = "-86"
|
garbageValue = "-86"
|
||||||
)
|
)
|
||||||
@Export("write")
|
@Export("write")
|
||||||
public final void write(byte[] var1, int var2, int var3) throws IOException {
|
public final void write(byte[] src, int srcIndex, int length) throws IOException {
|
||||||
if ((long)var3 + this.index > this.capacity) {
|
if ((long)length + this.index > this.capacity) {
|
||||||
this.file.seek(this.capacity + 1L);
|
this.file.seek(this.capacity + 1L);
|
||||||
this.file.write(1);
|
this.file.write(1);
|
||||||
throw new EOFException();
|
throw new EOFException();
|
||||||
} else {
|
} else {
|
||||||
this.file.write(var1, var2, var3);
|
this.file.write(src, srcIndex, length);
|
||||||
this.index += (long)var3;
|
this.index += (long)length;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,9 +99,9 @@ public final class AccessFile {
|
|||||||
garbageValue = "166642884"
|
garbageValue = "166642884"
|
||||||
)
|
)
|
||||||
@Export("closeSync")
|
@Export("closeSync")
|
||||||
public final void closeSync(boolean var1) throws IOException {
|
public final void closeSync(boolean sync) throws IOException {
|
||||||
if (this.file != null) {
|
if (this.file != null) {
|
||||||
if (var1) {
|
if (sync) {
|
||||||
try {
|
try {
|
||||||
this.file.getFD().sync();
|
this.file.getFD().sync();
|
||||||
} catch (SyncFailedException var3) {
|
} catch (SyncFailedException var3) {
|
||||||
@@ -130,8 +130,8 @@ public final class AccessFile {
|
|||||||
garbageValue = "971670468"
|
garbageValue = "971670468"
|
||||||
)
|
)
|
||||||
@Export("read")
|
@Export("read")
|
||||||
public final int read(byte[] var1, int var2, int var3) throws IOException {
|
public final int read(byte[] dst, int dstIndex, int length) throws IOException {
|
||||||
int var4 = this.file.read(var1, var2, var3);
|
int var4 = this.file.read(dst, dstIndex, length);
|
||||||
if (var4 > 0) {
|
if (var4 > 0) {
|
||||||
this.index += (long)var4;
|
this.index += (long)var4;
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
+108
-107
@@ -6,23 +6,23 @@ import net.runelite.mapping.ObfuscatedName;
|
|||||||
import net.runelite.mapping.ObfuscatedSignature;
|
import net.runelite.mapping.ObfuscatedSignature;
|
||||||
|
|
||||||
@ObfuscatedName("it")
|
@ObfuscatedName("it")
|
||||||
@Implements("IndexCache")
|
@Implements("Archive")
|
||||||
public class IndexCache extends AbstractIndexCache {
|
public class Archive extends AbstractArchive {
|
||||||
@ObfuscatedName("aj")
|
@ObfuscatedName("aj")
|
||||||
@Export("IndexCache_crc")
|
@Export("Archive_crc")
|
||||||
static CRC32 IndexCache_crc;
|
static CRC32 Archive_crc;
|
||||||
@ObfuscatedName("c")
|
@ObfuscatedName("c")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "Lff;"
|
signature = "Lff;"
|
||||||
)
|
)
|
||||||
@Export("indexStore")
|
@Export("archiveDisk")
|
||||||
IndexStore indexStore;
|
ArchiveDisk archiveDisk;
|
||||||
@ObfuscatedName("r")
|
@ObfuscatedName("r")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "Lff;"
|
signature = "Lff;"
|
||||||
)
|
)
|
||||||
@Export("referenceStore")
|
@Export("masterDisk")
|
||||||
IndexStore referenceStore;
|
ArchiveDisk masterDisk;
|
||||||
@ObfuscatedName("p")
|
@ObfuscatedName("p")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = -1579549759
|
intValue = -1579549759
|
||||||
@@ -34,20 +34,20 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
@ObfuscatedName("ag")
|
@ObfuscatedName("ag")
|
||||||
boolean field404;
|
boolean field404;
|
||||||
@ObfuscatedName("aq")
|
@ObfuscatedName("aq")
|
||||||
@Export("validArchives")
|
@Export("validGroups")
|
||||||
volatile boolean[] validArchives;
|
volatile boolean[] validGroups;
|
||||||
@ObfuscatedName("av")
|
@ObfuscatedName("av")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = 1472870917
|
intValue = 1472870917
|
||||||
)
|
)
|
||||||
@Export("indexReferenceCrc")
|
@Export("indexCrc")
|
||||||
int indexReferenceCrc;
|
int indexCrc;
|
||||||
@ObfuscatedName("ar")
|
@ObfuscatedName("ar")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = -785528219
|
intValue = -785528219
|
||||||
)
|
)
|
||||||
@Export("indexReferenceVersion")
|
@Export("indexVersion")
|
||||||
int indexReferenceVersion;
|
int indexVersion;
|
||||||
@ObfuscatedName("ac")
|
@ObfuscatedName("ac")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = -1884661133
|
intValue = -1884661133
|
||||||
@@ -57,13 +57,13 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "(Lff;Lff;IZZZ)V"
|
signature = "(Lff;Lff;IZZZ)V"
|
||||||
)
|
)
|
||||||
public IndexCache(IndexStore var1, IndexStore var2, int var3, boolean var4, boolean var5, boolean var6) {
|
public Archive(ArchiveDisk var1, ArchiveDisk var2, int var3, boolean var4, boolean var5, boolean var6) {
|
||||||
super(var4, var5);
|
super(var4, var5);
|
||||||
this.field403 = false;
|
this.field403 = false;
|
||||||
this.field404 = false;
|
this.field404 = false;
|
||||||
this.field405 = -1;
|
this.field405 = -1;
|
||||||
this.indexStore = var1;
|
this.archiveDisk = var1;
|
||||||
this.referenceStore = var2;
|
this.masterDisk = var2;
|
||||||
this.index = var3;
|
this.index = var3;
|
||||||
this.field404 = var6;
|
this.field404 = var6;
|
||||||
int var7 = this.index;
|
int var7 = this.index;
|
||||||
@@ -71,10 +71,10 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
Players.NetCache_reference.index = var7 * 8 + 5;
|
Players.NetCache_reference.index = var7 * 8 + 5;
|
||||||
int var8 = Players.NetCache_reference.readInt();
|
int var8 = Players.NetCache_reference.readInt();
|
||||||
int var9 = Players.NetCache_reference.readInt();
|
int var9 = Players.NetCache_reference.readInt();
|
||||||
this.loadIndexReference(var8, var9);
|
this.loadIndex(var8, var9);
|
||||||
} else {
|
} else {
|
||||||
PacketBuffer.requestNetFile((IndexCache)null, 255, 255, 0, (byte)0, true);
|
PacketBuffer.requestNetFile((Archive)null, 255, 255, 0, (byte)0, true);
|
||||||
NetCache.NetCache_indexCaches[var7] = this;
|
NetCache.NetCache_archives[var7] = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -99,9 +99,9 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
signature = "(II)I",
|
signature = "(II)I",
|
||||||
garbageValue = "-1809769865"
|
garbageValue = "-1809769865"
|
||||||
)
|
)
|
||||||
@Export("archiveLoadPercent")
|
@Export("groupLoadPercent")
|
||||||
int archiveLoadPercent(int var1) {
|
int groupLoadPercent(int var1) {
|
||||||
return super.archives[var1] != null ? 100 : (this.validArchives[var1] ? 100 : class54.method1086(this.index, var1));
|
return super.groups[var1] != null ? 100 : (this.validGroups[var1] ? 100 : class54.method1086(this.index, var1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("z")
|
@ObfuscatedName("z")
|
||||||
@@ -109,15 +109,15 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
signature = "(II)V",
|
signature = "(II)V",
|
||||||
garbageValue = "-1829145107"
|
garbageValue = "-1829145107"
|
||||||
)
|
)
|
||||||
@Export("loadArchive")
|
@Export("loadGroup")
|
||||||
void loadArchive(int var1) {
|
void loadGroup(int group) {
|
||||||
if (this.indexStore != null && this.validArchives != null && this.validArchives[var1]) {
|
if (this.archiveDisk != null && this.validGroups != null && this.validGroups[group]) {
|
||||||
IndexStore var2 = this.indexStore;
|
ArchiveDisk var2 = this.archiveDisk;
|
||||||
byte[] var3 = null;
|
byte[] var3 = null;
|
||||||
NodeDeque var4 = IndexStoreActionHandler.IndexStoreActionHandler_requestQueue;
|
NodeDeque var4 = ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue;
|
||||||
synchronized(IndexStoreActionHandler.IndexStoreActionHandler_requestQueue) {
|
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) {
|
||||||
for (IndexStoreAction var6 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.last(); var6 != null; var6 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.previous()) {
|
for (ArchiveDiskAction var6 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.last(); var6 != null; var6 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.previous()) {
|
||||||
if (var6.key == (long)var1 && var2 == var6.indexStore && var6.type == 0) {
|
if (var6.key == (long)group && var2 == var6.archiveDisk && var6.type == 0) {
|
||||||
var3 = var6.data;
|
var3 = var6.data;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -125,13 +125,13 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (var3 != null) {
|
if (var3 != null) {
|
||||||
this.load(var2, var1, var3, true);
|
this.load(var2, group, var3, true);
|
||||||
} else {
|
} else {
|
||||||
byte[] var5 = var2.read(var1);
|
byte[] var5 = var2.read(group);
|
||||||
this.load(var2, var1, var5, true);
|
this.load(var2, group, var5, true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
PacketBuffer.requestNetFile(this, this.index, var1, super.archiveCrcs[var1], (byte)2, true);
|
PacketBuffer.requestNetFile(this, this.index, group, super.groupCrcs[group], (byte)2, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -150,10 +150,11 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
signature = "(I)I",
|
signature = "(I)I",
|
||||||
garbageValue = "1671499504"
|
garbageValue = "1671499504"
|
||||||
)
|
)
|
||||||
public int method131() {
|
@Export("percentage")
|
||||||
|
public int percentage() {
|
||||||
if (this.field403) {
|
if (this.field403) {
|
||||||
return 100;
|
return 100;
|
||||||
} else if (super.archives != null) {
|
} else if (super.groups != null) {
|
||||||
return 99;
|
return 99;
|
||||||
} else {
|
} else {
|
||||||
int var1 = class54.method1086(255, this.index);
|
int var1 = class54.method1086(255, this.index);
|
||||||
@@ -170,18 +171,18 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
signature = "(III)V",
|
signature = "(III)V",
|
||||||
garbageValue = "-1621053520"
|
garbageValue = "-1621053520"
|
||||||
)
|
)
|
||||||
@Export("loadIndexReference")
|
@Export("loadIndex")
|
||||||
public void loadIndexReference(int var1, int var2) {
|
public void loadIndex(int var1, int var2) {
|
||||||
this.indexReferenceCrc = var1;
|
this.indexCrc = var1;
|
||||||
this.indexReferenceVersion = var2;
|
this.indexVersion = var2;
|
||||||
if (this.referenceStore != null) {
|
if (this.masterDisk != null) {
|
||||||
int var3 = this.index;
|
int var3 = this.index;
|
||||||
IndexStore var4 = this.referenceStore;
|
ArchiveDisk var4 = this.masterDisk;
|
||||||
byte[] var5 = null;
|
byte[] var5 = null;
|
||||||
NodeDeque var6 = IndexStoreActionHandler.IndexStoreActionHandler_requestQueue;
|
NodeDeque var6 = ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue;
|
||||||
synchronized(IndexStoreActionHandler.IndexStoreActionHandler_requestQueue) {
|
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) {
|
||||||
for (IndexStoreAction var8 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.last(); var8 != null; var8 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.previous()) {
|
for (ArchiveDiskAction var8 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.last(); var8 != null; var8 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.previous()) {
|
||||||
if (var8.key == (long)var3 && var4 == var8.indexStore && var8.type == 0) {
|
if (var8.key == (long)var3 && var4 == var8.archiveDisk && var8.type == 0) {
|
||||||
var5 = var8.data;
|
var5 = var8.data;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -195,7 +196,7 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
this.load(var4, var3, var7, true);
|
this.load(var4, var3, var7, true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
PacketBuffer.requestNetFile(this, 255, this.index, this.indexReferenceCrc, (byte)0, true);
|
PacketBuffer.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -212,22 +213,22 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
throw new RuntimeException();
|
throw new RuntimeException();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.referenceStore != null) {
|
if (this.masterDisk != null) {
|
||||||
Widget.method4499(this.index, var2, this.referenceStore);
|
Widget.method4499(this.index, var2, this.masterDisk);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setIndexReference(var2);
|
this.decodeIndex(var2);
|
||||||
this.loadAllLocal();
|
this.loadAllLocal();
|
||||||
} else {
|
} else {
|
||||||
var2[var2.length - 2] = (byte)(super.archiveVersions[var1] >> 8);
|
var2[var2.length - 2] = (byte)(super.groupVersions[var1] >> 8);
|
||||||
var2[var2.length - 1] = (byte)super.archiveVersions[var1];
|
var2[var2.length - 1] = (byte)super.groupVersions[var1];
|
||||||
if (this.indexStore != null) {
|
if (this.archiveDisk != null) {
|
||||||
Widget.method4499(var1, var2, this.indexStore);
|
Widget.method4499(var1, var2, this.archiveDisk);
|
||||||
this.validArchives[var1] = true;
|
this.validGroups[var1] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var4) {
|
if (var4) {
|
||||||
super.archives[var1] = Projectile.byteArrayToObject(var2, false);
|
super.groups[var1] = Projectile.byteArrayToObject(var2, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,36 +240,38 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
garbageValue = "-2045340856"
|
garbageValue = "-2045340856"
|
||||||
)
|
)
|
||||||
@Export("load")
|
@Export("load")
|
||||||
void load(IndexStore var1, int var2, byte[] var3, boolean var4) {
|
void load(ArchiveDisk var1, int var2, byte[] var3, boolean var4) {
|
||||||
int var5;
|
int var5;
|
||||||
if (var1 == this.referenceStore) {
|
if (var1 == this.masterDisk) {
|
||||||
if (this.field403) {
|
if (this.field403) {
|
||||||
throw new RuntimeException();
|
throw new RuntimeException();
|
||||||
} else if (var3 == null) {
|
}
|
||||||
PacketBuffer.requestNetFile(this, 255, this.index, this.indexReferenceCrc, (byte)0, true);
|
|
||||||
|
if (var3 == null) {
|
||||||
|
PacketBuffer.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
|
||||||
} else {
|
} else {
|
||||||
IndexCache_crc.reset();
|
Archive_crc.reset();
|
||||||
IndexCache_crc.update(var3, 0, var3.length);
|
Archive_crc.update(var3, 0, var3.length);
|
||||||
var5 = (int)IndexCache_crc.getValue();
|
var5 = (int)Archive_crc.getValue();
|
||||||
if (var5 != this.indexReferenceCrc) {
|
if (var5 != this.indexCrc) {
|
||||||
PacketBuffer.requestNetFile(this, 255, this.index, this.indexReferenceCrc, (byte)0, true);
|
PacketBuffer.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
|
||||||
} else {
|
} else {
|
||||||
Buffer var9 = new Buffer(Strings.decompressBytes(var3));
|
Buffer var6 = new Buffer(Strings.decompressBytes(var3));
|
||||||
int var7 = var9.readUnsignedByte();
|
int var7 = var6.readUnsignedByte();
|
||||||
if (var7 != 5 && var7 != 6) {
|
if (var7 != 5 && var7 != 6) {
|
||||||
throw new RuntimeException(var7 + "," + this.index + "," + var2);
|
throw new RuntimeException(var7 + "," + this.index + "," + var2);
|
||||||
} else {
|
}
|
||||||
int var8 = 0;
|
|
||||||
if (var7 >= 6) {
|
|
||||||
var8 = var9.readInt();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var8 != this.indexReferenceVersion) {
|
int var8 = 0;
|
||||||
PacketBuffer.requestNetFile(this, 255, this.index, this.indexReferenceCrc, (byte)0, true);
|
if (var7 >= 6) {
|
||||||
} else {
|
var8 = var6.readInt();
|
||||||
this.setIndexReference(var3);
|
}
|
||||||
this.loadAllLocal();
|
|
||||||
}
|
if (var8 != this.indexVersion) {
|
||||||
|
PacketBuffer.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
|
||||||
|
} else {
|
||||||
|
this.decodeIndex(var3);
|
||||||
|
this.loadAllLocal();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -278,31 +281,29 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (var3 != null && var3.length > 2) {
|
if (var3 != null && var3.length > 2) {
|
||||||
IndexCache_crc.reset();
|
Archive_crc.reset();
|
||||||
IndexCache_crc.update(var3, 0, var3.length - 2);
|
Archive_crc.update(var3, 0, var3.length - 2);
|
||||||
var5 = (int)IndexCache_crc.getValue();
|
var5 = (int)Archive_crc.getValue();
|
||||||
int var6 = ((var3[var3.length - 2] & 255) << 8) + (var3[var3.length - 1] & 255);
|
int var9 = ((var3[var3.length - 2] & 255) << 8) + (var3[var3.length - 1] & 255);
|
||||||
if (var5 == super.archiveCrcs[var2] && var6 == super.archiveVersions[var2]) {
|
if (var5 == super.groupCrcs[var2] && var9 == super.groupVersions[var2]) {
|
||||||
this.validArchives[var2] = true;
|
this.validGroups[var2] = true;
|
||||||
if (var4) {
|
if (var4) {
|
||||||
super.archives[var2] = Projectile.byteArrayToObject(var3, false);
|
super.groups[var2] = Projectile.byteArrayToObject(var3, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.validArchives[var2] = false;
|
this.validGroups[var2] = false;
|
||||||
if (this.field404 || var4) {
|
if (this.field404 || var4) {
|
||||||
PacketBuffer.requestNetFile(this, this.index, var2, super.archiveCrcs[var2], (byte)2, var4);
|
PacketBuffer.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.validArchives[var2] = false;
|
this.validGroups[var2] = false;
|
||||||
if (this.field404 || var4) {
|
if (this.field404 || var4) {
|
||||||
PacketBuffer.requestNetFile(this, this.index, var2, super.archiveCrcs[var2], (byte)2, var4);
|
PacketBuffer.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("dt")
|
@ObfuscatedName("dt")
|
||||||
@@ -312,21 +313,21 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
)
|
)
|
||||||
@Export("loadAllLocal")
|
@Export("loadAllLocal")
|
||||||
void loadAllLocal() {
|
void loadAllLocal() {
|
||||||
this.validArchives = new boolean[super.archives.length];
|
this.validGroups = new boolean[super.groups.length];
|
||||||
|
|
||||||
int var1;
|
int var1;
|
||||||
for (var1 = 0; var1 < this.validArchives.length; ++var1) {
|
for (var1 = 0; var1 < this.validGroups.length; ++var1) {
|
||||||
this.validArchives[var1] = false;
|
this.validGroups[var1] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.indexStore == null) {
|
if (this.archiveDisk == null) {
|
||||||
this.field403 = true;
|
this.field403 = true;
|
||||||
} else {
|
} else {
|
||||||
this.field405 = -1;
|
this.field405 = -1;
|
||||||
|
|
||||||
for (var1 = 0; var1 < this.validArchives.length; ++var1) {
|
for (var1 = 0; var1 < this.validGroups.length; ++var1) {
|
||||||
if (super.recordCounts[var1] > 0) {
|
if (super.fileCounts[var1] > 0) {
|
||||||
NPC.method2009(var1, this.indexStore, this);
|
NPC.method2009(var1, this.archiveDisk, this);
|
||||||
this.field405 = var1;
|
this.field405 = var1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -344,7 +345,7 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
garbageValue = "0"
|
garbageValue = "0"
|
||||||
)
|
)
|
||||||
public boolean method132(int var1) {
|
public boolean method132(int var1) {
|
||||||
return this.validArchives[var1];
|
return this.validGroups[var1];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("df")
|
@ObfuscatedName("df")
|
||||||
@@ -367,10 +368,10 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
int var2 = 0;
|
int var2 = 0;
|
||||||
|
|
||||||
int var3;
|
int var3;
|
||||||
for (var3 = 0; var3 < super.archives.length; ++var3) {
|
for (var3 = 0; var3 < super.groups.length; ++var3) {
|
||||||
if (super.recordCounts[var3] > 0) {
|
if (super.fileCounts[var3] > 0) {
|
||||||
var1 += 100;
|
var1 += 100;
|
||||||
var2 += this.archiveLoadPercent(var3);
|
var2 += this.groupLoadPercent(var3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -388,7 +389,7 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
garbageValue = "-34"
|
garbageValue = "-34"
|
||||||
)
|
)
|
||||||
static final void method4703(int var0) {
|
static final void method4703(int var0) {
|
||||||
class12.method159();
|
GrandExchangeOfferAgeComparator.method159();
|
||||||
|
|
||||||
for (ObjectSound var1 = (ObjectSound)ObjectSound.objectSounds.last(); var1 != null; var1 = (ObjectSound)ObjectSound.objectSounds.previous()) {
|
for (ObjectSound var1 = (ObjectSound)ObjectSound.objectSounds.last(); var1 != null; var1 = (ObjectSound)ObjectSound.objectSounds.previous()) {
|
||||||
if (var1.obj != null) {
|
if (var1.obj != null) {
|
||||||
@@ -447,7 +448,7 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
|
|
||||||
if (var3 != Client.field128) {
|
if (var3 != Client.field128) {
|
||||||
if (Client.field128 == 0 && Client.field112 != -1) {
|
if (Client.field128 == 0 && Client.field112 != -1) {
|
||||||
Login.method2076(UserComparator3.indexCache6, Client.field112, 0, var3, false);
|
Login.method2076(UserComparator3.archive6, Client.field112, 0, var3, false);
|
||||||
Client.field107 = false;
|
Client.field107 = false;
|
||||||
} else if (var3 == 0) {
|
} else if (var3 == 0) {
|
||||||
class214.midiPcmStream.clear();
|
class214.midiPcmStream.clear();
|
||||||
@@ -548,6 +549,6 @@ public class IndexCache extends AbstractIndexCache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static {
|
static {
|
||||||
IndexCache_crc = new CRC32();
|
Archive_crc = new CRC32();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,507 @@
|
|||||||
|
import java.io.EOFException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import net.runelite.mapping.Export;
|
||||||
|
import net.runelite.mapping.Implements;
|
||||||
|
import net.runelite.mapping.ObfuscatedGetter;
|
||||||
|
import net.runelite.mapping.ObfuscatedName;
|
||||||
|
import net.runelite.mapping.ObfuscatedSignature;
|
||||||
|
|
||||||
|
@ObfuscatedName("ff")
|
||||||
|
@Implements("ArchiveDisk")
|
||||||
|
public final class ArchiveDisk {
|
||||||
|
@ObfuscatedName("m")
|
||||||
|
@Export("ArchiveDisk_buffer")
|
||||||
|
static byte[] ArchiveDisk_buffer;
|
||||||
|
@ObfuscatedName("f")
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "Ldy;"
|
||||||
|
)
|
||||||
|
@Export("datFile")
|
||||||
|
BufferedFile datFile;
|
||||||
|
@ObfuscatedName("q")
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "Ldy;"
|
||||||
|
)
|
||||||
|
@Export("idxFile")
|
||||||
|
BufferedFile idxFile;
|
||||||
|
@ObfuscatedName("w")
|
||||||
|
@ObfuscatedGetter(
|
||||||
|
intValue = -1982523283
|
||||||
|
)
|
||||||
|
@Export("archive")
|
||||||
|
int archive;
|
||||||
|
@ObfuscatedName("o")
|
||||||
|
@ObfuscatedGetter(
|
||||||
|
intValue = -748616567
|
||||||
|
)
|
||||||
|
@Export("maxEntrySize")
|
||||||
|
int maxEntrySize;
|
||||||
|
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "(ILdy;Ldy;I)V"
|
||||||
|
)
|
||||||
|
public ArchiveDisk(int var1, BufferedFile var2, BufferedFile var3, int var4) {
|
||||||
|
this.datFile = null;
|
||||||
|
this.idxFile = null;
|
||||||
|
this.maxEntrySize = 65000;
|
||||||
|
this.archive = var1;
|
||||||
|
this.datFile = var2;
|
||||||
|
this.idxFile = var3;
|
||||||
|
this.maxEntrySize = var4;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ObfuscatedName("m")
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "(II)[B",
|
||||||
|
garbageValue = "-294587791"
|
||||||
|
)
|
||||||
|
@Export("read")
|
||||||
|
public byte[] read(int entry) {
|
||||||
|
BufferedFile var2 = this.datFile;
|
||||||
|
synchronized(this.datFile) {
|
||||||
|
try {
|
||||||
|
byte[] var4;
|
||||||
|
Object var5;
|
||||||
|
byte[] var10000;
|
||||||
|
if (this.idxFile.length() < (long)(entry * 6 + 6)) {
|
||||||
|
var5 = null;
|
||||||
|
var4 = ((byte[])var5);
|
||||||
|
var10000 = var4;
|
||||||
|
return var10000;
|
||||||
|
} else {
|
||||||
|
this.idxFile.seek((long)(entry * 6));
|
||||||
|
this.idxFile.read(ArchiveDisk_buffer, 0, 6);
|
||||||
|
int var6 = ((ArchiveDisk_buffer[0] & 255) << 16) + (ArchiveDisk_buffer[2] & 255) + ((ArchiveDisk_buffer[1] & 255) << 8);
|
||||||
|
int var7 = (ArchiveDisk_buffer[5] & 255) + ((ArchiveDisk_buffer[3] & 255) << 16) + ((ArchiveDisk_buffer[4] & 255) << 8);
|
||||||
|
if (var6 < 0 || var6 > this.maxEntrySize) {
|
||||||
|
var5 = null;
|
||||||
|
var4 = ((byte[])var5);
|
||||||
|
var10000 = var4;
|
||||||
|
return var10000;
|
||||||
|
} else if (var7 <= 0 || (long)var7 > this.datFile.length() / 520L) {
|
||||||
|
var5 = null;
|
||||||
|
var4 = ((byte[])var5);
|
||||||
|
return var4;
|
||||||
|
} else {
|
||||||
|
byte[] var8 = new byte[var6];
|
||||||
|
int var9 = 0;
|
||||||
|
int var10 = 0;
|
||||||
|
|
||||||
|
while (var9 < var6) {
|
||||||
|
if (var7 == 0) {
|
||||||
|
var5 = null;
|
||||||
|
var4 = ((byte[])var5);
|
||||||
|
var10000 = var4;
|
||||||
|
return var10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.datFile.seek((long)(var7 * 520));
|
||||||
|
int var11 = var6 - var9;
|
||||||
|
if (var11 > 512) {
|
||||||
|
var11 = 512;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.datFile.read(ArchiveDisk_buffer, 0, var11 + 8);
|
||||||
|
int var12 = (ArchiveDisk_buffer[1] & 255) + ((ArchiveDisk_buffer[0] & 255) << 8);
|
||||||
|
int var13 = (ArchiveDisk_buffer[3] & 255) + ((ArchiveDisk_buffer[2] & 255) << 8);
|
||||||
|
int var14 = ((ArchiveDisk_buffer[5] & 255) << 8) + ((ArchiveDisk_buffer[4] & 255) << 16) + (ArchiveDisk_buffer[6] & 255);
|
||||||
|
int var15 = ArchiveDisk_buffer[7] & 255;
|
||||||
|
if (var12 == entry && var10 == var13 && var15 == this.archive) {
|
||||||
|
if (var14 >= 0 && (long)var14 <= this.datFile.length() / 520L) {
|
||||||
|
for (int var16 = 0; var16 < var11; ++var16) {
|
||||||
|
var8[var9++] = ArchiveDisk_buffer[var16 + 8];
|
||||||
|
}
|
||||||
|
|
||||||
|
var7 = var14;
|
||||||
|
++var10;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var5 = null;
|
||||||
|
var4 = ((byte[])var5);
|
||||||
|
var10000 = var4;
|
||||||
|
return var10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
var5 = null;
|
||||||
|
var4 = ((byte[])var5);
|
||||||
|
var10000 = var4;
|
||||||
|
return var10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
var10000 = var8;
|
||||||
|
return var10000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (IOException var18) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ObfuscatedName("f")
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "(I[BII)Z",
|
||||||
|
garbageValue = "-1750864122"
|
||||||
|
)
|
||||||
|
@Export("write")
|
||||||
|
public boolean write(int var1, byte[] var2, int var3) {
|
||||||
|
BufferedFile var4 = this.datFile;
|
||||||
|
synchronized(this.datFile) {
|
||||||
|
if (var3 >= 0 && var3 <= this.maxEntrySize) {
|
||||||
|
boolean var6 = this.write0(var1, var2, var3, true);
|
||||||
|
if (!var6) {
|
||||||
|
var6 = this.write0(var1, var2, var3, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
return var6;
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ObfuscatedName("q")
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "(I[BIZI)Z",
|
||||||
|
garbageValue = "-944588642"
|
||||||
|
)
|
||||||
|
@Export("write0")
|
||||||
|
boolean write0(int var1, byte[] var2, int var3, boolean var4) {
|
||||||
|
BufferedFile var5 = this.datFile;
|
||||||
|
synchronized(this.datFile) {
|
||||||
|
try {
|
||||||
|
int var7;
|
||||||
|
boolean var8;
|
||||||
|
boolean var10000;
|
||||||
|
if (var4) {
|
||||||
|
if (this.idxFile.length() < (long)(var1 * 6 + 6)) {
|
||||||
|
var8 = false;
|
||||||
|
var10000 = var8;
|
||||||
|
return var10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.idxFile.seek((long)(var1 * 6));
|
||||||
|
this.idxFile.read(ArchiveDisk_buffer, 0, 6);
|
||||||
|
var7 = (ArchiveDisk_buffer[5] & 255) + ((ArchiveDisk_buffer[3] & 255) << 16) + ((ArchiveDisk_buffer[4] & 255) << 8);
|
||||||
|
if (var7 <= 0 || (long)var7 > this.datFile.length() / 520L) {
|
||||||
|
var8 = false;
|
||||||
|
var10000 = var8;
|
||||||
|
return var10000;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var7 = (int)((this.datFile.length() + 519L) / 520L);
|
||||||
|
if (var7 == 0) {
|
||||||
|
var7 = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ArchiveDisk_buffer[0] = (byte)(var3 >> 16);
|
||||||
|
ArchiveDisk_buffer[1] = (byte)(var3 >> 8);
|
||||||
|
ArchiveDisk_buffer[2] = (byte)var3;
|
||||||
|
ArchiveDisk_buffer[3] = (byte)(var7 >> 16);
|
||||||
|
ArchiveDisk_buffer[4] = (byte)(var7 >> 8);
|
||||||
|
ArchiveDisk_buffer[5] = (byte)var7;
|
||||||
|
this.idxFile.seek((long)(var1 * 6));
|
||||||
|
this.idxFile.write(ArchiveDisk_buffer, 0, 6);
|
||||||
|
int var10 = 0;
|
||||||
|
int var11 = 0;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
if (var10 < var3) {
|
||||||
|
label129: {
|
||||||
|
int var12 = 0;
|
||||||
|
int var13;
|
||||||
|
if (var4) {
|
||||||
|
this.datFile.seek((long)(var7 * 520));
|
||||||
|
|
||||||
|
try {
|
||||||
|
this.datFile.read(ArchiveDisk_buffer, 0, 8);
|
||||||
|
} catch (EOFException var17) {
|
||||||
|
break label129;
|
||||||
|
}
|
||||||
|
|
||||||
|
var13 = (ArchiveDisk_buffer[1] & 255) + ((ArchiveDisk_buffer[0] & 255) << 8);
|
||||||
|
int var14 = (ArchiveDisk_buffer[3] & 255) + ((ArchiveDisk_buffer[2] & 255) << 8);
|
||||||
|
var12 = ((ArchiveDisk_buffer[5] & 255) << 8) + ((ArchiveDisk_buffer[4] & 255) << 16) + (ArchiveDisk_buffer[6] & 255);
|
||||||
|
int var15 = ArchiveDisk_buffer[7] & 255;
|
||||||
|
if (var13 != var1 || var14 != var11 || var15 != this.archive) {
|
||||||
|
var8 = false;
|
||||||
|
var10000 = var8;
|
||||||
|
return var10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var12 < 0 || (long)var12 > this.datFile.length() / 520L) {
|
||||||
|
var8 = false;
|
||||||
|
var10000 = var8;
|
||||||
|
return var10000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var12 == 0) {
|
||||||
|
var4 = false;
|
||||||
|
var12 = (int)((this.datFile.length() + 519L) / 520L);
|
||||||
|
if (var12 == 0) {
|
||||||
|
++var12;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var7 == var12) {
|
||||||
|
++var12;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var3 - var10 <= 512) {
|
||||||
|
var12 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ArchiveDisk_buffer[0] = (byte)(var1 >> 8);
|
||||||
|
ArchiveDisk_buffer[1] = (byte)var1;
|
||||||
|
ArchiveDisk_buffer[2] = (byte)(var11 >> 8);
|
||||||
|
ArchiveDisk_buffer[3] = (byte)var11;
|
||||||
|
ArchiveDisk_buffer[4] = (byte)(var12 >> 16);
|
||||||
|
ArchiveDisk_buffer[5] = (byte)(var12 >> 8);
|
||||||
|
ArchiveDisk_buffer[6] = (byte)var12;
|
||||||
|
ArchiveDisk_buffer[7] = (byte)this.archive;
|
||||||
|
this.datFile.seek((long)(var7 * 520));
|
||||||
|
this.datFile.write(ArchiveDisk_buffer, 0, 8);
|
||||||
|
var13 = var3 - var10;
|
||||||
|
if (var13 > 512) {
|
||||||
|
var13 = 512;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.datFile.write(var2, var10, var13);
|
||||||
|
var10 += var13;
|
||||||
|
var7 = var12;
|
||||||
|
++var11;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var8 = true;
|
||||||
|
var10000 = var8;
|
||||||
|
return var10000;
|
||||||
|
}
|
||||||
|
} catch (IOException var18) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ObfuscatedName("q")
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "(IIILfe;Lfy;B)Z",
|
||||||
|
garbageValue = "1"
|
||||||
|
)
|
||||||
|
static final boolean method3585(int var0, int var1, int var2, RouteStrategy var3, CollisionMap var4) {
|
||||||
|
int var5 = var0;
|
||||||
|
int var6 = var1;
|
||||||
|
byte var7 = 64;
|
||||||
|
byte var8 = 64;
|
||||||
|
int var9 = var0 - var7;
|
||||||
|
int var10 = var1 - var8;
|
||||||
|
class178.directions[var7][var8] = 99;
|
||||||
|
class178.distances[var7][var8] = 0;
|
||||||
|
byte var11 = 0;
|
||||||
|
int var12 = 0;
|
||||||
|
class178.bufferX[var11] = var0;
|
||||||
|
int var13 = var11 + 1;
|
||||||
|
class178.bufferY[var11] = var1;
|
||||||
|
int[][] var14 = var4.flags;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
label241:
|
||||||
|
while (true) {
|
||||||
|
int var15;
|
||||||
|
int var16;
|
||||||
|
int var17;
|
||||||
|
int var18;
|
||||||
|
int var19;
|
||||||
|
int var20;
|
||||||
|
do {
|
||||||
|
do {
|
||||||
|
do {
|
||||||
|
label218:
|
||||||
|
do {
|
||||||
|
if (var13 == var12) {
|
||||||
|
InterfaceParent.field986 = var5;
|
||||||
|
UrlRequester.field929 = var6;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var5 = class178.bufferX[var12];
|
||||||
|
var6 = class178.bufferY[var12];
|
||||||
|
var12 = var12 + 1 & 4095;
|
||||||
|
var15 = var5 - var9;
|
||||||
|
var16 = var6 - var10;
|
||||||
|
var17 = var5 - var4.xInset;
|
||||||
|
var18 = var6 - var4.yInset;
|
||||||
|
if (var3.vmethod3644(var2, var5, var6, var4)) {
|
||||||
|
InterfaceParent.field986 = var5;
|
||||||
|
UrlRequester.field929 = var6;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var19 = class178.distances[var15][var16] + 1;
|
||||||
|
if (var15 > 0 && class178.directions[var15 - 1][var16] == 0 && (var14[var17 - 1][var18] & 19136782) == 0 && (var14[var17 - 1][var18 + var2 - 1] & 19136824) == 0) {
|
||||||
|
var20 = 1;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
if (var20 >= var2 - 1) {
|
||||||
|
class178.bufferX[var13] = var5 - 1;
|
||||||
|
class178.bufferY[var13] = var6;
|
||||||
|
var13 = var13 + 1 & 4095;
|
||||||
|
class178.directions[var15 - 1][var16] = 2;
|
||||||
|
class178.distances[var15 - 1][var16] = var19;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((var14[var17 - 1][var20 + var18] & 19136830) != 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
++var20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var15 < 128 - var2 && class178.directions[var15 + 1][var16] == 0 && (var14[var17 + var2][var18] & 19136899) == 0 && (var14[var17 + var2][var18 + var2 - 1] & 19136992) == 0) {
|
||||||
|
var20 = 1;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
if (var20 >= var2 - 1) {
|
||||||
|
class178.bufferX[var13] = var5 + 1;
|
||||||
|
class178.bufferY[var13] = var6;
|
||||||
|
var13 = var13 + 1 & 4095;
|
||||||
|
class178.directions[var15 + 1][var16] = 8;
|
||||||
|
class178.distances[var15 + 1][var16] = var19;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((var14[var17 + var2][var18 + var20] & 19136995) != 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
++var20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var16 > 0 && class178.directions[var15][var16 - 1] == 0 && (var14[var17][var18 - 1] & 19136782) == 0 && (var14[var17 + var2 - 1][var18 - 1] & 19136899) == 0) {
|
||||||
|
var20 = 1;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
if (var20 >= var2 - 1) {
|
||||||
|
class178.bufferX[var13] = var5;
|
||||||
|
class178.bufferY[var13] = var6 - 1;
|
||||||
|
var13 = var13 + 1 & 4095;
|
||||||
|
class178.directions[var15][var16 - 1] = 1;
|
||||||
|
class178.distances[var15][var16 - 1] = var19;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((var14[var20 + var17][var18 - 1] & 19136911) != 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
++var20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var16 < 128 - var2 && class178.directions[var15][var16 + 1] == 0 && (var14[var17][var18 + var2] & 19136824) == 0 && (var14[var17 + var2 - 1][var18 + var2] & 19136992) == 0) {
|
||||||
|
var20 = 1;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
if (var20 >= var2 - 1) {
|
||||||
|
class178.bufferX[var13] = var5;
|
||||||
|
class178.bufferY[var13] = var6 + 1;
|
||||||
|
var13 = var13 + 1 & 4095;
|
||||||
|
class178.directions[var15][var16 + 1] = 4;
|
||||||
|
class178.distances[var15][var16 + 1] = var19;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((var14[var20 + var17][var18 + var2] & 19137016) != 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
++var20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var15 > 0 && var16 > 0 && class178.directions[var15 - 1][var16 - 1] == 0 && (var14[var17 - 1][var18 - 1] & 19136782) == 0) {
|
||||||
|
var20 = 1;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
if (var20 >= var2) {
|
||||||
|
class178.bufferX[var13] = var5 - 1;
|
||||||
|
class178.bufferY[var13] = var6 - 1;
|
||||||
|
var13 = var13 + 1 & 4095;
|
||||||
|
class178.directions[var15 - 1][var16 - 1] = 3;
|
||||||
|
class178.distances[var15 - 1][var16 - 1] = var19;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((var14[var17 - 1][var20 + (var18 - 1)] & 19136830) != 0 || (var14[var20 + (var17 - 1)][var18 - 1] & 19136911) != 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
++var20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var15 < 128 - var2 && var16 > 0 && class178.directions[var15 + 1][var16 - 1] == 0 && (var14[var17 + var2][var18 - 1] & 19136899) == 0) {
|
||||||
|
var20 = 1;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
if (var20 >= var2) {
|
||||||
|
class178.bufferX[var13] = var5 + 1;
|
||||||
|
class178.bufferY[var13] = var6 - 1;
|
||||||
|
var13 = var13 + 1 & 4095;
|
||||||
|
class178.directions[var15 + 1][var16 - 1] = 9;
|
||||||
|
class178.distances[var15 + 1][var16 - 1] = var19;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((var14[var17 + var2][var20 + (var18 - 1)] & 19136995) != 0 || (var14[var20 + var17][var18 - 1] & 19136911) != 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
++var20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var15 > 0 && var16 < 128 - var2 && class178.directions[var15 - 1][var16 + 1] == 0 && (var14[var17 - 1][var18 + var2] & 19136824) == 0) {
|
||||||
|
for (var20 = 1; var20 < var2; ++var20) {
|
||||||
|
if ((var14[var17 - 1][var18 + var20] & 19136830) != 0 || (var14[var20 + (var17 - 1)][var18 + var2] & 19137016) != 0) {
|
||||||
|
continue label218;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class178.bufferX[var13] = var5 - 1;
|
||||||
|
class178.bufferY[var13] = var6 + 1;
|
||||||
|
var13 = var13 + 1 & 4095;
|
||||||
|
class178.directions[var15 - 1][var16 + 1] = 6;
|
||||||
|
class178.distances[var15 - 1][var16 + 1] = var19;
|
||||||
|
}
|
||||||
|
} while(var15 >= 128 - var2);
|
||||||
|
} while(var16 >= 128 - var2);
|
||||||
|
} while(class178.directions[var15 + 1][var16 + 1] != 0);
|
||||||
|
} while((var14[var17 + var2][var18 + var2] & 19136992) != 0);
|
||||||
|
|
||||||
|
for (var20 = 1; var20 < var2; ++var20) {
|
||||||
|
if ((var14[var17 + var20][var18 + var2] & 19137016) != 0 || (var14[var17 + var2][var20 + var18] & 19136995) != 0) {
|
||||||
|
continue label241;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class178.bufferX[var13] = var5 + 1;
|
||||||
|
class178.bufferY[var13] = var6 + 1;
|
||||||
|
var13 = var13 + 1 & 4095;
|
||||||
|
class178.directions[var15 + 1][var16 + 1] = 12;
|
||||||
|
class178.distances[var15 + 1][var16 + 1] = var19;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
ArchiveDisk_buffer = new byte[520];
|
||||||
|
}
|
||||||
|
}
|
||||||
+8
-8
@@ -5,8 +5,8 @@ import net.runelite.mapping.ObfuscatedName;
|
|||||||
import net.runelite.mapping.ObfuscatedSignature;
|
import net.runelite.mapping.ObfuscatedSignature;
|
||||||
|
|
||||||
@ObfuscatedName("ik")
|
@ObfuscatedName("ik")
|
||||||
@Implements("IndexStoreAction")
|
@Implements("ArchiveDiskAction")
|
||||||
public class IndexStoreAction extends Node {
|
public class ArchiveDiskAction extends Node {
|
||||||
@ObfuscatedName("rt")
|
@ObfuscatedName("rt")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = -1086790653
|
intValue = -1086790653
|
||||||
@@ -36,14 +36,14 @@ public class IndexStoreAction extends Node {
|
|||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "Lff;"
|
signature = "Lff;"
|
||||||
)
|
)
|
||||||
@Export("indexStore")
|
@Export("archiveDisk")
|
||||||
IndexStore indexStore;
|
ArchiveDisk archiveDisk;
|
||||||
@ObfuscatedName("w")
|
@ObfuscatedName("w")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "Lit;"
|
signature = "Lit;"
|
||||||
)
|
)
|
||||||
@Export("indexCache")
|
@Export("archive")
|
||||||
IndexCache indexCache;
|
Archive archive;
|
||||||
|
|
||||||
@ObfuscatedName("fn")
|
@ObfuscatedName("fn")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
@@ -94,7 +94,7 @@ public class IndexStoreAction extends Node {
|
|||||||
var5 = false;
|
var5 = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var0.movementSequence == var0.idleSequence && (var0.field22 > 25 || var5)) {
|
if (var0.movementSequence == var0.readySequence && (var0.field22 > 25 || var5)) {
|
||||||
if (var0.turnLeftSequence != -1) {
|
if (var0.turnLeftSequence != -1) {
|
||||||
var0.movementSequence = var0.turnLeftSequence;
|
var0.movementSequence = var0.turnLeftSequence;
|
||||||
} else {
|
} else {
|
||||||
@@ -109,7 +109,7 @@ public class IndexStoreAction extends Node {
|
|||||||
var5 = false;
|
var5 = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var0.movementSequence == var0.idleSequence && (var0.field22 > 25 || var5)) {
|
if (var0.movementSequence == var0.readySequence && (var0.field22 > 25 || var5)) {
|
||||||
if (var0.turnRightSequence != -1) {
|
if (var0.turnRightSequence != -1) {
|
||||||
var0.movementSequence = var0.turnRightSequence;
|
var0.movementSequence = var0.turnRightSequence;
|
||||||
} else {
|
} else {
|
||||||
@@ -0,0 +1,107 @@
|
|||||||
|
import net.runelite.mapping.Export;
|
||||||
|
import net.runelite.mapping.Implements;
|
||||||
|
import net.runelite.mapping.ObfuscatedGetter;
|
||||||
|
import net.runelite.mapping.ObfuscatedName;
|
||||||
|
import net.runelite.mapping.ObfuscatedSignature;
|
||||||
|
|
||||||
|
@ObfuscatedName("iv")
|
||||||
|
@Implements("ArchiveDiskActionHandler")
|
||||||
|
public class ArchiveDiskActionHandler implements Runnable {
|
||||||
|
@ObfuscatedName("m")
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "Lje;"
|
||||||
|
)
|
||||||
|
@Export("ArchiveDiskActionHandler_requestQueue")
|
||||||
|
static NodeDeque ArchiveDiskActionHandler_requestQueue;
|
||||||
|
@ObfuscatedName("f")
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "Lje;"
|
||||||
|
)
|
||||||
|
@Export("ArchiveDiskActionHandler_responseQueue")
|
||||||
|
static NodeDeque ArchiveDiskActionHandler_responseQueue;
|
||||||
|
@ObfuscatedName("q")
|
||||||
|
@ObfuscatedGetter(
|
||||||
|
intValue = -1282224505
|
||||||
|
)
|
||||||
|
static int field412;
|
||||||
|
@ObfuscatedName("w")
|
||||||
|
@Export("ArchiveDiskActionHandler_lock")
|
||||||
|
static Object ArchiveDiskActionHandler_lock;
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
while (true) {
|
||||||
|
NodeDeque var1 = ArchiveDiskActionHandler_requestQueue;
|
||||||
|
ArchiveDiskAction var2;
|
||||||
|
synchronized(ArchiveDiskActionHandler_requestQueue) {
|
||||||
|
var2 = (ArchiveDiskAction)ArchiveDiskActionHandler_requestQueue.last();
|
||||||
|
}
|
||||||
|
|
||||||
|
Object var3;
|
||||||
|
if (var2 != null) {
|
||||||
|
if (var2.type == 0) {
|
||||||
|
var2.archiveDisk.write((int)var2.key, var2.data, var2.data.length);
|
||||||
|
var1 = ArchiveDiskActionHandler_requestQueue;
|
||||||
|
synchronized(ArchiveDiskActionHandler_requestQueue) {
|
||||||
|
var2.remove();
|
||||||
|
}
|
||||||
|
} else if (var2.type == 1) {
|
||||||
|
var2.data = var2.archiveDisk.read((int)var2.key);
|
||||||
|
var1 = ArchiveDiskActionHandler_requestQueue;
|
||||||
|
synchronized(ArchiveDiskActionHandler_requestQueue) {
|
||||||
|
ArchiveDiskActionHandler_responseQueue.addFirst(var2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var3 = ArchiveDiskActionHandler_lock;
|
||||||
|
synchronized(ArchiveDiskActionHandler_lock) {
|
||||||
|
if (field412 <= 1) {
|
||||||
|
field412 = 0;
|
||||||
|
ArchiveDiskActionHandler_lock.notifyAll();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
field412 = 600;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
class203.method4010(100L);
|
||||||
|
var3 = ArchiveDiskActionHandler_lock;
|
||||||
|
synchronized(ArchiveDiskActionHandler_lock) {
|
||||||
|
if (field412 <= 1) {
|
||||||
|
field412 = 0;
|
||||||
|
ArchiveDiskActionHandler_lock.notifyAll();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
--field412;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception var14) {
|
||||||
|
NPCDefinition.sendStackTrace((String)null, var14);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ObfuscatedName("ky")
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "(Ljava/lang/String;B)V",
|
||||||
|
garbageValue = "67"
|
||||||
|
)
|
||||||
|
@Export("clanKickUser")
|
||||||
|
static final void clanKickUser(String var0) {
|
||||||
|
if (PacketWriter.clanChat != null) {
|
||||||
|
PacketBufferNode var1 = Interpreter.method1915(ClientPacket.field235, Client.packetWriter.isaacCipher);
|
||||||
|
var1.packetBuffer.writeByte(WorldMapRegion.stringCp1252NullTerminatedByteSize(var0));
|
||||||
|
var1.packetBuffer.writeStringCp1252NullTerminated(var0);
|
||||||
|
Client.packetWriter.method241(var1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
ArchiveDiskActionHandler_requestQueue = new NodeDeque();
|
||||||
|
ArchiveDiskActionHandler_responseQueue = new NodeDeque();
|
||||||
|
field412 = 0;
|
||||||
|
ArchiveDiskActionHandler_lock = new Object();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,709 @@
|
|||||||
|
import net.runelite.mapping.Export;
|
||||||
|
import net.runelite.mapping.Implements;
|
||||||
|
import net.runelite.mapping.ObfuscatedGetter;
|
||||||
|
import net.runelite.mapping.ObfuscatedName;
|
||||||
|
import net.runelite.mapping.ObfuscatedSignature;
|
||||||
|
|
||||||
|
@ObfuscatedName("bd")
|
||||||
|
@Implements("ArchiveLoader")
|
||||||
|
public class ArchiveLoader {
|
||||||
|
@ObfuscatedName("pf")
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "Lko;"
|
||||||
|
)
|
||||||
|
static class310 field512;
|
||||||
|
@ObfuscatedName("u")
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "Llq;"
|
||||||
|
)
|
||||||
|
@Export("titlebuttonSprite")
|
||||||
|
static IndexedSprite titlebuttonSprite;
|
||||||
|
@ObfuscatedName("x")
|
||||||
|
public static short[][] field406;
|
||||||
|
@ObfuscatedName("er")
|
||||||
|
@ObfuscatedGetter(
|
||||||
|
intValue = 636454135
|
||||||
|
)
|
||||||
|
static int field407;
|
||||||
|
@ObfuscatedName("gw")
|
||||||
|
@Export("regionMapArchiveIds")
|
||||||
|
static int[] regionMapArchiveIds;
|
||||||
|
@ObfuscatedName("f")
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "Lit;"
|
||||||
|
)
|
||||||
|
@Export("archive")
|
||||||
|
final Archive archive;
|
||||||
|
@ObfuscatedName("q")
|
||||||
|
@ObfuscatedGetter(
|
||||||
|
intValue = 1459455501
|
||||||
|
)
|
||||||
|
final int field408;
|
||||||
|
@ObfuscatedName("w")
|
||||||
|
@ObfuscatedGetter(
|
||||||
|
intValue = 782003089
|
||||||
|
)
|
||||||
|
int field409;
|
||||||
|
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "(Lit;Ljava/lang/String;)V"
|
||||||
|
)
|
||||||
|
ArchiveLoader(Archive var1, String var2) {
|
||||||
|
this.field409 = 0;
|
||||||
|
this.archive = var1;
|
||||||
|
this.field408 = var1.method5();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ObfuscatedName("m")
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "(I)Z",
|
||||||
|
garbageValue = "1352221725"
|
||||||
|
)
|
||||||
|
boolean method134() {
|
||||||
|
this.field409 = 0;
|
||||||
|
|
||||||
|
for (int var1 = 0; var1 < this.field408; ++var1) {
|
||||||
|
if (!this.archive.method133(var1) || this.archive.method132(var1)) {
|
||||||
|
++this.field409;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.field409 >= this.field408;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ObfuscatedName("x")
|
||||||
|
@ObfuscatedSignature(
|
||||||
|
signature = "(Lkk;Lkk;Lkk;I)V",
|
||||||
|
garbageValue = "839403460"
|
||||||
|
)
|
||||||
|
@Export("drawTitle")
|
||||||
|
static void drawTitle(Font var0, Font var1, Font var2) {
|
||||||
|
Login.xPadding = (SoundCache.canvasWidth - 765) / 2;
|
||||||
|
Login.loginBoxX = Login.xPadding + 202;
|
||||||
|
Varps.loginBoxCenter = Login.loginBoxX + 180;
|
||||||
|
int var3;
|
||||||
|
int var4;
|
||||||
|
int var5;
|
||||||
|
byte var6;
|
||||||
|
int var7;
|
||||||
|
int var8;
|
||||||
|
int var9;
|
||||||
|
int var10;
|
||||||
|
boolean var11;
|
||||||
|
if (Login.worldSelectOpen) {
|
||||||
|
if (class30.worldSelectBackSprites == null) {
|
||||||
|
class30.worldSelectBackSprites = class2.method20(WorldMapSection3.archive8, "sl_back", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
Archive var12;
|
||||||
|
int var13;
|
||||||
|
int var14;
|
||||||
|
IndexedSprite[] var15;
|
||||||
|
if (Frames.worldSelectFlagSprites == null) {
|
||||||
|
var12 = WorldMapSection3.archive8;
|
||||||
|
var14 = var12.getGroupId("sl_flags");
|
||||||
|
var13 = var12.getFileId(var14, "");
|
||||||
|
if (!SpriteMask.loadSprite(var12, var14, var13)) {
|
||||||
|
var15 = null;
|
||||||
|
} else {
|
||||||
|
var15 = WorldMapLabel.createIndexedSpriteArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
Frames.worldSelectFlagSprites = var15;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AttackOption.worldSelectArrows == null) {
|
||||||
|
var12 = WorldMapSection3.archive8;
|
||||||
|
var14 = var12.getGroupId("sl_arrows");
|
||||||
|
var13 = var12.getFileId(var14, "");
|
||||||
|
if (!SpriteMask.loadSprite(var12, var14, var13)) {
|
||||||
|
var15 = null;
|
||||||
|
} else {
|
||||||
|
var15 = WorldMapLabel.createIndexedSpriteArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
AttackOption.worldSelectArrows = var15;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (UrlRequest.worldSelectStars == null) {
|
||||||
|
var12 = WorldMapSection3.archive8;
|
||||||
|
var14 = var12.getGroupId("sl_stars");
|
||||||
|
var13 = var12.getFileId(var14, "");
|
||||||
|
if (!SpriteMask.loadSprite(var12, var14, var13)) {
|
||||||
|
var15 = null;
|
||||||
|
} else {
|
||||||
|
var15 = WorldMapLabel.createIndexedSpriteArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
UrlRequest.worldSelectStars = var15;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SecureRandomFuture.worldSelectLeftSprite == null) {
|
||||||
|
SecureRandomFuture.worldSelectLeftSprite = MenuAction.loadIndexedSpriteByName(WorldMapSection3.archive8, "leftarrow", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (NetSocket.worldSelectRightSprite == null) {
|
||||||
|
NetSocket.worldSelectRightSprite = MenuAction.loadIndexedSpriteByName(WorldMapSection3.archive8, "rightarrow", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
Rasterizer2D.Rasterizer2D_fillRectangle(Login.xPadding, 23, 765, 480, 0);
|
||||||
|
Rasterizer2D.drawGradient(Login.xPadding, 0, 125, 23, 12425273, 9135624);
|
||||||
|
Rasterizer2D.drawGradient(Login.xPadding + 125, 0, 640, 23, 5197647, 2697513);
|
||||||
|
var0.drawCentered("Select a world", Login.xPadding + 62, 15, 0, -1);
|
||||||
|
if (UrlRequest.worldSelectStars != null) {
|
||||||
|
UrlRequest.worldSelectStars[1].drawAt(Login.xPadding + 140, 1);
|
||||||
|
var1.draw("Members only world", Login.xPadding + 152, 10, 16777215, -1);
|
||||||
|
UrlRequest.worldSelectStars[0].drawAt(Login.xPadding + 140, 12);
|
||||||
|
var1.draw("Free world", Login.xPadding + 152, 21, 16777215, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AttackOption.worldSelectArrows != null) {
|
||||||
|
var10 = Login.xPadding + 280;
|
||||||
|
if (World.sortOption1[0] == 0 && World.sortOption2[0] == 0) {
|
||||||
|
AttackOption.worldSelectArrows[2].drawAt(var10, 4);
|
||||||
|
} else {
|
||||||
|
AttackOption.worldSelectArrows[0].drawAt(var10, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (World.sortOption1[0] == 0 && World.sortOption2[0] == 1) {
|
||||||
|
AttackOption.worldSelectArrows[3].drawAt(var10 + 15, 4);
|
||||||
|
} else {
|
||||||
|
AttackOption.worldSelectArrows[1].drawAt(var10 + 15, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
var0.draw("World", var10 + 32, 17, 16777215, -1);
|
||||||
|
var7 = Login.xPadding + 390;
|
||||||
|
if (World.sortOption1[0] == 1 && World.sortOption2[0] == 0) {
|
||||||
|
AttackOption.worldSelectArrows[2].drawAt(var7, 4);
|
||||||
|
} else {
|
||||||
|
AttackOption.worldSelectArrows[0].drawAt(var7, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (World.sortOption1[0] == 1 && World.sortOption2[0] == 1) {
|
||||||
|
AttackOption.worldSelectArrows[3].drawAt(var7 + 15, 4);
|
||||||
|
} else {
|
||||||
|
AttackOption.worldSelectArrows[1].drawAt(var7 + 15, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
var0.draw("Players", var7 + 32, 17, 16777215, -1);
|
||||||
|
var14 = Login.xPadding + 500;
|
||||||
|
if (World.sortOption1[0] == 2 && World.sortOption2[0] == 0) {
|
||||||
|
AttackOption.worldSelectArrows[2].drawAt(var14, 4);
|
||||||
|
} else {
|
||||||
|
AttackOption.worldSelectArrows[0].drawAt(var14, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (World.sortOption1[0] == 2 && World.sortOption2[0] == 1) {
|
||||||
|
AttackOption.worldSelectArrows[3].drawAt(var14 + 15, 4);
|
||||||
|
} else {
|
||||||
|
AttackOption.worldSelectArrows[1].drawAt(var14 + 15, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
var0.draw("Location", var14 + 32, 17, 16777215, -1);
|
||||||
|
var13 = Login.xPadding + 610;
|
||||||
|
if (World.sortOption1[0] == 3 && World.sortOption2[0] == 0) {
|
||||||
|
AttackOption.worldSelectArrows[2].drawAt(var13, 4);
|
||||||
|
} else {
|
||||||
|
AttackOption.worldSelectArrows[0].drawAt(var13, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (World.sortOption1[0] == 3 && World.sortOption2[0] == 1) {
|
||||||
|
AttackOption.worldSelectArrows[3].drawAt(var13 + 15, 4);
|
||||||
|
} else {
|
||||||
|
AttackOption.worldSelectArrows[1].drawAt(var13 + 15, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
var0.draw("Type", var13 + 32, 17, 16777215, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
Rasterizer2D.Rasterizer2D_fillRectangle(Login.xPadding + 708, 4, 50, 16, 0);
|
||||||
|
var1.drawCentered("Cancel", Login.xPadding + 708 + 25, 16, 16777215, -1);
|
||||||
|
Login.hoveredWorldIndex = -1;
|
||||||
|
if (class30.worldSelectBackSprites != null) {
|
||||||
|
var6 = 88;
|
||||||
|
byte var16 = 19;
|
||||||
|
var14 = 765 / (var6 + 1) - 1;
|
||||||
|
var13 = 480 / (var16 + 1);
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
var8 = var13;
|
||||||
|
var9 = var14;
|
||||||
|
if (var13 * (var14 - 1) >= World.worldsCount) {
|
||||||
|
--var14;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var14 * (var13 - 1) >= World.worldsCount) {
|
||||||
|
--var13;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var14 * (var13 - 1) >= World.worldsCount) {
|
||||||
|
--var13;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var13 == var8 && var14 == var9) {
|
||||||
|
var8 = (765 - var6 * var14) / (var14 + 1);
|
||||||
|
if (var8 > 5) {
|
||||||
|
var8 = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
var9 = (480 - var16 * var13) / (var13 + 1);
|
||||||
|
if (var9 > 5) {
|
||||||
|
var9 = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
var3 = (765 - var14 * var6 - var8 * (var14 - 1)) / 2;
|
||||||
|
int var17 = (480 - var13 * var16 - var9 * (var13 - 1)) / 2;
|
||||||
|
var4 = (var13 + World.worldsCount - 1) / var13;
|
||||||
|
Login.worldSelectPagesCount = var4 - var14;
|
||||||
|
if (SecureRandomFuture.worldSelectLeftSprite != null && Login.worldSelectPage > 0) {
|
||||||
|
SecureRandomFuture.worldSelectLeftSprite.drawAt(8, Huffman.canvasHeight / 2 - SecureRandomFuture.worldSelectLeftSprite.subHeight / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (NetSocket.worldSelectRightSprite != null && Login.worldSelectPage < Login.worldSelectPagesCount) {
|
||||||
|
NetSocket.worldSelectRightSprite.drawAt(SoundCache.canvasWidth - NetSocket.worldSelectRightSprite.subWidth - 8, Huffman.canvasHeight / 2 - NetSocket.worldSelectRightSprite.subHeight / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
int var18 = var17 + 23;
|
||||||
|
int var19 = var3 + Login.xPadding;
|
||||||
|
int var20 = 0;
|
||||||
|
var11 = false;
|
||||||
|
int var21 = Login.worldSelectPage;
|
||||||
|
|
||||||
|
int var22;
|
||||||
|
for (var22 = var13 * var21; var22 < World.worldsCount && var21 - Login.worldSelectPage < var14; ++var22) {
|
||||||
|
World var23 = ItemContainer.worlds[var22];
|
||||||
|
boolean var24 = true;
|
||||||
|
String var25 = Integer.toString(var23.population);
|
||||||
|
if (var23.population == -1) {
|
||||||
|
var25 = "OFF";
|
||||||
|
var24 = false;
|
||||||
|
} else if (var23.population > 1980) {
|
||||||
|
var25 = "FULL";
|
||||||
|
var24 = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int var26 = 0;
|
||||||
|
byte var27;
|
||||||
|
if (var23.isBeta()) {
|
||||||
|
if (var23.isMembersOnly()) {
|
||||||
|
var27 = 7;
|
||||||
|
} else {
|
||||||
|
var27 = 6;
|
||||||
|
}
|
||||||
|
} else if (var23.isDeadman()) {
|
||||||
|
var26 = 16711680;
|
||||||
|
if (var23.isMembersOnly()) {
|
||||||
|
var27 = 5;
|
||||||
|
} else {
|
||||||
|
var27 = 4;
|
||||||
|
}
|
||||||
|
} else if (var23.isPvp()) {
|
||||||
|
if (var23.isMembersOnly()) {
|
||||||
|
var27 = 3;
|
||||||
|
} else {
|
||||||
|
var27 = 2;
|
||||||
|
}
|
||||||
|
} else if (var23.isMembersOnly()) {
|
||||||
|
var27 = 1;
|
||||||
|
} else {
|
||||||
|
var27 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MouseHandler.MouseHandler_x >= var19 && MouseHandler.MouseHandler_y >= var18 && MouseHandler.MouseHandler_x < var19 + var6 && MouseHandler.MouseHandler_y < var16 + var18 && var24) {
|
||||||
|
Login.hoveredWorldIndex = var22;
|
||||||
|
class30.worldSelectBackSprites[var27].drawAtTransOverlay(var19, var18, 128, 16777215);
|
||||||
|
var11 = true;
|
||||||
|
} else {
|
||||||
|
class30.worldSelectBackSprites[var27].drawAt(var19, var18);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Frames.worldSelectFlagSprites != null) {
|
||||||
|
Frames.worldSelectFlagSprites[(var23.isMembersOnly() ? 8 : 0) + var23.location].drawAt(var19 + 29, var18);
|
||||||
|
}
|
||||||
|
|
||||||
|
var0.drawCentered(Integer.toString(var23.id), var19 + 15, var16 / 2 + var18 + 5, var26, -1);
|
||||||
|
var1.drawCentered(var25, var19 + 60, var16 / 2 + var18 + 5, 268435455, -1);
|
||||||
|
var18 = var18 + var9 + var16;
|
||||||
|
++var20;
|
||||||
|
if (var20 >= var13) {
|
||||||
|
var18 = var17 + 23;
|
||||||
|
var19 = var19 + var6 + var8;
|
||||||
|
var20 = 0;
|
||||||
|
++var21;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var11) {
|
||||||
|
var22 = var1.stringWidth(ItemContainer.worlds[Login.hoveredWorldIndex].activity) + 6;
|
||||||
|
int var44 = var1.ascent + 8;
|
||||||
|
var5 = MouseHandler.MouseHandler_y + 25;
|
||||||
|
if (var44 + var5 > 480) {
|
||||||
|
var5 = MouseHandler.MouseHandler_y - 25 - var44;
|
||||||
|
}
|
||||||
|
|
||||||
|
Rasterizer2D.Rasterizer2D_fillRectangle(MouseHandler.MouseHandler_x - var22 / 2, var5, var22, var44, 16777120);
|
||||||
|
Rasterizer2D.Rasterizer2D_drawRectangle(MouseHandler.MouseHandler_x - var22 / 2, var5, var22, var44, 0);
|
||||||
|
var1.drawCentered(ItemContainer.worlds[Login.hoveredWorldIndex].activity, MouseHandler.MouseHandler_x, var5 + var1.ascent + 4, 0, -1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class197.rasterProvider.drawFull(0, 0);
|
||||||
|
} else {
|
||||||
|
Login.leftTitleSprite.drawAt(Login.xPadding, 0);
|
||||||
|
Fonts.rightTitleSprite.drawAt(Login.xPadding + 382, 0);
|
||||||
|
WorldMapSectionType.logoSprite.drawAt(Login.xPadding + 382 - WorldMapSectionType.logoSprite.subWidth / 2, 18);
|
||||||
|
if (Client.gameState == 0 || Client.gameState == 5) {
|
||||||
|
var6 = 20;
|
||||||
|
var0.drawCentered("RuneScape is loading - please wait...", Login.loginBoxX + 180, 245 - var6, 16777215, -1);
|
||||||
|
var7 = 253 - var6;
|
||||||
|
Rasterizer2D.Rasterizer2D_drawRectangle(Login.loginBoxX + 180 - 152, var7, 304, 34, 9179409);
|
||||||
|
Rasterizer2D.Rasterizer2D_drawRectangle(Login.loginBoxX + 180 - 151, var7 + 1, 302, 32, 0);
|
||||||
|
Rasterizer2D.Rasterizer2D_fillRectangle(Login.loginBoxX + 180 - 150, var7 + 2, Login.Login_loadingPercent * 3, 30, 9179409);
|
||||||
|
Rasterizer2D.Rasterizer2D_fillRectangle(Login.loginBoxX + 180 - 150 + Login.Login_loadingPercent * 3, var7 + 2, 300 - Login.Login_loadingPercent * 3, 30, 0);
|
||||||
|
var0.drawCentered(Login.Login_loadingText, Login.loginBoxX + 180, 276 - var6, 16777215, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
String var28;
|
||||||
|
String var29;
|
||||||
|
short var30;
|
||||||
|
String var31;
|
||||||
|
String var32;
|
||||||
|
String var33;
|
||||||
|
short var34;
|
||||||
|
if (Client.gameState == 20) {
|
||||||
|
Login.titleboxSprite.drawAt(Login.loginBoxX + 180 - Login.titleboxSprite.subWidth / 2, 271 - Login.titleboxSprite.subHeight / 2);
|
||||||
|
var30 = 201;
|
||||||
|
var0.drawCentered(Login.Login_response1, Login.loginBoxX + 180, var30, 16776960, 0);
|
||||||
|
var10 = var30 + 15;
|
||||||
|
var0.drawCentered(Login.Login_response2, Login.loginBoxX + 180, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var0.drawCentered(Login.Login_response3, Login.loginBoxX + 180, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var10 += 7;
|
||||||
|
if (Login.loginIndex != 4) {
|
||||||
|
var0.draw("Login: ", Login.loginBoxX + 180 - 110, var10, 16777215, 0);
|
||||||
|
var34 = 200;
|
||||||
|
if (ReflectionCheck.clientPreferences.hideUsername) {
|
||||||
|
var29 = Login.Login_username;
|
||||||
|
var28 = class168.method3450('*', var29.length());
|
||||||
|
var31 = var28;
|
||||||
|
} else {
|
||||||
|
var31 = Login.Login_username;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var31 = var31; var0.stringWidth(var31) > var34; var31 = var31.substring(0, var31.length() - 1)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
var0.draw(AbstractFont.escapeBrackets(var31), Login.loginBoxX + 180 - 70, var10, 16777215, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var29 = "Password: ";
|
||||||
|
var32 = Login.Login_password;
|
||||||
|
var33 = class168.method3450('*', var32.length());
|
||||||
|
var0.draw(var29 + var33, Login.loginBoxX + 180 - 108, var10, 16777215, 0);
|
||||||
|
var10 += 15;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Client.gameState == 10 || Client.gameState == 11) {
|
||||||
|
Login.titleboxSprite.drawAt(Login.loginBoxX, 171);
|
||||||
|
short var35;
|
||||||
|
if (Login.loginIndex == 0) {
|
||||||
|
var30 = 251;
|
||||||
|
var0.drawCentered("Welcome to RuneScape", Login.loginBoxX + 180, var30, 16776960, 0);
|
||||||
|
var10 = var30 + 30;
|
||||||
|
var7 = Login.loginBoxX + 180 - 80;
|
||||||
|
var35 = 291;
|
||||||
|
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
|
||||||
|
var0.drawLines("New User", var7 - 73, var35 - 20, 144, 40, 16777215, 0, 1, 1, 0);
|
||||||
|
var7 = Login.loginBoxX + 180 + 80;
|
||||||
|
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
|
||||||
|
var0.drawLines("Existing User", var7 - 73, var35 - 20, 144, 40, 16777215, 0, 1, 1, 0);
|
||||||
|
} else if (Login.loginIndex == 1) {
|
||||||
|
var0.drawCentered(Login.Login_response0, Login.loginBoxX + 180, 201, 16776960, 0);
|
||||||
|
var30 = 236;
|
||||||
|
var0.drawCentered(Login.Login_response1, Login.loginBoxX + 180, var30, 16777215, 0);
|
||||||
|
var10 = var30 + 15;
|
||||||
|
var0.drawCentered(Login.Login_response2, Login.loginBoxX + 180, var10, 16777215, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var0.drawCentered(Login.Login_response3, Login.loginBoxX + 180, var10, 16777215, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var7 = Login.loginBoxX + 180 - 80;
|
||||||
|
var35 = 321;
|
||||||
|
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
|
||||||
|
var0.drawCentered("Continue", var7, var35 + 5, 16777215, 0);
|
||||||
|
var7 = Login.loginBoxX + 180 + 80;
|
||||||
|
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
|
||||||
|
var0.drawCentered("Cancel", var7, var35 + 5, 16777215, 0);
|
||||||
|
} else {
|
||||||
|
IndexedSprite var42;
|
||||||
|
if (Login.loginIndex == 2) {
|
||||||
|
var30 = 201;
|
||||||
|
var0.drawCentered(Login.Login_response1, Varps.loginBoxCenter, var30, 16776960, 0);
|
||||||
|
var10 = var30 + 15;
|
||||||
|
var0.drawCentered(Login.Login_response2, Varps.loginBoxCenter, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var0.drawCentered(Login.Login_response3, Varps.loginBoxCenter, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var10 += 7;
|
||||||
|
var0.draw("Login: ", Varps.loginBoxCenter - 110, var10, 16777215, 0);
|
||||||
|
var34 = 200;
|
||||||
|
if (ReflectionCheck.clientPreferences.hideUsername) {
|
||||||
|
var29 = Login.Login_username;
|
||||||
|
var28 = class168.method3450('*', var29.length());
|
||||||
|
var31 = var28;
|
||||||
|
} else {
|
||||||
|
var31 = Login.Login_username;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var31 = var31; var0.stringWidth(var31) > var34; var31 = var31.substring(1)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
var0.draw(AbstractFont.escapeBrackets(var31) + (Login.currentLoginField == 0 & Client.cycle % 40 < 20 ? BufferedFile.colorStartTag(16776960) + "|" : ""), Varps.loginBoxCenter - 70, var10, 16777215, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var29 = "Password: ";
|
||||||
|
var32 = Login.Login_password;
|
||||||
|
var33 = class168.method3450('*', var32.length());
|
||||||
|
var0.draw(var29 + var33 + (Login.currentLoginField == 1 & Client.cycle % 40 < 20 ? BufferedFile.colorStartTag(16776960) + "|" : ""), Varps.loginBoxCenter - 108, var10, 16777215, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var30 = 277;
|
||||||
|
var4 = Varps.loginBoxCenter + -117;
|
||||||
|
boolean var40 = Client.Login_isUsernameRemembered;
|
||||||
|
var11 = Login.field468;
|
||||||
|
var42 = var40 ? (var11 ? KeyHandler.options_buttons_6Sprite : class308.options_buttons_2Sprite) : (var11 ? GraphicsObject.options_buttons_4Sprite : Login.options_buttons_0Sprite);
|
||||||
|
var42.drawAt(var4, var30);
|
||||||
|
var4 = var4 + var42.subWidth + 5;
|
||||||
|
var1.draw("Remember username", var4, var30 + 13, 16776960, 0);
|
||||||
|
var4 = Varps.loginBoxCenter + 24;
|
||||||
|
boolean var47 = ReflectionCheck.clientPreferences.hideUsername;
|
||||||
|
boolean var45 = Login.field469;
|
||||||
|
IndexedSprite var48 = var47 ? (var45 ? KeyHandler.options_buttons_6Sprite : class308.options_buttons_2Sprite) : (var45 ? GraphicsObject.options_buttons_4Sprite : Login.options_buttons_0Sprite);
|
||||||
|
var48.drawAt(var4, var30);
|
||||||
|
var4 = var4 + var48.subWidth + 5;
|
||||||
|
var1.draw("Hide username", var4, var30 + 13, 16776960, 0);
|
||||||
|
var10 = var30 + 15;
|
||||||
|
var5 = Varps.loginBoxCenter - 80;
|
||||||
|
short var49 = 321;
|
||||||
|
titlebuttonSprite.drawAt(var5 - 73, var49 - 20);
|
||||||
|
var0.drawCentered("Login", var5, var49 + 5, 16777215, 0);
|
||||||
|
var5 = Varps.loginBoxCenter + 80;
|
||||||
|
titlebuttonSprite.drawAt(var5 - 73, var49 - 20);
|
||||||
|
var0.drawCentered("Cancel", var5, var49 + 5, 16777215, 0);
|
||||||
|
var30 = 357;
|
||||||
|
switch(Login.field467) {
|
||||||
|
case 2:
|
||||||
|
AttackOption.field31 = "Having trouble logging in?";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
AttackOption.field31 = "Can't login? Click here.";
|
||||||
|
}
|
||||||
|
|
||||||
|
TilePaint.field907 = new Bounds(Varps.loginBoxCenter, var30, var1.stringWidth(AttackOption.field31), 11);
|
||||||
|
UrlRequester.field930 = new Bounds(Varps.loginBoxCenter, var30, var1.stringWidth("Still having trouble logging in?"), 11);
|
||||||
|
var1.drawCentered(AttackOption.field31, Varps.loginBoxCenter, var30, 16777215, 0);
|
||||||
|
} else if (Login.loginIndex == 3) {
|
||||||
|
var30 = 201;
|
||||||
|
var0.drawCentered("Invalid credentials.", Login.loginBoxX + 180, var30, 16776960, 0);
|
||||||
|
var10 = var30 + 20;
|
||||||
|
var1.drawCentered("For accounts created after 24th November 2010, please use your", Login.loginBoxX + 180, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var1.drawCentered("email address to login. Otherwise please login with your username.", Login.loginBoxX + 180, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var7 = Login.loginBoxX + 180;
|
||||||
|
var35 = 276;
|
||||||
|
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
|
||||||
|
var2.drawCentered("Try again", var7, var35 + 5, 16777215, 0);
|
||||||
|
var7 = Login.loginBoxX + 180;
|
||||||
|
var35 = 326;
|
||||||
|
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
|
||||||
|
var2.drawCentered("Forgotten password?", var7, var35 + 5, 16777215, 0);
|
||||||
|
} else {
|
||||||
|
String var36;
|
||||||
|
if (Login.loginIndex == 4) {
|
||||||
|
var0.drawCentered("Authenticator", Login.loginBoxX + 180, 201, 16776960, 0);
|
||||||
|
var30 = 236;
|
||||||
|
var0.drawCentered(Login.Login_response1, Login.loginBoxX + 180, var30, 16777215, 0);
|
||||||
|
var10 = var30 + 15;
|
||||||
|
var0.drawCentered(Login.Login_response2, Login.loginBoxX + 180, var10, 16777215, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var0.drawCentered(Login.Login_response3, Login.loginBoxX + 180, var10, 16777215, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var36 = "PIN: ";
|
||||||
|
var28 = Login.otp;
|
||||||
|
var31 = class168.method3450('*', var28.length());
|
||||||
|
var0.draw(var36 + var31 + (Client.cycle % 40 < 20 ? BufferedFile.colorStartTag(16776960) + "|" : ""), Login.loginBoxX + 180 - 108, var10, 16777215, 0);
|
||||||
|
var10 -= 8;
|
||||||
|
var0.draw("Trust this computer", Login.loginBoxX + 180 - 9, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var0.draw("for 30 days: ", Login.loginBoxX + 180 - 9, var10, 16776960, 0);
|
||||||
|
var9 = Login.loginBoxX + 180 - 9 + var0.stringWidth("for 30 days: ") + 15;
|
||||||
|
var3 = var10 - var0.ascent;
|
||||||
|
if (Login.field470) {
|
||||||
|
var42 = class308.options_buttons_2Sprite;
|
||||||
|
} else {
|
||||||
|
var42 = Login.options_buttons_0Sprite;
|
||||||
|
}
|
||||||
|
|
||||||
|
var42.drawAt(var9, var3);
|
||||||
|
var10 += 15;
|
||||||
|
var4 = Login.loginBoxX + 180 - 80;
|
||||||
|
short var46 = 321;
|
||||||
|
titlebuttonSprite.drawAt(var4 - 73, var46 - 20);
|
||||||
|
var0.drawCentered("Continue", var4, var46 + 5, 16777215, 0);
|
||||||
|
var4 = Login.loginBoxX + 180 + 80;
|
||||||
|
titlebuttonSprite.drawAt(var4 - 73, var46 - 20);
|
||||||
|
var0.drawCentered("Cancel", var4, var46 + 5, 16777215, 0);
|
||||||
|
var1.drawCentered("<u=ff>Can't Log In?</u>", Login.loginBoxX + 180, var46 + 36, 255, 0);
|
||||||
|
} else {
|
||||||
|
short var37;
|
||||||
|
if (Login.loginIndex != 5) {
|
||||||
|
if (Login.loginIndex == 6) {
|
||||||
|
var30 = 201;
|
||||||
|
var0.drawCentered(Login.Login_response1, Login.loginBoxX + 180, var30, 16776960, 0);
|
||||||
|
var10 = var30 + 15;
|
||||||
|
var0.drawCentered(Login.Login_response2, Login.loginBoxX + 180, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var0.drawCentered(Login.Login_response3, Login.loginBoxX + 180, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var7 = Login.loginBoxX + 180;
|
||||||
|
var35 = 321;
|
||||||
|
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
|
||||||
|
var0.drawCentered("Back", var7, var35 + 5, 16777215, 0);
|
||||||
|
} else if (Login.loginIndex == 7) {
|
||||||
|
var30 = 216;
|
||||||
|
var0.drawCentered("Your date of birth isn't set.", Login.loginBoxX + 180, var30, 16776960, 0);
|
||||||
|
var10 = var30 + 15;
|
||||||
|
var2.drawCentered("Please verify your account status by", Login.loginBoxX + 180, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var2.drawCentered("setting your date of birth.", Login.loginBoxX + 180, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var7 = Login.loginBoxX + 180 - 80;
|
||||||
|
var35 = 321;
|
||||||
|
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
|
||||||
|
var0.drawCentered("Set Date of Birth", var7, var35 + 5, 16777215, 0);
|
||||||
|
var7 = Login.loginBoxX + 180 + 80;
|
||||||
|
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
|
||||||
|
var0.drawCentered("Back", var7, var35 + 5, 16777215, 0);
|
||||||
|
} else if (Login.loginIndex == 8) {
|
||||||
|
var30 = 216;
|
||||||
|
var0.drawCentered("Sorry, but your account is not eligible to play.", Login.loginBoxX + 180, var30, 16776960, 0);
|
||||||
|
var10 = var30 + 15;
|
||||||
|
var2.drawCentered("For more information, please take a look at", Login.loginBoxX + 180, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var2.drawCentered("our privacy policy.", Login.loginBoxX + 180, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var7 = Login.loginBoxX + 180 - 80;
|
||||||
|
var35 = 321;
|
||||||
|
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
|
||||||
|
var0.drawCentered("Privacy Policy", var7, var35 + 5, 16777215, 0);
|
||||||
|
var7 = Login.loginBoxX + 180 + 80;
|
||||||
|
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
|
||||||
|
var0.drawCentered("Back", var7, var35 + 5, 16777215, 0);
|
||||||
|
} else if (Login.loginIndex == 12) {
|
||||||
|
var30 = 201;
|
||||||
|
String var43 = "";
|
||||||
|
var36 = "";
|
||||||
|
var31 = "";
|
||||||
|
switch(Login.field466) {
|
||||||
|
case 0:
|
||||||
|
var43 = "Your account has been disabled.";
|
||||||
|
var36 = Strings.field880;
|
||||||
|
var31 = "";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
var43 = "Account locked as we suspect it has been stolen.";
|
||||||
|
var36 = Strings.field881;
|
||||||
|
var31 = "";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
MouseHandler.method1084(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
var0.drawCentered(var43, Login.loginBoxX + 180, var30, 16776960, 0);
|
||||||
|
var10 = var30 + 15;
|
||||||
|
var2.drawCentered(var36, Login.loginBoxX + 180, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var2.drawCentered(var31, Login.loginBoxX + 180, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var8 = Login.loginBoxX + 180;
|
||||||
|
var37 = 276;
|
||||||
|
titlebuttonSprite.drawAt(var8 - 73, var37 - 20);
|
||||||
|
var0.drawCentered("Support Page", var8, var37 + 5, 16777215, 0);
|
||||||
|
var8 = Login.loginBoxX + 180;
|
||||||
|
var37 = 326;
|
||||||
|
titlebuttonSprite.drawAt(var8 - 73, var37 - 20);
|
||||||
|
var0.drawCentered("Back", var8, var37 + 5, 16777215, 0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var0.drawCentered("Forgotten your password?", Login.loginBoxX + 180, 201, 16776960, 0);
|
||||||
|
var30 = 221;
|
||||||
|
var2.drawCentered(Login.Login_response1, Login.loginBoxX + 180, var30, 16776960, 0);
|
||||||
|
var10 = var30 + 15;
|
||||||
|
var2.drawCentered(Login.Login_response2, Login.loginBoxX + 180, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var2.drawCentered(Login.Login_response3, Login.loginBoxX + 180, var10, 16776960, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var10 += 14;
|
||||||
|
var0.draw("Username/email: ", Login.loginBoxX + 180 - 145, var10, 16777215, 0);
|
||||||
|
var34 = 174;
|
||||||
|
if (ReflectionCheck.clientPreferences.hideUsername) {
|
||||||
|
var29 = Login.Login_username;
|
||||||
|
var28 = class168.method3450('*', var29.length());
|
||||||
|
var31 = var28;
|
||||||
|
} else {
|
||||||
|
var31 = Login.Login_username;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var31 = var31; var0.stringWidth(var31) > var34; var31 = var31.substring(1)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
var0.draw(AbstractFont.escapeBrackets(var31) + (Client.cycle % 40 < 20 ? BufferedFile.colorStartTag(16776960) + "|" : ""), Login.loginBoxX + 180 - 34, var10, 16777215, 0);
|
||||||
|
var10 += 15;
|
||||||
|
var8 = Login.loginBoxX + 180 - 80;
|
||||||
|
var37 = 321;
|
||||||
|
titlebuttonSprite.drawAt(var8 - 73, var37 - 20);
|
||||||
|
var0.drawCentered("Recover", var8, var37 + 5, 16777215, 0);
|
||||||
|
var8 = Login.loginBoxX + 180 + 80;
|
||||||
|
titlebuttonSprite.drawAt(var8 - 73, var37 - 20);
|
||||||
|
var0.drawCentered("Back", var8, var37 + 5, 16777215, 0);
|
||||||
|
var37 = 356;
|
||||||
|
var1.drawCentered("Still having trouble logging in?", Varps.loginBoxCenter, var37, 268435455, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Client.gameState >= 10) {
|
||||||
|
int[] var38 = new int[4];
|
||||||
|
Rasterizer2D.Rasterizer2D_getClipArray(var38);
|
||||||
|
Rasterizer2D.Rasterizer2D_setClip(Login.xPadding, 0, Login.xPadding + 765, Huffman.canvasHeight);
|
||||||
|
class16.loginScreenRunesAnimation.method1782(Login.xPadding - 22, Client.cycle);
|
||||||
|
class16.loginScreenRunesAnimation.method1782(Login.xPadding + 22 + 765 - 128, Client.cycle);
|
||||||
|
Rasterizer2D.Rasterizer2D_setClipArray(var38);
|
||||||
|
}
|
||||||
|
|
||||||
|
KeyHandler.title_muteSprite[ReflectionCheck.clientPreferences.titleMusicDisabled ? 1 : 0].drawAt(Login.xPadding + 765 - 40, 463);
|
||||||
|
if (Client.gameState > 5 && Client.language == 0) {
|
||||||
|
if (class277.field1144 != null) {
|
||||||
|
var10 = Login.xPadding + 5;
|
||||||
|
var34 = 463;
|
||||||
|
byte var39 = 100;
|
||||||
|
byte var41 = 35;
|
||||||
|
class277.field1144.drawAt(var10, var34);
|
||||||
|
var0.drawCentered("World " + Client.worldId, var39 / 2 + var10, var41 / 2 + var34 - 2, 16777215, 0);
|
||||||
|
if (FriendLoginUpdate.field356 != null) {
|
||||||
|
var1.drawCentered("Loading...", var39 / 2 + var10, var41 / 2 + var34 + 12, 16777215, 0);
|
||||||
|
} else {
|
||||||
|
var1.drawCentered("Click to switch", var39 / 2 + var10, var41 / 2 + var34 + 12, 16777215, 0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
class277.field1144 = MenuAction.loadIndexedSpriteByName(WorldMapSection3.archive8, "sl_button", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -81,7 +81,7 @@ public enum AttackOption implements Enumerated {
|
|||||||
signature = "(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I",
|
signature = "(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I",
|
||||||
garbageValue = "-189314181"
|
garbageValue = "-189314181"
|
||||||
)
|
)
|
||||||
public static int method2033(CharSequence var0, CharSequence var1, int var2) {
|
public static int method2033(CharSequence var0, CharSequence var1, int language) {
|
||||||
int var3 = var0.length();
|
int var3 = var0.length();
|
||||||
int var4 = var1.length();
|
int var4 = var1.length();
|
||||||
int var5 = 0;
|
int var5 = 0;
|
||||||
@@ -146,13 +146,13 @@ public enum AttackOption implements Enumerated {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var8 = var12;
|
var8 = var12;
|
||||||
var9 = class12.method155(var9, var2);
|
var9 = GrandExchangeOfferAgeComparator.method155(var9, language);
|
||||||
var14 = class12.method155(var14, var2);
|
var14 = GrandExchangeOfferAgeComparator.method155(var14, language);
|
||||||
if (var9 != var14 && Character.toUpperCase(var9) != Character.toUpperCase(var14)) {
|
if (var9 != var14 && Character.toUpperCase(var9) != Character.toUpperCase(var14)) {
|
||||||
var9 = Character.toLowerCase(var9);
|
var9 = Character.toLowerCase(var9);
|
||||||
var14 = Character.toLowerCase(var14);
|
var14 = Character.toLowerCase(var14);
|
||||||
if (var14 != var9) {
|
if (var14 != var9) {
|
||||||
return CollisionMap.method3631(var9, var2) - CollisionMap.method3631(var14, var2);
|
return CollisionMap.method3631(var9, language) - CollisionMap.method3631(var14, language);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -168,7 +168,7 @@ public enum AttackOption implements Enumerated {
|
|||||||
var19 = Character.toLowerCase(var19);
|
var19 = Character.toLowerCase(var19);
|
||||||
var18 = Character.toLowerCase(var18);
|
var18 = Character.toLowerCase(var18);
|
||||||
if (var19 != var18) {
|
if (var19 != var18) {
|
||||||
return CollisionMap.method3631(var19, var2) - CollisionMap.method3631(var18, var2);
|
return CollisionMap.method3631(var19, language) - CollisionMap.method3631(var18, language);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -181,7 +181,7 @@ public enum AttackOption implements Enumerated {
|
|||||||
var18 = var0.charAt(var20);
|
var18 = var0.charAt(var20);
|
||||||
char var13 = var1.charAt(var20);
|
char var13 = var1.charAt(var20);
|
||||||
if (var18 != var13) {
|
if (var18 != var13) {
|
||||||
return CollisionMap.method3631(var18, var2) - CollisionMap.method3631(var13, var2);
|
return CollisionMap.method3631(var18, language) - CollisionMap.method3631(var13, language);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -60,35 +60,35 @@ public class AudioFilter {
|
|||||||
field32[var1][0] = -2.0F * var3 * (float)Math.cos((double)this.method25(var1, 0, var2));
|
field32[var1][0] = -2.0F * var3 * (float)Math.cos((double)this.method25(var1, 0, var2));
|
||||||
field32[var1][1] = var3 * var3;
|
field32[var1][1] = var3 * var3;
|
||||||
|
|
||||||
float[] var10000;
|
float[] var4;
|
||||||
int var4;
|
int var5;
|
||||||
for (var4 = 1; var4 < this.field36[var1]; ++var4) {
|
for (var5 = 1; var5 < this.field36[var1]; ++var5) {
|
||||||
var3 = this.method24(var1, var4, var2);
|
var3 = this.method24(var1, var5, var2);
|
||||||
float var5 = -2.0F * var3 * (float)Math.cos((double)this.method25(var1, var4, var2));
|
float var6 = -2.0F * var3 * (float)Math.cos((double)this.method25(var1, var5, var2));
|
||||||
float var6 = var3 * var3;
|
float var7 = var3 * var3;
|
||||||
field32[var1][var4 * 2 + 1] = field32[var1][var4 * 2 - 1] * var6;
|
field32[var1][var5 * 2 + 1] = field32[var1][var5 * 2 - 1] * var7;
|
||||||
field32[var1][var4 * 2] = field32[var1][var4 * 2 - 1] * var5 + field32[var1][var4 * 2 - 2] * var6;
|
field32[var1][var5 * 2] = field32[var1][var5 * 2 - 1] * var6 + field32[var1][var5 * 2 - 2] * var7;
|
||||||
|
|
||||||
for (int var7 = var4 * 2 - 1; var7 >= 2; --var7) {
|
for (int var8 = var5 * 2 - 1; var8 >= 2; --var8) {
|
||||||
var10000 = field32[var1];
|
var4 = field32[var1];
|
||||||
var10000[var7] += field32[var1][var7 - 1] * var5 + field32[var1][var7 - 2] * var6;
|
var4[var8] += field32[var1][var8 - 1] * var6 + field32[var1][var8 - 2] * var7;
|
||||||
}
|
}
|
||||||
|
|
||||||
var10000 = field32[var1];
|
var4 = field32[var1];
|
||||||
var10000[1] += field32[var1][0] * var5 + var6;
|
var4[1] += field32[var1][0] * var6 + var7;
|
||||||
var10000 = field32[var1];
|
var4 = field32[var1];
|
||||||
var10000[0] += var5;
|
var4[0] += var6;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var1 == 0) {
|
if (var1 == 0) {
|
||||||
for (var4 = 0; var4 < this.field36[0] * 2; ++var4) {
|
for (var5 = 0; var5 < this.field36[0] * 2; ++var5) {
|
||||||
var10000 = field32[0];
|
var4 = field32[0];
|
||||||
var10000[var4] *= field34;
|
var4[var5] *= field34;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var4 = 0; var4 < this.field36[var1] * 2; ++var4) {
|
for (var5 = 0; var5 < this.field36[var1] * 2; ++var5) {
|
||||||
field33[var1][var4] = (int)(field32[var1][var4] * 65536.0F);
|
field33[var1][var5] = (int)(field32[var1][var5] * 65536.0F);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.field36[var1] * 2;
|
return this.field36[var1] * 2;
|
||||||
|
|||||||
@@ -83,9 +83,9 @@ public final class BoundaryObject {
|
|||||||
ReflectionCheck.clientPreferences.roofsHidden = !ReflectionCheck.clientPreferences.roofsHidden;
|
ReflectionCheck.clientPreferences.roofsHidden = !ReflectionCheck.clientPreferences.roofsHidden;
|
||||||
WorldMapSection0.savePreferences();
|
WorldMapSection0.savePreferences();
|
||||||
if (ReflectionCheck.clientPreferences.roofsHidden) {
|
if (ReflectionCheck.clientPreferences.roofsHidden) {
|
||||||
WorldMapIcon1.method219(99, "", "Roofs are now all hidden");
|
WorldMapIcon1.addGameMessage(99, "", "Roofs are now all hidden");
|
||||||
} else {
|
} else {
|
||||||
WorldMapIcon1.method219(99, "", "Roofs will only be removed selectively");
|
WorldMapIcon1.addGameMessage(99, "", "Roofs will only be removed selectively");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ public final class BoundaryObject {
|
|||||||
Client.showMouseOverText = !Client.showMouseOverText;
|
Client.showMouseOverText = !Client.showMouseOverText;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Client.rights >= 2) {
|
if (Client.staffModLevel >= 2) {
|
||||||
if (var0.equalsIgnoreCase("errortest")) {
|
if (var0.equalsIgnoreCase("errortest")) {
|
||||||
throw new RuntimeException();
|
throw new RuntimeException();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,8 +130,7 @@ public class Bounds {
|
|||||||
return this.field42 + this.field44;
|
return this.field42 + this.field44;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("toString")
|
public String toString() {
|
||||||
public String method35() {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ public class Buddy extends User {
|
|||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = 429472919
|
intValue = 429472919
|
||||||
)
|
)
|
||||||
@Export("world0")
|
@Export("world")
|
||||||
public int world0;
|
public int world;
|
||||||
@ObfuscatedName("u")
|
@ObfuscatedName("u")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = 120689297
|
intValue = 120689297
|
||||||
@@ -27,7 +27,7 @@ public class Buddy extends User {
|
|||||||
public int rank;
|
public int rank;
|
||||||
|
|
||||||
Buddy() {
|
Buddy() {
|
||||||
this.world0 = -1;
|
this.world = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("an")
|
@ObfuscatedName("an")
|
||||||
@@ -37,7 +37,7 @@ public class Buddy extends User {
|
|||||||
)
|
)
|
||||||
@Export("set")
|
@Export("set")
|
||||||
void set(int var1, int var2) {
|
void set(int var1, int var2) {
|
||||||
this.world0 = var1;
|
this.world = var1;
|
||||||
this.int2 = var2;
|
this.int2 = var2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,9 +46,9 @@ public class Buddy extends User {
|
|||||||
signature = "(B)I",
|
signature = "(B)I",
|
||||||
garbageValue = "0"
|
garbageValue = "0"
|
||||||
)
|
)
|
||||||
@Export("world")
|
@Export("getWorld")
|
||||||
public int world() {
|
public int getWorld() {
|
||||||
return this.world0;
|
return this.world;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("au")
|
@ObfuscatedName("au")
|
||||||
@@ -58,7 +58,7 @@ public class Buddy extends User {
|
|||||||
)
|
)
|
||||||
@Export("hasWorld")
|
@Export("hasWorld")
|
||||||
public boolean hasWorld() {
|
public boolean hasWorld() {
|
||||||
return this.world0 > 0;
|
return this.world > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("ff")
|
@ObfuscatedName("ff")
|
||||||
|
|||||||
+12
-7
@@ -1,19 +1,23 @@
|
|||||||
|
import net.runelite.mapping.Export;
|
||||||
|
import net.runelite.mapping.Implements;
|
||||||
import net.runelite.mapping.ObfuscatedGetter;
|
import net.runelite.mapping.ObfuscatedGetter;
|
||||||
import net.runelite.mapping.ObfuscatedName;
|
import net.runelite.mapping.ObfuscatedName;
|
||||||
import net.runelite.mapping.ObfuscatedSignature;
|
import net.runelite.mapping.ObfuscatedSignature;
|
||||||
|
|
||||||
@ObfuscatedName("fw")
|
@ObfuscatedName("fw")
|
||||||
public class class157 extends AbstractUserComparator {
|
@Implements("BuddyRankComparator")
|
||||||
|
public class BuddyRankComparator extends AbstractUserComparator {
|
||||||
@ObfuscatedName("nm")
|
@ObfuscatedName("nm")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = 1006519291
|
intValue = 1006519291
|
||||||
)
|
)
|
||||||
static int field1114;
|
static int field1114;
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
final boolean field1969;
|
@Export("reversed")
|
||||||
|
final boolean reversed;
|
||||||
|
|
||||||
public class157(boolean var1) {
|
public BuddyRankComparator(boolean var1) {
|
||||||
this.field1969 = var1;
|
this.reversed = var1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
@@ -21,12 +25,13 @@ public class class157 extends AbstractUserComparator {
|
|||||||
signature = "(Lke;Lke;I)I",
|
signature = "(Lke;Lke;I)I",
|
||||||
garbageValue = "884616259"
|
garbageValue = "884616259"
|
||||||
)
|
)
|
||||||
int method3381(Buddy var1, Buddy var2) {
|
@Export("compareBuddy")
|
||||||
return var2.rank != var1.rank ? (this.field1969 ? var1.rank - var2.rank : var2.rank - var1.rank) : this.method12(var1, var2);
|
int compareBuddy(Buddy var1, Buddy var2) {
|
||||||
|
return var2.rank != var1.rank ? (this.reversed ? var1.rank - var2.rank : var2.rank - var1.rank) : this.compareUser(var1, var2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int compare(Object var1, Object var2) {
|
public int compare(Object var1, Object var2) {
|
||||||
return this.method3381((Buddy)var1, (Buddy)var2);
|
return this.compareBuddy((Buddy)var1, (Buddy)var2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("s")
|
@ObfuscatedName("s")
|
||||||
@@ -51,8 +51,8 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "-654332799"
|
garbageValue = "-654332799"
|
||||||
)
|
)
|
||||||
@Export("writeByte")
|
@Export("writeByte")
|
||||||
public void writeByte(int var1) {
|
public void writeByte(int value) {
|
||||||
this.array[++this.index - 1] = (byte)var1;
|
this.array[++this.index - 1] = (byte)value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("w")
|
@ObfuscatedName("w")
|
||||||
@@ -61,9 +61,9 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "0"
|
garbageValue = "0"
|
||||||
)
|
)
|
||||||
@Export("writeShort")
|
@Export("writeShort")
|
||||||
public void writeShort(int var1) {
|
public void writeShort(int value) {
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 8);
|
this.array[++this.index - 1] = (byte)(value >> 8);
|
||||||
this.array[++this.index - 1] = (byte)var1;
|
this.array[++this.index - 1] = (byte)value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("o")
|
@ObfuscatedName("o")
|
||||||
@@ -72,10 +72,10 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "-26"
|
garbageValue = "-26"
|
||||||
)
|
)
|
||||||
@Export("writeMedium")
|
@Export("writeMedium")
|
||||||
public void writeMedium(int var1) {
|
public void writeMedium(int value) {
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 16);
|
this.array[++this.index - 1] = (byte)(value >> 16);
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 8);
|
this.array[++this.index - 1] = (byte)(value >> 8);
|
||||||
this.array[++this.index - 1] = (byte)var1;
|
this.array[++this.index - 1] = (byte)value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("u")
|
@ObfuscatedName("u")
|
||||||
@@ -84,11 +84,11 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "-106996411"
|
garbageValue = "-106996411"
|
||||||
)
|
)
|
||||||
@Export("writeInt")
|
@Export("writeInt")
|
||||||
public void writeInt(int var1) {
|
public void writeInt(int value) {
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 24);
|
this.array[++this.index - 1] = (byte)(value >> 24);
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 16);
|
this.array[++this.index - 1] = (byte)(value >> 16);
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 8);
|
this.array[++this.index - 1] = (byte)(value >> 8);
|
||||||
this.array[++this.index - 1] = (byte)var1;
|
this.array[++this.index - 1] = (byte)value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("g")
|
@ObfuscatedName("g")
|
||||||
@@ -121,8 +121,8 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "-125"
|
garbageValue = "-125"
|
||||||
)
|
)
|
||||||
@Export("writeBoolean")
|
@Export("writeBoolean")
|
||||||
public void writeBoolean(boolean var1) {
|
public void writeBoolean(boolean value) {
|
||||||
this.writeByte(var1 ? 1 : 0);
|
this.writeByte(value ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("d")
|
@ObfuscatedName("d")
|
||||||
@@ -131,12 +131,12 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "-9"
|
garbageValue = "-9"
|
||||||
)
|
)
|
||||||
@Export("writeStringCp1252NullTerminated")
|
@Export("writeStringCp1252NullTerminated")
|
||||||
public void writeStringCp1252NullTerminated(String var1) {
|
public void writeStringCp1252NullTerminated(String string) {
|
||||||
int var2 = var1.indexOf(0);
|
int var2 = string.indexOf(0);
|
||||||
if (var2 >= 0) {
|
if (var2 >= 0) {
|
||||||
throw new IllegalArgumentException("");
|
throw new IllegalArgumentException("");
|
||||||
} else {
|
} else {
|
||||||
this.index += SoundCache.encodeStringCp1252(var1, 0, var1.length(), this.array, this.index);
|
this.index += SoundCache.encodeStringCp1252(string, 0, string.length(), this.array, this.index);
|
||||||
this.array[++this.index - 1] = 0;
|
this.array[++this.index - 1] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -147,13 +147,13 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "22356"
|
garbageValue = "22356"
|
||||||
)
|
)
|
||||||
@Export("writeStringCp1252NullCircumfixed")
|
@Export("writeStringCp1252NullCircumfixed")
|
||||||
public void writeStringCp1252NullCircumfixed(String var1) {
|
public void writeStringCp1252NullCircumfixed(String string) {
|
||||||
int var2 = var1.indexOf(0);
|
int var2 = string.indexOf(0);
|
||||||
if (var2 >= 0) {
|
if (var2 >= 0) {
|
||||||
throw new IllegalArgumentException("");
|
throw new IllegalArgumentException("");
|
||||||
} else {
|
} else {
|
||||||
this.array[++this.index - 1] = 0;
|
this.array[++this.index - 1] = 0;
|
||||||
this.index += SoundCache.encodeStringCp1252(var1, 0, var1.length(), this.array, this.index);
|
this.index += SoundCache.encodeStringCp1252(string, 0, string.length(), this.array, this.index);
|
||||||
this.array[++this.index - 1] = 0;
|
this.array[++this.index - 1] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -232,15 +232,15 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "1324532803"
|
garbageValue = "1324532803"
|
||||||
)
|
)
|
||||||
@Export("writeSmartByteShort")
|
@Export("writeSmartByteShort")
|
||||||
public void writeSmartByteShort(int var1) {
|
public void writeSmartByteShort(int value) {
|
||||||
if (var1 >= 0 && var1 < 128) {
|
if (value >= 0 && value < 128) {
|
||||||
this.writeByte(var1);
|
this.writeByte(value);
|
||||||
} else {
|
} else {
|
||||||
if (var1 < 0 || var1 >= 32768) {
|
if (value < 0 || value >= 32768) {
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.writeShort(var1 + 32768);
|
this.writeShort(value + 32768);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -388,7 +388,7 @@ public class Buffer extends Node {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int var2 = this.index - var1 - 1;
|
int var2 = this.index - var1 - 1;
|
||||||
return var2 == 0 ? "" : WidgetGroupParent.decodeStringCp1252(this.array, var1, var2);
|
return var2 == 0 ? "" : InterfaceParent.decodeStringCp1252(this.array, var1, var2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("ak")
|
@ObfuscatedName("ak")
|
||||||
@@ -408,7 +408,7 @@ public class Buffer extends Node {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int var3 = this.index - var2 - 1;
|
int var3 = this.index - var2 - 1;
|
||||||
return var3 == 0 ? "" : WidgetGroupParent.decodeStringCp1252(this.array, var2, var3);
|
return var3 == 0 ? "" : InterfaceParent.decodeStringCp1252(this.array, var2, var3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -578,7 +578,7 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "36"
|
garbageValue = "36"
|
||||||
)
|
)
|
||||||
@Export("xteaEncryptAll")
|
@Export("xteaEncryptAll")
|
||||||
public void xteaEncryptAll(int[] var1) {
|
public void xteaEncryptAll(int[] xteaKey) {
|
||||||
int var2 = this.index / 8;
|
int var2 = this.index / 8;
|
||||||
this.index = 0;
|
this.index = 0;
|
||||||
|
|
||||||
@@ -588,8 +588,8 @@ public class Buffer extends Node {
|
|||||||
int var6 = 0;
|
int var6 = 0;
|
||||||
int var7 = -1640531527;
|
int var7 = -1640531527;
|
||||||
|
|
||||||
for (int var8 = 32; var8-- > 0; var5 += var4 + (var4 << 4 ^ var4 >>> 5) ^ var1[var6 >>> 11 & 3] + var6) {
|
for (int var8 = 32; var8-- > 0; var5 += var4 + (var4 << 4 ^ var4 >>> 5) ^ xteaKey[var6 >>> 11 & 3] + var6) {
|
||||||
var4 += var5 + (var5 << 4 ^ var5 >>> 5) ^ var6 + var1[var6 & 3];
|
var4 += var5 + (var5 << 4 ^ var5 >>> 5) ^ var6 + xteaKey[var6 & 3];
|
||||||
var6 += var7;
|
var6 += var7;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -606,7 +606,7 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "1682045100"
|
garbageValue = "1682045100"
|
||||||
)
|
)
|
||||||
@Export("xteaDecryptAll")
|
@Export("xteaDecryptAll")
|
||||||
public void xteaDecryptAll(int[] var1) {
|
public void xteaDecryptAll(int[] xteaKey) {
|
||||||
int var2 = this.index / 8;
|
int var2 = this.index / 8;
|
||||||
this.index = 0;
|
this.index = 0;
|
||||||
|
|
||||||
@@ -616,8 +616,8 @@ public class Buffer extends Node {
|
|||||||
int var6 = -957401312;
|
int var6 = -957401312;
|
||||||
int var7 = -1640531527;
|
int var7 = -1640531527;
|
||||||
|
|
||||||
for (int var8 = 32; var8-- > 0; var4 -= var5 + (var5 << 4 ^ var5 >>> 5) ^ var6 + var1[var6 & 3]) {
|
for (int var8 = 32; var8-- > 0; var4 -= var5 + (var5 << 4 ^ var5 >>> 5) ^ var6 + xteaKey[var6 & 3]) {
|
||||||
var5 -= var4 + (var4 << 4 ^ var4 >>> 5) ^ var1[var6 >>> 11 & 3] + var6;
|
var5 -= var4 + (var4 << 4 ^ var4 >>> 5) ^ xteaKey[var6 >>> 11 & 3] + var6;
|
||||||
var6 -= var7;
|
var6 -= var7;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -634,10 +634,10 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "-1341435074"
|
garbageValue = "-1341435074"
|
||||||
)
|
)
|
||||||
@Export("xteaEncrypt")
|
@Export("xteaEncrypt")
|
||||||
public void xteaEncrypt(int[] var1, int var2, int var3) {
|
public void xteaEncrypt(int[] xteaKey, int start, int end) {
|
||||||
int var4 = this.index;
|
int var4 = this.index;
|
||||||
this.index = var2;
|
this.index = start;
|
||||||
int var5 = (var3 - var2) / 8;
|
int var5 = (end - start) / 8;
|
||||||
|
|
||||||
for (int var6 = 0; var6 < var5; ++var6) {
|
for (int var6 = 0; var6 < var5; ++var6) {
|
||||||
int var7 = this.readInt();
|
int var7 = this.readInt();
|
||||||
@@ -645,8 +645,8 @@ public class Buffer extends Node {
|
|||||||
int var9 = 0;
|
int var9 = 0;
|
||||||
int var10 = -1640531527;
|
int var10 = -1640531527;
|
||||||
|
|
||||||
for (int var11 = 32; var11-- > 0; var8 += var7 + (var7 << 4 ^ var7 >>> 5) ^ var1[var9 >>> 11 & 3] + var9) {
|
for (int var11 = 32; var11-- > 0; var8 += var7 + (var7 << 4 ^ var7 >>> 5) ^ xteaKey[var9 >>> 11 & 3] + var9) {
|
||||||
var7 += var8 + (var8 << 4 ^ var8 >>> 5) ^ var9 + var1[var9 & 3];
|
var7 += var8 + (var8 << 4 ^ var8 >>> 5) ^ var9 + xteaKey[var9 & 3];
|
||||||
var9 += var10;
|
var9 += var10;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -664,10 +664,10 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "307218624"
|
garbageValue = "307218624"
|
||||||
)
|
)
|
||||||
@Export("xteaDecrypt")
|
@Export("xteaDecrypt")
|
||||||
public void xteaDecrypt(int[] var1, int var2, int var3) {
|
public void xteaDecrypt(int[] xteaKey, int start, int end) {
|
||||||
int var4 = this.index;
|
int var4 = this.index;
|
||||||
this.index = var2;
|
this.index = start;
|
||||||
int var5 = (var3 - var2) / 8;
|
int var5 = (end - start) / 8;
|
||||||
|
|
||||||
for (int var6 = 0; var6 < var5; ++var6) {
|
for (int var6 = 0; var6 < var5; ++var6) {
|
||||||
int var7 = this.readInt();
|
int var7 = this.readInt();
|
||||||
@@ -675,8 +675,8 @@ public class Buffer extends Node {
|
|||||||
int var9 = -957401312;
|
int var9 = -957401312;
|
||||||
int var10 = -1640531527;
|
int var10 = -1640531527;
|
||||||
|
|
||||||
for (int var11 = 32; var11-- > 0; var7 -= var8 + (var8 << 4 ^ var8 >>> 5) ^ var9 + var1[var9 & 3]) {
|
for (int var11 = 32; var11-- > 0; var7 -= var8 + (var8 << 4 ^ var8 >>> 5) ^ var9 + xteaKey[var9 & 3]) {
|
||||||
var8 -= var7 + (var7 << 4 ^ var7 >>> 5) ^ var1[var9 >>> 11 & 3] + var9;
|
var8 -= var7 + (var7 << 4 ^ var7 >>> 5) ^ xteaKey[var9 >>> 11 & 3] + var9;
|
||||||
var9 -= var10;
|
var9 -= var10;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -835,9 +835,9 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "51"
|
garbageValue = "51"
|
||||||
)
|
)
|
||||||
@Export("writeShortLE")
|
@Export("writeShortLE")
|
||||||
public void writeShortLE(int var1) {
|
public void writeShortLE(int value) {
|
||||||
this.array[++this.index - 1] = (byte)var1;
|
this.array[++this.index - 1] = (byte)value;
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 8);
|
this.array[++this.index - 1] = (byte)(value >> 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("bo")
|
@ObfuscatedName("bo")
|
||||||
@@ -936,11 +936,11 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "78"
|
garbageValue = "78"
|
||||||
)
|
)
|
||||||
@Export("writeIntLE")
|
@Export("writeIntLE")
|
||||||
public void writeIntLE(int var1) {
|
public void writeIntLE(int value) {
|
||||||
this.array[++this.index - 1] = (byte)var1;
|
this.array[++this.index - 1] = (byte)value;
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 8);
|
this.array[++this.index - 1] = (byte)(value >> 8);
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 16);
|
this.array[++this.index - 1] = (byte)(value >> 16);
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 24);
|
this.array[++this.index - 1] = (byte)(value >> 24);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("bz")
|
@ObfuscatedName("bz")
|
||||||
@@ -949,11 +949,11 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "80"
|
garbageValue = "80"
|
||||||
)
|
)
|
||||||
@Export("writeIntME")
|
@Export("writeIntME")
|
||||||
public void writeIntME(int var1) {
|
public void writeIntME(int value) {
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 8);
|
this.array[++this.index - 1] = (byte)(value >> 8);
|
||||||
this.array[++this.index - 1] = (byte)var1;
|
this.array[++this.index - 1] = (byte)value;
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 24);
|
this.array[++this.index - 1] = (byte)(value >> 24);
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 16);
|
this.array[++this.index - 1] = (byte)(value >> 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("bg")
|
@ObfuscatedName("bg")
|
||||||
@@ -962,11 +962,11 @@ public class Buffer extends Node {
|
|||||||
garbageValue = "2115295559"
|
garbageValue = "2115295559"
|
||||||
)
|
)
|
||||||
@Export("writeIntLE16")
|
@Export("writeIntLE16")
|
||||||
public void writeIntLE16(int var1) {
|
public void writeIntLE16(int value) {
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 16);
|
this.array[++this.index - 1] = (byte)(value >> 16);
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 24);
|
this.array[++this.index - 1] = (byte)(value >> 24);
|
||||||
this.array[++this.index - 1] = (byte)var1;
|
this.array[++this.index - 1] = (byte)value;
|
||||||
this.array[++this.index - 1] = (byte)(var1 >> 8);
|
this.array[++this.index - 1] = (byte)(value >> 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("bt")
|
@ObfuscatedName("bt")
|
||||||
|
|||||||
@@ -91,11 +91,11 @@ public class BufferedFile {
|
|||||||
|
|
||||||
@ObfuscatedName("f")
|
@ObfuscatedName("f")
|
||||||
@Export("seek")
|
@Export("seek")
|
||||||
public void seek(long var1) throws IOException {
|
public void seek(long index) throws IOException {
|
||||||
if (var1 < 0L) {
|
if (index < 0L) {
|
||||||
throw new IOException("");
|
throw new IOException("");
|
||||||
} else {
|
} else {
|
||||||
this.field51 = var1;
|
this.field51 = index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,8 +115,8 @@ public class BufferedFile {
|
|||||||
garbageValue = "617965847"
|
garbageValue = "617965847"
|
||||||
)
|
)
|
||||||
@Export("readFill")
|
@Export("readFill")
|
||||||
public void readFill(byte[] var1) throws IOException {
|
public void readFill(byte[] dst) throws IOException {
|
||||||
this.read(var1, 0, var1.length);
|
this.read(dst, 0, dst.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("o")
|
@ObfuscatedName("o")
|
||||||
@@ -125,69 +125,69 @@ public class BufferedFile {
|
|||||||
garbageValue = "-35"
|
garbageValue = "-35"
|
||||||
)
|
)
|
||||||
@Export("read")
|
@Export("read")
|
||||||
public void read(byte[] var1, int var2, int var3) throws IOException {
|
public void read(byte[] dst, int dstIndex, int length) throws IOException {
|
||||||
try {
|
try {
|
||||||
if (var3 + var2 > var1.length) {
|
if (length + dstIndex > dst.length) {
|
||||||
throw new ArrayIndexOutOfBoundsException(var3 + var2 - var1.length);
|
throw new ArrayIndexOutOfBoundsException(length + dstIndex - dst.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-1L != this.field49 && this.field51 >= this.field49 && this.field51 + (long)var3 <= this.field49 + (long)this.field50) {
|
if (-1L != this.field49 && this.field51 >= this.field49 && this.field51 + (long)length <= this.field49 + (long)this.field50) {
|
||||||
System.arraycopy(this.writeBuffer, (int)(this.field51 - this.field49), var1, var2, var3);
|
System.arraycopy(this.writeBuffer, (int)(this.field51 - this.field49), dst, dstIndex, length);
|
||||||
this.field51 += (long)var3;
|
this.field51 += (long)length;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
long var4 = this.field51;
|
long var4 = this.field51;
|
||||||
int var6 = var3;
|
int var6 = length;
|
||||||
int var7;
|
int var7;
|
||||||
if (this.field51 >= this.field47 && this.field51 < this.field47 + (long)this.field48) {
|
if (this.field51 >= this.field47 && this.field51 < this.field47 + (long)this.field48) {
|
||||||
var7 = (int)((long)this.field48 - (this.field51 - this.field47));
|
var7 = (int)((long)this.field48 - (this.field51 - this.field47));
|
||||||
if (var7 > var3) {
|
if (var7 > length) {
|
||||||
var7 = var3;
|
var7 = length;
|
||||||
}
|
}
|
||||||
|
|
||||||
System.arraycopy(this.readBuffer, (int)(this.field51 - this.field47), var1, var2, var7);
|
System.arraycopy(this.readBuffer, (int)(this.field51 - this.field47), dst, dstIndex, var7);
|
||||||
this.field51 += (long)var7;
|
this.field51 += (long)var7;
|
||||||
var2 += var7;
|
dstIndex += var7;
|
||||||
var3 -= var7;
|
length -= var7;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var3 > this.readBuffer.length) {
|
if (length > this.readBuffer.length) {
|
||||||
this.accessFile.seek(this.field51);
|
this.accessFile.seek(this.field51);
|
||||||
|
|
||||||
for (this.field53 = this.field51; var3 > 0; var3 -= var7) {
|
for (this.field53 = this.field51; length > 0; length -= var7) {
|
||||||
var7 = this.accessFile.read(var1, var2, var3);
|
var7 = this.accessFile.read(dst, dstIndex, length);
|
||||||
if (var7 == -1) {
|
if (var7 == -1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.field53 += (long)var7;
|
this.field53 += (long)var7;
|
||||||
this.field51 += (long)var7;
|
this.field51 += (long)var7;
|
||||||
var2 += var7;
|
dstIndex += var7;
|
||||||
}
|
}
|
||||||
} else if (var3 > 0) {
|
} else if (length > 0) {
|
||||||
this.load();
|
this.load();
|
||||||
var7 = var3;
|
var7 = length;
|
||||||
if (var3 > this.field48) {
|
if (length > this.field48) {
|
||||||
var7 = this.field48;
|
var7 = this.field48;
|
||||||
}
|
}
|
||||||
|
|
||||||
System.arraycopy(this.readBuffer, 0, var1, var2, var7);
|
System.arraycopy(this.readBuffer, 0, dst, dstIndex, var7);
|
||||||
var2 += var7;
|
dstIndex += var7;
|
||||||
var3 -= var7;
|
length -= var7;
|
||||||
this.field51 += (long)var7;
|
this.field51 += (long)var7;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-1L != this.field49) {
|
if (-1L != this.field49) {
|
||||||
if (this.field49 > this.field51 && var3 > 0) {
|
if (this.field49 > this.field51 && length > 0) {
|
||||||
var7 = var2 + (int)(this.field49 - this.field51);
|
var7 = dstIndex + (int)(this.field49 - this.field51);
|
||||||
if (var7 > var3 + var2) {
|
if (var7 > length + dstIndex) {
|
||||||
var7 = var3 + var2;
|
var7 = length + dstIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (var2 < var7) {
|
while (dstIndex < var7) {
|
||||||
var1[var2++] = 0;
|
dst[dstIndex++] = 0;
|
||||||
--var3;
|
--length;
|
||||||
++this.field51;
|
++this.field51;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -208,9 +208,9 @@ public class BufferedFile {
|
|||||||
|
|
||||||
if (var8 > -1L && var10 > var8) {
|
if (var8 > -1L && var10 > var8) {
|
||||||
int var12 = (int)(var10 - var8);
|
int var12 = (int)(var10 - var8);
|
||||||
System.arraycopy(this.writeBuffer, (int)(var8 - this.field49), var1, (int)(var8 - var4) + var2, var12);
|
System.arraycopy(this.writeBuffer, (int)(var8 - this.field49), dst, (int)(var8 - var4) + dstIndex, var12);
|
||||||
if (var10 > this.field51) {
|
if (var10 > this.field51) {
|
||||||
var3 = (int)((long)var3 - (var10 - this.field51));
|
length = (int)((long)length - (var10 - this.field51));
|
||||||
this.field51 = var10;
|
this.field51 = var10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -220,7 +220,7 @@ public class BufferedFile {
|
|||||||
throw var13;
|
throw var13;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var3 > 0) {
|
if (length > 0) {
|
||||||
throw new EOFException();
|
throw new EOFException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -256,34 +256,34 @@ public class BufferedFile {
|
|||||||
garbageValue = "-601174169"
|
garbageValue = "-601174169"
|
||||||
)
|
)
|
||||||
@Export("write")
|
@Export("write")
|
||||||
public void write(byte[] var1, int var2, int var3) throws IOException {
|
public void write(byte[] src, int srcIndex, int length) throws IOException {
|
||||||
try {
|
try {
|
||||||
if (this.field51 + (long)var3 > this.capacity) {
|
if (this.field51 + (long)length > this.capacity) {
|
||||||
this.capacity = this.field51 + (long)var3;
|
this.capacity = this.field51 + (long)length;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-1L != this.field49 && (this.field51 < this.field49 || this.field51 > this.field49 + (long)this.field50)) {
|
if (-1L != this.field49 && (this.field51 < this.field49 || this.field51 > this.field49 + (long)this.field50)) {
|
||||||
this.flush();
|
this.flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.field49 != -1L && (long)var3 + this.field51 > this.field49 + (long)this.writeBuffer.length) {
|
if (this.field49 != -1L && (long)length + this.field51 > this.field49 + (long)this.writeBuffer.length) {
|
||||||
int var4 = (int)((long)this.writeBuffer.length - (this.field51 - this.field49));
|
int var4 = (int)((long)this.writeBuffer.length - (this.field51 - this.field49));
|
||||||
System.arraycopy(var1, var2, this.writeBuffer, (int)(this.field51 - this.field49), var4);
|
System.arraycopy(src, srcIndex, this.writeBuffer, (int)(this.field51 - this.field49), var4);
|
||||||
this.field51 += (long)var4;
|
this.field51 += (long)var4;
|
||||||
var2 += var4;
|
srcIndex += var4;
|
||||||
var3 -= var4;
|
length -= var4;
|
||||||
this.field50 = this.writeBuffer.length;
|
this.field50 = this.writeBuffer.length;
|
||||||
this.flush();
|
this.flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var3 <= this.writeBuffer.length) {
|
if (length <= this.writeBuffer.length) {
|
||||||
if (var3 > 0) {
|
if (length > 0) {
|
||||||
if (this.field49 == -1L) {
|
if (this.field49 == -1L) {
|
||||||
this.field49 = this.field51;
|
this.field49 = this.field51;
|
||||||
}
|
}
|
||||||
|
|
||||||
System.arraycopy(var1, var2, this.writeBuffer, (int)(this.field51 - this.field49), var3);
|
System.arraycopy(src, srcIndex, this.writeBuffer, (int)(this.field51 - this.field49), length);
|
||||||
this.field51 += (long)var3;
|
this.field51 += (long)length;
|
||||||
if (this.field51 - this.field49 > (long)this.field50) {
|
if (this.field51 - this.field49 > (long)this.field50) {
|
||||||
this.field50 = (int)(this.field51 - this.field49);
|
this.field50 = (int)(this.field51 - this.field49);
|
||||||
}
|
}
|
||||||
@@ -294,8 +294,8 @@ public class BufferedFile {
|
|||||||
this.field53 = this.field51;
|
this.field53 = this.field51;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.accessFile.write(var1, var2, var3);
|
this.accessFile.write(src, srcIndex, length);
|
||||||
this.field53 += (long)var3;
|
this.field53 += (long)length;
|
||||||
if (this.field53 > this.field52) {
|
if (this.field53 > this.field52) {
|
||||||
this.field52 = this.field53;
|
this.field52 = this.field53;
|
||||||
}
|
}
|
||||||
@@ -304,22 +304,22 @@ public class BufferedFile {
|
|||||||
long var6 = -1L;
|
long var6 = -1L;
|
||||||
if (this.field51 >= this.field47 && this.field51 < (long)this.field48 + this.field47) {
|
if (this.field51 >= this.field47 && this.field51 < (long)this.field48 + this.field47) {
|
||||||
var10 = this.field51;
|
var10 = this.field51;
|
||||||
} else if (this.field47 >= this.field51 && this.field47 < (long)var3 + this.field51) {
|
} else if (this.field47 >= this.field51 && this.field47 < (long)length + this.field51) {
|
||||||
var10 = this.field47;
|
var10 = this.field47;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.field51 + (long)var3 > this.field47 && (long)var3 + this.field51 <= (long)this.field48 + this.field47) {
|
if (this.field51 + (long)length > this.field47 && (long)length + this.field51 <= (long)this.field48 + this.field47) {
|
||||||
var6 = this.field51 + (long)var3;
|
var6 = this.field51 + (long)length;
|
||||||
} else if ((long)this.field48 + this.field47 > this.field51 && this.field47 + (long)this.field48 <= (long)var3 + this.field51) {
|
} else if ((long)this.field48 + this.field47 > this.field51 && this.field47 + (long)this.field48 <= (long)length + this.field51) {
|
||||||
var6 = (long)this.field48 + this.field47;
|
var6 = (long)this.field48 + this.field47;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var10 > -1L && var6 > var10) {
|
if (var10 > -1L && var6 > var10) {
|
||||||
int var8 = (int)(var6 - var10);
|
int var8 = (int)(var6 - var10);
|
||||||
System.arraycopy(var1, (int)(var10 + (long)var2 - this.field51), this.readBuffer, (int)(var10 - this.field47), var8);
|
System.arraycopy(src, (int)(var10 + (long)srcIndex - this.field51), this.readBuffer, (int)(var10 - this.field47), var8);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.field51 += (long)var3;
|
this.field51 += (long)length;
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (IOException var9) {
|
} catch (IOException var9) {
|
||||||
@@ -387,8 +387,8 @@ public class BufferedFile {
|
|||||||
garbageValue = "-792629541"
|
garbageValue = "-792629541"
|
||||||
)
|
)
|
||||||
@Export("colorStartTag")
|
@Export("colorStartTag")
|
||||||
static String colorStartTag(int var0) {
|
static String colorStartTag(int color) {
|
||||||
return "<col=" + Integer.toHexString(var0) + ">";
|
return "<col=" + Integer.toHexString(color) + ">";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("er")
|
@ObfuscatedName("er")
|
||||||
|
|||||||
@@ -40,8 +40,8 @@ public class BufferedNetSocket extends AbstractSocket {
|
|||||||
garbageValue = "1765046516"
|
garbageValue = "1765046516"
|
||||||
)
|
)
|
||||||
@Export("isAvailable")
|
@Export("isAvailable")
|
||||||
public boolean isAvailable(int var1) throws IOException {
|
public boolean isAvailable(int length) throws IOException {
|
||||||
return this.source.isAvailable(var1);
|
return this.source.isAvailable(length);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("q")
|
@ObfuscatedName("q")
|
||||||
@@ -70,8 +70,8 @@ public class BufferedNetSocket extends AbstractSocket {
|
|||||||
garbageValue = "-1089665746"
|
garbageValue = "-1089665746"
|
||||||
)
|
)
|
||||||
@Export("read")
|
@Export("read")
|
||||||
public int read(byte[] var1, int var2, int var3) throws IOException {
|
public int read(byte[] dst, int dstIndex, int length) throws IOException {
|
||||||
return this.source.read(var1, var2, var3);
|
return this.source.read(dst, dstIndex, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("u")
|
@ObfuscatedName("u")
|
||||||
@@ -80,8 +80,8 @@ public class BufferedNetSocket extends AbstractSocket {
|
|||||||
garbageValue = "-86"
|
garbageValue = "-86"
|
||||||
)
|
)
|
||||||
@Export("write")
|
@Export("write")
|
||||||
public void write(byte[] var1, int var2, int var3) throws IOException {
|
public void write(byte[] src, int srcIndex, int length) throws IOException {
|
||||||
this.sink.write(var1, var2, var3);
|
this.sink.write(src, srcIndex, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("g")
|
@ObfuscatedName("g")
|
||||||
|
|||||||
@@ -40,8 +40,8 @@ public class BufferedSink implements Runnable {
|
|||||||
@Export("exception")
|
@Export("exception")
|
||||||
IOException exception;
|
IOException exception;
|
||||||
@ObfuscatedName("l")
|
@ObfuscatedName("l")
|
||||||
@Export("isClosed0")
|
@Export("closed")
|
||||||
boolean isClosed0;
|
boolean closed;
|
||||||
|
|
||||||
BufferedSink(OutputStream var1, int var2) {
|
BufferedSink(OutputStream var1, int var2) {
|
||||||
this.position = 0;
|
this.position = 0;
|
||||||
@@ -61,7 +61,7 @@ public class BufferedSink implements Runnable {
|
|||||||
)
|
)
|
||||||
@Export("isClosed")
|
@Export("isClosed")
|
||||||
boolean isClosed() {
|
boolean isClosed() {
|
||||||
if (this.isClosed0) {
|
if (this.closed) {
|
||||||
try {
|
try {
|
||||||
this.outputStream.close();
|
this.outputStream.close();
|
||||||
if (this.exception == null) {
|
if (this.exception == null) {
|
||||||
@@ -85,8 +85,8 @@ public class BufferedSink implements Runnable {
|
|||||||
garbageValue = "0"
|
garbageValue = "0"
|
||||||
)
|
)
|
||||||
@Export("write")
|
@Export("write")
|
||||||
void write(byte[] var1, int var2, int var3) throws IOException {
|
void write(byte[] src, int srcIndex, int length) throws IOException {
|
||||||
if (var3 >= 0 && var2 >= 0 && var3 + var2 <= var1.length) {
|
if (length >= 0 && srcIndex >= 0 && length + srcIndex <= src.length) {
|
||||||
synchronized(this) {
|
synchronized(this) {
|
||||||
if (this.exception != null) {
|
if (this.exception != null) {
|
||||||
throw new IOException(this.exception.toString());
|
throw new IOException(this.exception.toString());
|
||||||
@@ -98,18 +98,18 @@ public class BufferedSink implements Runnable {
|
|||||||
var5 = this.position - this.limit - 1;
|
var5 = this.position - this.limit - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var5 < var3) {
|
if (var5 < length) {
|
||||||
throw new IOException("");
|
throw new IOException("");
|
||||||
} else {
|
} else {
|
||||||
if (var3 + this.limit <= this.capacity) {
|
if (length + this.limit <= this.capacity) {
|
||||||
System.arraycopy(var1, var2, this.buffer, this.limit, var3);
|
System.arraycopy(src, srcIndex, this.buffer, this.limit, length);
|
||||||
} else {
|
} else {
|
||||||
int var6 = this.capacity - this.limit;
|
int var6 = this.capacity - this.limit;
|
||||||
System.arraycopy(var1, var2, this.buffer, this.limit, var6);
|
System.arraycopy(src, srcIndex, this.buffer, this.limit, var6);
|
||||||
System.arraycopy(var1, var6 + var2, this.buffer, 0, var3 - var6);
|
System.arraycopy(src, var6 + srcIndex, this.buffer, 0, length - var6);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.limit = (var3 + this.limit) % this.capacity;
|
this.limit = (length + this.limit) % this.capacity;
|
||||||
this.notifyAll();
|
this.notifyAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -127,7 +127,7 @@ public class BufferedSink implements Runnable {
|
|||||||
@Export("close")
|
@Export("close")
|
||||||
void close() {
|
void close() {
|
||||||
synchronized(this) {
|
synchronized(this) {
|
||||||
this.isClosed0 = true;
|
this.closed = true;
|
||||||
this.notifyAll();
|
this.notifyAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,33 +138,33 @@ public class BufferedSink implements Runnable {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Export("run")
|
|
||||||
@ObfuscatedName("run")
|
|
||||||
public void run() {
|
public void run() {
|
||||||
while (true) {
|
while (true) {
|
||||||
synchronized(this){}
|
synchronized(this) {
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
boolean var13 = false;
|
boolean var1 = false;
|
||||||
|
|
||||||
int var1;
|
int var2;
|
||||||
try {
|
try {
|
||||||
var13 = true;
|
var1 = true;
|
||||||
if (this.exception != null) {
|
if (this.exception != null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.position <= this.limit) {
|
if (this.position <= this.limit) {
|
||||||
var1 = this.limit - this.position;
|
var2 = this.limit - this.position;
|
||||||
} else {
|
} else {
|
||||||
var1 = this.capacity - this.position + this.limit;
|
var2 = this.capacity - this.position + this.limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var1 <= 0) {
|
if (var2 <= 0) {
|
||||||
try {
|
try {
|
||||||
this.outputStream.flush();
|
this.outputStream.flush();
|
||||||
} catch (IOException var17) {
|
} catch (IOException var20) {
|
||||||
this.exception = var17;
|
this.exception = var20;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,31 +179,31 @@ public class BufferedSink implements Runnable {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var13 = false;
|
var1 = false;
|
||||||
} finally {
|
} finally {
|
||||||
if (var13) {
|
if (var1) {
|
||||||
;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (var1 + this.position <= this.capacity) {
|
if (var2 + this.position <= this.capacity) {
|
||||||
this.outputStream.write(this.buffer, this.position, var1);
|
|
||||||
} else {
|
|
||||||
int var2 = this.capacity - this.position;
|
|
||||||
this.outputStream.write(this.buffer, this.position, var2);
|
this.outputStream.write(this.buffer, this.position, var2);
|
||||||
this.outputStream.write(this.buffer, 0, var1 - var2);
|
} else {
|
||||||
|
int var3 = this.capacity - this.position;
|
||||||
|
this.outputStream.write(this.buffer, this.position, var3);
|
||||||
|
this.outputStream.write(this.buffer, 0, var2 - var3);
|
||||||
}
|
}
|
||||||
} catch (IOException var16) {
|
} catch (IOException var17) {
|
||||||
IOException var3 = var16;
|
IOException var4 = var17;
|
||||||
synchronized(this) {
|
synchronized(this) {
|
||||||
this.exception = var3;
|
this.exception = var4;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized(this) {
|
synchronized(this) {
|
||||||
this.position = (var1 + this.position) % this.capacity;
|
this.position = (var2 + this.position) % this.capacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.isClosed()) {
|
if (!this.isClosed()) {
|
||||||
@@ -221,13 +221,13 @@ public class BufferedSink implements Runnable {
|
|||||||
garbageValue = "449588720"
|
garbageValue = "449588720"
|
||||||
)
|
)
|
||||||
static void method3603() {
|
static void method3603() {
|
||||||
Tiles.field908 = (byte[][][])null;
|
Tiles.field908 = ((byte[][][])null);
|
||||||
Fonts.field350 = (byte[][][])null;
|
Fonts.field350 = ((byte[][][])null);
|
||||||
class32.field1157 = (byte[][][])null;
|
class32.field1157 = ((byte[][][])null);
|
||||||
class307.field1155 = (byte[][][])null;
|
class307.field1155 = ((byte[][][])null);
|
||||||
Tiles.field910 = (int[][][])null;
|
Tiles.field910 = ((int[][][])null);
|
||||||
Tiles.field909 = (byte[][][])null;
|
Tiles.field909 = ((byte[][][])null);
|
||||||
Huffman.field398 = (int[][])null;
|
Huffman.field398 = ((int[][])null);
|
||||||
class13.field1112 = null;
|
class13.field1112 = null;
|
||||||
Formatting.field353 = null;
|
Formatting.field353 = null;
|
||||||
class214.field1131 = null;
|
class214.field1131 = null;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ public class BufferedSource implements Runnable {
|
|||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "Lir;"
|
signature = "Lir;"
|
||||||
)
|
)
|
||||||
public static AbstractIndexCache field54;
|
public static AbstractArchive field54;
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
@Export("thread")
|
@Export("thread")
|
||||||
Thread thread;
|
Thread thread;
|
||||||
@@ -63,10 +63,10 @@ public class BufferedSource implements Runnable {
|
|||||||
garbageValue = "1727240458"
|
garbageValue = "1727240458"
|
||||||
)
|
)
|
||||||
@Export("isAvailable")
|
@Export("isAvailable")
|
||||||
boolean isAvailable(int var1) throws IOException {
|
boolean isAvailable(int length) throws IOException {
|
||||||
if (var1 == 0) {
|
if (length == 0) {
|
||||||
return true;
|
return true;
|
||||||
} else if (var1 > 0 && var1 < this.capacity) {
|
} else if (length > 0 && length < this.capacity) {
|
||||||
synchronized(this) {
|
synchronized(this) {
|
||||||
int var3;
|
int var3;
|
||||||
if (this.position <= this.limit) {
|
if (this.position <= this.limit) {
|
||||||
@@ -75,7 +75,7 @@ public class BufferedSource implements Runnable {
|
|||||||
var3 = this.capacity - this.position + this.limit;
|
var3 = this.capacity - this.position + this.limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var3 < var1) {
|
if (var3 < length) {
|
||||||
if (this.exception != null) {
|
if (this.exception != null) {
|
||||||
throw new IOException(this.exception.toString());
|
throw new IOException(this.exception.toString());
|
||||||
} else {
|
} else {
|
||||||
@@ -144,8 +144,8 @@ public class BufferedSource implements Runnable {
|
|||||||
garbageValue = "-37"
|
garbageValue = "-37"
|
||||||
)
|
)
|
||||||
@Export("read")
|
@Export("read")
|
||||||
int read(byte[] var1, int var2, int var3) throws IOException {
|
int read(byte[] dst, int dstIndex, int length) throws IOException {
|
||||||
if (var3 >= 0 && var2 >= 0 && var3 + var2 <= var1.length) {
|
if (length >= 0 && dstIndex >= 0 && length + dstIndex <= dst.length) {
|
||||||
synchronized(this) {
|
synchronized(this) {
|
||||||
int var5;
|
int var5;
|
||||||
if (this.position <= this.limit) {
|
if (this.position <= this.limit) {
|
||||||
@@ -154,24 +154,24 @@ public class BufferedSource implements Runnable {
|
|||||||
var5 = this.capacity - this.position + this.limit;
|
var5 = this.capacity - this.position + this.limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var3 > var5) {
|
if (length > var5) {
|
||||||
var3 = var5;
|
length = var5;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var3 == 0 && this.exception != null) {
|
if (length == 0 && this.exception != null) {
|
||||||
throw new IOException(this.exception.toString());
|
throw new IOException(this.exception.toString());
|
||||||
} else {
|
} else {
|
||||||
if (var3 + this.position <= this.capacity) {
|
if (length + this.position <= this.capacity) {
|
||||||
System.arraycopy(this.buffer, this.position, var1, var2, var3);
|
System.arraycopy(this.buffer, this.position, dst, dstIndex, length);
|
||||||
} else {
|
} else {
|
||||||
int var6 = this.capacity - this.position;
|
int var6 = this.capacity - this.position;
|
||||||
System.arraycopy(this.buffer, this.position, var1, var2, var6);
|
System.arraycopy(this.buffer, this.position, dst, dstIndex, var6);
|
||||||
System.arraycopy(this.buffer, 0, var1, var6 + var2, var3 - var6);
|
System.arraycopy(this.buffer, 0, dst, var6 + dstIndex, length - var6);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.position = (var3 + this.position) % this.capacity;
|
this.position = (length + this.position) % this.capacity;
|
||||||
this.notifyAll();
|
this.notifyAll();
|
||||||
return var3;
|
return length;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -201,8 +201,6 @@ public class BufferedSource implements Runnable {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Export("run")
|
|
||||||
@ObfuscatedName("run")
|
|
||||||
public void run() {
|
public void run() {
|
||||||
while (true) {
|
while (true) {
|
||||||
int var1;
|
int var1;
|
||||||
|
|||||||
@@ -40,8 +40,8 @@ public class ByteArrayPool {
|
|||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "Lit;"
|
signature = "Lit;"
|
||||||
)
|
)
|
||||||
@Export("indexCache13")
|
@Export("archive13")
|
||||||
static IndexCache indexCache13;
|
static Archive archive13;
|
||||||
|
|
||||||
@ObfuscatedName("f")
|
@ObfuscatedName("f")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
|
|||||||
@@ -292,49 +292,49 @@ public final class Bzip2Decompressor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int var33;
|
int var33;
|
||||||
int var50;
|
int var52;
|
||||||
for (var50 = 0; var50 < var28; ++var50) {
|
for (var33 = 0; var33 < var28; ++var33) {
|
||||||
var33 = method3708(5, var0);
|
var52 = method3708(5, var0);
|
||||||
|
|
||||||
for (var25 = 0; var25 < var27; ++var25) {
|
for (var25 = 0; var25 < var27; ++var25) {
|
||||||
while (true) {
|
while (true) {
|
||||||
var24 = method3711(var0);
|
var24 = method3711(var0);
|
||||||
if (var24 == 0) {
|
if (var24 == 0) {
|
||||||
var0.field88[var50][var25] = (byte)var33;
|
var0.field88[var33][var25] = (byte)var52;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
var24 = method3711(var0);
|
var24 = method3711(var0);
|
||||||
if (var24 == 0) {
|
if (var24 == 0) {
|
||||||
++var33;
|
++var52;
|
||||||
} else {
|
} else {
|
||||||
--var33;
|
--var52;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var50 = 0; var50 < var28; ++var50) {
|
for (var33 = 0; var33 < var28; ++var33) {
|
||||||
byte var51 = 32;
|
byte var34 = 32;
|
||||||
byte var34 = 0;
|
byte var35 = 0;
|
||||||
|
|
||||||
for (var25 = 0; var25 < var27; ++var25) {
|
for (var25 = 0; var25 < var27; ++var25) {
|
||||||
if (var0.field88[var50][var25] > var34) {
|
if (var0.field88[var33][var25] > var35) {
|
||||||
var34 = var0.field88[var50][var25];
|
var35 = var0.field88[var33][var25];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var0.field88[var50][var25] < var51) {
|
if (var0.field88[var33][var25] < var34) {
|
||||||
var51 = var0.field88[var50][var25];
|
var34 = var0.field88[var33][var25];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
method3706(var0.field89[var50], var0.field90[var50], var0.field91[var50], var0.field88[var50], var51, var34, var27);
|
method3706(var0.field89[var33], var0.field90[var33], var0.field91[var33], var0.field88[var33], var34, var35, var27);
|
||||||
var0.field92[var50] = var51;
|
var0.field92[var33] = var34;
|
||||||
}
|
}
|
||||||
|
|
||||||
var33 = var0.field80 + 1;
|
var52 = var0.field80 + 1;
|
||||||
int var52 = -1;
|
int var53 = -1;
|
||||||
byte var35 = 0;
|
byte var54 = 0;
|
||||||
|
|
||||||
for (var25 = 0; var25 <= 255; ++var25) {
|
for (var25 = 0; var25 <= 255; ++var25) {
|
||||||
var0.field77[var25] = 0;
|
var0.field77[var25] = 0;
|
||||||
@@ -355,17 +355,17 @@ public final class Bzip2Decompressor {
|
|||||||
|
|
||||||
int var39 = 0;
|
int var39 = 0;
|
||||||
byte var40;
|
byte var40;
|
||||||
if (var35 == 0) {
|
if (var54 == 0) {
|
||||||
++var52;
|
++var53;
|
||||||
var35 = 50;
|
var54 = 50;
|
||||||
var40 = var0.field86[var52];
|
var40 = var0.field86[var53];
|
||||||
var19 = var0.field92[var40];
|
var19 = var0.field92[var40];
|
||||||
var20 = var0.field89[var40];
|
var20 = var0.field89[var40];
|
||||||
var22 = var0.field91[var40];
|
var22 = var0.field91[var40];
|
||||||
var21 = var0.field90[var40];
|
var21 = var0.field90[var40];
|
||||||
}
|
}
|
||||||
|
|
||||||
int var41 = var35 - 1;
|
int var41 = var54 - 1;
|
||||||
int var42 = var19;
|
int var42 = var19;
|
||||||
|
|
||||||
int var43;
|
int var43;
|
||||||
@@ -378,46 +378,46 @@ public final class Bzip2Decompressor {
|
|||||||
int var45 = var22[var43 - var21[var42]];
|
int var45 = var22[var43 - var21[var42]];
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
int[] var10000;
|
int[] var46;
|
||||||
int var54;
|
int var48;
|
||||||
while (var45 != var33) {
|
while (var45 != var52) {
|
||||||
int var46;
|
int var49;
|
||||||
int var47;
|
|
||||||
if (var45 != 0 && var45 != 1) {
|
if (var45 != 0 && var45 != 1) {
|
||||||
var46 = var45 - 1;
|
var48 = var45 - 1;
|
||||||
int var48;
|
int var10003;
|
||||||
if (var46 < 16) {
|
int var50;
|
||||||
var47 = var0.field85[0];
|
if (var48 < 16) {
|
||||||
|
var49 = var0.field85[0];
|
||||||
|
|
||||||
for (var24 = var0.field84[var47 + var46]; var46 > 3; var46 -= 4) {
|
for (var24 = var0.field84[var49 + var48]; var48 > 3; var48 -= 4) {
|
||||||
var48 = var47 + var46;
|
var50 = var49 + var48;
|
||||||
var0.field84[var48] = var0.field84[var48 - 1];
|
var0.field84[var50] = var0.field84[var50 - 1];
|
||||||
var0.field84[var48 - 1] = var0.field84[var48 - 2];
|
var0.field84[var50 - 1] = var0.field84[var50 - 2];
|
||||||
var0.field84[var48 - 2] = var0.field84[var48 - 3];
|
var0.field84[var50 - 2] = var0.field84[var50 - 3];
|
||||||
var0.field84[var48 - 3] = var0.field84[var48 - 4];
|
var0.field84[var50 - 3] = var0.field84[var50 - 4];
|
||||||
}
|
}
|
||||||
|
|
||||||
while (var46 > 0) {
|
while (var48 > 0) {
|
||||||
var0.field84[var47 + var46] = var0.field84[var47 + var46 - 1];
|
var0.field84[var49 + var48] = var0.field84[var49 + var48 - 1];
|
||||||
--var46;
|
--var48;
|
||||||
}
|
}
|
||||||
|
|
||||||
var0.field84[var47] = var24;
|
var0.field84[var49] = var24;
|
||||||
} else {
|
} else {
|
||||||
var48 = var46 / 16;
|
var50 = var48 / 16;
|
||||||
int var49 = var46 % 16;
|
int var51 = var48 % 16;
|
||||||
var47 = var0.field85[var48] + var49;
|
var49 = var0.field85[var50] + var51;
|
||||||
|
|
||||||
for (var24 = var0.field84[var47]; var47 > var0.field85[var48]; --var47) {
|
for (var24 = var0.field84[var49]; var49 > var0.field85[var50]; --var49) {
|
||||||
var0.field84[var47] = var0.field84[var47 - 1];
|
var0.field84[var49] = var0.field84[var49 - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var54 = var0.field85[var48]++; var48 > 0; --var48) {
|
for (var10003 = var0.field85[var50]++; var50 > 0; --var50) {
|
||||||
var54 = var0.field85[var48]--;
|
var10003 = var0.field85[var50]--;
|
||||||
var0.field84[var0.field85[var48]] = var0.field84[var0.field85[var48 - 1] + 16 - 1];
|
var0.field84[var0.field85[var50]] = var0.field84[var0.field85[var50 - 1] + 16 - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
var54 = var0.field85[0]--;
|
var10003 = var0.field85[0]--;
|
||||||
var0.field84[var0.field85[0]] = var24;
|
var0.field84[var0.field85[0]] = var24;
|
||||||
if (var0.field85[0] == 0) {
|
if (var0.field85[0] == 0) {
|
||||||
var36 = 4095;
|
var36 = 4095;
|
||||||
@@ -433,13 +433,13 @@ public final class Bzip2Decompressor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var54 = var0.field77[var0.field83[var24 & 255] & 255]++;
|
var10003 = var0.field77[var0.field83[var24 & 255] & 255]++;
|
||||||
WorldMapSection0.field1056[var39] = var0.field83[var24 & 255] & 255;
|
WorldMapSection0.field1056[var39] = var0.field83[var24 & 255] & 255;
|
||||||
++var39;
|
++var39;
|
||||||
if (var41 == 0) {
|
if (var41 == 0) {
|
||||||
++var52;
|
++var53;
|
||||||
var41 = 50;
|
var41 = 50;
|
||||||
var40 = var0.field86[var52];
|
var40 = var0.field86[var53];
|
||||||
var19 = var0.field92[var40];
|
var19 = var0.field92[var40];
|
||||||
var20 = var0.field89[var40];
|
var20 = var0.field89[var40];
|
||||||
var22 = var0.field91[var40];
|
var22 = var0.field91[var40];
|
||||||
@@ -456,21 +456,21 @@ public final class Bzip2Decompressor {
|
|||||||
|
|
||||||
var45 = var22[var43 - var21[var42]];
|
var45 = var22[var43 - var21[var42]];
|
||||||
} else {
|
} else {
|
||||||
var46 = -1;
|
var48 = -1;
|
||||||
var47 = 1;
|
var49 = 1;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (var45 == 0) {
|
if (var45 == 0) {
|
||||||
var46 += var47;
|
var48 += var49;
|
||||||
} else if (var45 == 1) {
|
} else if (var45 == 1) {
|
||||||
var46 += var47 * 2;
|
var48 += var49 * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
var47 *= 2;
|
var49 *= 2;
|
||||||
if (var41 == 0) {
|
if (var41 == 0) {
|
||||||
++var52;
|
++var53;
|
||||||
var41 = 50;
|
var41 = 50;
|
||||||
var40 = var0.field86[var52];
|
var40 = var0.field86[var53];
|
||||||
var19 = var0.field92[var40];
|
var19 = var0.field92[var40];
|
||||||
var20 = var0.field89[var40];
|
var20 = var0.field89[var40];
|
||||||
var22 = var0.field91[var40];
|
var22 = var0.field91[var40];
|
||||||
@@ -488,11 +488,11 @@ public final class Bzip2Decompressor {
|
|||||||
var45 = var22[var43 - var21[var42]];
|
var45 = var22[var43 - var21[var42]];
|
||||||
} while(var45 == 0 || var45 == 1);
|
} while(var45 == 0 || var45 == 1);
|
||||||
|
|
||||||
++var46;
|
++var48;
|
||||||
var24 = var0.field83[var0.field84[var0.field85[0]] & 255];
|
var24 = var0.field83[var0.field84[var0.field85[0]] & 255];
|
||||||
var10000 = var0.field77;
|
var46 = var0.field77;
|
||||||
|
|
||||||
for (var10000[var24 & 255] += var46; var46 > 0; --var46) {
|
for (var46[var24 & 255] += var48; var48 > 0; --var48) {
|
||||||
WorldMapSection0.field1056[var39] = var24 & 255;
|
WorldMapSection0.field1056[var39] = var24 & 255;
|
||||||
++var39;
|
++var39;
|
||||||
}
|
}
|
||||||
@@ -508,16 +508,16 @@ public final class Bzip2Decompressor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (var25 = 1; var25 <= 256; ++var25) {
|
for (var25 = 1; var25 <= 256; ++var25) {
|
||||||
var10000 = var0.field79;
|
var46 = var0.field79;
|
||||||
var10000[var25] += var0.field79[var25 - 1];
|
var46[var25] += var0.field79[var25 - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var25 = 0; var25 < var39; ++var25) {
|
for (var25 = 0; var25 < var39; ++var25) {
|
||||||
var24 = (byte)(WorldMapSection0.field1056[var25] & 255);
|
var24 = (byte)(WorldMapSection0.field1056[var25] & 255);
|
||||||
var10000 = WorldMapSection0.field1056;
|
var46 = WorldMapSection0.field1056;
|
||||||
int var53 = var0.field79[var24 & 255];
|
var48 = var0.field79[var24 & 255];
|
||||||
var10000[var53] |= var25 << 8;
|
var46[var48] |= var25 << 8;
|
||||||
var54 = var0.field79[var24 & 255]++;
|
++var0.field79[var24 & 255];
|
||||||
}
|
}
|
||||||
|
|
||||||
var0.field75 = WorldMapSection0.field1056[var0.field74] >> 8;
|
var0.field75 = WorldMapSection0.field1056[var0.field74] >> 8;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import net.runelite.mapping.Implements;
|
|||||||
import net.runelite.mapping.ObfuscatedGetter;
|
import net.runelite.mapping.ObfuscatedGetter;
|
||||||
import net.runelite.mapping.ObfuscatedName;
|
import net.runelite.mapping.ObfuscatedName;
|
||||||
import net.runelite.mapping.ObfuscatedSignature;
|
import net.runelite.mapping.ObfuscatedSignature;
|
||||||
|
import net.runelite.rs.ScriptOpcodes;
|
||||||
|
|
||||||
@ObfuscatedName("ao")
|
@ObfuscatedName("ao")
|
||||||
@Implements("Canvas")
|
@Implements("Canvas")
|
||||||
@@ -117,8 +118,8 @@ public final class Canvas extends java.awt.Canvas {
|
|||||||
static int method861(int var0, Script var1, boolean var2) {
|
static int method861(int var0, Script var1, boolean var2) {
|
||||||
int var3;
|
int var3;
|
||||||
int var4;
|
int var4;
|
||||||
Widget var6;
|
Widget var5;
|
||||||
if (var0 == 100) {
|
if (var0 == ScriptOpcodes.CC_CREATE) {
|
||||||
RouteStrategy.Interpreter_intStackSize -= 3;
|
RouteStrategy.Interpreter_intStackSize -= 3;
|
||||||
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
|
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
|
||||||
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
|
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
|
||||||
@@ -126,62 +127,62 @@ public final class Canvas extends java.awt.Canvas {
|
|||||||
if (var4 == 0) {
|
if (var4 == 0) {
|
||||||
throw new RuntimeException();
|
throw new RuntimeException();
|
||||||
} else {
|
} else {
|
||||||
var6 = Huffman.getWidget(var3);
|
var5 = Huffman.getWidget(var3);
|
||||||
if (var6.children == null) {
|
if (var5.children == null) {
|
||||||
var6.children = new Widget[var9 + 1];
|
var5.children = new Widget[var9 + 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var6.children.length <= var9) {
|
if (var5.children.length <= var9) {
|
||||||
Widget[] var7 = new Widget[var9 + 1];
|
Widget[] var7 = new Widget[var9 + 1];
|
||||||
|
|
||||||
for (int var8 = 0; var8 < var6.children.length; ++var8) {
|
for (int var8 = 0; var8 < var5.children.length; ++var8) {
|
||||||
var7[var8] = var6.children[var8];
|
var7[var8] = var5.children[var8];
|
||||||
}
|
}
|
||||||
|
|
||||||
var6.children = var7;
|
var5.children = var7;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var9 > 0 && var6.children[var9 - 1] == null) {
|
if (var9 > 0 && var5.children[var9 - 1] == null) {
|
||||||
throw new RuntimeException("" + (var9 - 1));
|
throw new RuntimeException("" + (var9 - 1));
|
||||||
} else {
|
} else {
|
||||||
Widget var10 = new Widget();
|
Widget var10 = new Widget();
|
||||||
var10.type = var4;
|
var10.type = var4;
|
||||||
var10.parentId = var10.id = var6.id;
|
var10.parentId = var10.id = var5.id;
|
||||||
var10.childIndex = var9;
|
var10.childIndex = var9;
|
||||||
var10.isIf3 = true;
|
var10.isIf3 = true;
|
||||||
var6.children[var9] = var10;
|
var5.children[var9] = var10;
|
||||||
if (var2) {
|
if (var2) {
|
||||||
WorldMapIcon1.field1030 = var10;
|
WorldMapIcon1.field1030 = var10;
|
||||||
} else {
|
} else {
|
||||||
class12.field1111 = var10;
|
GrandExchangeOfferAgeComparator.field1111 = var10;
|
||||||
}
|
}
|
||||||
|
|
||||||
class22.method295(var6);
|
class22.method295(var5);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Widget var5;
|
Widget var6;
|
||||||
if (var0 == 101) {
|
if (var0 == ScriptOpcodes.CC_DELETE) {
|
||||||
var5 = var2 ? WorldMapIcon1.field1030 : class12.field1111;
|
var6 = var2 ? WorldMapIcon1.field1030 : GrandExchangeOfferAgeComparator.field1111;
|
||||||
var6 = Huffman.getWidget(var5.id);
|
var5 = Huffman.getWidget(var6.id);
|
||||||
var6.children[var5.childIndex] = null;
|
var5.children[var6.childIndex] = null;
|
||||||
class22.method295(var6);
|
|
||||||
return 1;
|
|
||||||
} else if (var0 == 102) {
|
|
||||||
var5 = Huffman.getWidget(Interpreter.Interpreter_intStack[--RouteStrategy.Interpreter_intStackSize]);
|
|
||||||
var5.children = null;
|
|
||||||
class22.method295(var5);
|
class22.method295(var5);
|
||||||
return 1;
|
return 1;
|
||||||
} else if (var0 != 200) {
|
} else if (var0 == ScriptOpcodes.CC_DELETEALL) {
|
||||||
if (var0 == 201) {
|
var6 = Huffman.getWidget(Interpreter.Interpreter_intStack[--RouteStrategy.Interpreter_intStackSize]);
|
||||||
var5 = Huffman.getWidget(Interpreter.Interpreter_intStack[--RouteStrategy.Interpreter_intStackSize]);
|
var6.children = null;
|
||||||
if (var5 != null) {
|
class22.method295(var6);
|
||||||
|
return 1;
|
||||||
|
} else if (var0 != ScriptOpcodes.CC_FIND) {
|
||||||
|
if (var0 == ScriptOpcodes.IF_FIND) {
|
||||||
|
var6 = Huffman.getWidget(Interpreter.Interpreter_intStack[--RouteStrategy.Interpreter_intStackSize]);
|
||||||
|
if (var6 != null) {
|
||||||
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 1;
|
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 1;
|
||||||
if (var2) {
|
if (var2) {
|
||||||
WorldMapIcon1.field1030 = var5;
|
WorldMapIcon1.field1030 = var6;
|
||||||
} else {
|
} else {
|
||||||
class12.field1111 = var5;
|
GrandExchangeOfferAgeComparator.field1111 = var6;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 0;
|
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 0;
|
||||||
@@ -195,13 +196,13 @@ public final class Canvas extends java.awt.Canvas {
|
|||||||
RouteStrategy.Interpreter_intStackSize -= 2;
|
RouteStrategy.Interpreter_intStackSize -= 2;
|
||||||
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
|
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
|
||||||
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
|
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
|
||||||
var6 = class204.getWidgetChild(var3, var4);
|
var5 = class204.getWidgetChild(var3, var4);
|
||||||
if (var6 != null && var4 != -1) {
|
if (var5 != null && var4 != -1) {
|
||||||
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 1;
|
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 1;
|
||||||
if (var2) {
|
if (var2) {
|
||||||
WorldMapIcon1.field1030 = var6;
|
WorldMapIcon1.field1030 = var5;
|
||||||
} else {
|
} else {
|
||||||
class12.field1111 = var6;
|
GrandExchangeOfferAgeComparator.field1111 = var5;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 0;
|
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 0;
|
||||||
@@ -217,12 +218,12 @@ public final class Canvas extends java.awt.Canvas {
|
|||||||
signature = "(ILir;Ljava/lang/String;Ljava/lang/String;IZS)V",
|
signature = "(ILir;Ljava/lang/String;Ljava/lang/String;IZS)V",
|
||||||
garbageValue = "-9124"
|
garbageValue = "-9124"
|
||||||
)
|
)
|
||||||
public static void method858(int var0, AbstractIndexCache var1, String var2, String var3, int var4, boolean var5) {
|
public static void method858(int var0, AbstractArchive var1, String groupName, String fileName, int var4, boolean var5) {
|
||||||
int var6 = var1.getArchiveId(var2);
|
int var6 = var1.getGroupId(groupName);
|
||||||
int var7 = var1.getRecordId(var6, var3);
|
int var7 = var1.getFileId(var6, fileName);
|
||||||
class214.field1129 = 1;
|
class214.field1129 = 1;
|
||||||
class214.field1130 = var1;
|
class214.field1130 = var1;
|
||||||
class30.musicTrackArchiveId = var6;
|
class30.musicTrackGroupId = var6;
|
||||||
GrandExchangeOffer.musicTrackFileId = var7;
|
GrandExchangeOffer.musicTrackFileId = var7;
|
||||||
WorldMapLabel.field1039 = var4;
|
WorldMapLabel.field1039 = var4;
|
||||||
RectangleMode.musicTrackBoolean = var5;
|
RectangleMode.musicTrackBoolean = var5;
|
||||||
@@ -242,7 +243,7 @@ public final class Canvas extends java.awt.Canvas {
|
|||||||
|
|
||||||
if (var0.hitpoints == 0) {
|
if (var0.hitpoints == 0) {
|
||||||
if (var0.field903 < 0 || VarbitDefinition.method4910(var0.field903, var0.field905)) {
|
if (var0.field903 < 0 || VarbitDefinition.method4910(var0.field903, var0.field905)) {
|
||||||
ParamKeyDefinition.method4933(var0.level, var0.type, var0.x, var0.y, var0.field903, var0.field904, var0.field905);
|
ParamDefinition.addPendingSpawnToScene(var0.plane, var0.type, var0.x, var0.y, var0.field903, var0.field904, var0.field905);
|
||||||
var0.remove();
|
var0.remove();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -251,7 +252,7 @@ public final class Canvas extends java.awt.Canvas {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (var0.delay == 0 && var0.x >= 1 && var0.y >= 1 && var0.x <= 102 && var0.y <= 102 && (var0.id < 0 || VarbitDefinition.method4910(var0.id, var0.field908))) {
|
if (var0.delay == 0 && var0.x >= 1 && var0.y >= 1 && var0.x <= 102 && var0.y <= 102 && (var0.id < 0 || VarbitDefinition.method4910(var0.id, var0.field908))) {
|
||||||
ParamKeyDefinition.method4933(var0.level, var0.type, var0.x, var0.y, var0.id, var0.orientation, var0.field908);
|
ParamDefinition.addPendingSpawnToScene(var0.plane, var0.type, var0.x, var0.y, var0.id, var0.orientation, var0.field908);
|
||||||
var0.delay = -1;
|
var0.delay = -1;
|
||||||
if (var0.field903 == var0.id && var0.field903 == -1) {
|
if (var0.field903 == var0.id && var0.field903 == -1) {
|
||||||
var0.remove();
|
var0.remove();
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public class ChatChannel {
|
|||||||
garbageValue = "463993373"
|
garbageValue = "463993373"
|
||||||
)
|
)
|
||||||
@Export("addMessage")
|
@Export("addMessage")
|
||||||
Message addMessage(int var1, String var2, String var3, String var4) {
|
Message addMessage(int type, String sender, String text, String prefix) {
|
||||||
Message var5 = this.messages[99];
|
Message var5 = this.messages[99];
|
||||||
|
|
||||||
for (int var6 = this.count; var6 > 0; --var6) {
|
for (int var6 = this.count; var6 > 0; --var6) {
|
||||||
@@ -40,11 +40,11 @@ public class ChatChannel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (var5 == null) {
|
if (var5 == null) {
|
||||||
var5 = new Message(var1, var2, var4, var3);
|
var5 = new Message(type, sender, prefix, text);
|
||||||
} else {
|
} else {
|
||||||
var5.remove();
|
var5.remove();
|
||||||
var5.removeDual();
|
var5.removeDual();
|
||||||
var5.set(var1, var2, var4, var3);
|
var5.set(type, sender, prefix, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.messages[0] = var5;
|
this.messages[0] = var5;
|
||||||
@@ -61,8 +61,8 @@ public class ChatChannel {
|
|||||||
garbageValue = "-195254780"
|
garbageValue = "-195254780"
|
||||||
)
|
)
|
||||||
@Export("getMessage")
|
@Export("getMessage")
|
||||||
Message getMessage(int var1) {
|
Message getMessage(int index) {
|
||||||
return var1 >= 0 && var1 < this.count ? this.messages[var1] : null;
|
return index >= 0 && index < this.count ? this.messages[index] : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("q")
|
@ObfuscatedName("q")
|
||||||
@@ -80,7 +80,8 @@ public class ChatChannel {
|
|||||||
signature = "(CI)Z",
|
signature = "(CI)Z",
|
||||||
garbageValue = "-1857344803"
|
garbageValue = "-1857344803"
|
||||||
)
|
)
|
||||||
public static boolean method2238(char var0) {
|
@Export("isCharPrintable")
|
||||||
|
public static boolean isCharPrintable(char var0) {
|
||||||
return var0 >= ' ' && var0 <= '~' ? true : (var0 >= 160 && var0 <= 255 ? true : var0 == 8364 || var0 == 338 || var0 == 8212 || var0 == 339 || var0 == 376);
|
return var0 >= ' ' && var0 <= '~' ? true : (var0 >= 160 && var0 <= 255 ? true : var0 == 8364 || var0 == 338 || var0 == 8212 || var0 == 339 || var0 == 376);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -317,7 +318,7 @@ public class ChatChannel {
|
|||||||
|
|
||||||
if (var0.isIf3) {
|
if (var0.isIf3) {
|
||||||
if (Client.isSpellSelected) {
|
if (Client.isSpellSelected) {
|
||||||
if (WorldComparator.method58(class1.getWidgetClickMask(var0)) && (FloorDecoration.selectedSpellFlags & 32) == 32) {
|
if (GrandExchangeOfferWorldComparator.method58(class1.getWidgetClickMask(var0)) && (FloorDecoration.selectedSpellFlags & 32) == 32) {
|
||||||
Tiles.insertMenuItemNoShift(Client.selectedSpellActionName, Client.selectedSpellName + " -> " + var0.dataText, 58, 0, var0.childIndex, var0.id);
|
Tiles.insertMenuItemNoShift(Client.selectedSpellActionName, Client.selectedSpellName + " -> " + var0.dataText, 58, 0, var0.childIndex, var0.id);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ public class ClanChat extends UserList {
|
|||||||
@Export("owner")
|
@Export("owner")
|
||||||
public String owner;
|
public String owner;
|
||||||
@ObfuscatedName("k")
|
@ObfuscatedName("k")
|
||||||
public byte field96;
|
@Export("minKick")
|
||||||
|
public byte minKick;
|
||||||
@ObfuscatedName("n")
|
@ObfuscatedName("n")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = -1534670751
|
intValue = -1534670751
|
||||||
@@ -95,9 +96,9 @@ public class ClanChat extends UserList {
|
|||||||
garbageValue = "455791964"
|
garbageValue = "455791964"
|
||||||
)
|
)
|
||||||
@Export("readUpdate")
|
@Export("readUpdate")
|
||||||
public final void readUpdate(Buffer var1) {
|
public final void readUpdate(Buffer buffer) {
|
||||||
this.method77(var1.readStringCp1252NullTerminated());
|
this.method77(buffer.readStringCp1252NullTerminated());
|
||||||
long var2 = var1.readLong();
|
long var2 = buffer.readLong();
|
||||||
long var4 = var2;
|
long var4 = var2;
|
||||||
String var6;
|
String var6;
|
||||||
int var7;
|
int var7;
|
||||||
@@ -126,17 +127,17 @@ public class ClanChat extends UserList {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.method76(var6);
|
this.method76(var6);
|
||||||
this.field96 = var1.readByte();
|
this.minKick = buffer.readByte();
|
||||||
var7 = var1.readUnsignedByte();
|
var7 = buffer.readUnsignedByte();
|
||||||
if (var7 != 255) {
|
if (var7 != 255) {
|
||||||
this.clear();
|
this.clear();
|
||||||
|
|
||||||
for (int var12 = 0; var12 < var7; ++var12) {
|
for (int var12 = 0; var12 < var7; ++var12) {
|
||||||
ClanMate var13 = (ClanMate)this.addLastNoPreviousUsername(new Username(var1.readStringCp1252NullTerminated(), this.loginType));
|
ClanMate var13 = (ClanMate)this.addLastNoPreviousUsername(new Username(buffer.readStringCp1252NullTerminated(), this.loginType));
|
||||||
int var10 = var1.readUnsignedShort();
|
int var10 = buffer.readUnsignedShort();
|
||||||
var13.set(var10, ++this.field97 - 1);
|
var13.set(var10, ++this.field97 - 1);
|
||||||
var13.rank = var1.readByte();
|
var13.rank = buffer.readByte();
|
||||||
var1.readStringCp1252NullTerminated();
|
buffer.readStringCp1252NullTerminated();
|
||||||
this.method79(var13);
|
this.method79(var13);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -164,7 +165,7 @@ public class ClanChat extends UserList {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var6 = (ClanMate)this.getByCurrentUsername(var2);
|
var6 = (ClanMate)this.getByCurrentUsername(var2);
|
||||||
if (var6 != null && var6.world() == var3) {
|
if (var6 != null && var6.getWorld() == var3) {
|
||||||
this.remove(var6);
|
this.remove(var6);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -217,7 +218,7 @@ public class ClanChat extends UserList {
|
|||||||
garbageValue = "-128608554"
|
garbageValue = "-128608554"
|
||||||
)
|
)
|
||||||
final void method79(ClanMate var1) {
|
final void method79(ClanMate var1) {
|
||||||
if (var1.username().equals(this.localUser.username())) {
|
if (var1.getUsername().equals(this.localUser.username())) {
|
||||||
this.rank = var1.rank;
|
this.rank = var1.rank;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public class ClanMate extends Buddy {
|
|||||||
)
|
)
|
||||||
@Export("fillIsFriend")
|
@Export("fillIsFriend")
|
||||||
void fillIsFriend() {
|
void fillIsFriend() {
|
||||||
this.isFriend0 = WorldMapArea.friendSystem.friendsList.contains(super.username0) ? TriBool.TriBool_true : TriBool.TriBool_false;
|
this.isFriend0 = WorldMapArea.friendSystem.friendsList.contains(super.username) ? TriBool.TriBool_true : TriBool.TriBool_false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("w")
|
@ObfuscatedName("w")
|
||||||
@@ -89,6 +89,6 @@ public class ClanMate extends Buddy {
|
|||||||
)
|
)
|
||||||
@Export("fillIsIgnored")
|
@Export("fillIsIgnored")
|
||||||
void fillIsIgnored() {
|
void fillIsIgnored() {
|
||||||
this.isIgnored0 = WorldMapArea.friendSystem.ignoreList.contains(super.username0) ? TriBool.TriBool_true : TriBool.TriBool_false;
|
this.isIgnored0 = WorldMapArea.friendSystem.ignoreList.contains(super.username) ? TriBool.TriBool_true : TriBool.TriBool_false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -149,8 +149,8 @@ public class ClientPreferences {
|
|||||||
garbageValue = "0"
|
garbageValue = "0"
|
||||||
)
|
)
|
||||||
static final void method1809(int var0) {
|
static final void method1809(int var0) {
|
||||||
if (GroundItemPile.loadWidgetGroup(var0)) {
|
if (GroundItemPile.loadInterface(var0)) {
|
||||||
NetFileRequest.method4555(Widget.widgets[var0], -1);
|
NetFileRequest.method4555(Widget.interfaceComponents[var0], -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ public abstract class Clock {
|
|||||||
garbageValue = "-126803683"
|
garbageValue = "-126803683"
|
||||||
)
|
)
|
||||||
@Export("wait")
|
@Export("wait")
|
||||||
public abstract int wait(int var1, int var2);
|
public abstract int wait(int cycleMs, int minSleepMs);
|
||||||
|
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
public static String method3534(long var0) {
|
public static String method3534(long var0) {
|
||||||
@@ -41,22 +41,22 @@ public abstract class Clock {
|
|||||||
++var2;
|
++var2;
|
||||||
}
|
}
|
||||||
|
|
||||||
char var4;
|
StringBuilder var4;
|
||||||
StringBuilder var8;
|
char var8;
|
||||||
for (var8 = new StringBuilder(var2); var0 != 0L; var8.append(var4)) {
|
for (var4 = new StringBuilder(var2); var0 != 0L; var4.append(var8)) {
|
||||||
long var5 = var0;
|
long var5 = var0;
|
||||||
var0 /= 37L;
|
var0 /= 37L;
|
||||||
var4 = class306.base37Table[(int)(var5 - 37L * var0)];
|
var8 = class306.base37Table[(int)(var5 - 37L * var0)];
|
||||||
if (var4 == '_') {
|
if (var8 == '_') {
|
||||||
int var7 = var8.length() - 1;
|
int var7 = var4.length() - 1;
|
||||||
var8.setCharAt(var7, Character.toUpperCase(var8.charAt(var7)));
|
var4.setCharAt(var7, Character.toUpperCase(var4.charAt(var7)));
|
||||||
var4 = 160;
|
var8 = 160;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var8.reverse();
|
var4.reverse();
|
||||||
var8.setCharAt(0, Character.toUpperCase(var8.charAt(0)));
|
var4.setCharAt(0, Character.toUpperCase(var4.charAt(0)));
|
||||||
return var8.toString();
|
return var4.toString();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -249,8 +249,8 @@ public class CollisionMap {
|
|||||||
public void method92(int var1, int var2) {
|
public void method92(int var1, int var2) {
|
||||||
var1 -= this.xInset;
|
var1 -= this.xInset;
|
||||||
var2 -= this.yInset;
|
var2 -= this.yInset;
|
||||||
int[] var10000 = this.flags[var1];
|
int[] var3 = this.flags[var1];
|
||||||
var10000[var2] |= 2097152;
|
var3[var2] |= 2097152;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("o")
|
@ObfuscatedName("o")
|
||||||
@@ -261,8 +261,8 @@ public class CollisionMap {
|
|||||||
public void method93(int var1, int var2) {
|
public void method93(int var1, int var2) {
|
||||||
var1 -= this.xInset;
|
var1 -= this.xInset;
|
||||||
var2 -= this.yInset;
|
var2 -= this.yInset;
|
||||||
int[] var10000 = this.flags[var1];
|
int[] var3 = this.flags[var1];
|
||||||
var10000[var2] |= 262144;
|
var3[var2] |= 262144;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("u")
|
@ObfuscatedName("u")
|
||||||
@@ -271,8 +271,8 @@ public class CollisionMap {
|
|||||||
garbageValue = "953350100"
|
garbageValue = "953350100"
|
||||||
)
|
)
|
||||||
void method94(int var1, int var2, int var3) {
|
void method94(int var1, int var2, int var3) {
|
||||||
int[] var10000 = this.flags[var1];
|
int[] var4 = this.flags[var1];
|
||||||
var10000[var2] |= var3;
|
var4[var2] |= var3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("g")
|
@ObfuscatedName("g")
|
||||||
@@ -465,8 +465,8 @@ public class CollisionMap {
|
|||||||
garbageValue = "52290294"
|
garbageValue = "52290294"
|
||||||
)
|
)
|
||||||
void method97(int var1, int var2, int var3) {
|
void method97(int var1, int var2, int var3) {
|
||||||
int[] var10000 = this.flags[var1];
|
int[] var4 = this.flags[var1];
|
||||||
var10000[var2] &= ~var3;
|
var4[var2] &= ~var3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("x")
|
@ObfuscatedName("x")
|
||||||
@@ -477,8 +477,8 @@ public class CollisionMap {
|
|||||||
public void method98(int var1, int var2) {
|
public void method98(int var1, int var2) {
|
||||||
var1 -= this.xInset;
|
var1 -= this.xInset;
|
||||||
var2 -= this.yInset;
|
var2 -= this.yInset;
|
||||||
int[] var10000 = this.flags[var1];
|
int[] var3 = this.flags[var1];
|
||||||
var10000[var2] &= -262145;
|
var3[var2] &= -262145;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
|
|||||||
+16
-19
@@ -5,8 +5,8 @@ import net.runelite.mapping.ObfuscatedName;
|
|||||||
import net.runelite.mapping.ObfuscatedSignature;
|
import net.runelite.mapping.ObfuscatedSignature;
|
||||||
|
|
||||||
@ObfuscatedName("hu")
|
@ObfuscatedName("hu")
|
||||||
@Implements("TileLocation")
|
@Implements("Coord")
|
||||||
public class TileLocation {
|
public class Coord {
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = 503621925
|
intValue = 503621925
|
||||||
@@ -29,19 +29,19 @@ public class TileLocation {
|
|||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "(Lhu;)V"
|
signature = "(Lhu;)V"
|
||||||
)
|
)
|
||||||
public TileLocation(TileLocation var1) {
|
public Coord(Coord var1) {
|
||||||
this.plane = var1.plane;
|
this.plane = var1.plane;
|
||||||
this.x = var1.x;
|
this.x = var1.x;
|
||||||
this.y = var1.y;
|
this.y = var1.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TileLocation(int var1, int var2, int var3) {
|
public Coord(int var1, int var2, int var3) {
|
||||||
this.plane = var1;
|
this.plane = var1;
|
||||||
this.x = var2;
|
this.x = var2;
|
||||||
this.y = var3;
|
this.y = var3;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TileLocation(int var1) {
|
public Coord(int var1) {
|
||||||
if (var1 == -1) {
|
if (var1 == -1) {
|
||||||
this.plane = -1;
|
this.plane = -1;
|
||||||
} else {
|
} else {
|
||||||
@@ -67,9 +67,9 @@ public class TileLocation {
|
|||||||
signature = "(Lhu;B)Z",
|
signature = "(Lhu;B)Z",
|
||||||
garbageValue = "-1"
|
garbageValue = "-1"
|
||||||
)
|
)
|
||||||
@Export("equals0")
|
@Export("equalsCoord")
|
||||||
boolean equals0(TileLocation var1) {
|
boolean equalsCoord(Coord other) {
|
||||||
return this.plane != var1.plane ? false : (this.x != var1.x ? false : this.y == var1.y);
|
return this.plane != other.plane ? false : (this.x != other.x ? false : this.y == other.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("q")
|
@ObfuscatedName("q")
|
||||||
@@ -77,23 +77,20 @@ public class TileLocation {
|
|||||||
signature = "(Ljava/lang/String;I)Ljava/lang/String;",
|
signature = "(Ljava/lang/String;I)Ljava/lang/String;",
|
||||||
garbageValue = "997364398"
|
garbageValue = "997364398"
|
||||||
)
|
)
|
||||||
@Export("toString0")
|
@Export("toString")
|
||||||
String toString0(String var1) {
|
String toString(String separator) {
|
||||||
return this.plane + var1 + (this.x >> 6) + var1 + (this.y >> 6) + var1 + (this.x & 63) + var1 + (this.y & 63);
|
return this.plane + separator + (this.x >> 6) + separator + (this.y >> 6) + separator + (this.x & 63) + separator + (this.y & 63);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("equals")
|
public boolean equals(Object var1) {
|
||||||
public boolean method326(Object var1) {
|
return this == var1 ? true : (!(var1 instanceof Coord) ? false : this.equalsCoord((Coord)var1));
|
||||||
return this == var1 ? true : (!(var1 instanceof TileLocation) ? false : this.equals0((TileLocation)var1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("hashCode")
|
public int hashCode() {
|
||||||
public int method327() {
|
|
||||||
return this.packed();
|
return this.packed();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("toString")
|
public String toString() {
|
||||||
public String method328() {
|
return this.toString(",");
|
||||||
return this.toString0(",");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@ import net.runelite.mapping.Implements;
|
|||||||
import net.runelite.mapping.ObfuscatedGetter;
|
import net.runelite.mapping.ObfuscatedGetter;
|
||||||
import net.runelite.mapping.ObfuscatedName;
|
import net.runelite.mapping.ObfuscatedName;
|
||||||
import net.runelite.mapping.ObfuscatedSignature;
|
import net.runelite.mapping.ObfuscatedSignature;
|
||||||
|
import net.runelite.rs.ScriptOpcodes;
|
||||||
|
|
||||||
@ObfuscatedName("dp")
|
@ObfuscatedName("dp")
|
||||||
@Implements("Decimator")
|
@Implements("Decimator")
|
||||||
@@ -125,12 +126,12 @@ public class Decimator {
|
|||||||
garbageValue = "-1419232405"
|
garbageValue = "-1419232405"
|
||||||
)
|
)
|
||||||
@Export("scaleRate")
|
@Export("scaleRate")
|
||||||
int scaleRate(int var1) {
|
int scaleRate(int rate) {
|
||||||
if (this.table != null) {
|
if (this.table != null) {
|
||||||
var1 = (int)((long)this.outputRate * (long)var1 / (long)this.inputRate);
|
rate = (int)((long)this.outputRate * (long)rate / (long)this.inputRate);
|
||||||
}
|
}
|
||||||
|
|
||||||
return var1;
|
return rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("q")
|
@ObfuscatedName("q")
|
||||||
@@ -139,12 +140,12 @@ public class Decimator {
|
|||||||
garbageValue = "25"
|
garbageValue = "25"
|
||||||
)
|
)
|
||||||
@Export("scalePosition")
|
@Export("scalePosition")
|
||||||
int scalePosition(int var1) {
|
int scalePosition(int position) {
|
||||||
if (this.table != null) {
|
if (this.table != null) {
|
||||||
var1 = (int)((long)this.outputRate * (long)var1 / (long)this.inputRate) + 6;
|
position = (int)((long)this.outputRate * (long)position / (long)this.inputRate) + 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
return var1;
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("f")
|
@ObfuscatedName("f")
|
||||||
@@ -158,7 +159,7 @@ public class Decimator {
|
|||||||
if (KeyHandler.field453 == KeyHandler.field455) {
|
if (KeyHandler.field453 == KeyHandler.field455) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
IndexStoreAction.field411 = KeyHandler.field450[KeyHandler.field453];
|
ArchiveDiskAction.field411 = KeyHandler.field450[KeyHandler.field453];
|
||||||
GzipDecompressor.field378 = KeyHandler.field449[KeyHandler.field453];
|
GzipDecompressor.field378 = KeyHandler.field449[KeyHandler.field453];
|
||||||
KeyHandler.field453 = KeyHandler.field453 + 1 & 127;
|
KeyHandler.field453 = KeyHandler.field453 + 1 & 127;
|
||||||
return true;
|
return true;
|
||||||
@@ -211,10 +212,10 @@ public class Decimator {
|
|||||||
ViewportMouse.field951 = (var16 + var10) / 2;
|
ViewportMouse.field951 = (var16 + var10) / 2;
|
||||||
ViewportMouse.field952 = (var13 + var12) / 2;
|
ViewportMouse.field952 = (var13 + var12) / 2;
|
||||||
ViewportMouse.field953 = (var17 - var9) / 2;
|
ViewportMouse.field953 = (var17 - var9) / 2;
|
||||||
class311.field1156 = (var16 - var10) / 2;
|
DefaultsGroup.field1156 = (var16 - var10) / 2;
|
||||||
Skeleton.field874 = (var13 - var12) / 2;
|
Skeleton.field874 = (var13 - var12) / 2;
|
||||||
GraphicsObject.field377 = Math.abs(ViewportMouse.field953);
|
GraphicsObject.field377 = Math.abs(ViewportMouse.field953);
|
||||||
ViewportMouse.field954 = Math.abs(class311.field1156);
|
ViewportMouse.field954 = Math.abs(DefaultsGroup.field1156);
|
||||||
class248.field1142 = Math.abs(Skeleton.field874);
|
class248.field1142 = Math.abs(Skeleton.field874);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -227,7 +228,7 @@ public class Decimator {
|
|||||||
var9 = AccessFile.field7 - var5;
|
var9 = AccessFile.field7 - var5;
|
||||||
var10 = ViewportMouse.field951 - var6;
|
var10 = ViewportMouse.field951 - var6;
|
||||||
var11 = ViewportMouse.field952 - var7;
|
var11 = ViewportMouse.field952 - var7;
|
||||||
return Math.abs(var9) > var8 + GraphicsObject.field377 ? false : (Math.abs(var10) > var12 + ViewportMouse.field954 ? false : (Math.abs(var11) > var13 + class248.field1142 ? false : (Math.abs(var11 * class311.field1156 - var10 * Skeleton.field874) > var13 * ViewportMouse.field954 + var12 * class248.field1142 ? false : (Math.abs(var9 * Skeleton.field874 - var11 * ViewportMouse.field953) > var8 * class248.field1142 + var13 * GraphicsObject.field377 ? false : Math.abs(var10 * ViewportMouse.field953 - var9 * class311.field1156) <= var8 * ViewportMouse.field954 + var12 * GraphicsObject.field377))));
|
return Math.abs(var9) > var8 + GraphicsObject.field377 ? false : (Math.abs(var10) > var12 + ViewportMouse.field954 ? false : (Math.abs(var11) > var13 + class248.field1142 ? false : (Math.abs(var11 * DefaultsGroup.field1156 - var10 * Skeleton.field874) > var13 * ViewportMouse.field954 + var12 * class248.field1142 ? false : (Math.abs(var9 * Skeleton.field874 - var11 * ViewportMouse.field953) > var8 * class248.field1142 + var13 * GraphicsObject.field377 ? false : Math.abs(var10 * ViewportMouse.field953 - var9 * DefaultsGroup.field1156) <= var8 * ViewportMouse.field954 + var12 * GraphicsObject.field377))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,7 +238,7 @@ public class Decimator {
|
|||||||
garbageValue = "-858740470"
|
garbageValue = "-858740470"
|
||||||
)
|
)
|
||||||
static int method2492(int var0, Script var1, boolean var2) {
|
static int method2492(int var0, Script var1, boolean var2) {
|
||||||
if (var0 == 5630) {
|
if (var0 == ScriptOpcodes.LOGOUT) {
|
||||||
Client.field175 = 250;
|
Client.field175 = 250;
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+11
-6
@@ -1,14 +1,18 @@
|
|||||||
|
import net.runelite.mapping.Export;
|
||||||
|
import net.runelite.mapping.Implements;
|
||||||
import net.runelite.mapping.ObfuscatedGetter;
|
import net.runelite.mapping.ObfuscatedGetter;
|
||||||
import net.runelite.mapping.ObfuscatedName;
|
import net.runelite.mapping.ObfuscatedName;
|
||||||
import net.runelite.mapping.ObfuscatedSignature;
|
import net.runelite.mapping.ObfuscatedSignature;
|
||||||
|
|
||||||
@ObfuscatedName("ka")
|
@ObfuscatedName("ka")
|
||||||
public class class311 {
|
@Implements("DefaultsGroup")
|
||||||
|
public class DefaultsGroup {
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
@ObfuscatedSignature(
|
@ObfuscatedSignature(
|
||||||
signature = "Lka;"
|
signature = "Lka;"
|
||||||
)
|
)
|
||||||
static final class311 field3810;
|
@Export("DefaultsGroup_graphics")
|
||||||
|
static final DefaultsGroup DefaultsGroup_graphics;
|
||||||
@ObfuscatedName("e")
|
@ObfuscatedName("e")
|
||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = -2077113503
|
intValue = -2077113503
|
||||||
@@ -18,10 +22,11 @@ public class class311 {
|
|||||||
@ObfuscatedGetter(
|
@ObfuscatedGetter(
|
||||||
intValue = -800980069
|
intValue = -800980069
|
||||||
)
|
)
|
||||||
final int field3809;
|
@Export("group")
|
||||||
|
final int group;
|
||||||
|
|
||||||
class311(int var1) {
|
DefaultsGroup(int var1) {
|
||||||
this.field3809 = var1;
|
this.group = var1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
@@ -34,6 +39,6 @@ public class class311 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static {
|
static {
|
||||||
field3810 = new class311(3);
|
DefaultsGroup_graphics = new DefaultsGroup(3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -39,8 +39,8 @@ public final class DemotingHashTable {
|
|||||||
|
|
||||||
@ObfuscatedName("m")
|
@ObfuscatedName("m")
|
||||||
@Export("get")
|
@Export("get")
|
||||||
public Object get(long var1) {
|
public Object get(long key) {
|
||||||
Wrapper var3 = (Wrapper)this.hashTable.get(var1);
|
Wrapper var3 = (Wrapper)this.hashTable.get(key);
|
||||||
if (var3 == null) {
|
if (var3 == null) {
|
||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
@@ -70,8 +70,8 @@ public final class DemotingHashTable {
|
|||||||
|
|
||||||
@ObfuscatedName("f")
|
@ObfuscatedName("f")
|
||||||
@Export("remove")
|
@Export("remove")
|
||||||
void remove(long var1) {
|
void remove(long key) {
|
||||||
Wrapper var3 = (Wrapper)this.hashTable.get(var1);
|
Wrapper var3 = (Wrapper)this.hashTable.get(key);
|
||||||
this.removeWrapper(var3);
|
this.removeWrapper(var3);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,31 +80,31 @@ public final class DemotingHashTable {
|
|||||||
signature = "(Leu;)V"
|
signature = "(Leu;)V"
|
||||||
)
|
)
|
||||||
@Export("removeWrapper")
|
@Export("removeWrapper")
|
||||||
void removeWrapper(Wrapper var1) {
|
void removeWrapper(Wrapper wrapper) {
|
||||||
if (var1 != null) {
|
if (wrapper != null) {
|
||||||
var1.remove();
|
wrapper.remove();
|
||||||
var1.removeDual();
|
wrapper.removeDual();
|
||||||
this.remaining += var1.size;
|
this.remaining += wrapper.size;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObfuscatedName("w")
|
@ObfuscatedName("w")
|
||||||
@Export("put")
|
@Export("put")
|
||||||
public void put(Object var1, long var2, int var4) {
|
public void put(Object value, long key, int size) {
|
||||||
if (var4 > this.capacity) {
|
if (size > this.capacity) {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
} else {
|
} else {
|
||||||
this.remove(var2);
|
this.remove(key);
|
||||||
this.remaining -= var4;
|
this.remaining -= size;
|
||||||
|
|
||||||
while (this.remaining < 0) {
|
while (this.remaining < 0) {
|
||||||
Wrapper var5 = (Wrapper)this.queue.removeLast();
|
Wrapper var5 = (Wrapper)this.queue.removeLast();
|
||||||
this.removeWrapper(var5);
|
this.removeWrapper(var5);
|
||||||
}
|
}
|
||||||
|
|
||||||
DirectWrapper var6 = new DirectWrapper(var1, var4);
|
DirectWrapper var6 = new DirectWrapper(value, size);
|
||||||
this.hashTable.put(var6, var2);
|
this.hashTable.put(var6, key);
|
||||||
this.queue.add(var6);
|
this.queue.add(var6);
|
||||||
var6.keyDual = 0L;
|
var6.keyDual = 0L;
|
||||||
}
|
}
|
||||||
@@ -112,7 +112,7 @@ public final class DemotingHashTable {
|
|||||||
|
|
||||||
@ObfuscatedName("o")
|
@ObfuscatedName("o")
|
||||||
@Export("demote")
|
@Export("demote")
|
||||||
public void demote(int var1) {
|
public void demote(int softeningLevel) {
|
||||||
for (Wrapper var2 = (Wrapper)this.queue.last(); var2 != null; var2 = (Wrapper)this.queue.previous()) {
|
for (Wrapper var2 = (Wrapper)this.queue.last(); var2 != null; var2 = (Wrapper)this.queue.previous()) {
|
||||||
if (var2.isSoft()) {
|
if (var2.isSoft()) {
|
||||||
if (var2.get() == null) {
|
if (var2.get() == null) {
|
||||||
@@ -120,7 +120,7 @@ public final class DemotingHashTable {
|
|||||||
var2.removeDual();
|
var2.removeDual();
|
||||||
this.remaining += var2.size;
|
this.remaining += var2.size;
|
||||||
}
|
}
|
||||||
} else if (++var2.keyDual > (long)var1) {
|
} else if (++var2.keyDual > (long)softeningLevel) {
|
||||||
SoftWrapper var3 = new SoftWrapper(var2.get(), var2.size);
|
SoftWrapper var3 = new SoftWrapper(var2.get(), var2.size);
|
||||||
this.hashTable.put(var3, var2.key);
|
this.hashTable.put(var3, var2.key);
|
||||||
DualNodeDeque.DualNodeDeque_addBefore(var3, var2);
|
DualNodeDeque.DualNodeDeque_addBefore(var3, var2);
|
||||||
|
|||||||
@@ -45,15 +45,15 @@ public class DevicePcmPlayer extends PcmPlayer {
|
|||||||
garbageValue = "-1738349775"
|
garbageValue = "-1738349775"
|
||||||
)
|
)
|
||||||
@Export("open")
|
@Export("open")
|
||||||
protected void open(int var1) throws LineUnavailableException {
|
protected void open(int bufferSize) throws LineUnavailableException {
|
||||||
try {
|
try {
|
||||||
Info var2 = new Info(SourceDataLine.class, this.format, var1 << (PcmPlayer.isStereo ? 2 : 1));
|
Info var2 = new Info(SourceDataLine.class, this.format, bufferSize << (PcmPlayer.isStereo ? 2 : 1));
|
||||||
this.line = (SourceDataLine)AudioSystem.getLine(var2);
|
this.line = (SourceDataLine)AudioSystem.getLine(var2);
|
||||||
this.line.open();
|
this.line.open();
|
||||||
this.line.start();
|
this.line.start();
|
||||||
this.capacity2 = var1;
|
this.capacity2 = bufferSize;
|
||||||
} catch (LineUnavailableException var5) {
|
} catch (LineUnavailableException var5) {
|
||||||
int var3 = (var1 >>> 1 & 1431655765) + (var1 & 1431655765);
|
int var3 = (bufferSize >>> 1 & 1431655765) + (bufferSize & 1431655765);
|
||||||
var3 = (var3 >>> 2 & 858993459) + (var3 & 858993459);
|
var3 = (var3 >>> 2 & 858993459) + (var3 & 858993459);
|
||||||
var3 = (var3 >>> 4) + var3 & 252645135;
|
var3 = (var3 >>> 4) + var3 & 252645135;
|
||||||
var3 += var3 >>> 8;
|
var3 += var3 >>> 8;
|
||||||
@@ -64,7 +64,7 @@ public class DevicePcmPlayer extends PcmPlayer {
|
|||||||
throw var5;
|
throw var5;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.open(World.method1759(var1));
|
this.open(World.method1759(bufferSize));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,8 +149,8 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
signature = "([Lho;IIIIIIIII)V",
|
signature = "([Lho;IIIIIIIII)V",
|
||||||
garbageValue = "-1516599170"
|
garbageValue = "-1516599170"
|
||||||
)
|
)
|
||||||
@Export("drawWidgetGroup")
|
@Export("drawInterface")
|
||||||
static final void drawWidgetGroup(Widget[] var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) {
|
static final void drawInterface(Widget[] var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) {
|
||||||
Rasterizer2D.Rasterizer2D_setClip(var2, var3, var4, var5);
|
Rasterizer2D.Rasterizer2D_setClip(var2, var3, var4, var5);
|
||||||
Rasterizer3D.Rasterizer3D_method1();
|
Rasterizer3D.Rasterizer3D_method1();
|
||||||
|
|
||||||
@@ -184,7 +184,7 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
if (var1 != -1412584499 && !var10.isScrollBar) {
|
if (var1 != -1412584499 && !var10.isScrollBar) {
|
||||||
class279.field1145 = var0;
|
class279.field1145 = var0;
|
||||||
class54.field1161 = var6;
|
class54.field1161 = var6;
|
||||||
class157.field1114 = var7;
|
BuddyRankComparator.field1114 = var7;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -328,12 +328,12 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
drawWidgetGroup(var0, var10.id, var15, var16, var17, var18, var12 - var10.scrollX, var13 - var10.scrollY, var11);
|
drawInterface(var0, var10.id, var15, var16, var17, var18, var12 - var10.scrollX, var13 - var10.scrollY, var11);
|
||||||
if (var10.children != null) {
|
if (var10.children != null) {
|
||||||
drawWidgetGroup(var10.children, var10.id, var15, var16, var17, var18, var12 - var10.scrollX, var13 - var10.scrollY, var11);
|
drawInterface(var10.children, var10.id, var15, var16, var17, var18, var12 - var10.scrollX, var13 - var10.scrollY, var11);
|
||||||
}
|
}
|
||||||
|
|
||||||
WidgetGroupParent var23 = (WidgetGroupParent)Client.widgetGroupParents.get((long)var10.id);
|
InterfaceParent var23 = (InterfaceParent)Client.interfaceParents.get((long)var10.id);
|
||||||
if (var23 != null) {
|
if (var23 != null) {
|
||||||
Interpreter.drawWidgets(var23.group, var15, var16, var17, var18, var12, var13, var11);
|
Interpreter.drawWidgets(var23.group, var15, var16, var17, var18, var12, var13, var11);
|
||||||
}
|
}
|
||||||
@@ -344,7 +344,7 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
|
|
||||||
if (Client.isResizable || Client.field101[var11] || Client.gameDrawingMode > 1) {
|
if (Client.isResizable || Client.field101[var11] || Client.gameDrawingMode > 1) {
|
||||||
if (var10.type == 0 && !var10.isIf3 && var10.scrollHeight > var10.height) {
|
if (var10.type == 0 && !var10.isIf3 && var10.scrollHeight > var10.height) {
|
||||||
class11.method148(var12 + var10.width, var13, var10.scrollY, var10.height, var10.scrollHeight);
|
GrandExchangeOfferNameComparator.method148(var12 + var10.width, var13, var10.scrollY, var10.height, var10.scrollHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var10.type != 1) {
|
if (var10.type != 1) {
|
||||||
@@ -358,17 +358,17 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
for (var19 = 0; var19 < var10.rawHeight; ++var19) {
|
for (var19 = 0; var19 < var10.rawHeight; ++var19) {
|
||||||
for (var20 = 0; var20 < var10.rawWidth; ++var20) {
|
for (var20 = 0; var20 < var10.rawWidth; ++var20) {
|
||||||
var21 = var12 + var20 * (var10.paddingX + 32);
|
var21 = var12 + var20 * (var10.paddingX + 32);
|
||||||
var33 = var13 + var19 * (var10.paddingY + 32);
|
var26 = var13 + var19 * (var10.paddingY + 32);
|
||||||
if (var22 < 20) {
|
if (var22 < 20) {
|
||||||
var21 += var10.inventoryXOffsets[var22];
|
var21 += var10.inventoryXOffsets[var22];
|
||||||
var33 += var10.inventoryYOffsets[var22];
|
var26 += var10.inventoryYOffsets[var22];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var10.itemIds[var22] <= 0) {
|
if (var10.itemIds[var22] <= 0) {
|
||||||
if (var10.inventorySprites != null && var22 < 20) {
|
if (var10.inventorySprites != null && var22 < 20) {
|
||||||
Sprite var36 = var10.getInventorySprite(var22);
|
Sprite var36 = var10.getInventorySprite(var22);
|
||||||
if (var36 != null) {
|
if (var36 != null) {
|
||||||
var36.drawAt2(var21, var33);
|
var36.drawAt2(var21, var26);
|
||||||
} else if (Widget.field957) {
|
} else if (Widget.field957) {
|
||||||
class22.method295(var10);
|
class22.method295(var10);
|
||||||
}
|
}
|
||||||
@@ -376,38 +376,38 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
} else {
|
} else {
|
||||||
boolean var35 = false;
|
boolean var35 = false;
|
||||||
boolean var46 = false;
|
boolean var46 = false;
|
||||||
var26 = var10.itemIds[var22] - 1;
|
var25 = var10.itemIds[var22] - 1;
|
||||||
if (var21 + 32 > var2 && var21 < var4 && var33 + 32 > var3 && var33 < var5 || var10 == dragInventoryWidget && var22 == Client.dragItemSlotSource) {
|
if (var21 + 32 > var2 && var21 < var4 && var26 + 32 > var3 && var26 < var5 || var10 == dragInventoryWidget && var22 == Client.dragItemSlotSource) {
|
||||||
Sprite var42;
|
Sprite var42;
|
||||||
if (Client.isItemSelected == 1 && var22 == HealthBarDefinition.selectedItemSlot && var10.id == ServerPacket.selectedItemWidget) {
|
if (Client.isItemSelected == 1 && var22 == HealthBarDefinition.selectedItemSlot && var10.id == ServerPacket.selectedItemWidget) {
|
||||||
var42 = class226.getItemSprite(var26, var10.itemQuantities[var22], 2, 0, 2, false);
|
var42 = class226.getItemSprite(var25, var10.itemQuantities[var22], 2, 0, 2, false);
|
||||||
} else {
|
} else {
|
||||||
var42 = class226.getItemSprite(var26, var10.itemQuantities[var22], 1, 3153952, 2, false);
|
var42 = class226.getItemSprite(var25, var10.itemQuantities[var22], 1, 3153952, 2, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var42 != null) {
|
if (var42 != null) {
|
||||||
if (var10 == dragInventoryWidget && var22 == Client.dragItemSlotSource) {
|
if (var10 == dragInventoryWidget && var22 == Client.dragItemSlotSource) {
|
||||||
var24 = MouseHandler.MouseHandler_x - Client.field205;
|
var33 = MouseHandler.MouseHandler_x - Client.field205;
|
||||||
var25 = MouseHandler.MouseHandler_y - Client.field206;
|
var24 = MouseHandler.MouseHandler_y - Client.field206;
|
||||||
|
if (var33 < 5 && var33 > -5) {
|
||||||
|
var33 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (var24 < 5 && var24 > -5) {
|
if (var24 < 5 && var24 > -5) {
|
||||||
var24 = 0;
|
var24 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var25 < 5 && var25 > -5) {
|
|
||||||
var25 = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Client.itemDragDuration < 5) {
|
if (Client.itemDragDuration < 5) {
|
||||||
|
var33 = 0;
|
||||||
var24 = 0;
|
var24 = 0;
|
||||||
var25 = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var42.method310(var21 + var24, var33 + var25, 128);
|
var42.method310(var21 + var33, var26 + var24, 128);
|
||||||
if (var1 != -1) {
|
if (var1 != -1) {
|
||||||
Widget var47 = var0[var1 & 65535];
|
Widget var47 = var0[var1 & 65535];
|
||||||
int var45;
|
int var45;
|
||||||
if (var33 + var25 < Rasterizer2D.Rasterizer2D_yClipStart && var47.scrollY > 0) {
|
if (var26 + var24 < Rasterizer2D.Rasterizer2D_yClipStart && var47.scrollY > 0) {
|
||||||
var45 = (Rasterizer2D.Rasterizer2D_yClipStart - var33 - var25) * Client.field183 / 3;
|
var45 = (Rasterizer2D.Rasterizer2D_yClipStart - var26 - var24) * Client.field183 / 3;
|
||||||
if (var45 > Client.field183 * 10) {
|
if (var45 > Client.field183 * 10) {
|
||||||
var45 = Client.field183 * 10;
|
var45 = Client.field183 * 10;
|
||||||
}
|
}
|
||||||
@@ -421,8 +421,8 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
class22.method295(var47);
|
class22.method295(var47);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var25 + var33 + 32 > Rasterizer2D.Rasterizer2D_yClipEnd && var47.scrollY < var47.scrollHeight - var47.height) {
|
if (var24 + var26 + 32 > Rasterizer2D.Rasterizer2D_yClipEnd && var47.scrollY < var47.scrollHeight - var47.height) {
|
||||||
var45 = (var33 + var25 + 32 - Rasterizer2D.Rasterizer2D_yClipEnd) * Client.field183 / 3;
|
var45 = (var26 + var24 + 32 - Rasterizer2D.Rasterizer2D_yClipEnd) * Client.field183 / 3;
|
||||||
if (var45 > Client.field183 * 10) {
|
if (var45 > Client.field183 * 10) {
|
||||||
var45 = Client.field183 * 10;
|
var45 = Client.field183 * 10;
|
||||||
}
|
}
|
||||||
@@ -437,9 +437,9 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (var10 == BoundaryObject.field40 && var22 == Client.field204) {
|
} else if (var10 == BoundaryObject.field40 && var22 == Client.field204) {
|
||||||
var42.method310(var21, var33, 128);
|
var42.method310(var21, var26, 128);
|
||||||
} else {
|
} else {
|
||||||
var42.drawAt2(var21, var33);
|
var42.drawAt2(var21, var26);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
class22.method295(var10);
|
class22.method295(var10);
|
||||||
@@ -569,16 +569,16 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
} else {
|
} else {
|
||||||
Rasterizer2D.Rasterizer2D_expandClip(var12, var13, var12 + var10.width, var13 + var10.height);
|
Rasterizer2D.Rasterizer2D_expandClip(var12, var13, var12 + var10.width, var13 + var10.height);
|
||||||
var21 = (var19 - 1 + var10.width) / var19;
|
var21 = (var19 - 1 + var10.width) / var19;
|
||||||
var33 = (var20 - 1 + var10.height) / var20;
|
var26 = (var20 - 1 + var10.height) / var20;
|
||||||
|
|
||||||
for (var24 = 0; var24 < var21; ++var24) {
|
for (var33 = 0; var33 < var21; ++var33) {
|
||||||
for (var25 = 0; var25 < var33; ++var25) {
|
for (var24 = 0; var24 < var26; ++var24) {
|
||||||
if (var10.spriteAngle != 0) {
|
if (var10.spriteAngle != 0) {
|
||||||
var37.method317(var19 / 2 + var12 + var19 * var24, var20 / 2 + var13 + var25 * var20, var10.spriteAngle, 4096);
|
var37.method317(var19 / 2 + var12 + var19 * var33, var20 / 2 + var13 + var24 * var20, var10.spriteAngle, 4096);
|
||||||
} else if (var14 != 0) {
|
} else if (var14 != 0) {
|
||||||
var37.method310(var12 + var19 * var24, var13 + var20 * var25, 256 - (var14 & 255));
|
var37.method310(var12 + var19 * var33, var13 + var20 * var24, 256 - (var14 & 255));
|
||||||
} else {
|
} else {
|
||||||
var37.drawAt2(var12 + var19 * var24, var13 + var25 * var20);
|
var37.drawAt2(var12 + var19 * var33, var13 + var24 * var20);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -602,7 +602,7 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
if (var10.itemId != -1) {
|
if (var10.itemId != -1) {
|
||||||
var28 = Skills.getItemDefinition(var10.itemId);
|
var28 = Skills.getItemDefinition(var10.itemId);
|
||||||
if (var28 != null) {
|
if (var28 != null) {
|
||||||
var28 = var28.method144(var10.itemQuantity);
|
var28 = var28.getCountObj(var10.itemQuantity);
|
||||||
var43 = var28.getModel(1);
|
var43 = var28.getModel(1);
|
||||||
if (var43 != null) {
|
if (var43 != null) {
|
||||||
var43.calculateBoundsCylinder();
|
var43.calculateBoundsCylinder();
|
||||||
@@ -631,17 +631,17 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Rasterizer3D.method2989(var10.width / 2 + var12, var10.height / 2 + var13);
|
Rasterizer3D.method2989(var10.width / 2 + var12, var10.height / 2 + var13);
|
||||||
var33 = Rasterizer3D.Rasterizer3D_sine[var10.modelAngleX] * var10.modelZoom >> 16;
|
var26 = Rasterizer3D.Rasterizer3D_sine[var10.modelAngleX] * var10.modelZoom >> 16;
|
||||||
var24 = Rasterizer3D.Rasterizer3D_cosine[var10.modelAngleX] * var10.modelZoom >> 16;
|
var33 = Rasterizer3D.Rasterizer3D_cosine[var10.modelAngleX] * var10.modelZoom >> 16;
|
||||||
if (var43 != null) {
|
if (var43 != null) {
|
||||||
if (!var10.isIf3) {
|
if (!var10.isIf3) {
|
||||||
var43.method199(0, var10.modelAngleY, 0, var10.modelAngleX, 0, var33, var24);
|
var43.method199(0, var10.modelAngleY, 0, var10.modelAngleX, 0, var26, var33);
|
||||||
} else {
|
} else {
|
||||||
var43.calculateBoundsCylinder();
|
var43.calculateBoundsCylinder();
|
||||||
if (var10.modelOrthog) {
|
if (var10.modelOrthog) {
|
||||||
var43.method200(0, var10.modelAngleY, var10.modelAngleZ, var10.modelAngleX, var10.modelOffsetX, var21 + var33 + var10.modelOffsetY, var24 + var10.modelOffsetY, var10.modelZoom);
|
var43.method200(0, var10.modelAngleY, var10.modelAngleZ, var10.modelAngleX, var10.modelOffsetX, var21 + var26 + var10.modelOffsetY, var33 + var10.modelOffsetY, var10.modelZoom);
|
||||||
} else {
|
} else {
|
||||||
var43.method199(0, var10.modelAngleY, var10.modelAngleZ, var10.modelAngleX, var10.modelOffsetX, var33 + var21 + var10.modelOffsetY, var24 + var10.modelOffsetY);
|
var43.method199(0, var10.modelAngleY, var10.modelAngleZ, var10.modelAngleX, var10.modelOffsetX, var26 + var21 + var10.modelOffsetY, var33 + var10.modelOffsetY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -670,14 +670,14 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
var29 = BufferedFile.colorStartTag(16748608) + var28.name + "</col> " + 'x' + GrandExchangeEvent.method88(var10.itemQuantities[var19]);
|
var29 = BufferedFile.colorStartTag(16748608) + var28.name + "</col> " + 'x' + GrandExchangeEvent.method88(var10.itemQuantities[var19]);
|
||||||
}
|
}
|
||||||
|
|
||||||
var25 = var21 * (var10.paddingX + 115) + var12;
|
var24 = var21 * (var10.paddingX + 115) + var12;
|
||||||
var26 = var20 * (var10.paddingY + 12) + var13;
|
var25 = var20 * (var10.paddingY + 12) + var13;
|
||||||
if (var10.textXAlignment == 0) {
|
if (var10.textXAlignment == 0) {
|
||||||
var27.draw(var29, var25, var26, var10.color, var10.textShadowed ? 0 : -1);
|
var27.draw(var29, var24, var25, var10.color, var10.textShadowed ? 0 : -1);
|
||||||
} else if (var10.textXAlignment == 1) {
|
} else if (var10.textXAlignment == 1) {
|
||||||
var27.drawCentered(var29, var10.width / 2 + var25, var26, var10.color, var10.textShadowed ? 0 : -1);
|
var27.drawCentered(var29, var10.width / 2 + var24, var25, var10.color, var10.textShadowed ? 0 : -1);
|
||||||
} else {
|
} else {
|
||||||
var27.drawRightAligned(var29, var25 + var10.width - 1, var26, var10.color, var10.textShadowed ? 0 : -1);
|
var27.drawRightAligned(var29, var24 + var10.width - 1, var25, var10.color, var10.textShadowed ? 0 : -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -694,43 +694,43 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
|
|
||||||
String var31;
|
String var31;
|
||||||
for (var30 = MouseRecorder.method1194(var30, var10); var30.length() > 0; var19 = var19 + var39.ascent + 1) {
|
for (var30 = MouseRecorder.method1194(var30, var10); var30.length() > 0; var19 = var19 + var39.ascent + 1) {
|
||||||
var24 = var30.indexOf("<br>");
|
var33 = var30.indexOf("<br>");
|
||||||
if (var24 != -1) {
|
if (var33 != -1) {
|
||||||
var31 = var30.substring(0, var24);
|
var31 = var30.substring(0, var33);
|
||||||
var30 = var30.substring(var24 + 4);
|
var30 = var30.substring(var33 + 4);
|
||||||
} else {
|
} else {
|
||||||
var31 = var30;
|
var31 = var30;
|
||||||
var30 = "";
|
var30 = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
var25 = var39.stringWidth(var31);
|
var24 = var39.stringWidth(var31);
|
||||||
if (var25 > var22) {
|
if (var24 > var22) {
|
||||||
var22 = var25;
|
var22 = var24;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var22 += 6;
|
var22 += 6;
|
||||||
var19 += 7;
|
var19 += 7;
|
||||||
var24 = var12 + var10.width - 5 - var22;
|
var33 = var12 + var10.width - 5 - var22;
|
||||||
var25 = var13 + var10.height + 5;
|
var24 = var13 + var10.height + 5;
|
||||||
if (var24 < var12 + 5) {
|
if (var33 < var12 + 5) {
|
||||||
var24 = var12 + 5;
|
var33 = var12 + 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var22 + var24 > var4) {
|
if (var22 + var33 > var4) {
|
||||||
var24 = var4 - var22;
|
var33 = var4 - var22;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var25 + var19 > var5) {
|
if (var24 + var19 > var5) {
|
||||||
var25 = var5 - var19;
|
var24 = var5 - var19;
|
||||||
}
|
}
|
||||||
|
|
||||||
Rasterizer2D.Rasterizer2D_fillRectangle(var24, var25, var22, var19, 16777120);
|
Rasterizer2D.Rasterizer2D_fillRectangle(var33, var24, var22, var19, 16777120);
|
||||||
Rasterizer2D.Rasterizer2D_drawRectangle(var24, var25, var22, var19, 0);
|
Rasterizer2D.Rasterizer2D_drawRectangle(var33, var24, var22, var19, 0);
|
||||||
var30 = var10.text;
|
var30 = var10.text;
|
||||||
var26 = var25 + var39.ascent + 2;
|
var25 = var24 + var39.ascent + 2;
|
||||||
|
|
||||||
for (var30 = MouseRecorder.method1194(var30, var10); var30.length() > 0; var26 = var26 + var39.ascent + 1) {
|
for (var30 = MouseRecorder.method1194(var30, var10); var30.length() > 0; var25 = var25 + var39.ascent + 1) {
|
||||||
int var32 = var30.indexOf("<br>");
|
int var32 = var30.indexOf("<br>");
|
||||||
if (var32 != -1) {
|
if (var32 != -1) {
|
||||||
var31 = var30.substring(0, var32);
|
var31 = var30.substring(0, var32);
|
||||||
@@ -740,7 +740,7 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
var30 = "";
|
var30 = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
var39.draw(var31, var24 + 3, var26, 0, -1);
|
var39.draw(var31, var33 + 3, var25, 0, -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -781,8 +781,8 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
|||||||
garbageValue = "-1666917204"
|
garbageValue = "-1666917204"
|
||||||
)
|
)
|
||||||
static final void method845(int var0) {
|
static final void method845(int var0) {
|
||||||
if (GroundItemPile.loadWidgetGroup(var0)) {
|
if (GroundItemPile.loadInterface(var0)) {
|
||||||
Widget[] var1 = Widget.widgets[var0];
|
Widget[] var1 = Widget.interfaceComponents[var0];
|
||||||
|
|
||||||
for (int var2 = 0; var2 < var1.length; ++var2) {
|
for (int var2 = 0; var2 < var1.length; ++var2) {
|
||||||
Widget var3 = var1[var2];
|
Widget var3 = var1[var2];
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user