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_SETHIDE, "cc_sethide");
|
||||
add(CC_SETNOCLICKTHROUGH, "cc_setnoclickthrough");
|
||||
add(CC_SETNOSCROLLTHROUGH, "cc_setnoscrollthrough");
|
||||
add(CC_SETSCROLLPOS, "cc_setscrollpos");
|
||||
add(CC_SETCOLOUR, "cc_setcolour");
|
||||
add(CC_SETFILL, "cc_setfill");
|
||||
@@ -287,11 +288,14 @@ public class Instructions
|
||||
add(SETSHOWLOADINGMESSAGES, "setshowloadingmessages");
|
||||
add(SETTAPTODROP, "settaptodrop");
|
||||
add(GETTAPTODROP, "gettaptodrop");
|
||||
add(SETOCULUSORBSPEED, "setoculusorbspeed");
|
||||
add(GETCANVASSIZE, "getcanvassize");
|
||||
add(SETHIDEUSERNAME, "sethideusername");
|
||||
add(GETHIDEUSERNAME, "gethideusername");
|
||||
add(SETREMEMBERUSERNAME, "setrememberusername");
|
||||
add(GETREMEMBERUSERNAME, "getrememberusername");
|
||||
add(SETTITLEMUSICENABLED, "settitlemusicenabled");
|
||||
add(GETTITLEMUSICENABLED, "gettitlemusicenabled");
|
||||
add(SOUND_SYNTH, "sound_synth");
|
||||
add(SOUND_SONG, "sound_song");
|
||||
add(SOUND_JINGLE, "sound_jingle");
|
||||
@@ -411,6 +415,7 @@ public class Instructions
|
||||
add(REMOVETAGS, "removetags");
|
||||
add(STRING_INDEXOF_CHAR, "string_indexof_char");
|
||||
add(STRING_INDEXOF_STRING, "string_indexof_string");
|
||||
add(UPPERCASE, "uppercase");
|
||||
add(OC_NAME, "oc_name");
|
||||
add(OC_OP, "oc_op");
|
||||
add(OC_IOP, "oc_iop");
|
||||
@@ -461,6 +466,7 @@ public class Instructions
|
||||
add(WORLDLIST_NEXT, "worldlist_next");
|
||||
add(WORLDLIST_SPECIFIC, "worldlist_specific");
|
||||
add(WORLDLIST_SORT, "worldlist_sort");
|
||||
add(GETWORLDINFO, "getworldinfo");
|
||||
add(SETFOLLOWEROPSLOWPRIORITY, "setfolloweropslowpriority");
|
||||
add(NC_PARAM, "nc_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_SETHIDE = 1003;
|
||||
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_SETCOLOUR = 1101;
|
||||
public static final int CC_SETFILL = 1102;
|
||||
@@ -278,11 +279,14 @@ public class Opcodes
|
||||
public static final int SETSHOWLOADINGMESSAGES = 3126;
|
||||
public static final int SETTAPTODROP = 3127;
|
||||
public static final int GETTAPTODROP = 3128;
|
||||
public static final int SETOCULUSORBSPEED = 3129;
|
||||
public static final int GETCANVASSIZE = 3132;
|
||||
public static final int SETHIDEUSERNAME = 3141;
|
||||
public static final int GETHIDEUSERNAME = 3142;
|
||||
public static final int SETREMEMBERUSERNAME = 3143;
|
||||
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_SONG = 3201;
|
||||
public static final int SOUND_JINGLE = 3202;
|
||||
@@ -402,6 +406,7 @@ public class Opcodes
|
||||
public static final int REMOVETAGS = 4119;
|
||||
public static final int STRING_INDEXOF_CHAR = 4120;
|
||||
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_OP = 4201;
|
||||
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_SPECIFIC = 6506;
|
||||
public static final int WORLDLIST_SORT = 6507;
|
||||
public static final int GETWORLDINFO = 6511;
|
||||
public static final int SETFOLLOWEROPSLOWPRIORITY = 6512;
|
||||
public static final int NC_PARAM = 6513;
|
||||
public static final int LC_PARAM = 6514;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
import java.util.List;
|
||||
import net.runelite.asm.ClassFile;
|
||||
import net.runelite.asm.ClassGroup;
|
||||
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;
|
||||
|
||||
public class ParameterRenamer
|
||||
@@ -49,9 +52,39 @@ public class ParameterRenamer
|
||||
for (Method sourceM : sourceCF.getMethods())
|
||||
{
|
||||
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.Mapper;
|
||||
import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping;
|
||||
import net.runelite.deob.deobfuscators.transformers.ScriptOpcodesTransformer;
|
||||
import net.runelite.deob.util.JarUtil;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -72,6 +73,8 @@ public class UpdateMappings
|
||||
|
||||
ParameterRenamer pr = new ParameterRenamer(group1, group2, mapping);
|
||||
pr.run();
|
||||
|
||||
new ScriptOpcodesTransformer().transform(group2);
|
||||
}
|
||||
|
||||
public void save(File out) throws IOException
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.runelite.deob.updater;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import java.io.File;
|
||||
import net.runelite.asm.ClassFile;
|
||||
import net.runelite.asm.ClassGroup;
|
||||
@@ -39,6 +40,12 @@ public class AnnotationCleaner
|
||||
|
||||
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())
|
||||
{
|
||||
Annotations an = f.getAnnotations();
|
||||
@@ -48,11 +55,11 @@ public class AnnotationCleaner
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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())
|
||||
@@ -64,11 +71,11 @@ public class AnnotationCleaner
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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.Mapper;
|
||||
import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping;
|
||||
import net.runelite.deob.deobfuscators.transformers.ScriptOpcodesTransformer;
|
||||
import net.runelite.deob.util.JarUtil;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Ignore;
|
||||
@@ -87,6 +88,19 @@ public class UpdateMappingsTest
|
||||
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)
|
||||
{
|
||||
for (ClassFile cf : group.getClasses())
|
||||
|
||||
@@ -8,7 +8,6 @@ public class HookClass
|
||||
@SerializedName("class")
|
||||
String clazz;
|
||||
String name;
|
||||
int access;
|
||||
List<HookField> fields;
|
||||
List<HookMethod> methods;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ public class HookField
|
||||
String field;
|
||||
String owner;
|
||||
String name;
|
||||
int access;
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
|
||||
@@ -39,6 +39,8 @@ import net.runelite.asm.Type;
|
||||
import net.runelite.asm.attributes.Annotations;
|
||||
import net.runelite.asm.attributes.annotation.Annotation;
|
||||
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.util.VirtualMethods;
|
||||
import static net.runelite.deob.DeobAnnotations.EXPORT;
|
||||
@@ -97,7 +99,7 @@ public class HookImporter
|
||||
@Ignore
|
||||
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();
|
||||
|
||||
for (HookClass hc : hooks)
|
||||
@@ -107,12 +109,6 @@ public class HookImporter
|
||||
|
||||
assert cf != null;
|
||||
|
||||
if (cf.getAccess() != hc.access)
|
||||
{
|
||||
cf.setAccess(hc.access);
|
||||
++access;
|
||||
}
|
||||
|
||||
String implementsName = getAnnotation(cf.getAnnotations(), IMPLEMENTS);
|
||||
if (implementsName.isEmpty())
|
||||
{
|
||||
@@ -122,23 +118,28 @@ public class HookImporter
|
||||
++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)
|
||||
{
|
||||
if (fh.field.startsWith("__"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
ClassFile cf2 = findClassWithObfuscatedName(fh.owner);
|
||||
assert cf2 != null;
|
||||
|
||||
Field f = findFieldWithObfuscatedName(cf2, fh.name);
|
||||
if (f == null)
|
||||
{
|
||||
logger.warn("Missing field {}", fh); // inlined constant maybe?
|
||||
continue;
|
||||
}
|
||||
|
||||
if (f.getAccessFlags() != fh.access)
|
||||
{
|
||||
f.setAccessFlags(fh.access);
|
||||
++access;
|
||||
}
|
||||
|
||||
String exportedName = getAnnotation(f.getAnnotations(), EXPORT);
|
||||
if (exportedName.isEmpty())
|
||||
{
|
||||
@@ -155,11 +156,20 @@ public class HookImporter
|
||||
mappings.map(f.getPoolField(), deobfuscatedFieldName);
|
||||
++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:
|
||||
for (HookMethod hm : hc.methods)
|
||||
{
|
||||
if (hm.method.startsWith("__"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
ClassFile cf2 = findClassWithObfuscatedName(hm.owner);
|
||||
assert cf2 != null;
|
||||
@@ -171,10 +181,40 @@ public class HookImporter
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m.getAccessFlags() != hm.access)
|
||||
if (hm.parameters != null && !hm.parameters.isEmpty() && m.getParameters().size() >= 1)
|
||||
{
|
||||
m.setAccessFlags(hm.access);
|
||||
++access;
|
||||
List<Parameter> oldParams = m.getParameters();
|
||||
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
|
||||
@@ -184,6 +224,10 @@ public class HookImporter
|
||||
String exportedName = getAnnotation(method.getAnnotations(), EXPORT);
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -198,7 +242,7 @@ public class HookImporter
|
||||
Renamer renamer = new Renamer(mappings);
|
||||
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)
|
||||
@@ -259,8 +303,7 @@ public class HookImporter
|
||||
{
|
||||
for (Element e : a.getElements())
|
||||
{
|
||||
String str = (String) e.getValue();
|
||||
return str;
|
||||
return (String) e.getValue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -270,13 +313,13 @@ public class HookImporter
|
||||
private Signature getObfuscatedMethodSignature(Method method)
|
||||
{
|
||||
String sig = getAnnotation(method.getAnnotations(), OBFUSCATED_SIGNATURE);
|
||||
if (sig.isEmpty() == false)
|
||||
{
|
||||
return new Signature(sig); // if it is annotated, use that
|
||||
}
|
||||
else
|
||||
if (sig.isEmpty())
|
||||
{
|
||||
return method.getDescriptor();
|
||||
}
|
||||
else
|
||||
{
|
||||
return new Signature(sig); // if it is annotated, use that
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
package net.runelite.runesuite;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class HookMethod
|
||||
{
|
||||
String method;
|
||||
String owner;
|
||||
String name;
|
||||
int access;
|
||||
String[] parameters;
|
||||
List<String> parameters;
|
||||
String descriptor;
|
||||
|
||||
@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.Type;
|
||||
import net.runelite.asm.attributes.Annotations;
|
||||
import net.runelite.asm.attributes.Code;
|
||||
import net.runelite.asm.attributes.annotation.Annotation;
|
||||
import net.runelite.asm.attributes.code.Instruction;
|
||||
import net.runelite.asm.attributes.code.InstructionType;
|
||||
@@ -89,9 +90,9 @@ public class InjectHookMethod
|
||||
obfuscatedClassName = DeobAnnotations.getObfuscatedName(cf.getAnnotations());
|
||||
|
||||
// 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";
|
||||
@@ -110,7 +111,12 @@ public class InjectHookMethod
|
||||
|
||||
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()
|
||||
.setReturnType(Type.VOID); // Hooks always return void
|
||||
|
||||
@@ -27,6 +27,33 @@ public class InjectUtil
|
||||
|
||||
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 (Method m : c.getMethods())
|
||||
|
||||
@@ -76,8 +76,8 @@ public class DrawAfterWidgets
|
||||
|
||||
@Export("drawLoggedIn")
|
||||
final void drawLoggedIn() {
|
||||
if(rootWidgetGroup != -1) {
|
||||
ClientPreferences.method1809(rootWidgetGroup);
|
||||
if(rootInterface != -1) {
|
||||
ClientPreferences.method1809(rootInterface);
|
||||
}
|
||||
|
||||
int var1;
|
||||
@@ -94,9 +94,9 @@ public class DrawAfterWidgets
|
||||
__client_lq = -1;
|
||||
__client_ln = -1;
|
||||
UserComparator6.__fg_jh = null;
|
||||
if(rootWidgetGroup != -1) {
|
||||
if(rootInterface != -1) {
|
||||
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
|
||||
|
||||
@@ -36,7 +36,7 @@ public class RenderDraw
|
||||
Stopwatch stopwatch = Stopwatch.createStarted();
|
||||
|
||||
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();
|
||||
replace(ins, renderDraw);
|
||||
@@ -69,7 +69,7 @@ public class RenderDraw
|
||||
}
|
||||
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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
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;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Data;
|
||||
import lombok.Setter;
|
||||
import net.runelite.api.MenuAction;
|
||||
import net.runelite.api.MenuEntry;
|
||||
|
||||
@@ -45,6 +47,13 @@ public class MenuOptionClicked
|
||||
public MenuOptionClicked(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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 IF1_TOOLTIP = 8;
|
||||
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
|
||||
public void onMenuOptionClicked(MenuOptionClicked event)
|
||||
{
|
||||
if (!client.isMenuOpen())
|
||||
if (!client.isMenuOpen() && event.isAuthentic())
|
||||
{
|
||||
rebuildLeftClickMenu();
|
||||
|
||||
|
||||
@@ -445,7 +445,7 @@ public class BoostsPlugin extends Plugin
|
||||
this.displayInfoboxes = config.displayInfoboxes();
|
||||
this.displayIcons = config.displayIcons();
|
||||
this.boldIconFont = config.boldIconFont();
|
||||
this.displayNextBuffChange = config.displayNextDebuffChange();
|
||||
this.displayNextBuffChange = config.displayNextBuffChange();
|
||||
this.displayNextDebuffChange = config.displayNextDebuffChange();
|
||||
this.boostThreshold = config.boostThreshold();
|
||||
this.groupNotifications = config.groupNotifications();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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.events.ConfigChanged;
|
||||
import net.runelite.api.events.FocusChanged;
|
||||
import net.runelite.api.events.GameStateChanged;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
@@ -93,6 +94,10 @@ public class FpsPlugin extends Plugin
|
||||
|
||||
private final ScheduledExecutorService pingExecutorService = new ExecutorServiceExceptionLogger(Executors.newSingleThreadScheduledExecutor());
|
||||
|
||||
private boolean loaded = false;
|
||||
|
||||
private boolean shutdown;
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private FpsLimitMode limitMode;
|
||||
|
||||
@@ -128,6 +133,12 @@ public class FpsPlugin extends Plugin
|
||||
overlay.onFocusChanged(event);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameStateChanged(GameStateChanged event)
|
||||
{
|
||||
shutdown = event.getGameState() != GameState.LOGGED_IN;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void startUp() throws Exception
|
||||
{
|
||||
@@ -137,7 +148,13 @@ public class FpsPlugin extends Plugin
|
||||
overlayManager.add(overlay);
|
||||
drawManager.registerEveryFrameListener(drawListener);
|
||||
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
|
||||
@@ -145,12 +162,12 @@ public class FpsPlugin extends Plugin
|
||||
{
|
||||
overlayManager.remove(overlay);
|
||||
drawManager.unregisterEveryFrameListener(drawListener);
|
||||
pingExecutorService.shutdown();
|
||||
shutdown = true;
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
@@ -1063,14 +1063,19 @@ public class MenuEntrySwapperPlugin extends Plugin
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (option.equals("talk-to"))
|
||||
|
||||
if (option.equals("talk-to") || option.equals("attack"))
|
||||
{
|
||||
if (this.swapPickpocket)
|
||||
{
|
||||
swap(client, "pickpocket", option, target, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (option.equals("talk-to"))
|
||||
{
|
||||
|
||||
if (this.swapHardWoodGrove && target.contains("rionasta"))
|
||||
{
|
||||
swap(client, "send-parcel", option, target, true);
|
||||
|
||||
@@ -142,4 +142,14 @@ public interface MotherlodeConfig extends Config
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
*/
|
||||
package net.runelite.client.plugins.motherlode;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.HashMultiset;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Multiset;
|
||||
@@ -63,6 +64,8 @@ import net.runelite.api.Item;
|
||||
import net.runelite.api.ItemContainer;
|
||||
import net.runelite.api.ItemID;
|
||||
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_26666;
|
||||
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 net.runelite.api.Perspective;
|
||||
import net.runelite.api.Player;
|
||||
import net.runelite.api.ScriptID;
|
||||
import net.runelite.api.Varbits;
|
||||
import net.runelite.api.WallObject;
|
||||
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.GameTick;
|
||||
import net.runelite.api.events.MenuOptionClicked;
|
||||
import net.runelite.api.events.OverheadTextChanged;
|
||||
import net.runelite.api.events.VarbitChanged;
|
||||
import net.runelite.api.events.WallObjectChanged;
|
||||
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.task.Schedule;
|
||||
import net.runelite.client.ui.overlay.OverlayManager;
|
||||
import net.runelite.client.util.Text;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "Motherlode Mine",
|
||||
@@ -212,6 +218,7 @@ public class MotherlodePlugin extends Plugin
|
||||
private boolean notifyOnIdle;
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private boolean showTargetVein;
|
||||
private boolean payDirtMsg;
|
||||
|
||||
@Provides
|
||||
MotherlodeConfig getConfig(ConfigManager configManager)
|
||||
@@ -321,7 +328,7 @@ public class MotherlodePlugin extends Plugin
|
||||
period = 1,
|
||||
unit = ChronoUnit.SECONDS
|
||||
)
|
||||
public void checkMining()
|
||||
void checkMining()
|
||||
{
|
||||
if (!inMlm)
|
||||
{
|
||||
@@ -722,9 +729,6 @@ public class MotherlodePlugin extends Plugin
|
||||
/**
|
||||
* Checks if the given point is "upstairs" in the mlm.
|
||||
* The upper floor is actually on z=0.
|
||||
*
|
||||
* @param localPoint
|
||||
* @return
|
||||
*/
|
||||
boolean isUpstairs(LocalPoint localPoint)
|
||||
{
|
||||
@@ -755,5 +759,38 @@ public class MotherlodePlugin extends Plugin
|
||||
this.showOresFound = config.showOresFound();
|
||||
this.notifyOnIdle = config.notifyOnIdle();
|
||||
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!");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -51,6 +51,7 @@ import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.game.NPCManager;
|
||||
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
|
||||
@@ -58,6 +59,7 @@ import net.runelite.client.ui.overlay.OverlayManager;
|
||||
name = "NPC Status Timer",
|
||||
description = "Adds a timer on NPC's for their attacks and flinching.",
|
||||
tags = {"flinch", "npc"},
|
||||
type = PluginType.PVM,
|
||||
enabledByDefault = false
|
||||
)
|
||||
@Singleton
|
||||
|
||||
@@ -115,4 +115,15 @@ public interface NpcAggroAreaConfig extends Config
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "sendNotification",
|
||||
name = "Send notification",
|
||||
description = "Send a notification when the timer runs out",
|
||||
position = 7
|
||||
)
|
||||
default boolean sendNotification()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,6 +86,10 @@ class NpcAggroAreaOverlay extends Overlay
|
||||
outlineColor.getBlue(),
|
||||
100);
|
||||
}
|
||||
else
|
||||
{
|
||||
plugin.doNotification();
|
||||
}
|
||||
|
||||
renderPath(graphics, lines, outlineColor);
|
||||
return null;
|
||||
|
||||
@@ -27,6 +27,7 @@ package net.runelite.client.plugins.npcunaggroarea;
|
||||
import java.awt.Color;
|
||||
import javax.inject.Singleton;
|
||||
import lombok.AccessLevel;
|
||||
import net.runelite.api.Player;
|
||||
import net.runelite.api.geometry.Geometry;
|
||||
import com.google.common.base.Splitter;
|
||||
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.GameTick;
|
||||
import net.runelite.api.events.NpcSpawned;
|
||||
import net.runelite.client.Notifier;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.game.ItemManager;
|
||||
@@ -116,6 +118,9 @@ public class NpcAggroAreaPlugin extends Plugin
|
||||
@Inject
|
||||
private ConfigManager configManager;
|
||||
|
||||
@Inject
|
||||
private Notifier notifier;
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private final WorldPoint[] safeCenters = new WorldPoint[2];
|
||||
|
||||
@@ -137,12 +142,15 @@ public class NpcAggroAreaPlugin extends Plugin
|
||||
private boolean showNotWorkingOverlay;
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private boolean hideOverlayHint;
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private boolean sendNotification;
|
||||
|
||||
private WorldPoint lastPlayerLocation;
|
||||
private WorldPoint previousUnknownCenter;
|
||||
private boolean loggingIn;
|
||||
private List<String> npcNamePatterns;
|
||||
private boolean notWorkingOverlayShown = false;
|
||||
private boolean hasSentNotification = false;
|
||||
|
||||
@Provides
|
||||
NpcAggroAreaConfig provideConfig(ConfigManager configManager)
|
||||
@@ -259,6 +267,7 @@ public class NpcAggroAreaPlugin extends Plugin
|
||||
BufferedImage image = itemManager.getImage(ItemID.ENSOULED_DEMON_HEAD);
|
||||
currentTimer = new AggressionTimer(duration, image, this, active && this.showTimer);
|
||||
infoBoxManager.addInfoBox(currentTimer);
|
||||
hasSentNotification = false;
|
||||
}
|
||||
|
||||
private void resetTimer()
|
||||
@@ -417,6 +426,9 @@ public class NpcAggroAreaPlugin extends Plugin
|
||||
npcNamePatterns = NAME_SPLITTER.splitToList(this.configNpcNamePatterns);
|
||||
recheckActive();
|
||||
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()
|
||||
{
|
||||
this.alwaysActive = config.alwaysActive();
|
||||
@@ -516,5 +539,6 @@ public class NpcAggroAreaPlugin extends Plugin
|
||||
this.aggroAreaColor = config.aggroAreaColor();
|
||||
this.showNotWorkingOverlay = config.showNotWorkingOverlay();
|
||||
this.hideOverlayHint = config.hideOverlayHint();
|
||||
this.sendNotification = config.sendNotification();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ public class RunepouchOverlay extends WidgetItemOverlay
|
||||
|
||||
assert AMOUNT_VARBITS.length == RUNE_VARBITS.length;
|
||||
|
||||
graphics.setFont(FontManager.getSmallFont(graphics.getFont()));
|
||||
graphics.setFont(FontManager.getRunescapeSmallFont());
|
||||
|
||||
Point location = itemWidget.getCanvasLocation();
|
||||
StringBuilder tooltipBuilder = new StringBuilder();
|
||||
|
||||
@@ -66,7 +66,7 @@ public enum ItemType
|
||||
{
|
||||
return ItemType.AMMO;
|
||||
}
|
||||
if (item.getName().contains("rune"))
|
||||
if (item.getName().toLowerCase().contains("rune"))
|
||||
{
|
||||
return ItemType.RUNE;
|
||||
}
|
||||
|
||||
@@ -401,7 +401,13 @@ public class SuppliesTrackerPlugin extends Plugin
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
39
runelite-client/src/main/scripts/SendPublicMessage.rs2asm
Normal file
39
runelite-client/src/main/scripts/SendPublicMessage.rs2asm
Normal file
@@ -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
|
||||
static void onCameraPitchTargetChanged(int idx)
|
||||
{
|
||||
|
||||
@@ -15,12 +15,12 @@ import net.runelite.api.mixins.Mixin;
|
||||
import net.runelite.api.mixins.Replace;
|
||||
import net.runelite.api.mixins.Shadow;
|
||||
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.RSIndexCache;
|
||||
import net.runelite.rs.api.RSArchive;
|
||||
|
||||
@Mixin(RSAbstractIndexCache.class)
|
||||
public abstract class RSAbstractIndexCacheMixin implements RSAbstractIndexCache
|
||||
@Mixin(RSAbstractArchive.class)
|
||||
public abstract class RSAbstractArchiveMixin implements RSAbstractArchive
|
||||
{
|
||||
@Shadow("client")
|
||||
private static RSClient client;
|
||||
@@ -35,14 +35,14 @@ public abstract class RSAbstractIndexCacheMixin implements RSAbstractIndexCache
|
||||
return overlayOutdated;
|
||||
}
|
||||
|
||||
@Copy("takeRecord")
|
||||
@Copy("takeFile")
|
||||
abstract byte[] rs$getConfigData(int archiveId, int fileId);
|
||||
|
||||
@Replace("takeRecord")
|
||||
@Replace("takeFile")
|
||||
public byte[] rl$getConfigData(int archiveId, int fileId)
|
||||
{
|
||||
byte[] rsData = rs$getConfigData(archiveId, fileId);
|
||||
RSIndexCache indexData = (RSIndexCache) this;
|
||||
RSArchive indexData = (RSArchive) this;
|
||||
|
||||
if (!OverlayIndex.hasOverlay(indexData.getIndex(), archiveId))
|
||||
{
|
||||
@@ -51,7 +51,6 @@ import net.runelite.api.MenuEntry;
|
||||
import net.runelite.api.MessageNode;
|
||||
import net.runelite.api.NPC;
|
||||
import net.runelite.api.Node;
|
||||
import net.runelite.api.PacketBuffer;
|
||||
import static net.runelite.api.Perspective.LOCAL_TILE_SIZE;
|
||||
import net.runelite.api.Player;
|
||||
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.Replace;
|
||||
import net.runelite.api.mixins.Shadow;
|
||||
import net.runelite.rs.api.RSPacketBuffer;
|
||||
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.RSClanChat;
|
||||
import net.runelite.rs.api.RSClient;
|
||||
@@ -1253,9 +1253,16 @@ public abstract class RSClientMixin implements RSClient
|
||||
@Replace("menuAction")
|
||||
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())
|
||||
{
|
||||
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.
|
||||
@@ -1275,7 +1282,8 @@ public abstract class RSClientMixin implements RSClient
|
||||
actionParam,
|
||||
widgetId,
|
||||
false
|
||||
)
|
||||
),
|
||||
authentic
|
||||
);
|
||||
|
||||
client.getCallbacks().post(menuOptionClicked);
|
||||
@@ -1289,6 +1297,13 @@ public abstract class RSClientMixin implements RSClient
|
||||
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")
|
||||
@Inject
|
||||
public static void onUsernameChanged(int idx)
|
||||
@@ -1329,7 +1344,7 @@ public abstract class RSClientMixin implements RSClient
|
||||
|
||||
@Inject
|
||||
@MethodHook("updateNpcs")
|
||||
public static void updateNpcs(boolean var0, PacketBuffer var1)
|
||||
public static void updateNpcs(boolean var0, RSPacketBuffer var1)
|
||||
{
|
||||
client.getCallbacks().updateNpcs();
|
||||
}
|
||||
@@ -1355,13 +1370,13 @@ public abstract class RSClientMixin implements RSClient
|
||||
}
|
||||
|
||||
@Inject
|
||||
@MethodHook("methodDraw")
|
||||
public void methodDraw(boolean var1)
|
||||
@MethodHook("draw")
|
||||
public void draw(boolean var1)
|
||||
{
|
||||
callbacks.clientMainLoop();
|
||||
}
|
||||
|
||||
@MethodHook("drawWidgetGroup")
|
||||
@MethodHook("drawInterface")
|
||||
@Inject
|
||||
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
|
||||
public RSSprite[] getSprites(IndexDataBase source, int archiveId, int fileId)
|
||||
{
|
||||
RSAbstractIndexCache rsSource = (RSAbstractIndexCache) source;
|
||||
RSAbstractArchive rsSource = (RSAbstractArchive) source;
|
||||
byte[] configData = rsSource.getConfigData(archiveId, fileId);
|
||||
if (configData == null)
|
||||
{
|
||||
|
||||
@@ -15,7 +15,7 @@ public abstract class RSHealthBarDefinitionMixin implements RSHealthBarDefinitio
|
||||
@Shadow("client")
|
||||
private static RSClient client;
|
||||
|
||||
@MethodHook(value = "read", end = true)
|
||||
@MethodHook(value = "decode", end = true)
|
||||
@Inject
|
||||
public void onRead(RSBuffer buffer)
|
||||
{
|
||||
|
||||
@@ -44,10 +44,10 @@ public abstract class RSTextureMixin implements RSTexture
|
||||
@Inject
|
||||
private float rl$v;
|
||||
|
||||
@Copy("Texture_animate")
|
||||
@Copy("animate")
|
||||
public abstract void rs$animate(int diff);
|
||||
|
||||
@Replace("Texture_animate")
|
||||
@Replace("animate")
|
||||
public void rl$animate(int diff)
|
||||
{
|
||||
// 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.Mixin;
|
||||
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.RSSprite;
|
||||
|
||||
@@ -35,13 +35,13 @@ public abstract class SpriteMixin implements RSClient
|
||||
}
|
||||
|
||||
@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();
|
||||
}
|
||||
|
||||
@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);
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package net.runelite.rs.api;
|
||||
import net.runelite.api.IndexDataBase;
|
||||
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);
|
||||
}
|
||||
@@ -100,7 +100,7 @@ public interface RSActor extends RSEntity, Actor
|
||||
|
||||
// Idle animation
|
||||
|
||||
@Import("idleSequence")
|
||||
@Import("readySequence")
|
||||
@Override
|
||||
void setIdlePoseAnimation(int animation);
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ package net.runelite.rs.api;
|
||||
|
||||
import net.runelite.mapping.Import;
|
||||
|
||||
public interface RSIndexCache extends RSAbstractIndexCache
|
||||
public interface RSArchive extends RSAbstractArchive
|
||||
{
|
||||
@Import("index")
|
||||
int getIndex();
|
||||
@@ -5,7 +5,7 @@ import net.runelite.mapping.Import;
|
||||
|
||||
public interface RSBuddy extends ChatPlayer, RSUser
|
||||
{
|
||||
@Import("world0")
|
||||
@Import("getWorld")
|
||||
@Override
|
||||
int getWorld();
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ public interface RSClient extends RSGameShell, Client
|
||||
@Override
|
||||
int getFPS();
|
||||
|
||||
@Import("minimapOrientation")
|
||||
@Import("camAngleY")
|
||||
@Override
|
||||
int getMapAngle();
|
||||
|
||||
@@ -187,7 +187,7 @@ public interface RSClient extends RSGameShell, Client
|
||||
@Override
|
||||
void setDraggedOnWidget(Widget widget);
|
||||
|
||||
@Import("widgets")
|
||||
@Import("interfaceComponents")
|
||||
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);
|
||||
|
||||
@Import("menuAction")
|
||||
@Override
|
||||
void invokeMenuAction(int n2, int n3, int n4, int n5, String string, String string2, int n6, int n7);
|
||||
void sendMenuAction(int n2, int n3, int n4, int n5, String string, String string2, int n6, int n7);
|
||||
|
||||
@Import("decodeSprite")
|
||||
void decodeSprite(byte[] data);
|
||||
@@ -441,19 +440,19 @@ public interface RSClient extends RSGameShell, Client
|
||||
@Import("indexedSpritePalette")
|
||||
void setIndexedSpritePalette(int[] indexedSpritePalette);
|
||||
|
||||
@Import("indexCache8")
|
||||
@Import("archive8")
|
||||
@Override
|
||||
RSAbstractIndexCache getIndexSprites();
|
||||
RSAbstractArchive getIndexSprites();
|
||||
|
||||
@Import("indexCache12")
|
||||
@Import("archive12")
|
||||
@Override
|
||||
RSAbstractIndexCache getIndexScripts();
|
||||
RSAbstractArchive getIndexScripts();
|
||||
|
||||
@Import("widgetClickMasks")
|
||||
@Override
|
||||
RSNodeHashTable getWidgetFlags();
|
||||
|
||||
@Import("widgetGroupParents")
|
||||
@Import("interfaceParents")
|
||||
@Override
|
||||
RSNodeHashTable getComponentTable();
|
||||
|
||||
@@ -514,7 +513,7 @@ public interface RSClient extends RSGameShell, Client
|
||||
* Get the widget top group. widgets[topGroup] contains widgets with
|
||||
* parentId -1, which are the widget roots.
|
||||
*/
|
||||
@Import("rootWidgetGroup")
|
||||
@Import("rootInterface")
|
||||
int getWidgetRoot();
|
||||
|
||||
@Import("WorldMapElement_cached")
|
||||
@@ -662,10 +661,10 @@ public interface RSClient extends RSGameShell, Client
|
||||
*
|
||||
* (1) JAU - Jagex Angle Unit; 1/1024 of a revolution
|
||||
*/
|
||||
@Import("cameraPitchTarget")
|
||||
@Import("camAngleX")
|
||||
int getCameraPitchTarget();
|
||||
|
||||
@Import("cameraPitchTarget")
|
||||
@Import("camAngleX")
|
||||
void setCameraPitchTarget(int pitch);
|
||||
|
||||
@Import("Scene_cameraPitchSine")
|
||||
@@ -1015,7 +1014,7 @@ public interface RSClient extends RSGameShell, Client
|
||||
boolean isSpellSelected();
|
||||
|
||||
@Import("readSoundEffect")
|
||||
RSSoundEffect getTrack(RSAbstractIndexCache indexData, int id, int var0);
|
||||
RSSoundEffect getTrack(RSAbstractArchive indexData, int id, int var0);
|
||||
|
||||
@Import("createRawPcmStream")
|
||||
RSRawPcmStream createRawPcmStream(RSRawSound audioNode, int var0, int volume);
|
||||
@@ -1023,8 +1022,8 @@ public interface RSClient extends RSGameShell, Client
|
||||
@Import("pcmStreamMixer")
|
||||
RSPcmStreamMixer getSoundEffectAudioQueue();
|
||||
|
||||
@Import("indexCache4")
|
||||
RSAbstractIndexCache getIndexCache4();
|
||||
@Import("archive4")
|
||||
RSAbstractArchive getIndexCache4();
|
||||
|
||||
@Import("decimator")
|
||||
RSDecimator getSoundEffectResampler();
|
||||
|
||||
@@ -40,7 +40,7 @@ public interface RSEntity extends RSNode, Renderable
|
||||
@Override
|
||||
RSModel getModel();
|
||||
|
||||
@Import("renderDraw")
|
||||
@Import("draw")
|
||||
@Override
|
||||
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
|
||||
int[] getIntVals();
|
||||
|
||||
@Import("stringVals")
|
||||
@Import("strVals")
|
||||
@Override
|
||||
String[] getStringVals();
|
||||
|
||||
@Import("defaultInt")
|
||||
int getDefaultInt();
|
||||
|
||||
@Import("defaultString")
|
||||
@Import("defaultStr")
|
||||
String getDefaultString();
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package net.runelite.rs.api;
|
||||
import net.runelite.api.WidgetNode;
|
||||
import net.runelite.mapping.Import;
|
||||
|
||||
public interface RSWidgetGroupParent extends RSNode, WidgetNode
|
||||
public interface RSInterfaceParent extends RSNode, WidgetNode
|
||||
{
|
||||
@Import("group")
|
||||
@Override
|
||||
@@ -9,7 +9,7 @@ public interface RSNPCDefinition extends NPCDefinition
|
||||
@Override
|
||||
String getName();
|
||||
|
||||
@Import("archives")
|
||||
@Import("models")
|
||||
@Override
|
||||
int[] getModels();
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package net.runelite.rs.api;
|
||||
|
||||
import net.runelite.api.PacketBuffer;
|
||||
|
||||
public interface RSPacketBuffer extends PacketBuffer
|
||||
public interface RSPacketBuffer
|
||||
{
|
||||
}
|
||||
|
||||
@@ -34,6 +34,6 @@ public interface RSScene extends Scene
|
||||
@Import("ySize")
|
||||
int getMaxZ();
|
||||
|
||||
@Import("Scene_minPlane")
|
||||
@Import("minPlane")
|
||||
int getMinLevel();
|
||||
}
|
||||
|
||||
@@ -4,12 +4,12 @@ import net.runelite.mapping.Import;
|
||||
|
||||
public interface RSVarbitDefinition extends RSDualNode
|
||||
{
|
||||
@Import("varp")
|
||||
@Import("baseVar")
|
||||
int getIndex();
|
||||
|
||||
@Import("lowBit")
|
||||
@Import("startBit")
|
||||
int getLeastSignificantBit();
|
||||
|
||||
@Import("highBit")
|
||||
@Import("endBit")
|
||||
int getMostSignificantBit();
|
||||
}
|
||||
|
||||
@@ -312,7 +312,7 @@ public interface RSWidget extends Widget
|
||||
@Override
|
||||
void setHasListener(boolean hasListener);
|
||||
|
||||
@Import("onKeyListener")
|
||||
@Import("onKey")
|
||||
@Override
|
||||
Object[] getOnKeyListener();
|
||||
|
||||
@@ -320,11 +320,11 @@ public interface RSWidget extends Widget
|
||||
@Override
|
||||
Object[] getOnLoadListener();
|
||||
|
||||
@Import("onDialogAbortListener")
|
||||
@Import("onDialogAbort")
|
||||
@Override
|
||||
void setOnDialogAbortListener(Object... args);
|
||||
|
||||
@Import("onKeyListener")
|
||||
@Import("onKey")
|
||||
@Override
|
||||
void setOnKeyListener(Object... args);
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ public interface RSWorldMap extends RenderOverview
|
||||
@Override
|
||||
RSWorldMapManager getWorldMapManager();
|
||||
|
||||
@Import("initializeWorldMap")
|
||||
@Import("initializeWorldMapManager")
|
||||
@Override
|
||||
void initializeWorldMap(WorldMapData var1);
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ import net.runelite.mapping.ObfuscatedName;
|
||||
import net.runelite.mapping.ObfuscatedSignature;
|
||||
|
||||
@ObfuscatedName("ir")
|
||||
@Implements("AbstractIndexCache")
|
||||
public abstract class AbstractIndexCache {
|
||||
@Implements("AbstractArchive")
|
||||
public abstract class AbstractArchive {
|
||||
@ObfuscatedName("qb")
|
||||
@ObfuscatedSignature(
|
||||
signature = "Lco;"
|
||||
@@ -37,53 +37,53 @@ public abstract class AbstractIndexCache {
|
||||
@ObfuscatedSignature(
|
||||
signature = "Lit;"
|
||||
)
|
||||
@Export("indexCache0")
|
||||
static IndexCache indexCache0;
|
||||
@Export("archive0")
|
||||
static Archive archive0;
|
||||
@ObfuscatedName("f")
|
||||
@ObfuscatedGetter(
|
||||
intValue = 1694798923
|
||||
)
|
||||
@Export("archiveCount")
|
||||
int archiveCount;
|
||||
@Export("groupCount")
|
||||
int groupCount;
|
||||
@ObfuscatedName("q")
|
||||
@Export("archiveIds")
|
||||
int[] archiveIds;
|
||||
@Export("groupIds")
|
||||
int[] groupIds;
|
||||
@ObfuscatedName("w")
|
||||
@Export("archiveNameHashes")
|
||||
int[] archiveNameHashes;
|
||||
@Export("groupNameHashes")
|
||||
int[] groupNameHashes;
|
||||
@ObfuscatedName("o")
|
||||
@ObfuscatedSignature(
|
||||
signature = "Llv;"
|
||||
)
|
||||
@Export("archiveNameHashTable")
|
||||
IntHashTable archiveNameHashTable;
|
||||
@Export("groupNameHashTable")
|
||||
IntHashTable groupNameHashTable;
|
||||
@ObfuscatedName("u")
|
||||
@Export("archiveCrcs")
|
||||
int[] archiveCrcs;
|
||||
@Export("groupCrcs")
|
||||
int[] groupCrcs;
|
||||
@ObfuscatedName("g")
|
||||
@Export("archiveVersions")
|
||||
int[] archiveVersions;
|
||||
@Export("groupVersions")
|
||||
int[] groupVersions;
|
||||
@ObfuscatedName("l")
|
||||
@Export("recordCounts")
|
||||
int[] recordCounts;
|
||||
@Export("fileCounts")
|
||||
int[] fileCounts;
|
||||
@ObfuscatedName("e")
|
||||
@Export("recordIds")
|
||||
int[][] recordIds;
|
||||
@Export("fileIds")
|
||||
int[][] fileIds;
|
||||
@ObfuscatedName("x")
|
||||
@Export("recordNameHashes")
|
||||
int[][] recordNameHashes;
|
||||
@Export("fileNameHashes")
|
||||
int[][] fileNameHashes;
|
||||
@ObfuscatedName("d")
|
||||
@ObfuscatedSignature(
|
||||
signature = "[Llv;"
|
||||
)
|
||||
@Export("recordNameHashTables")
|
||||
IntHashTable[] recordNameHashTables;
|
||||
@Export("fileNameHashTables")
|
||||
IntHashTable[] fileNameHashTables;
|
||||
@ObfuscatedName("k")
|
||||
@Export("archives")
|
||||
Object[] archives;
|
||||
@Export("groups")
|
||||
Object[] groups;
|
||||
@ObfuscatedName("n")
|
||||
@Export("records")
|
||||
Object[][] records;
|
||||
@Export("files")
|
||||
Object[][] files;
|
||||
@ObfuscatedName("a")
|
||||
@ObfuscatedGetter(
|
||||
intValue = -530370811
|
||||
@@ -91,15 +91,15 @@ public abstract class AbstractIndexCache {
|
||||
@Export("hash")
|
||||
public int hash;
|
||||
@ObfuscatedName("z")
|
||||
@Export("releaseArchives")
|
||||
boolean releaseArchives;
|
||||
@Export("releaseGroups")
|
||||
boolean releaseGroups;
|
||||
@ObfuscatedName("j")
|
||||
@Export("shallowRecords")
|
||||
boolean shallowRecords;
|
||||
@Export("shallowFiles")
|
||||
boolean shallowFiles;
|
||||
|
||||
AbstractIndexCache(boolean var1, boolean var2) {
|
||||
this.releaseArchives = var1;
|
||||
this.shallowRecords = var2;
|
||||
AbstractArchive(boolean var1, boolean var2) {
|
||||
this.releaseGroups = var1;
|
||||
this.shallowFiles = var2;
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@@ -107,8 +107,8 @@ public abstract class AbstractIndexCache {
|
||||
signature = "([BB)V",
|
||||
garbageValue = "0"
|
||||
)
|
||||
@Export("setIndexReference")
|
||||
void setIndexReference(byte[] var1) {
|
||||
@Export("decodeIndex")
|
||||
void decodeIndex(byte[] var1) {
|
||||
this.hash = WallDecoration.method3257(var1, var1.length);
|
||||
Buffer var2 = new Buffer(Strings.decompressBytes(var1));
|
||||
int var3 = var2.readUnsignedByte();
|
||||
@@ -119,57 +119,57 @@ public abstract class AbstractIndexCache {
|
||||
|
||||
int var4 = var2.readUnsignedByte();
|
||||
if (var3 >= 7) {
|
||||
this.archiveCount = var2.method50();
|
||||
this.groupCount = var2.method50();
|
||||
} else {
|
||||
this.archiveCount = var2.readUnsignedShort();
|
||||
this.groupCount = var2.readUnsignedShort();
|
||||
}
|
||||
|
||||
int var5 = 0;
|
||||
int var6 = -1;
|
||||
this.archiveIds = new int[this.archiveCount];
|
||||
this.groupIds = new int[this.groupCount];
|
||||
int var7;
|
||||
if (var3 >= 7) {
|
||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
||||
this.archiveIds[var7] = var5 += var2.method50();
|
||||
if (this.archiveIds[var7] > var6) {
|
||||
var6 = this.archiveIds[var7];
|
||||
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||
this.groupIds[var7] = var5 += var2.method50();
|
||||
if (this.groupIds[var7] > var6) {
|
||||
var6 = this.groupIds[var7];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
||||
this.archiveIds[var7] = var5 += var2.readUnsignedShort();
|
||||
if (this.archiveIds[var7] > var6) {
|
||||
var6 = this.archiveIds[var7];
|
||||
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||
this.groupIds[var7] = var5 += var2.readUnsignedShort();
|
||||
if (this.groupIds[var7] > var6) {
|
||||
var6 = this.groupIds[var7];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.archiveCrcs = new int[var6 + 1];
|
||||
this.archiveVersions = new int[var6 + 1];
|
||||
this.recordCounts = new int[var6 + 1];
|
||||
this.recordIds = new int[var6 + 1][];
|
||||
this.archives = new Object[var6 + 1];
|
||||
this.records = new Object[var6 + 1][];
|
||||
this.groupCrcs = new int[var6 + 1];
|
||||
this.groupVersions = new int[var6 + 1];
|
||||
this.fileCounts = new int[var6 + 1];
|
||||
this.fileIds = new int[var6 + 1][];
|
||||
this.groups = new Object[var6 + 1];
|
||||
this.files = new Object[var6 + 1][];
|
||||
if (var4 != 0) {
|
||||
this.archiveNameHashes = new int[var6 + 1];
|
||||
this.groupNameHashes = new int[var6 + 1];
|
||||
|
||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
||||
this.archiveNameHashes[this.archiveIds[var7]] = var2.readInt();
|
||||
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||
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) {
|
||||
this.archiveCrcs[this.archiveIds[var7]] = var2.readInt();
|
||||
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||
this.groupCrcs[this.groupIds[var7]] = var2.readInt();
|
||||
}
|
||||
|
||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
||||
this.archiveVersions[this.archiveIds[var7]] = var2.readInt();
|
||||
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||
this.groupVersions[this.groupIds[var7]] = var2.readInt();
|
||||
}
|
||||
|
||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
||||
this.recordCounts[this.archiveIds[var7]] = var2.readUnsignedShort();
|
||||
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||
this.fileCounts[this.groupIds[var7]] = var2.readUnsignedShort();
|
||||
}
|
||||
|
||||
int var8;
|
||||
@@ -178,55 +178,55 @@ public abstract class AbstractIndexCache {
|
||||
int var11;
|
||||
int var12;
|
||||
if (var3 >= 7) {
|
||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
||||
var8 = this.archiveIds[var7];
|
||||
var9 = this.recordCounts[var8];
|
||||
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||
var8 = this.groupIds[var7];
|
||||
var9 = this.fileCounts[var8];
|
||||
var5 = 0;
|
||||
var10 = -1;
|
||||
this.recordIds[var8] = new int[var9];
|
||||
this.fileIds[var8] = new int[var9];
|
||||
|
||||
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) {
|
||||
var10 = var12;
|
||||
}
|
||||
}
|
||||
|
||||
this.records[var8] = new Object[var10 + 1];
|
||||
this.files[var8] = new Object[var10 + 1];
|
||||
}
|
||||
} else {
|
||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
||||
var8 = this.archiveIds[var7];
|
||||
var9 = this.recordCounts[var8];
|
||||
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||
var8 = this.groupIds[var7];
|
||||
var9 = this.fileCounts[var8];
|
||||
var5 = 0;
|
||||
var10 = -1;
|
||||
this.recordIds[var8] = new int[var9];
|
||||
this.fileIds[var8] = new int[var9];
|
||||
|
||||
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) {
|
||||
var10 = var12;
|
||||
}
|
||||
}
|
||||
|
||||
this.records[var8] = new Object[var10 + 1];
|
||||
this.files[var8] = new Object[var10 + 1];
|
||||
}
|
||||
}
|
||||
|
||||
if (var4 != 0) {
|
||||
this.recordNameHashes = new int[var6 + 1][];
|
||||
this.recordNameHashTables = new IntHashTable[var6 + 1];
|
||||
this.fileNameHashes = new int[var6 + 1][];
|
||||
this.fileNameHashTables = new IntHashTable[var6 + 1];
|
||||
|
||||
for (var7 = 0; var7 < this.archiveCount; ++var7) {
|
||||
var8 = this.archiveIds[var7];
|
||||
var9 = this.recordCounts[var8];
|
||||
this.recordNameHashes[var8] = new int[this.records[var8].length];
|
||||
for (var7 = 0; var7 < this.groupCount; ++var7) {
|
||||
var8 = this.groupIds[var7];
|
||||
var9 = this.fileCounts[var8];
|
||||
this.fileNameHashes[var8] = new int[this.files[var8].length];
|
||||
|
||||
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",
|
||||
garbageValue = "1945577069"
|
||||
)
|
||||
@Export("takeRecord")
|
||||
public byte[] takeRecord(int var1, int var2) {
|
||||
return this.takeRecordEncrypted(var1, var2, (int[])null);
|
||||
@Export("takeFile")
|
||||
public byte[] takeFile(int group, int file) {
|
||||
return this.takeFileEncrypted(group, file, (int[])null);
|
||||
}
|
||||
|
||||
@ObfuscatedName("w")
|
||||
@@ -258,23 +258,23 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(II[II)[B",
|
||||
garbageValue = "-1363136655"
|
||||
)
|
||||
@Export("takeRecordEncrypted")
|
||||
public byte[] takeRecordEncrypted(int var1, int var2, int[] var3) {
|
||||
if (var1 >= 0 && var1 < this.records.length && this.records[var1] != null && var2 >= 0 && var2 < this.records[var1].length) {
|
||||
if (this.records[var1][var2] == null) {
|
||||
boolean var4 = this.buildRecords(var1, var3);
|
||||
@Export("takeFileEncrypted")
|
||||
public byte[] takeFileEncrypted(int group, int file, int[] xteaKey) {
|
||||
if (group >= 0 && group < this.files.length && this.files[group] != null && file >= 0 && file < this.files[group].length) {
|
||||
if (this.files[group][file] == null) {
|
||||
boolean var4 = this.buildFiles(group, xteaKey);
|
||||
if (!var4) {
|
||||
this.loadArchive(var1);
|
||||
var4 = this.buildRecords(var1, var3);
|
||||
this.loadGroup(group);
|
||||
var4 = this.buildFiles(group, xteaKey);
|
||||
if (!var4) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
byte[] var5 = TextureProvider.byteArrayFromObject(this.records[var1][var2], false);
|
||||
if (this.shallowRecords) {
|
||||
this.records[var1][var2] = null;
|
||||
byte[] var5 = TextureProvider.byteArrayFromObject(this.files[group][file], false);
|
||||
if (this.shallowFiles) {
|
||||
this.files[group][file] = null;
|
||||
}
|
||||
|
||||
return var5;
|
||||
@@ -288,16 +288,16 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(III)Z",
|
||||
garbageValue = "-1822260214"
|
||||
)
|
||||
@Export("tryLoadRecord")
|
||||
public boolean tryLoadRecord(int var1, int var2) {
|
||||
if (var1 >= 0 && var1 < this.records.length && this.records[var1] != null && var2 >= 0 && var2 < this.records[var1].length) {
|
||||
if (this.records[var1][var2] != null) {
|
||||
@Export("tryLoadFile")
|
||||
public boolean tryLoadFile(int group, int file) {
|
||||
if (group >= 0 && group < this.files.length && this.files[group] != null && file >= 0 && file < this.files[group].length) {
|
||||
if (this.files[group][file] != null) {
|
||||
return true;
|
||||
} else if (this.archives[var1] != null) {
|
||||
} else if (this.groups[group] != null) {
|
||||
return true;
|
||||
} else {
|
||||
this.loadArchive(var1);
|
||||
return this.archives[var1] != null;
|
||||
this.loadGroup(group);
|
||||
return this.groups[group] != null;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
@@ -310,10 +310,10 @@ public abstract class AbstractIndexCache {
|
||||
garbageValue = "-1923759754"
|
||||
)
|
||||
public boolean method1(int var1) {
|
||||
if (this.records.length == 1) {
|
||||
return this.tryLoadRecord(0, var1);
|
||||
} else if (this.records[var1].length == 1) {
|
||||
return this.tryLoadRecord(var1, 0);
|
||||
if (this.files.length == 1) {
|
||||
return this.tryLoadFile(0, var1);
|
||||
} else if (this.files[var1].length == 1) {
|
||||
return this.tryLoadFile(var1, 0);
|
||||
} else {
|
||||
throw new RuntimeException();
|
||||
}
|
||||
@@ -324,13 +324,13 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(II)Z",
|
||||
garbageValue = "-374594123"
|
||||
)
|
||||
@Export("tryLoadArchive")
|
||||
public boolean tryLoadArchive(int var1) {
|
||||
if (this.archives[var1] != null) {
|
||||
@Export("tryLoadGroup")
|
||||
public boolean tryLoadGroup(int group) {
|
||||
if (this.groups[group] != null) {
|
||||
return true;
|
||||
} else {
|
||||
this.loadArchive(var1);
|
||||
return this.archives[var1] != null;
|
||||
this.loadGroup(group);
|
||||
return this.groups[group] != null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -342,11 +342,11 @@ public abstract class AbstractIndexCache {
|
||||
public boolean method2() {
|
||||
boolean var1 = true;
|
||||
|
||||
for (int var2 = 0; var2 < this.archiveIds.length; ++var2) {
|
||||
int var3 = this.archiveIds[var2];
|
||||
if (this.archives[var3] == null) {
|
||||
this.loadArchive(var3);
|
||||
if (this.archives[var3] == null) {
|
||||
for (int var2 = 0; var2 < this.groupIds.length; ++var2) {
|
||||
int var3 = this.groupIds[var2];
|
||||
if (this.groups[var3] == null) {
|
||||
this.loadGroup(var3);
|
||||
if (this.groups[var3] == null) {
|
||||
var1 = false;
|
||||
}
|
||||
}
|
||||
@@ -360,9 +360,9 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(II)I",
|
||||
garbageValue = "-1809769865"
|
||||
)
|
||||
@Export("archiveLoadPercent")
|
||||
int archiveLoadPercent(int var1) {
|
||||
return this.archives[var1] != null ? 100 : 0;
|
||||
@Export("groupLoadPercent")
|
||||
int groupLoadPercent(int var1) {
|
||||
return this.groups[var1] != null ? 100 : 0;
|
||||
}
|
||||
|
||||
@ObfuscatedName("x")
|
||||
@@ -370,12 +370,12 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(IS)[B",
|
||||
garbageValue = "-10015"
|
||||
)
|
||||
@Export("takeRecordFlat")
|
||||
public byte[] takeRecordFlat(int var1) {
|
||||
if (this.records.length == 1) {
|
||||
return this.takeRecord(0, var1);
|
||||
} else if (this.records[var1].length == 1) {
|
||||
return this.takeRecord(var1, 0);
|
||||
@Export("takeFileFlat")
|
||||
public byte[] takeFileFlat(int groupOrFile) {
|
||||
if (this.files.length == 1) {
|
||||
return this.takeFile(0, groupOrFile);
|
||||
} else if (this.files[groupOrFile].length == 1) {
|
||||
return this.takeFile(groupOrFile, 0);
|
||||
} else {
|
||||
throw new RuntimeException();
|
||||
}
|
||||
@@ -386,21 +386,21 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(III)[B",
|
||||
garbageValue = "-755739011"
|
||||
)
|
||||
@Export("getRecord")
|
||||
public byte[] getRecord(int var1, int var2) {
|
||||
if (var1 >= 0 && var1 < this.records.length && this.records[var1] != null && var2 >= 0 && var2 < this.records[var1].length) {
|
||||
if (this.records[var1][var2] == null) {
|
||||
boolean var3 = this.buildRecords(var1, (int[])null);
|
||||
@Export("getFile")
|
||||
public byte[] getFile(int group, int file) {
|
||||
if (group >= 0 && group < this.files.length && this.files[group] != null && file >= 0 && file < this.files[group].length) {
|
||||
if (this.files[group][file] == null) {
|
||||
boolean var3 = this.buildFiles(group, (int[])null);
|
||||
if (!var3) {
|
||||
this.loadArchive(var1);
|
||||
var3 = this.buildRecords(var1, (int[])null);
|
||||
this.loadGroup(group);
|
||||
var3 = this.buildFiles(group, (int[])null);
|
||||
if (!var3) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
byte[] var4 = TextureProvider.byteArrayFromObject(this.records[var1][var2], false);
|
||||
byte[] var4 = TextureProvider.byteArrayFromObject(this.files[group][file], false);
|
||||
return var4;
|
||||
} else {
|
||||
return null;
|
||||
@@ -412,12 +412,12 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(IB)[B",
|
||||
garbageValue = "68"
|
||||
)
|
||||
@Export("getRecordFlat")
|
||||
public byte[] getRecordFlat(int var1) {
|
||||
if (this.records.length == 1) {
|
||||
return this.getRecord(0, var1);
|
||||
} else if (this.records[var1].length == 1) {
|
||||
return this.getRecord(var1, 0);
|
||||
@Export("getFileFlat")
|
||||
public byte[] getFileFlat(int groupOrFile) {
|
||||
if (this.files.length == 1) {
|
||||
return this.getFile(0, groupOrFile);
|
||||
} else if (this.files[groupOrFile].length == 1) {
|
||||
return this.getFile(groupOrFile, 0);
|
||||
} else {
|
||||
throw new RuntimeException();
|
||||
}
|
||||
@@ -428,8 +428,8 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(II)V",
|
||||
garbageValue = "-1829145107"
|
||||
)
|
||||
@Export("loadArchive")
|
||||
void loadArchive(int var1) {
|
||||
@Export("loadGroup")
|
||||
void loadGroup(int group) {
|
||||
}
|
||||
|
||||
@ObfuscatedName("j")
|
||||
@@ -438,7 +438,7 @@ public abstract class AbstractIndexCache {
|
||||
garbageValue = "28"
|
||||
)
|
||||
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")
|
||||
@@ -447,7 +447,7 @@ public abstract class AbstractIndexCache {
|
||||
garbageValue = "1178362496"
|
||||
)
|
||||
public int method4(int var1) {
|
||||
return this.records[var1].length;
|
||||
return this.files[var1].length;
|
||||
}
|
||||
|
||||
@ObfuscatedName("t")
|
||||
@@ -456,7 +456,7 @@ public abstract class AbstractIndexCache {
|
||||
garbageValue = "1702434573"
|
||||
)
|
||||
public int method5() {
|
||||
return this.records.length;
|
||||
return this.files.length;
|
||||
}
|
||||
|
||||
@ObfuscatedName("y")
|
||||
@@ -465,8 +465,8 @@ public abstract class AbstractIndexCache {
|
||||
garbageValue = "38"
|
||||
)
|
||||
public void method6() {
|
||||
for (int var1 = 0; var1 < this.archives.length; ++var1) {
|
||||
this.archives[var1] = null;
|
||||
for (int var1 = 0; var1 < this.groups.length; ++var1) {
|
||||
this.groups[var1] = null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -477,8 +477,8 @@ public abstract class AbstractIndexCache {
|
||||
garbageValue = "330258899"
|
||||
)
|
||||
public void method7(int var1) {
|
||||
for (int var2 = 0; var2 < this.records[var1].length; ++var2) {
|
||||
this.records[var1][var2] = null;
|
||||
for (int var2 = 0; var2 < this.files[var1].length; ++var2) {
|
||||
this.files[var1][var2] = null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -489,10 +489,10 @@ public abstract class AbstractIndexCache {
|
||||
garbageValue = "-709581639"
|
||||
)
|
||||
public void method8() {
|
||||
for (int var1 = 0; var1 < this.records.length; ++var1) {
|
||||
if (this.records[var1] != null) {
|
||||
for (int var2 = 0; var2 < this.records[var1].length; ++var2) {
|
||||
this.records[var1][var2] = null;
|
||||
for (int var1 = 0; var1 < this.files.length; ++var1) {
|
||||
if (this.files[var1] != null) {
|
||||
for (int var2 = 0; var2 < this.files[var1].length; ++var2) {
|
||||
this.files[var1][var2] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -504,14 +504,14 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(I[II)Z",
|
||||
garbageValue = "-1835696874"
|
||||
)
|
||||
@Export("buildRecords")
|
||||
boolean buildRecords(int var1, int[] var2) {
|
||||
if (this.archives[var1] == null) {
|
||||
@Export("buildFiles")
|
||||
boolean buildFiles(int group, int[] xteaKey) {
|
||||
if (this.groups[group] == null) {
|
||||
return false;
|
||||
} else {
|
||||
int var3 = this.recordCounts[var1];
|
||||
int[] var4 = this.recordIds[var1];
|
||||
Object[] var5 = this.records[var1];
|
||||
int var3 = this.fileCounts[group];
|
||||
int[] var4 = this.fileIds[group];
|
||||
Object[] var5 = this.files[group];
|
||||
boolean var6 = true;
|
||||
|
||||
for (int var7 = 0; var7 < var3; ++var7) {
|
||||
@@ -525,17 +525,17 @@ public abstract class AbstractIndexCache {
|
||||
return true;
|
||||
} else {
|
||||
byte[] var18;
|
||||
if (var2 == null || var2[0] == 0 && var2[1] == 0 && var2[2] == 0 && var2[3] == 0) {
|
||||
var18 = TextureProvider.byteArrayFromObject(this.archives[var1], false);
|
||||
if (xteaKey == null || xteaKey[0] == 0 && xteaKey[1] == 0 && xteaKey[2] == 0 && xteaKey[3] == 0) {
|
||||
var18 = TextureProvider.byteArrayFromObject(this.groups[group], false);
|
||||
} else {
|
||||
var18 = TextureProvider.byteArrayFromObject(this.archives[var1], true);
|
||||
var18 = TextureProvider.byteArrayFromObject(this.groups[group], true);
|
||||
Buffer var8 = new Buffer(var18);
|
||||
var8.xteaDecrypt(var2, 5, var8.array.length);
|
||||
var8.xteaDecrypt(xteaKey, 5, var8.array.length);
|
||||
}
|
||||
|
||||
byte[] var19 = Strings.decompressBytes(var18);
|
||||
if (this.releaseArchives) {
|
||||
this.archives[var1] = null;
|
||||
if (this.releaseGroups) {
|
||||
this.groups[group] = null;
|
||||
}
|
||||
|
||||
if (var3 > 1) {
|
||||
@@ -580,13 +580,13 @@ public abstract class AbstractIndexCache {
|
||||
}
|
||||
|
||||
for (var14 = 0; var14 < var3; ++var14) {
|
||||
if (!this.shallowRecords) {
|
||||
if (!this.shallowFiles) {
|
||||
var5[var4[var14]] = Projectile.byteArrayToObject(var20[var14], false);
|
||||
} else {
|
||||
var5[var4[var14]] = var20[var14];
|
||||
}
|
||||
}
|
||||
} else if (!this.shallowRecords) {
|
||||
} else if (!this.shallowFiles) {
|
||||
var5[var4[0]] = Projectile.byteArrayToObject(var19, false);
|
||||
} else {
|
||||
var5[var4[0]] = var19;
|
||||
@@ -602,10 +602,10 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(Ljava/lang/String;I)I",
|
||||
garbageValue = "-224510300"
|
||||
)
|
||||
@Export("getArchiveId")
|
||||
public int getArchiveId(String var1) {
|
||||
var1 = var1.toLowerCase();
|
||||
return this.archiveNameHashTable.get(Client.hashString(var1));
|
||||
@Export("getGroupId")
|
||||
public int getGroupId(String groupName) {
|
||||
groupName = groupName.toLowerCase();
|
||||
return this.groupNameHashTable.get(Client.hashString(groupName));
|
||||
}
|
||||
|
||||
@ObfuscatedName("v")
|
||||
@@ -613,10 +613,10 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(ILjava/lang/String;I)I",
|
||||
garbageValue = "-443631072"
|
||||
)
|
||||
@Export("getRecordId")
|
||||
public int getRecordId(int var1, String var2) {
|
||||
var2 = var2.toLowerCase();
|
||||
return this.recordNameHashTables[var1].get(Client.hashString(var2));
|
||||
@Export("getFileId")
|
||||
public int getFileId(int group, String fileName) {
|
||||
fileName = fileName.toLowerCase();
|
||||
return this.fileNameHashTables[group].get(Client.hashString(fileName));
|
||||
}
|
||||
|
||||
@ObfuscatedName("ag")
|
||||
@@ -627,11 +627,11 @@ public abstract class AbstractIndexCache {
|
||||
public boolean method9(String var1, String var2) {
|
||||
var1 = var1.toLowerCase();
|
||||
var2 = var2.toLowerCase();
|
||||
int var3 = this.archiveNameHashTable.get(Client.hashString(var1));
|
||||
int var3 = this.groupNameHashTable.get(Client.hashString(var1));
|
||||
if (var3 < 0) {
|
||||
return false;
|
||||
} else {
|
||||
int var4 = this.recordNameHashTables[var3].get(Client.hashString(var2));
|
||||
int var4 = this.fileNameHashTables[var3].get(Client.hashString(var2));
|
||||
return var4 >= 0;
|
||||
}
|
||||
}
|
||||
@@ -641,13 +641,13 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(Ljava/lang/String;Ljava/lang/String;S)[B",
|
||||
garbageValue = "-22726"
|
||||
)
|
||||
@Export("takeRecordByNames")
|
||||
public byte[] takeRecordByNames(String var1, String var2) {
|
||||
var1 = var1.toLowerCase();
|
||||
var2 = var2.toLowerCase();
|
||||
int var3 = this.archiveNameHashTable.get(Client.hashString(var1));
|
||||
int var4 = this.recordNameHashTables[var3].get(Client.hashString(var2));
|
||||
return this.takeRecord(var3, var4);
|
||||
@Export("takeFileByNames")
|
||||
public byte[] takeFileByNames(String groupName, String fileName) {
|
||||
groupName = groupName.toLowerCase();
|
||||
fileName = fileName.toLowerCase();
|
||||
int var3 = this.groupNameHashTable.get(Client.hashString(groupName));
|
||||
int var4 = this.fileNameHashTables[var3].get(Client.hashString(fileName));
|
||||
return this.takeFile(var3, var4);
|
||||
}
|
||||
|
||||
@ObfuscatedName("aj")
|
||||
@@ -655,13 +655,13 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(Ljava/lang/String;Ljava/lang/String;I)Z",
|
||||
garbageValue = "2140743930"
|
||||
)
|
||||
@Export("tryLoadRecordByNames")
|
||||
public boolean tryLoadRecordByNames(String var1, String var2) {
|
||||
var1 = var1.toLowerCase();
|
||||
var2 = var2.toLowerCase();
|
||||
int var3 = this.archiveNameHashTable.get(Client.hashString(var1));
|
||||
int var4 = this.recordNameHashTables[var3].get(Client.hashString(var2));
|
||||
return this.tryLoadRecord(var3, var4);
|
||||
@Export("tryLoadFileByNames")
|
||||
public boolean tryLoadFileByNames(String groupName, String fileName) {
|
||||
groupName = groupName.toLowerCase();
|
||||
fileName = fileName.toLowerCase();
|
||||
int var3 = this.groupNameHashTable.get(Client.hashString(groupName));
|
||||
int var4 = this.fileNameHashTables[var3].get(Client.hashString(fileName));
|
||||
return this.tryLoadFile(var3, var4);
|
||||
}
|
||||
|
||||
@ObfuscatedName("av")
|
||||
@@ -669,11 +669,11 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(Ljava/lang/String;I)Z",
|
||||
garbageValue = "-1282569336"
|
||||
)
|
||||
@Export("tryLoadArchiveByName")
|
||||
public boolean tryLoadArchiveByName(String var1) {
|
||||
var1 = var1.toLowerCase();
|
||||
int var2 = this.archiveNameHashTable.get(Client.hashString(var1));
|
||||
return this.tryLoadArchive(var2);
|
||||
@Export("tryLoadGroupByName")
|
||||
public boolean tryLoadGroupByName(String groupName) {
|
||||
groupName = groupName.toLowerCase();
|
||||
int var2 = this.groupNameHashTable.get(Client.hashString(groupName));
|
||||
return this.tryLoadGroup(var2);
|
||||
}
|
||||
|
||||
@ObfuscatedName("ar")
|
||||
@@ -683,7 +683,7 @@ public abstract class AbstractIndexCache {
|
||||
)
|
||||
public void method10(String var1) {
|
||||
var1 = var1.toLowerCase();
|
||||
int var2 = this.archiveNameHashTable.get(Client.hashString(var1));
|
||||
int var2 = this.groupNameHashTable.get(Client.hashString(var1));
|
||||
if (var2 >= 0) {
|
||||
this.vmethod129(var2);
|
||||
}
|
||||
@@ -695,11 +695,11 @@ public abstract class AbstractIndexCache {
|
||||
signature = "(Ljava/lang/String;I)I",
|
||||
garbageValue = "-1645224643"
|
||||
)
|
||||
@Export("archiveLoadPercentByName")
|
||||
public int archiveLoadPercentByName(String var1) {
|
||||
var1 = var1.toLowerCase();
|
||||
int var2 = this.archiveNameHashTable.get(Client.hashString(var1));
|
||||
return this.archiveLoadPercent(var2);
|
||||
@Export("groupLoadPercentByName")
|
||||
public int groupLoadPercentByName(String groupName) {
|
||||
groupName = groupName.toLowerCase();
|
||||
int var2 = this.groupNameHashTable.get(Client.hashString(groupName));
|
||||
return this.groupLoadPercent(var2);
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@@ -708,28 +708,28 @@ public abstract class AbstractIndexCache {
|
||||
garbageValue = "15597880"
|
||||
)
|
||||
@Export("readStringIntParameters")
|
||||
static final IterableNodeHashTable readStringIntParameters(Buffer var0, IterableNodeHashTable var1) {
|
||||
int var2 = var0.readUnsignedByte();
|
||||
static final IterableNodeHashTable readStringIntParameters(Buffer buffer, IterableNodeHashTable hashTable) {
|
||||
int var2 = buffer.readUnsignedByte();
|
||||
int var3;
|
||||
if (var1 == null) {
|
||||
if (hashTable == null) {
|
||||
var3 = World.method1759(var2);
|
||||
var1 = new IterableNodeHashTable(var3);
|
||||
hashTable = new IterableNodeHashTable(var3);
|
||||
}
|
||||
|
||||
for (var3 = 0; var3 < var2; ++var3) {
|
||||
boolean var4 = var0.readUnsignedByte() == 1;
|
||||
int var5 = var0.readMedium();
|
||||
boolean var4 = buffer.readUnsignedByte() == 1;
|
||||
int var5 = buffer.readMedium();
|
||||
Object var6;
|
||||
if (var4) {
|
||||
var6 = new ObjectNode(var0.readStringCp1252NullTerminated());
|
||||
var6 = new ObjectNode(buffer.readStringCp1252NullTerminated());
|
||||
} 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")
|
||||
@@ -738,8 +738,8 @@ public abstract class AbstractIndexCache {
|
||||
garbageValue = "-4702"
|
||||
)
|
||||
@Export("runScript")
|
||||
public static void runScript(ScriptEvent var0) {
|
||||
GrandExchangeEvent.runScript0(var0, 500000);
|
||||
public static void runScript(ScriptEvent scriptEvent) {
|
||||
GrandExchangeEvent.runScript0(scriptEvent, 500000);
|
||||
}
|
||||
|
||||
@ObfuscatedName("eg")
|
||||
@@ -748,14 +748,14 @@ public abstract class AbstractIndexCache {
|
||||
garbageValue = "308670894"
|
||||
)
|
||||
static boolean method4585() {
|
||||
if (Client.indexCacheLoaders != null && Client.indexCacheLoaderIndex < Client.indexCacheLoaders.size()) {
|
||||
while (Client.indexCacheLoaderIndex < Client.indexCacheLoaders.size()) {
|
||||
IndexCacheLoader var0 = (IndexCacheLoader)Client.indexCacheLoaders.get(Client.indexCacheLoaderIndex);
|
||||
if (Client.archiveLoaders != null && Client.archiveLoaderArchive < Client.archiveLoaders.size()) {
|
||||
while (Client.archiveLoaderArchive < Client.archiveLoaders.size()) {
|
||||
ArchiveLoader var0 = (ArchiveLoader)Client.archiveLoaders.get(Client.archiveLoaderArchive);
|
||||
if (!var0.method134()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
++Client.indexCacheLoaderIndex;
|
||||
++Client.archiveLoaderArchive;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -13,7 +13,7 @@ public abstract class AbstractByteArrayCopier {
|
||||
@ObfuscatedSignature(
|
||||
signature = "Lit;"
|
||||
)
|
||||
static IndexCache field0;
|
||||
static Archive field0;
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@ObfuscatedSignature(
|
||||
@@ -29,7 +29,7 @@ public abstract class AbstractByteArrayCopier {
|
||||
garbageValue = "-2034091753"
|
||||
)
|
||||
@Export("set")
|
||||
abstract void set(byte[] var1);
|
||||
abstract void set(byte[] array);
|
||||
|
||||
@ObfuscatedName("f")
|
||||
@ObfuscatedSignature(
|
||||
@@ -42,7 +42,7 @@ public abstract class AbstractByteArrayCopier {
|
||||
if (var1 != null) {
|
||||
return var1;
|
||||
} else {
|
||||
byte[] var2 = VarcInt.field942.takeRecord(19, var0);
|
||||
byte[] var2 = VarcInt.field942.takeFile(19, var0);
|
||||
var1 = new VarcInt();
|
||||
if (var2 != null) {
|
||||
var1.method354(new Buffer(var2));
|
||||
@@ -58,17 +58,17 @@ public abstract class AbstractByteArrayCopier {
|
||||
signature = "(II)V",
|
||||
garbageValue = "-1941491045"
|
||||
)
|
||||
@Export("unloadWidgetGroup")
|
||||
public static void unloadWidgetGroup(int var0) {
|
||||
if (var0 != -1 && Widget.loadedWidgetGroups[var0]) {
|
||||
Widget.Widget_indexCache.method7(var0);
|
||||
if (Widget.widgets[var0] != null) {
|
||||
@Export("unloadInterface")
|
||||
public static void unloadInterface(int var0) {
|
||||
if (var0 != -1 && Widget.loadedInterfaces[var0]) {
|
||||
Widget.Widget_archive.method7(var0);
|
||||
if (Widget.interfaceComponents[var0] != null) {
|
||||
boolean var1 = true;
|
||||
|
||||
for (int var2 = 0; var2 < Widget.widgets[var0].length; ++var2) {
|
||||
if (Widget.widgets[var0][var2] != null) {
|
||||
if (Widget.widgets[var0][var2].type != 2) {
|
||||
Widget.widgets[var0][var2] = null;
|
||||
for (int var2 = 0; var2 < Widget.interfaceComponents[var0].length; ++var2) {
|
||||
if (Widget.interfaceComponents[var0][var2] != null) {
|
||||
if (Widget.interfaceComponents[var0][var2].type != 2) {
|
||||
Widget.interfaceComponents[var0][var2] = null;
|
||||
} else {
|
||||
var1 = false;
|
||||
}
|
||||
@@ -76,10 +76,10 @@ public abstract class AbstractByteArrayCopier {
|
||||
}
|
||||
|
||||
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() {
|
||||
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(Huffman.canvasHeight);
|
||||
Client.packetWriter.method241(var0);
|
||||
|
||||
@@ -111,28 +111,28 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@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")
|
||||
@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")
|
||||
@Export("readMetrics")
|
||||
void readMetrics(byte[] var1) {
|
||||
void readMetrics(byte[] bytes) {
|
||||
this.advances = new int[256];
|
||||
int var2;
|
||||
if (var1.length == 257) {
|
||||
if (bytes.length == 257) {
|
||||
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 {
|
||||
var2 = 0;
|
||||
|
||||
for (int var3 = 0; var3 < 256; ++var3) {
|
||||
this.advances[var3] = var1[var2++] & 255;
|
||||
this.advances[var3] = bytes[var2++] & 255;
|
||||
}
|
||||
|
||||
int[] var12 = new int[256];
|
||||
@@ -140,11 +140,11 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
int var5;
|
||||
for (var5 = 0; var5 < 256; ++var5) {
|
||||
var12[var5] = var1[var2++] & 255;
|
||||
var12[var5] = bytes[var2++] & 255;
|
||||
}
|
||||
|
||||
for (var5 = 0; var5 < 256; ++var5) {
|
||||
var4[var5] = var1[var2++] & 255;
|
||||
var4[var5] = bytes[var2++] & 255;
|
||||
}
|
||||
|
||||
byte[][] var6 = new byte[256][];
|
||||
@@ -155,7 +155,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
byte var9 = 0;
|
||||
|
||||
for (var7 = 0; var7 < var6[var8].length; ++var7) {
|
||||
var9 += var1[var2++];
|
||||
var9 += bytes[var2++];
|
||||
var6[var8][var7] = var9;
|
||||
}
|
||||
}
|
||||
@@ -168,7 +168,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
byte var10 = 0;
|
||||
|
||||
for (int var11 = 0; var11 < var13[var14].length; ++var11) {
|
||||
var10 += var1[var2++];
|
||||
var10 += bytes[var2++];
|
||||
var13[var14][var11] = var10;
|
||||
}
|
||||
}
|
||||
@@ -258,7 +258,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
@ObfuscatedName("a")
|
||||
@Export("breakLines")
|
||||
public int breakLines(String var1, int[] var2, String[] var3) {
|
||||
public int breakLines(String var1, int[] lineWidths, String[] linesDst) {
|
||||
if (var1 == null) {
|
||||
return 0;
|
||||
} else {
|
||||
@@ -285,7 +285,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
var6.append(var16);
|
||||
var6.append('>');
|
||||
if (var16.equals("br")) {
|
||||
var3[var12] = var6.toString().substring(var5, var6.length());
|
||||
linesDst[var12] = var6.toString().substring(var5, var6.length());
|
||||
++var12;
|
||||
var5 = var6.length();
|
||||
var4 = 0;
|
||||
@@ -334,8 +334,8 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
var9 = 1;
|
||||
}
|
||||
|
||||
if (var2 != null && var4 > var2[var12 < var2.length ? var12 : var2.length - 1] && var7 >= 0) {
|
||||
var3[var12] = var6.toString().substring(var5, var7 - var9);
|
||||
if (lineWidths != null && var4 > lineWidths[var12 < lineWidths.length ? var12 : lineWidths.length - 1] && var7 >= 0) {
|
||||
linesDst[var12] = var6.toString().substring(var5, var7 - var9);
|
||||
++var12;
|
||||
var5 = var7;
|
||||
var7 = -1;
|
||||
@@ -354,7 +354,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
String var19 = var6.toString();
|
||||
if (var19.length() > var5) {
|
||||
var3[var12++] = var19.substring(var5, var19.length());
|
||||
linesDst[var12++] = var19.substring(var5, var19.length());
|
||||
}
|
||||
|
||||
return var12;
|
||||
@@ -363,8 +363,8 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
@ObfuscatedName("z")
|
||||
@Export("lineWidth")
|
||||
public int lineWidth(String var1, int var2) {
|
||||
int var3 = this.breakLines(var1, new int[]{var2}, AbstractFont_lines);
|
||||
public int lineWidth(String var1, int lineWidth) {
|
||||
int var3 = this.breakLines(var1, new int[]{lineWidth}, AbstractFont_lines);
|
||||
int var4 = 0;
|
||||
|
||||
for (int var5 = 0; var5 < var3; ++var5) {
|
||||
@@ -379,106 +379,106 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
@ObfuscatedName("j")
|
||||
@Export("lineCount")
|
||||
public int lineCount(String var1, int var2) {
|
||||
return this.breakLines(var1, new int[]{var2}, AbstractFont_lines);
|
||||
public int lineCount(String var1, int lineWidth) {
|
||||
return this.breakLines(var1, new int[]{lineWidth}, AbstractFont_lines);
|
||||
}
|
||||
|
||||
@ObfuscatedName("t")
|
||||
@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) {
|
||||
this.reset(var4, var5);
|
||||
this.draw0(var1, var2, var3);
|
||||
this.reset(color, shadow);
|
||||
this.draw0(var1, x, y);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("y")
|
||||
@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) {
|
||||
this.reset(var4, var5);
|
||||
AbstractFont_alpha = var6;
|
||||
this.draw0(var1, var2, var3);
|
||||
this.reset(color, shadow);
|
||||
AbstractFont_alpha = alpha;
|
||||
this.draw0(var1, x, y);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("h")
|
||||
@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) {
|
||||
this.reset(var4, var5);
|
||||
this.draw0(var1, var2 - this.stringWidth(var1), var3);
|
||||
this.reset(color, shadow);
|
||||
this.draw0(var1, x - this.stringWidth(var1), y);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("b")
|
||||
@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) {
|
||||
this.reset(var4, var5);
|
||||
this.draw0(var1, var2 - this.stringWidth(var1) / 2, var3);
|
||||
this.reset(color, shadow);
|
||||
this.draw0(var1, x - this.stringWidth(var1) / 2, y);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("c")
|
||||
@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) {
|
||||
return 0;
|
||||
} else {
|
||||
this.reset(var6, var7);
|
||||
if (var10 == 0) {
|
||||
var10 = this.ascent;
|
||||
this.reset(color, shadow);
|
||||
if (lineHeight == 0) {
|
||||
lineHeight = this.ascent;
|
||||
}
|
||||
|
||||
int[] var11 = new int[]{var4};
|
||||
if (var5 < var10 + this.maxAscent + this.maxDescent && var5 < var10 + var10) {
|
||||
int[] var11 = new int[]{width};
|
||||
if (height < lineHeight + this.maxAscent + this.maxDescent && height < lineHeight + lineHeight) {
|
||||
var11 = null;
|
||||
}
|
||||
|
||||
int var12 = this.breakLines(var1, var11, AbstractFont_lines);
|
||||
if (var9 == 3 && var12 == 1) {
|
||||
var9 = 1;
|
||||
if (yAlignment == 3 && var12 == 1) {
|
||||
yAlignment = 1;
|
||||
}
|
||||
|
||||
int var13;
|
||||
int var14;
|
||||
if (var9 == 0) {
|
||||
var13 = var3 + this.maxAscent;
|
||||
} else if (var9 == 1) {
|
||||
var13 = var3 + (var5 - this.maxAscent - this.maxDescent - var10 * (var12 - 1)) / 2 + this.maxAscent;
|
||||
} else if (var9 == 2) {
|
||||
var13 = var3 + var5 - this.maxDescent - var10 * (var12 - 1);
|
||||
if (yAlignment == 0) {
|
||||
var13 = y + this.maxAscent;
|
||||
} else if (yAlignment == 1) {
|
||||
var13 = y + (height - this.maxAscent - this.maxDescent - lineHeight * (var12 - 1)) / 2 + this.maxAscent;
|
||||
} else if (yAlignment == 2) {
|
||||
var13 = y + height - this.maxDescent - lineHeight * (var12 - 1);
|
||||
} 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) {
|
||||
var14 = 0;
|
||||
}
|
||||
|
||||
var13 = var3 + var14 + this.maxAscent;
|
||||
var10 += var14;
|
||||
var13 = y + var14 + this.maxAscent;
|
||||
lineHeight += var14;
|
||||
}
|
||||
|
||||
for (var14 = 0; var14 < var12; ++var14) {
|
||||
if (var8 == 0) {
|
||||
this.draw0(AbstractFont_lines[var14], var2, var13);
|
||||
} else if (var8 == 1) {
|
||||
this.draw0(AbstractFont_lines[var14], var2 + (var4 - this.stringWidth(AbstractFont_lines[var14])) / 2, var13);
|
||||
} else if (var8 == 2) {
|
||||
this.draw0(AbstractFont_lines[var14], var2 + var4 - this.stringWidth(AbstractFont_lines[var14]), var13);
|
||||
if (xAlignment == 0) {
|
||||
this.draw0(AbstractFont_lines[var14], x, var13);
|
||||
} else if (xAlignment == 1) {
|
||||
this.draw0(AbstractFont_lines[var14], x + (width - this.stringWidth(AbstractFont_lines[var14])) / 2, var13);
|
||||
} else if (xAlignment == 2) {
|
||||
this.draw0(AbstractFont_lines[var14], x + width - this.stringWidth(AbstractFont_lines[var14]), var13);
|
||||
} else if (var14 == var12 - 1) {
|
||||
this.draw0(AbstractFont_lines[var14], var2, var13);
|
||||
this.draw0(AbstractFont_lines[var14], x, var13);
|
||||
} else {
|
||||
this.calculateLineJustification(AbstractFont_lines[var14], var4);
|
||||
this.draw0(AbstractFont_lines[var14], var2, var13);
|
||||
this.calculateLineJustification(AbstractFont_lines[var14], width);
|
||||
this.draw0(AbstractFont_lines[var14], x, var13);
|
||||
AbstractFont_justificationTotal = 0;
|
||||
}
|
||||
|
||||
var13 += var10;
|
||||
var13 += lineHeight;
|
||||
}
|
||||
|
||||
return var12;
|
||||
@@ -487,44 +487,44 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
@ObfuscatedName("p")
|
||||
@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) {
|
||||
this.reset(var4, var5);
|
||||
this.reset(color, shadow);
|
||||
int[] var7 = new int[var1.length()];
|
||||
|
||||
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")
|
||||
@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) {
|
||||
this.reset(var4, var5);
|
||||
this.reset(color, shadow);
|
||||
int[] var7 = new int[var1.length()];
|
||||
int[] var8 = new int[var1.length()];
|
||||
|
||||
for (int var9 = 0; var9 < var1.length(); ++var9) {
|
||||
var7[var9] = (int)(Math.sin((double)var9 / 5.0D + (double)var6 / 5.0D) * 5.0D);
|
||||
var8[var9] = (int)(Math.sin((double)var9 / 3.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)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")
|
||||
@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) {
|
||||
this.reset(var4, var5);
|
||||
double var8 = 7.0D - (double)var7 / 8.0D;
|
||||
this.reset(color, shadow);
|
||||
double var8 = 7.0D - (double)seed2 / 8.0D;
|
||||
if (var8 < 0.0D) {
|
||||
var8 = 0.0D;
|
||||
}
|
||||
@@ -532,20 +532,20 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
int[] var10 = new int[var1.length()];
|
||||
|
||||
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")
|
||||
@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) {
|
||||
this.reset(var4, var5);
|
||||
AbstractFont_random.setSeed((long)var6);
|
||||
this.reset(color, shadow);
|
||||
AbstractFont_random.setSeed((long)seed);
|
||||
AbstractFont_alpha = 192 + (AbstractFont_random.nextInt() & 31);
|
||||
int[] var7 = new int[var1.length()];
|
||||
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")
|
||||
@Export("reset")
|
||||
void reset(int var1, int var2) {
|
||||
void reset(int color, int shadow) {
|
||||
AbstractFont_strike = -1;
|
||||
AbstractFont_underline = -1;
|
||||
AbstractFont_previousShadow = var2;
|
||||
AbstractFont_shadow = var2;
|
||||
AbstractFont_previousColor = var1;
|
||||
AbstractFont_color = var1;
|
||||
AbstractFont_previousShadow = shadow;
|
||||
AbstractFont_shadow = shadow;
|
||||
AbstractFont_previousColor = color;
|
||||
AbstractFont_color = color;
|
||||
AbstractFont_alpha = 256;
|
||||
AbstractFont_justificationTotal = 0;
|
||||
AbstractFont_justificationCurrent = 0;
|
||||
@@ -612,7 +612,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
@ObfuscatedName("ar")
|
||||
@Export("calculateLineJustification")
|
||||
void calculateLineJustification(String var1, int var2) {
|
||||
void calculateLineJustification(String var1, int lineWidth) {
|
||||
int var3 = 0;
|
||||
boolean var4 = false;
|
||||
|
||||
@@ -628,15 +628,15 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
}
|
||||
|
||||
if (var3 > 0) {
|
||||
AbstractFont_justificationTotal = (var2 - this.stringWidth(var1) << 8) / var3;
|
||||
AbstractFont_justificationTotal = (lineWidth - this.stringWidth(var1) << 8) / var3;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("ac")
|
||||
@Export("draw0")
|
||||
void draw0(String var1, int var2, int var3) {
|
||||
var3 -= this.ascent;
|
||||
void draw0(String var1, int x, int y) {
|
||||
y -= this.ascent;
|
||||
int var4 = -1;
|
||||
int var5 = -1;
|
||||
|
||||
@@ -658,8 +658,8 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
try {
|
||||
var8 = MouseHandler.method1085(var9.substring(4));
|
||||
IndexedSprite var13 = AbstractFont_modIconSprites[var8];
|
||||
var13.drawAt(var2, var3 + this.ascent - var13.height);
|
||||
var2 += var13.width;
|
||||
var13.drawAt(x, y + this.ascent - var13.height);
|
||||
x += var13.width;
|
||||
var5 = -1;
|
||||
} catch (Exception var11) {
|
||||
}
|
||||
@@ -679,7 +679,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
if (var4 == -1) {
|
||||
if (this.kerning != null && var5 != -1) {
|
||||
var2 += this.kerning[var7 + (var5 << 8)];
|
||||
x += this.kerning[var7 + (var5 << 8)];
|
||||
}
|
||||
|
||||
int var12 = this.widths[var7];
|
||||
@@ -687,33 +687,33 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
if (var7 != ' ') {
|
||||
if (AbstractFont_alpha == 256) {
|
||||
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 {
|
||||
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) {
|
||||
AbstractFont_justificationCurrent += AbstractFont_justificationTotal;
|
||||
var2 += AbstractFont_justificationCurrent >> 8;
|
||||
x += AbstractFont_justificationCurrent >> 8;
|
||||
AbstractFont_justificationCurrent &= 255;
|
||||
}
|
||||
|
||||
int var10 = this.advances[var7];
|
||||
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) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -724,8 +724,8 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
@ObfuscatedName("ay")
|
||||
@Export("drawWithOffsets0")
|
||||
void drawWithOffsets0(String var1, int var2, int var3, int[] var4, int[] var5) {
|
||||
var3 -= this.ascent;
|
||||
void drawWithOffsets0(String var1, int x, int y, int[] xs, int[] ys) {
|
||||
y -= this.ascent;
|
||||
int var6 = -1;
|
||||
int var7 = -1;
|
||||
int var8 = 0;
|
||||
@@ -748,14 +748,14 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
if (!var14.equals("gt")) {
|
||||
if (var14.startsWith("img=")) {
|
||||
try {
|
||||
if (var4 != null) {
|
||||
var11 = var4[var8];
|
||||
if (xs != null) {
|
||||
var11 = xs[var8];
|
||||
} else {
|
||||
var11 = 0;
|
||||
}
|
||||
|
||||
if (var5 != null) {
|
||||
var12 = var5[var8];
|
||||
if (ys != null) {
|
||||
var12 = ys[var8];
|
||||
} else {
|
||||
var12 = 0;
|
||||
}
|
||||
@@ -763,8 +763,8 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
++var8;
|
||||
var13 = MouseHandler.method1085(var14.substring(4));
|
||||
IndexedSprite var18 = AbstractFont_modIconSprites[var13];
|
||||
var18.drawAt(var11 + var2, var12 + (var3 + this.ascent - var18.height));
|
||||
var2 += var18.width;
|
||||
var18.drawAt(var11 + x, var12 + (y + this.ascent - var18.height));
|
||||
x += var18.width;
|
||||
var7 = -1;
|
||||
} catch (Exception var16) {
|
||||
}
|
||||
@@ -784,19 +784,19 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
if (var6 == -1) {
|
||||
if (this.kerning != null && var7 != -1) {
|
||||
var2 += this.kerning[var10 + (var7 << 8)];
|
||||
x += this.kerning[var10 + (var7 << 8)];
|
||||
}
|
||||
|
||||
int var17 = this.widths[var10];
|
||||
var11 = this.heights[var10];
|
||||
if (var4 != null) {
|
||||
var12 = var4[var8];
|
||||
if (xs != null) {
|
||||
var12 = xs[var8];
|
||||
} else {
|
||||
var12 = 0;
|
||||
}
|
||||
|
||||
if (var5 != null) {
|
||||
var13 = var5[var8];
|
||||
if (ys != null) {
|
||||
var13 = ys[var8];
|
||||
} else {
|
||||
var13 = 0;
|
||||
}
|
||||
@@ -805,33 +805,33 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
if (var10 != ' ') {
|
||||
if (AbstractFont_alpha == 256) {
|
||||
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 {
|
||||
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) {
|
||||
AbstractFont_justificationCurrent += AbstractFont_justificationTotal;
|
||||
var2 += AbstractFont_justificationCurrent >> 8;
|
||||
x += AbstractFont_justificationCurrent >> 8;
|
||||
AbstractFont_justificationCurrent &= 255;
|
||||
}
|
||||
|
||||
int var15 = this.advances[var10];
|
||||
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) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -907,43 +907,43 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
@ObfuscatedName("ah")
|
||||
@Export("AbstractFont_drawGlyph")
|
||||
static void AbstractFont_drawGlyph(byte[] var0, int var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var1 + var2 * Rasterizer2D.Rasterizer2D_width;
|
||||
int var7 = Rasterizer2D.Rasterizer2D_width - var3;
|
||||
static void AbstractFont_drawGlyph(byte[] pixels, int x, int y, int width, int height, int color) {
|
||||
int var6 = x + y * Rasterizer2D.Rasterizer2D_width;
|
||||
int var7 = Rasterizer2D.Rasterizer2D_width - width;
|
||||
int var8 = 0;
|
||||
int var9 = 0;
|
||||
int var10;
|
||||
if (var2 < Rasterizer2D.Rasterizer2D_yClipStart) {
|
||||
var10 = Rasterizer2D.Rasterizer2D_yClipStart - var2;
|
||||
var4 -= var10;
|
||||
var2 = Rasterizer2D.Rasterizer2D_yClipStart;
|
||||
var9 += var3 * var10;
|
||||
if (y < Rasterizer2D.Rasterizer2D_yClipStart) {
|
||||
var10 = Rasterizer2D.Rasterizer2D_yClipStart - y;
|
||||
height -= var10;
|
||||
y = Rasterizer2D.Rasterizer2D_yClipStart;
|
||||
var9 += width * var10;
|
||||
var6 += var10 * Rasterizer2D.Rasterizer2D_width;
|
||||
}
|
||||
|
||||
if (var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) {
|
||||
var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd;
|
||||
if (y + height > Rasterizer2D.Rasterizer2D_yClipEnd) {
|
||||
height -= y + height - Rasterizer2D.Rasterizer2D_yClipEnd;
|
||||
}
|
||||
|
||||
if (var1 < Rasterizer2D.Rasterizer2D_xClipStart) {
|
||||
var10 = Rasterizer2D.Rasterizer2D_xClipStart - var1;
|
||||
var3 -= var10;
|
||||
var1 = Rasterizer2D.Rasterizer2D_xClipStart;
|
||||
if (x < Rasterizer2D.Rasterizer2D_xClipStart) {
|
||||
var10 = Rasterizer2D.Rasterizer2D_xClipStart - x;
|
||||
width -= var10;
|
||||
x = Rasterizer2D.Rasterizer2D_xClipStart;
|
||||
var9 += var10;
|
||||
var6 += var10;
|
||||
var8 += var10;
|
||||
var7 += var10;
|
||||
}
|
||||
|
||||
if (var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) {
|
||||
var10 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd;
|
||||
var3 -= var10;
|
||||
if (width + x > Rasterizer2D.Rasterizer2D_xClipEnd) {
|
||||
var10 = width + x - Rasterizer2D.Rasterizer2D_xClipEnd;
|
||||
width -= var10;
|
||||
var8 += var10;
|
||||
var7 += var10;
|
||||
}
|
||||
|
||||
if (var3 > 0 && var4 > 0) {
|
||||
AbstractFont_placeGlyph(Rasterizer2D.Rasterizer2D_pixels, var0, var5, var9, var6, var3, var4, var7, var8);
|
||||
if (width > 0 && height > 0) {
|
||||
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")
|
||||
@Export("AbstractFont_drawGlyphAlpha")
|
||||
static void AbstractFont_drawGlyphAlpha(byte[] var0, int var1, int var2, int var3, int var4, int var5, int var6) {
|
||||
int var7 = var1 + var2 * Rasterizer2D.Rasterizer2D_width;
|
||||
int var8 = Rasterizer2D.Rasterizer2D_width - var3;
|
||||
static void AbstractFont_drawGlyphAlpha(byte[] pixels, int x, int y, int width, int height, int color, int alpha) {
|
||||
int var7 = x + y * Rasterizer2D.Rasterizer2D_width;
|
||||
int var8 = Rasterizer2D.Rasterizer2D_width - width;
|
||||
int var9 = 0;
|
||||
int var10 = 0;
|
||||
int var11;
|
||||
if (var2 < Rasterizer2D.Rasterizer2D_yClipStart) {
|
||||
var11 = Rasterizer2D.Rasterizer2D_yClipStart - var2;
|
||||
var4 -= var11;
|
||||
var2 = Rasterizer2D.Rasterizer2D_yClipStart;
|
||||
var10 += var3 * var11;
|
||||
if (y < Rasterizer2D.Rasterizer2D_yClipStart) {
|
||||
var11 = Rasterizer2D.Rasterizer2D_yClipStart - y;
|
||||
height -= var11;
|
||||
y = Rasterizer2D.Rasterizer2D_yClipStart;
|
||||
var10 += width * var11;
|
||||
var7 += var11 * Rasterizer2D.Rasterizer2D_width;
|
||||
}
|
||||
|
||||
if (var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) {
|
||||
var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd;
|
||||
if (y + height > Rasterizer2D.Rasterizer2D_yClipEnd) {
|
||||
height -= y + height - Rasterizer2D.Rasterizer2D_yClipEnd;
|
||||
}
|
||||
|
||||
if (var1 < Rasterizer2D.Rasterizer2D_xClipStart) {
|
||||
var11 = Rasterizer2D.Rasterizer2D_xClipStart - var1;
|
||||
var3 -= var11;
|
||||
var1 = Rasterizer2D.Rasterizer2D_xClipStart;
|
||||
if (x < Rasterizer2D.Rasterizer2D_xClipStart) {
|
||||
var11 = Rasterizer2D.Rasterizer2D_xClipStart - x;
|
||||
width -= var11;
|
||||
x = Rasterizer2D.Rasterizer2D_xClipStart;
|
||||
var10 += var11;
|
||||
var7 += var11;
|
||||
var9 += var11;
|
||||
var8 += var11;
|
||||
}
|
||||
|
||||
if (var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) {
|
||||
var11 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd;
|
||||
var3 -= var11;
|
||||
if (width + x > Rasterizer2D.Rasterizer2D_xClipEnd) {
|
||||
var11 = width + x - Rasterizer2D.Rasterizer2D_xClipEnd;
|
||||
width -= var11;
|
||||
var9 += var11;
|
||||
var8 += var11;
|
||||
}
|
||||
|
||||
if (var3 > 0 && var4 > 0) {
|
||||
AbstractFont_placeGlyphAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var5, var10, var7, var3, var4, var8, var9, var6);
|
||||
if (width > 0 && height > 0) {
|
||||
AbstractFont_placeGlyphAlpha(Rasterizer2D.Rasterizer2D_pixels, pixels, color, var10, var7, width, height, var8, var9, alpha);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ public abstract class AbstractRasterProvider {
|
||||
garbageValue = "-430495007"
|
||||
)
|
||||
@Export("drawFull")
|
||||
public abstract void drawFull(int var1, int var2);
|
||||
public abstract void drawFull(int x, int y);
|
||||
|
||||
@ObfuscatedName("q")
|
||||
@ObfuscatedSignature(
|
||||
@@ -40,7 +40,7 @@ public abstract class AbstractRasterProvider {
|
||||
garbageValue = "18"
|
||||
)
|
||||
@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")
|
||||
@ObfuscatedSignature(
|
||||
|
||||
@@ -13,7 +13,7 @@ public abstract class AbstractSocket {
|
||||
garbageValue = "1765046516"
|
||||
)
|
||||
@Export("isAvailable")
|
||||
public abstract boolean isAvailable(int var1) throws IOException;
|
||||
public abstract boolean isAvailable(int length) throws IOException;
|
||||
|
||||
@ObfuscatedName("q")
|
||||
@ObfuscatedSignature(
|
||||
@@ -37,7 +37,7 @@ public abstract class AbstractSocket {
|
||||
garbageValue = "-1089665746"
|
||||
)
|
||||
@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")
|
||||
@ObfuscatedSignature(
|
||||
@@ -45,7 +45,7 @@ public abstract class AbstractSocket {
|
||||
garbageValue = "-86"
|
||||
)
|
||||
@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")
|
||||
@ObfuscatedSignature(
|
||||
@@ -63,7 +63,7 @@ public abstract class AbstractSocket {
|
||||
public static void method3488(int var0) {
|
||||
class214.field1129 = 1;
|
||||
class214.field1130 = null;
|
||||
class30.musicTrackArchiveId = -1;
|
||||
class30.musicTrackGroupId = -1;
|
||||
GrandExchangeOffer.musicTrackFileId = -1;
|
||||
WorldMapLabel.field1039 = 0;
|
||||
RectangleMode.musicTrackBoolean = false;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import java.util.Comparator;
|
||||
import net.runelite.mapping.Export;
|
||||
import net.runelite.mapping.Implements;
|
||||
import net.runelite.mapping.ObfuscatedName;
|
||||
import net.runelite.mapping.ObfuscatedSignature;
|
||||
@@ -7,18 +8,20 @@ import net.runelite.mapping.ObfuscatedSignature;
|
||||
@Implements("AbstractUserComparator")
|
||||
public abstract class AbstractUserComparator implements Comparator {
|
||||
@ObfuscatedName("f")
|
||||
Comparator field3;
|
||||
@Export("nextComparator")
|
||||
Comparator nextComparator;
|
||||
|
||||
@ObfuscatedName("e")
|
||||
@ObfuscatedSignature(
|
||||
signature = "(Ljava/util/Comparator;B)V",
|
||||
garbageValue = "-2"
|
||||
)
|
||||
final void method11(Comparator var1) {
|
||||
if (this.field3 == null) {
|
||||
this.field3 = var1;
|
||||
} else if (this.field3 instanceof AbstractUserComparator) {
|
||||
((AbstractUserComparator)this.field3).method11(var1);
|
||||
@Export("addComparator")
|
||||
final void addComparator(Comparator var1) {
|
||||
if (this.nextComparator == null) {
|
||||
this.nextComparator = 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",
|
||||
garbageValue = "-962181316"
|
||||
)
|
||||
protected final int method12(User var1, User var2) {
|
||||
return this.field3 == null ? 0 : this.field3.compare(var1, var2);
|
||||
@Export("compareUser")
|
||||
protected final int compareUser(User var1, User var2) {
|
||||
return this.nextComparator == null ? 0 : this.nextComparator.compare(var1, var2);
|
||||
}
|
||||
|
||||
@ObfuscatedName("equals")
|
||||
public boolean method13(Object var1) {
|
||||
public boolean equals(Object var1) {
|
||||
return super.equals(var1);
|
||||
}
|
||||
|
||||
@@ -48,11 +51,11 @@ public abstract class AbstractUserComparator implements Comparator {
|
||||
class214.field1129 = 1;
|
||||
class214.field1130 = null;
|
||||
} else if (var0 != -1 && var0 != Client.field112 && Client.field128 != 0 && !Client.field107) {
|
||||
IndexCache var1 = UserComparator3.indexCache6;
|
||||
Archive var1 = UserComparator3.archive6;
|
||||
int var2 = Client.field128;
|
||||
class214.field1129 = 1;
|
||||
class214.field1130 = var1;
|
||||
class30.musicTrackArchiveId = var0;
|
||||
class30.musicTrackGroupId = var0;
|
||||
GrandExchangeOffer.musicTrackFileId = 0;
|
||||
WorldMapLabel.field1039 = var2;
|
||||
RectangleMode.musicTrackBoolean = false;
|
||||
|
||||
@@ -23,13 +23,13 @@ public abstract class AbstractWorldMapIcon {
|
||||
signature = "Lhu;"
|
||||
)
|
||||
@Export("coord2")
|
||||
public final TileLocation coord2;
|
||||
public final Coord coord2;
|
||||
@ObfuscatedName("l")
|
||||
@ObfuscatedSignature(
|
||||
signature = "Lhu;"
|
||||
)
|
||||
@Export("coord1")
|
||||
public final TileLocation coord1;
|
||||
public final Coord coord1;
|
||||
@ObfuscatedName("e")
|
||||
@ObfuscatedGetter(
|
||||
intValue = -521086143
|
||||
@@ -44,7 +44,7 @@ public abstract class AbstractWorldMapIcon {
|
||||
@ObfuscatedSignature(
|
||||
signature = "(Lhu;Lhu;)V"
|
||||
)
|
||||
AbstractWorldMapIcon(TileLocation var1, TileLocation var2) {
|
||||
AbstractWorldMapIcon(Coord var1, Coord var2) {
|
||||
this.coord1 = var1;
|
||||
this.coord2 = var2;
|
||||
}
|
||||
@@ -54,14 +54,16 @@ public abstract class AbstractWorldMapIcon {
|
||||
signature = "(I)I",
|
||||
garbageValue = "1990181988"
|
||||
)
|
||||
public abstract int vmethod395();
|
||||
@Export("getElement")
|
||||
public abstract int getElement();
|
||||
|
||||
@ObfuscatedName("f")
|
||||
@ObfuscatedSignature(
|
||||
signature = "(I)Laj;",
|
||||
garbageValue = "1159446036"
|
||||
)
|
||||
abstract WorldMapLabel vmethod396();
|
||||
@Export("getLabel")
|
||||
abstract WorldMapLabel getLabel();
|
||||
|
||||
@ObfuscatedName("q")
|
||||
@ObfuscatedSignature(
|
||||
@@ -92,7 +94,7 @@ public abstract class AbstractWorldMapIcon {
|
||||
garbageValue = "1150380891"
|
||||
)
|
||||
boolean method19() {
|
||||
return this.vmethod395() >= 0;
|
||||
return this.getElement() >= 0;
|
||||
}
|
||||
|
||||
@ObfuscatedName("b")
|
||||
@@ -104,7 +106,7 @@ public abstract class AbstractWorldMapIcon {
|
||||
if (!this.method19()) {
|
||||
return false;
|
||||
} else {
|
||||
WorldMapElement var3 = ViewportMouse.getWorldMapElement(this.vmethod395());
|
||||
WorldMapElement var3 = ViewportMouse.getWorldMapElement(this.getElement());
|
||||
int var4 = this.vmethod397();
|
||||
int var5 = this.vmethod398();
|
||||
switch(var3.field3287.field3528) {
|
||||
@@ -153,7 +155,7 @@ public abstract class AbstractWorldMapIcon {
|
||||
garbageValue = "1201712205"
|
||||
)
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -162,9 +164,9 @@ public abstract class AbstractWorldMapIcon {
|
||||
signature = "(Lit;Ljava/lang/String;I)V",
|
||||
garbageValue = "-1018878027"
|
||||
)
|
||||
static void method625(IndexCache var0, String var1) {
|
||||
IndexCacheLoader var2 = new IndexCacheLoader(var0, var1);
|
||||
Client.indexCacheLoaders.add(var2);
|
||||
static void method625(Archive var0, String var1) {
|
||||
ArchiveLoader var2 = new ArchiveLoader(var0, var1);
|
||||
Client.archiveLoaders.add(var2);
|
||||
Client.field140 += var2.field408;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,9 +61,9 @@ public final class AccessFile {
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@Export("seek")
|
||||
final void seek(long var1) throws IOException {
|
||||
this.file.seek(var1);
|
||||
this.index = var1;
|
||||
final void seek(long index) throws IOException {
|
||||
this.file.seek(index);
|
||||
this.index = index;
|
||||
}
|
||||
|
||||
@ObfuscatedName("f")
|
||||
@@ -72,14 +72,14 @@ public final class AccessFile {
|
||||
garbageValue = "-86"
|
||||
)
|
||||
@Export("write")
|
||||
public final void write(byte[] var1, int var2, int var3) throws IOException {
|
||||
if ((long)var3 + this.index > this.capacity) {
|
||||
public final void write(byte[] src, int srcIndex, int length) throws IOException {
|
||||
if ((long)length + this.index > this.capacity) {
|
||||
this.file.seek(this.capacity + 1L);
|
||||
this.file.write(1);
|
||||
throw new EOFException();
|
||||
} else {
|
||||
this.file.write(var1, var2, var3);
|
||||
this.index += (long)var3;
|
||||
this.file.write(src, srcIndex, length);
|
||||
this.index += (long)length;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,9 +99,9 @@ public final class AccessFile {
|
||||
garbageValue = "166642884"
|
||||
)
|
||||
@Export("closeSync")
|
||||
public final void closeSync(boolean var1) throws IOException {
|
||||
public final void closeSync(boolean sync) throws IOException {
|
||||
if (this.file != null) {
|
||||
if (var1) {
|
||||
if (sync) {
|
||||
try {
|
||||
this.file.getFD().sync();
|
||||
} catch (SyncFailedException var3) {
|
||||
@@ -130,8 +130,8 @@ public final class AccessFile {
|
||||
garbageValue = "971670468"
|
||||
)
|
||||
@Export("read")
|
||||
public final int read(byte[] var1, int var2, int var3) throws IOException {
|
||||
int var4 = this.file.read(var1, var2, var3);
|
||||
public final int read(byte[] dst, int dstIndex, int length) throws IOException {
|
||||
int var4 = this.file.read(dst, dstIndex, length);
|
||||
if (var4 > 0) {
|
||||
this.index += (long)var4;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -6,23 +6,23 @@ import net.runelite.mapping.ObfuscatedName;
|
||||
import net.runelite.mapping.ObfuscatedSignature;
|
||||
|
||||
@ObfuscatedName("it")
|
||||
@Implements("IndexCache")
|
||||
public class IndexCache extends AbstractIndexCache {
|
||||
@Implements("Archive")
|
||||
public class Archive extends AbstractArchive {
|
||||
@ObfuscatedName("aj")
|
||||
@Export("IndexCache_crc")
|
||||
static CRC32 IndexCache_crc;
|
||||
@Export("Archive_crc")
|
||||
static CRC32 Archive_crc;
|
||||
@ObfuscatedName("c")
|
||||
@ObfuscatedSignature(
|
||||
signature = "Lff;"
|
||||
)
|
||||
@Export("indexStore")
|
||||
IndexStore indexStore;
|
||||
@Export("archiveDisk")
|
||||
ArchiveDisk archiveDisk;
|
||||
@ObfuscatedName("r")
|
||||
@ObfuscatedSignature(
|
||||
signature = "Lff;"
|
||||
)
|
||||
@Export("referenceStore")
|
||||
IndexStore referenceStore;
|
||||
@Export("masterDisk")
|
||||
ArchiveDisk masterDisk;
|
||||
@ObfuscatedName("p")
|
||||
@ObfuscatedGetter(
|
||||
intValue = -1579549759
|
||||
@@ -34,20 +34,20 @@ public class IndexCache extends AbstractIndexCache {
|
||||
@ObfuscatedName("ag")
|
||||
boolean field404;
|
||||
@ObfuscatedName("aq")
|
||||
@Export("validArchives")
|
||||
volatile boolean[] validArchives;
|
||||
@Export("validGroups")
|
||||
volatile boolean[] validGroups;
|
||||
@ObfuscatedName("av")
|
||||
@ObfuscatedGetter(
|
||||
intValue = 1472870917
|
||||
)
|
||||
@Export("indexReferenceCrc")
|
||||
int indexReferenceCrc;
|
||||
@Export("indexCrc")
|
||||
int indexCrc;
|
||||
@ObfuscatedName("ar")
|
||||
@ObfuscatedGetter(
|
||||
intValue = -785528219
|
||||
)
|
||||
@Export("indexReferenceVersion")
|
||||
int indexReferenceVersion;
|
||||
@Export("indexVersion")
|
||||
int indexVersion;
|
||||
@ObfuscatedName("ac")
|
||||
@ObfuscatedGetter(
|
||||
intValue = -1884661133
|
||||
@@ -57,13 +57,13 @@ public class IndexCache extends AbstractIndexCache {
|
||||
@ObfuscatedSignature(
|
||||
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);
|
||||
this.field403 = false;
|
||||
this.field404 = false;
|
||||
this.field405 = -1;
|
||||
this.indexStore = var1;
|
||||
this.referenceStore = var2;
|
||||
this.archiveDisk = var1;
|
||||
this.masterDisk = var2;
|
||||
this.index = var3;
|
||||
this.field404 = var6;
|
||||
int var7 = this.index;
|
||||
@@ -71,10 +71,10 @@ public class IndexCache extends AbstractIndexCache {
|
||||
Players.NetCache_reference.index = var7 * 8 + 5;
|
||||
int var8 = Players.NetCache_reference.readInt();
|
||||
int var9 = Players.NetCache_reference.readInt();
|
||||
this.loadIndexReference(var8, var9);
|
||||
this.loadIndex(var8, var9);
|
||||
} else {
|
||||
PacketBuffer.requestNetFile((IndexCache)null, 255, 255, 0, (byte)0, true);
|
||||
NetCache.NetCache_indexCaches[var7] = this;
|
||||
PacketBuffer.requestNetFile((Archive)null, 255, 255, 0, (byte)0, true);
|
||||
NetCache.NetCache_archives[var7] = this;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -99,9 +99,9 @@ public class IndexCache extends AbstractIndexCache {
|
||||
signature = "(II)I",
|
||||
garbageValue = "-1809769865"
|
||||
)
|
||||
@Export("archiveLoadPercent")
|
||||
int archiveLoadPercent(int var1) {
|
||||
return super.archives[var1] != null ? 100 : (this.validArchives[var1] ? 100 : class54.method1086(this.index, var1));
|
||||
@Export("groupLoadPercent")
|
||||
int groupLoadPercent(int var1) {
|
||||
return super.groups[var1] != null ? 100 : (this.validGroups[var1] ? 100 : class54.method1086(this.index, var1));
|
||||
}
|
||||
|
||||
@ObfuscatedName("z")
|
||||
@@ -109,15 +109,15 @@ public class IndexCache extends AbstractIndexCache {
|
||||
signature = "(II)V",
|
||||
garbageValue = "-1829145107"
|
||||
)
|
||||
@Export("loadArchive")
|
||||
void loadArchive(int var1) {
|
||||
if (this.indexStore != null && this.validArchives != null && this.validArchives[var1]) {
|
||||
IndexStore var2 = this.indexStore;
|
||||
@Export("loadGroup")
|
||||
void loadGroup(int group) {
|
||||
if (this.archiveDisk != null && this.validGroups != null && this.validGroups[group]) {
|
||||
ArchiveDisk var2 = this.archiveDisk;
|
||||
byte[] var3 = null;
|
||||
NodeDeque var4 = IndexStoreActionHandler.IndexStoreActionHandler_requestQueue;
|
||||
synchronized(IndexStoreActionHandler.IndexStoreActionHandler_requestQueue) {
|
||||
for (IndexStoreAction var6 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.last(); var6 != null; var6 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.previous()) {
|
||||
if (var6.key == (long)var1 && var2 == var6.indexStore && var6.type == 0) {
|
||||
NodeDeque var4 = ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue;
|
||||
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) {
|
||||
for (ArchiveDiskAction var6 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.last(); var6 != null; var6 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.previous()) {
|
||||
if (var6.key == (long)group && var2 == var6.archiveDisk && var6.type == 0) {
|
||||
var3 = var6.data;
|
||||
break;
|
||||
}
|
||||
@@ -125,13 +125,13 @@ public class IndexCache extends AbstractIndexCache {
|
||||
}
|
||||
|
||||
if (var3 != null) {
|
||||
this.load(var2, var1, var3, true);
|
||||
this.load(var2, group, var3, true);
|
||||
} else {
|
||||
byte[] var5 = var2.read(var1);
|
||||
this.load(var2, var1, var5, true);
|
||||
byte[] var5 = var2.read(group);
|
||||
this.load(var2, group, var5, true);
|
||||
}
|
||||
} 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",
|
||||
garbageValue = "1671499504"
|
||||
)
|
||||
public int method131() {
|
||||
@Export("percentage")
|
||||
public int percentage() {
|
||||
if (this.field403) {
|
||||
return 100;
|
||||
} else if (super.archives != null) {
|
||||
} else if (super.groups != null) {
|
||||
return 99;
|
||||
} else {
|
||||
int var1 = class54.method1086(255, this.index);
|
||||
@@ -170,18 +171,18 @@ public class IndexCache extends AbstractIndexCache {
|
||||
signature = "(III)V",
|
||||
garbageValue = "-1621053520"
|
||||
)
|
||||
@Export("loadIndexReference")
|
||||
public void loadIndexReference(int var1, int var2) {
|
||||
this.indexReferenceCrc = var1;
|
||||
this.indexReferenceVersion = var2;
|
||||
if (this.referenceStore != null) {
|
||||
@Export("loadIndex")
|
||||
public void loadIndex(int var1, int var2) {
|
||||
this.indexCrc = var1;
|
||||
this.indexVersion = var2;
|
||||
if (this.masterDisk != null) {
|
||||
int var3 = this.index;
|
||||
IndexStore var4 = this.referenceStore;
|
||||
ArchiveDisk var4 = this.masterDisk;
|
||||
byte[] var5 = null;
|
||||
NodeDeque var6 = IndexStoreActionHandler.IndexStoreActionHandler_requestQueue;
|
||||
synchronized(IndexStoreActionHandler.IndexStoreActionHandler_requestQueue) {
|
||||
for (IndexStoreAction var8 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.last(); var8 != null; var8 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.previous()) {
|
||||
if (var8.key == (long)var3 && var4 == var8.indexStore && var8.type == 0) {
|
||||
NodeDeque var6 = ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue;
|
||||
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) {
|
||||
for (ArchiveDiskAction var8 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.last(); var8 != null; var8 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.previous()) {
|
||||
if (var8.key == (long)var3 && var4 == var8.archiveDisk && var8.type == 0) {
|
||||
var5 = var8.data;
|
||||
break;
|
||||
}
|
||||
@@ -195,7 +196,7 @@ public class IndexCache extends AbstractIndexCache {
|
||||
this.load(var4, var3, var7, true);
|
||||
}
|
||||
} 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();
|
||||
}
|
||||
|
||||
if (this.referenceStore != null) {
|
||||
Widget.method4499(this.index, var2, this.referenceStore);
|
||||
if (this.masterDisk != null) {
|
||||
Widget.method4499(this.index, var2, this.masterDisk);
|
||||
}
|
||||
|
||||
this.setIndexReference(var2);
|
||||
this.decodeIndex(var2);
|
||||
this.loadAllLocal();
|
||||
} else {
|
||||
var2[var2.length - 2] = (byte)(super.archiveVersions[var1] >> 8);
|
||||
var2[var2.length - 1] = (byte)super.archiveVersions[var1];
|
||||
if (this.indexStore != null) {
|
||||
Widget.method4499(var1, var2, this.indexStore);
|
||||
this.validArchives[var1] = true;
|
||||
var2[var2.length - 2] = (byte)(super.groupVersions[var1] >> 8);
|
||||
var2[var2.length - 1] = (byte)super.groupVersions[var1];
|
||||
if (this.archiveDisk != null) {
|
||||
Widget.method4499(var1, var2, this.archiveDisk);
|
||||
this.validGroups[var1] = true;
|
||||
}
|
||||
|
||||
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"
|
||||
)
|
||||
@Export("load")
|
||||
void load(IndexStore var1, int var2, byte[] var3, boolean var4) {
|
||||
void load(ArchiveDisk var1, int var2, byte[] var3, boolean var4) {
|
||||
int var5;
|
||||
if (var1 == this.referenceStore) {
|
||||
if (var1 == this.masterDisk) {
|
||||
if (this.field403) {
|
||||
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 {
|
||||
IndexCache_crc.reset();
|
||||
IndexCache_crc.update(var3, 0, var3.length);
|
||||
var5 = (int)IndexCache_crc.getValue();
|
||||
if (var5 != this.indexReferenceCrc) {
|
||||
PacketBuffer.requestNetFile(this, 255, this.index, this.indexReferenceCrc, (byte)0, true);
|
||||
Archive_crc.reset();
|
||||
Archive_crc.update(var3, 0, var3.length);
|
||||
var5 = (int)Archive_crc.getValue();
|
||||
if (var5 != this.indexCrc) {
|
||||
PacketBuffer.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
|
||||
} else {
|
||||
Buffer var9 = new Buffer(Strings.decompressBytes(var3));
|
||||
int var7 = var9.readUnsignedByte();
|
||||
Buffer var6 = new Buffer(Strings.decompressBytes(var3));
|
||||
int var7 = var6.readUnsignedByte();
|
||||
if (var7 != 5 && var7 != 6) {
|
||||
throw new RuntimeException(var7 + "," + this.index + "," + var2);
|
||||
} else {
|
||||
int var8 = 0;
|
||||
if (var7 >= 6) {
|
||||
var8 = var9.readInt();
|
||||
}
|
||||
}
|
||||
|
||||
if (var8 != this.indexReferenceVersion) {
|
||||
PacketBuffer.requestNetFile(this, 255, this.index, this.indexReferenceCrc, (byte)0, true);
|
||||
} else {
|
||||
this.setIndexReference(var3);
|
||||
this.loadAllLocal();
|
||||
}
|
||||
int var8 = 0;
|
||||
if (var7 >= 6) {
|
||||
var8 = var6.readInt();
|
||||
}
|
||||
|
||||
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) {
|
||||
IndexCache_crc.reset();
|
||||
IndexCache_crc.update(var3, 0, var3.length - 2);
|
||||
var5 = (int)IndexCache_crc.getValue();
|
||||
int var6 = ((var3[var3.length - 2] & 255) << 8) + (var3[var3.length - 1] & 255);
|
||||
if (var5 == super.archiveCrcs[var2] && var6 == super.archiveVersions[var2]) {
|
||||
this.validArchives[var2] = true;
|
||||
Archive_crc.reset();
|
||||
Archive_crc.update(var3, 0, var3.length - 2);
|
||||
var5 = (int)Archive_crc.getValue();
|
||||
int var9 = ((var3[var3.length - 2] & 255) << 8) + (var3[var3.length - 1] & 255);
|
||||
if (var5 == super.groupCrcs[var2] && var9 == super.groupVersions[var2]) {
|
||||
this.validGroups[var2] = true;
|
||||
if (var4) {
|
||||
super.archives[var2] = Projectile.byteArrayToObject(var3, false);
|
||||
super.groups[var2] = Projectile.byteArrayToObject(var3, false);
|
||||
}
|
||||
|
||||
} else {
|
||||
this.validArchives[var2] = false;
|
||||
this.validGroups[var2] = false;
|
||||
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 {
|
||||
this.validArchives[var2] = false;
|
||||
this.validGroups[var2] = false;
|
||||
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")
|
||||
@@ -312,21 +313,21 @@ public class IndexCache extends AbstractIndexCache {
|
||||
)
|
||||
@Export("loadAllLocal")
|
||||
void loadAllLocal() {
|
||||
this.validArchives = new boolean[super.archives.length];
|
||||
this.validGroups = new boolean[super.groups.length];
|
||||
|
||||
int var1;
|
||||
for (var1 = 0; var1 < this.validArchives.length; ++var1) {
|
||||
this.validArchives[var1] = false;
|
||||
for (var1 = 0; var1 < this.validGroups.length; ++var1) {
|
||||
this.validGroups[var1] = false;
|
||||
}
|
||||
|
||||
if (this.indexStore == null) {
|
||||
if (this.archiveDisk == null) {
|
||||
this.field403 = true;
|
||||
} else {
|
||||
this.field405 = -1;
|
||||
|
||||
for (var1 = 0; var1 < this.validArchives.length; ++var1) {
|
||||
if (super.recordCounts[var1] > 0) {
|
||||
NPC.method2009(var1, this.indexStore, this);
|
||||
for (var1 = 0; var1 < this.validGroups.length; ++var1) {
|
||||
if (super.fileCounts[var1] > 0) {
|
||||
NPC.method2009(var1, this.archiveDisk, this);
|
||||
this.field405 = var1;
|
||||
}
|
||||
}
|
||||
@@ -344,7 +345,7 @@ public class IndexCache extends AbstractIndexCache {
|
||||
garbageValue = "0"
|
||||
)
|
||||
public boolean method132(int var1) {
|
||||
return this.validArchives[var1];
|
||||
return this.validGroups[var1];
|
||||
}
|
||||
|
||||
@ObfuscatedName("df")
|
||||
@@ -367,10 +368,10 @@ public class IndexCache extends AbstractIndexCache {
|
||||
int var2 = 0;
|
||||
|
||||
int var3;
|
||||
for (var3 = 0; var3 < super.archives.length; ++var3) {
|
||||
if (super.recordCounts[var3] > 0) {
|
||||
for (var3 = 0; var3 < super.groups.length; ++var3) {
|
||||
if (super.fileCounts[var3] > 0) {
|
||||
var1 += 100;
|
||||
var2 += this.archiveLoadPercent(var3);
|
||||
var2 += this.groupLoadPercent(var3);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -388,7 +389,7 @@ public class IndexCache extends AbstractIndexCache {
|
||||
garbageValue = "-34"
|
||||
)
|
||||
static final void method4703(int var0) {
|
||||
class12.method159();
|
||||
GrandExchangeOfferAgeComparator.method159();
|
||||
|
||||
for (ObjectSound var1 = (ObjectSound)ObjectSound.objectSounds.last(); var1 != null; var1 = (ObjectSound)ObjectSound.objectSounds.previous()) {
|
||||
if (var1.obj != null) {
|
||||
@@ -447,7 +448,7 @@ public class IndexCache extends AbstractIndexCache {
|
||||
|
||||
if (var3 != Client.field128) {
|
||||
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;
|
||||
} else if (var3 == 0) {
|
||||
class214.midiPcmStream.clear();
|
||||
@@ -548,6 +549,6 @@ public class IndexCache extends AbstractIndexCache {
|
||||
}
|
||||
|
||||
static {
|
||||
IndexCache_crc = new CRC32();
|
||||
Archive_crc = new CRC32();
|
||||
}
|
||||
}
|
||||
507
runescape-client/src/main/java/ArchiveDisk.java
Normal file
507
runescape-client/src/main/java/ArchiveDisk.java
Normal file
@@ -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];
|
||||
}
|
||||
}
|
||||
@@ -5,8 +5,8 @@ import net.runelite.mapping.ObfuscatedName;
|
||||
import net.runelite.mapping.ObfuscatedSignature;
|
||||
|
||||
@ObfuscatedName("ik")
|
||||
@Implements("IndexStoreAction")
|
||||
public class IndexStoreAction extends Node {
|
||||
@Implements("ArchiveDiskAction")
|
||||
public class ArchiveDiskAction extends Node {
|
||||
@ObfuscatedName("rt")
|
||||
@ObfuscatedGetter(
|
||||
intValue = -1086790653
|
||||
@@ -36,14 +36,14 @@ public class IndexStoreAction extends Node {
|
||||
@ObfuscatedSignature(
|
||||
signature = "Lff;"
|
||||
)
|
||||
@Export("indexStore")
|
||||
IndexStore indexStore;
|
||||
@Export("archiveDisk")
|
||||
ArchiveDisk archiveDisk;
|
||||
@ObfuscatedName("w")
|
||||
@ObfuscatedSignature(
|
||||
signature = "Lit;"
|
||||
)
|
||||
@Export("indexCache")
|
||||
IndexCache indexCache;
|
||||
@Export("archive")
|
||||
Archive archive;
|
||||
|
||||
@ObfuscatedName("fn")
|
||||
@ObfuscatedSignature(
|
||||
@@ -94,7 +94,7 @@ public class IndexStoreAction extends Node {
|
||||
var5 = false;
|
||||
}
|
||||
|
||||
if (var0.movementSequence == var0.idleSequence && (var0.field22 > 25 || var5)) {
|
||||
if (var0.movementSequence == var0.readySequence && (var0.field22 > 25 || var5)) {
|
||||
if (var0.turnLeftSequence != -1) {
|
||||
var0.movementSequence = var0.turnLeftSequence;
|
||||
} else {
|
||||
@@ -109,7 +109,7 @@ public class IndexStoreAction extends Node {
|
||||
var5 = false;
|
||||
}
|
||||
|
||||
if (var0.movementSequence == var0.idleSequence && (var0.field22 > 25 || var5)) {
|
||||
if (var0.movementSequence == var0.readySequence && (var0.field22 > 25 || var5)) {
|
||||
if (var0.turnRightSequence != -1) {
|
||||
var0.movementSequence = var0.turnRightSequence;
|
||||
} else {
|
||||
107
runescape-client/src/main/java/ArchiveDiskActionHandler.java
Normal file
107
runescape-client/src/main/java/ArchiveDiskActionHandler.java
Normal file
@@ -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();
|
||||
}
|
||||
}
|
||||
709
runescape-client/src/main/java/ArchiveLoader.java
Normal file
709
runescape-client/src/main/java/ArchiveLoader.java
Normal file
@@ -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",
|
||||
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 var4 = var1.length();
|
||||
int var5 = 0;
|
||||
@@ -146,13 +146,13 @@ public enum AttackOption implements Enumerated {
|
||||
}
|
||||
|
||||
var8 = var12;
|
||||
var9 = class12.method155(var9, var2);
|
||||
var14 = class12.method155(var14, var2);
|
||||
var9 = GrandExchangeOfferAgeComparator.method155(var9, language);
|
||||
var14 = GrandExchangeOfferAgeComparator.method155(var14, language);
|
||||
if (var9 != var14 && Character.toUpperCase(var9) != Character.toUpperCase(var14)) {
|
||||
var9 = Character.toLowerCase(var9);
|
||||
var14 = Character.toLowerCase(var14);
|
||||
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);
|
||||
var18 = Character.toLowerCase(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);
|
||||
char var13 = var1.charAt(var20);
|
||||
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][1] = var3 * var3;
|
||||
|
||||
float[] var10000;
|
||||
int var4;
|
||||
for (var4 = 1; var4 < this.field36[var1]; ++var4) {
|
||||
var3 = this.method24(var1, var4, var2);
|
||||
float var5 = -2.0F * var3 * (float)Math.cos((double)this.method25(var1, var4, var2));
|
||||
float var6 = var3 * var3;
|
||||
field32[var1][var4 * 2 + 1] = field32[var1][var4 * 2 - 1] * var6;
|
||||
field32[var1][var4 * 2] = field32[var1][var4 * 2 - 1] * var5 + field32[var1][var4 * 2 - 2] * var6;
|
||||
float[] var4;
|
||||
int var5;
|
||||
for (var5 = 1; var5 < this.field36[var1]; ++var5) {
|
||||
var3 = this.method24(var1, var5, var2);
|
||||
float var6 = -2.0F * var3 * (float)Math.cos((double)this.method25(var1, var5, var2));
|
||||
float var7 = var3 * var3;
|
||||
field32[var1][var5 * 2 + 1] = field32[var1][var5 * 2 - 1] * var7;
|
||||
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) {
|
||||
var10000 = field32[var1];
|
||||
var10000[var7] += field32[var1][var7 - 1] * var5 + field32[var1][var7 - 2] * var6;
|
||||
for (int var8 = var5 * 2 - 1; var8 >= 2; --var8) {
|
||||
var4 = field32[var1];
|
||||
var4[var8] += field32[var1][var8 - 1] * var6 + field32[var1][var8 - 2] * var7;
|
||||
}
|
||||
|
||||
var10000 = field32[var1];
|
||||
var10000[1] += field32[var1][0] * var5 + var6;
|
||||
var10000 = field32[var1];
|
||||
var10000[0] += var5;
|
||||
var4 = field32[var1];
|
||||
var4[1] += field32[var1][0] * var6 + var7;
|
||||
var4 = field32[var1];
|
||||
var4[0] += var6;
|
||||
}
|
||||
|
||||
if (var1 == 0) {
|
||||
for (var4 = 0; var4 < this.field36[0] * 2; ++var4) {
|
||||
var10000 = field32[0];
|
||||
var10000[var4] *= field34;
|
||||
for (var5 = 0; var5 < this.field36[0] * 2; ++var5) {
|
||||
var4 = field32[0];
|
||||
var4[var5] *= field34;
|
||||
}
|
||||
}
|
||||
|
||||
for (var4 = 0; var4 < this.field36[var1] * 2; ++var4) {
|
||||
field33[var1][var4] = (int)(field32[var1][var4] * 65536.0F);
|
||||
for (var5 = 0; var5 < this.field36[var1] * 2; ++var5) {
|
||||
field33[var1][var5] = (int)(field32[var1][var5] * 65536.0F);
|
||||
}
|
||||
|
||||
return this.field36[var1] * 2;
|
||||
|
||||
@@ -83,9 +83,9 @@ public final class BoundaryObject {
|
||||
ReflectionCheck.clientPreferences.roofsHidden = !ReflectionCheck.clientPreferences.roofsHidden;
|
||||
WorldMapSection0.savePreferences();
|
||||
if (ReflectionCheck.clientPreferences.roofsHidden) {
|
||||
WorldMapIcon1.method219(99, "", "Roofs are now all hidden");
|
||||
WorldMapIcon1.addGameMessage(99, "", "Roofs are now all hidden");
|
||||
} 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;
|
||||
}
|
||||
|
||||
if (Client.rights >= 2) {
|
||||
if (Client.staffModLevel >= 2) {
|
||||
if (var0.equalsIgnoreCase("errortest")) {
|
||||
throw new RuntimeException();
|
||||
}
|
||||
|
||||
@@ -130,8 +130,7 @@ public class Bounds {
|
||||
return this.field42 + this.field44;
|
||||
}
|
||||
|
||||
@ObfuscatedName("toString")
|
||||
public String method35() {
|
||||
public String toString() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@ public class Buddy extends User {
|
||||
@ObfuscatedGetter(
|
||||
intValue = 429472919
|
||||
)
|
||||
@Export("world0")
|
||||
public int world0;
|
||||
@Export("world")
|
||||
public int world;
|
||||
@ObfuscatedName("u")
|
||||
@ObfuscatedGetter(
|
||||
intValue = 120689297
|
||||
@@ -27,7 +27,7 @@ public class Buddy extends User {
|
||||
public int rank;
|
||||
|
||||
Buddy() {
|
||||
this.world0 = -1;
|
||||
this.world = -1;
|
||||
}
|
||||
|
||||
@ObfuscatedName("an")
|
||||
@@ -37,7 +37,7 @@ public class Buddy extends User {
|
||||
)
|
||||
@Export("set")
|
||||
void set(int var1, int var2) {
|
||||
this.world0 = var1;
|
||||
this.world = var1;
|
||||
this.int2 = var2;
|
||||
}
|
||||
|
||||
@@ -46,9 +46,9 @@ public class Buddy extends User {
|
||||
signature = "(B)I",
|
||||
garbageValue = "0"
|
||||
)
|
||||
@Export("world")
|
||||
public int world() {
|
||||
return this.world0;
|
||||
@Export("getWorld")
|
||||
public int getWorld() {
|
||||
return this.world;
|
||||
}
|
||||
|
||||
@ObfuscatedName("au")
|
||||
@@ -58,7 +58,7 @@ public class Buddy extends User {
|
||||
)
|
||||
@Export("hasWorld")
|
||||
public boolean hasWorld() {
|
||||
return this.world0 > 0;
|
||||
return this.world > 0;
|
||||
}
|
||||
|
||||
@ObfuscatedName("ff")
|
||||
|
||||
@@ -1,19 +1,23 @@
|
||||
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("fw")
|
||||
public class class157 extends AbstractUserComparator {
|
||||
@Implements("BuddyRankComparator")
|
||||
public class BuddyRankComparator extends AbstractUserComparator {
|
||||
@ObfuscatedName("nm")
|
||||
@ObfuscatedGetter(
|
||||
intValue = 1006519291
|
||||
)
|
||||
static int field1114;
|
||||
@ObfuscatedName("m")
|
||||
final boolean field1969;
|
||||
@Export("reversed")
|
||||
final boolean reversed;
|
||||
|
||||
public class157(boolean var1) {
|
||||
this.field1969 = var1;
|
||||
public BuddyRankComparator(boolean var1) {
|
||||
this.reversed = var1;
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@@ -21,12 +25,13 @@ public class class157 extends AbstractUserComparator {
|
||||
signature = "(Lke;Lke;I)I",
|
||||
garbageValue = "884616259"
|
||||
)
|
||||
int method3381(Buddy var1, Buddy var2) {
|
||||
return var2.rank != var1.rank ? (this.field1969 ? var1.rank - var2.rank : var2.rank - var1.rank) : this.method12(var1, var2);
|
||||
@Export("compareBuddy")
|
||||
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) {
|
||||
return this.method3381((Buddy)var1, (Buddy)var2);
|
||||
return this.compareBuddy((Buddy)var1, (Buddy)var2);
|
||||
}
|
||||
|
||||
@ObfuscatedName("s")
|
||||
@@ -51,8 +51,8 @@ public class Buffer extends Node {
|
||||
garbageValue = "-654332799"
|
||||
)
|
||||
@Export("writeByte")
|
||||
public void writeByte(int var1) {
|
||||
this.array[++this.index - 1] = (byte)var1;
|
||||
public void writeByte(int value) {
|
||||
this.array[++this.index - 1] = (byte)value;
|
||||
}
|
||||
|
||||
@ObfuscatedName("w")
|
||||
@@ -61,9 +61,9 @@ public class Buffer extends Node {
|
||||
garbageValue = "0"
|
||||
)
|
||||
@Export("writeShort")
|
||||
public void writeShort(int var1) {
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 8);
|
||||
this.array[++this.index - 1] = (byte)var1;
|
||||
public void writeShort(int value) {
|
||||
this.array[++this.index - 1] = (byte)(value >> 8);
|
||||
this.array[++this.index - 1] = (byte)value;
|
||||
}
|
||||
|
||||
@ObfuscatedName("o")
|
||||
@@ -72,10 +72,10 @@ public class Buffer extends Node {
|
||||
garbageValue = "-26"
|
||||
)
|
||||
@Export("writeMedium")
|
||||
public void writeMedium(int var1) {
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 16);
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 8);
|
||||
this.array[++this.index - 1] = (byte)var1;
|
||||
public void writeMedium(int value) {
|
||||
this.array[++this.index - 1] = (byte)(value >> 16);
|
||||
this.array[++this.index - 1] = (byte)(value >> 8);
|
||||
this.array[++this.index - 1] = (byte)value;
|
||||
}
|
||||
|
||||
@ObfuscatedName("u")
|
||||
@@ -84,11 +84,11 @@ public class Buffer extends Node {
|
||||
garbageValue = "-106996411"
|
||||
)
|
||||
@Export("writeInt")
|
||||
public void writeInt(int var1) {
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 24);
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 16);
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 8);
|
||||
this.array[++this.index - 1] = (byte)var1;
|
||||
public void writeInt(int value) {
|
||||
this.array[++this.index - 1] = (byte)(value >> 24);
|
||||
this.array[++this.index - 1] = (byte)(value >> 16);
|
||||
this.array[++this.index - 1] = (byte)(value >> 8);
|
||||
this.array[++this.index - 1] = (byte)value;
|
||||
}
|
||||
|
||||
@ObfuscatedName("g")
|
||||
@@ -121,8 +121,8 @@ public class Buffer extends Node {
|
||||
garbageValue = "-125"
|
||||
)
|
||||
@Export("writeBoolean")
|
||||
public void writeBoolean(boolean var1) {
|
||||
this.writeByte(var1 ? 1 : 0);
|
||||
public void writeBoolean(boolean value) {
|
||||
this.writeByte(value ? 1 : 0);
|
||||
}
|
||||
|
||||
@ObfuscatedName("d")
|
||||
@@ -131,12 +131,12 @@ public class Buffer extends Node {
|
||||
garbageValue = "-9"
|
||||
)
|
||||
@Export("writeStringCp1252NullTerminated")
|
||||
public void writeStringCp1252NullTerminated(String var1) {
|
||||
int var2 = var1.indexOf(0);
|
||||
public void writeStringCp1252NullTerminated(String string) {
|
||||
int var2 = string.indexOf(0);
|
||||
if (var2 >= 0) {
|
||||
throw new IllegalArgumentException("");
|
||||
} 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;
|
||||
}
|
||||
}
|
||||
@@ -147,13 +147,13 @@ public class Buffer extends Node {
|
||||
garbageValue = "22356"
|
||||
)
|
||||
@Export("writeStringCp1252NullCircumfixed")
|
||||
public void writeStringCp1252NullCircumfixed(String var1) {
|
||||
int var2 = var1.indexOf(0);
|
||||
public void writeStringCp1252NullCircumfixed(String string) {
|
||||
int var2 = string.indexOf(0);
|
||||
if (var2 >= 0) {
|
||||
throw new IllegalArgumentException("");
|
||||
} else {
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -232,15 +232,15 @@ public class Buffer extends Node {
|
||||
garbageValue = "1324532803"
|
||||
)
|
||||
@Export("writeSmartByteShort")
|
||||
public void writeSmartByteShort(int var1) {
|
||||
if (var1 >= 0 && var1 < 128) {
|
||||
this.writeByte(var1);
|
||||
public void writeSmartByteShort(int value) {
|
||||
if (value >= 0 && value < 128) {
|
||||
this.writeByte(value);
|
||||
} else {
|
||||
if (var1 < 0 || var1 >= 32768) {
|
||||
if (value < 0 || value >= 32768) {
|
||||
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;
|
||||
return var2 == 0 ? "" : WidgetGroupParent.decodeStringCp1252(this.array, var1, var2);
|
||||
return var2 == 0 ? "" : InterfaceParent.decodeStringCp1252(this.array, var1, var2);
|
||||
}
|
||||
|
||||
@ObfuscatedName("ak")
|
||||
@@ -408,7 +408,7 @@ public class Buffer extends Node {
|
||||
}
|
||||
|
||||
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"
|
||||
)
|
||||
@Export("xteaEncryptAll")
|
||||
public void xteaEncryptAll(int[] var1) {
|
||||
public void xteaEncryptAll(int[] xteaKey) {
|
||||
int var2 = this.index / 8;
|
||||
this.index = 0;
|
||||
|
||||
@@ -588,8 +588,8 @@ public class Buffer extends Node {
|
||||
int var6 = 0;
|
||||
int var7 = -1640531527;
|
||||
|
||||
for (int var8 = 32; var8-- > 0; var5 += var4 + (var4 << 4 ^ var4 >>> 5) ^ var1[var6 >>> 11 & 3] + var6) {
|
||||
var4 += var5 + (var5 << 4 ^ var5 >>> 5) ^ var6 + var1[var6 & 3];
|
||||
for (int var8 = 32; var8-- > 0; var5 += var4 + (var4 << 4 ^ var4 >>> 5) ^ xteaKey[var6 >>> 11 & 3] + var6) {
|
||||
var4 += var5 + (var5 << 4 ^ var5 >>> 5) ^ var6 + xteaKey[var6 & 3];
|
||||
var6 += var7;
|
||||
}
|
||||
|
||||
@@ -606,7 +606,7 @@ public class Buffer extends Node {
|
||||
garbageValue = "1682045100"
|
||||
)
|
||||
@Export("xteaDecryptAll")
|
||||
public void xteaDecryptAll(int[] var1) {
|
||||
public void xteaDecryptAll(int[] xteaKey) {
|
||||
int var2 = this.index / 8;
|
||||
this.index = 0;
|
||||
|
||||
@@ -616,8 +616,8 @@ public class Buffer extends Node {
|
||||
int var6 = -957401312;
|
||||
int var7 = -1640531527;
|
||||
|
||||
for (int var8 = 32; var8-- > 0; var4 -= var5 + (var5 << 4 ^ var5 >>> 5) ^ var6 + var1[var6 & 3]) {
|
||||
var5 -= var4 + (var4 << 4 ^ var4 >>> 5) ^ var1[var6 >>> 11 & 3] + var6;
|
||||
for (int var8 = 32; var8-- > 0; var4 -= var5 + (var5 << 4 ^ var5 >>> 5) ^ var6 + xteaKey[var6 & 3]) {
|
||||
var5 -= var4 + (var4 << 4 ^ var4 >>> 5) ^ xteaKey[var6 >>> 11 & 3] + var6;
|
||||
var6 -= var7;
|
||||
}
|
||||
|
||||
@@ -634,10 +634,10 @@ public class Buffer extends Node {
|
||||
garbageValue = "-1341435074"
|
||||
)
|
||||
@Export("xteaEncrypt")
|
||||
public void xteaEncrypt(int[] var1, int var2, int var3) {
|
||||
public void xteaEncrypt(int[] xteaKey, int start, int end) {
|
||||
int var4 = this.index;
|
||||
this.index = var2;
|
||||
int var5 = (var3 - var2) / 8;
|
||||
this.index = start;
|
||||
int var5 = (end - start) / 8;
|
||||
|
||||
for (int var6 = 0; var6 < var5; ++var6) {
|
||||
int var7 = this.readInt();
|
||||
@@ -645,8 +645,8 @@ public class Buffer extends Node {
|
||||
int var9 = 0;
|
||||
int var10 = -1640531527;
|
||||
|
||||
for (int var11 = 32; var11-- > 0; var8 += var7 + (var7 << 4 ^ var7 >>> 5) ^ var1[var9 >>> 11 & 3] + var9) {
|
||||
var7 += var8 + (var8 << 4 ^ var8 >>> 5) ^ var9 + var1[var9 & 3];
|
||||
for (int var11 = 32; var11-- > 0; var8 += var7 + (var7 << 4 ^ var7 >>> 5) ^ xteaKey[var9 >>> 11 & 3] + var9) {
|
||||
var7 += var8 + (var8 << 4 ^ var8 >>> 5) ^ var9 + xteaKey[var9 & 3];
|
||||
var9 += var10;
|
||||
}
|
||||
|
||||
@@ -664,10 +664,10 @@ public class Buffer extends Node {
|
||||
garbageValue = "307218624"
|
||||
)
|
||||
@Export("xteaDecrypt")
|
||||
public void xteaDecrypt(int[] var1, int var2, int var3) {
|
||||
public void xteaDecrypt(int[] xteaKey, int start, int end) {
|
||||
int var4 = this.index;
|
||||
this.index = var2;
|
||||
int var5 = (var3 - var2) / 8;
|
||||
this.index = start;
|
||||
int var5 = (end - start) / 8;
|
||||
|
||||
for (int var6 = 0; var6 < var5; ++var6) {
|
||||
int var7 = this.readInt();
|
||||
@@ -675,8 +675,8 @@ public class Buffer extends Node {
|
||||
int var9 = -957401312;
|
||||
int var10 = -1640531527;
|
||||
|
||||
for (int var11 = 32; var11-- > 0; var7 -= var8 + (var8 << 4 ^ var8 >>> 5) ^ var9 + var1[var9 & 3]) {
|
||||
var8 -= var7 + (var7 << 4 ^ var7 >>> 5) ^ var1[var9 >>> 11 & 3] + var9;
|
||||
for (int var11 = 32; var11-- > 0; var7 -= var8 + (var8 << 4 ^ var8 >>> 5) ^ var9 + xteaKey[var9 & 3]) {
|
||||
var8 -= var7 + (var7 << 4 ^ var7 >>> 5) ^ xteaKey[var9 >>> 11 & 3] + var9;
|
||||
var9 -= var10;
|
||||
}
|
||||
|
||||
@@ -835,9 +835,9 @@ public class Buffer extends Node {
|
||||
garbageValue = "51"
|
||||
)
|
||||
@Export("writeShortLE")
|
||||
public void writeShortLE(int var1) {
|
||||
this.array[++this.index - 1] = (byte)var1;
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 8);
|
||||
public void writeShortLE(int value) {
|
||||
this.array[++this.index - 1] = (byte)value;
|
||||
this.array[++this.index - 1] = (byte)(value >> 8);
|
||||
}
|
||||
|
||||
@ObfuscatedName("bo")
|
||||
@@ -936,11 +936,11 @@ public class Buffer extends Node {
|
||||
garbageValue = "78"
|
||||
)
|
||||
@Export("writeIntLE")
|
||||
public void writeIntLE(int var1) {
|
||||
this.array[++this.index - 1] = (byte)var1;
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 8);
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 16);
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 24);
|
||||
public void writeIntLE(int value) {
|
||||
this.array[++this.index - 1] = (byte)value;
|
||||
this.array[++this.index - 1] = (byte)(value >> 8);
|
||||
this.array[++this.index - 1] = (byte)(value >> 16);
|
||||
this.array[++this.index - 1] = (byte)(value >> 24);
|
||||
}
|
||||
|
||||
@ObfuscatedName("bz")
|
||||
@@ -949,11 +949,11 @@ public class Buffer extends Node {
|
||||
garbageValue = "80"
|
||||
)
|
||||
@Export("writeIntME")
|
||||
public void writeIntME(int var1) {
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 8);
|
||||
this.array[++this.index - 1] = (byte)var1;
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 24);
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 16);
|
||||
public void writeIntME(int value) {
|
||||
this.array[++this.index - 1] = (byte)(value >> 8);
|
||||
this.array[++this.index - 1] = (byte)value;
|
||||
this.array[++this.index - 1] = (byte)(value >> 24);
|
||||
this.array[++this.index - 1] = (byte)(value >> 16);
|
||||
}
|
||||
|
||||
@ObfuscatedName("bg")
|
||||
@@ -962,11 +962,11 @@ public class Buffer extends Node {
|
||||
garbageValue = "2115295559"
|
||||
)
|
||||
@Export("writeIntLE16")
|
||||
public void writeIntLE16(int var1) {
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 16);
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 24);
|
||||
this.array[++this.index - 1] = (byte)var1;
|
||||
this.array[++this.index - 1] = (byte)(var1 >> 8);
|
||||
public void writeIntLE16(int value) {
|
||||
this.array[++this.index - 1] = (byte)(value >> 16);
|
||||
this.array[++this.index - 1] = (byte)(value >> 24);
|
||||
this.array[++this.index - 1] = (byte)value;
|
||||
this.array[++this.index - 1] = (byte)(value >> 8);
|
||||
}
|
||||
|
||||
@ObfuscatedName("bt")
|
||||
|
||||
@@ -91,11 +91,11 @@ public class BufferedFile {
|
||||
|
||||
@ObfuscatedName("f")
|
||||
@Export("seek")
|
||||
public void seek(long var1) throws IOException {
|
||||
if (var1 < 0L) {
|
||||
public void seek(long index) throws IOException {
|
||||
if (index < 0L) {
|
||||
throw new IOException("");
|
||||
} else {
|
||||
this.field51 = var1;
|
||||
this.field51 = index;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,8 +115,8 @@ public class BufferedFile {
|
||||
garbageValue = "617965847"
|
||||
)
|
||||
@Export("readFill")
|
||||
public void readFill(byte[] var1) throws IOException {
|
||||
this.read(var1, 0, var1.length);
|
||||
public void readFill(byte[] dst) throws IOException {
|
||||
this.read(dst, 0, dst.length);
|
||||
}
|
||||
|
||||
@ObfuscatedName("o")
|
||||
@@ -125,69 +125,69 @@ public class BufferedFile {
|
||||
garbageValue = "-35"
|
||||
)
|
||||
@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 {
|
||||
if (var3 + var2 > var1.length) {
|
||||
throw new ArrayIndexOutOfBoundsException(var3 + var2 - var1.length);
|
||||
if (length + dstIndex > dst.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) {
|
||||
System.arraycopy(this.writeBuffer, (int)(this.field51 - this.field49), var1, var2, var3);
|
||||
this.field51 += (long)var3;
|
||||
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), dst, dstIndex, length);
|
||||
this.field51 += (long)length;
|
||||
return;
|
||||
}
|
||||
|
||||
long var4 = this.field51;
|
||||
int var6 = var3;
|
||||
int var6 = length;
|
||||
int var7;
|
||||
if (this.field51 >= this.field47 && this.field51 < this.field47 + (long)this.field48) {
|
||||
var7 = (int)((long)this.field48 - (this.field51 - this.field47));
|
||||
if (var7 > var3) {
|
||||
var7 = var3;
|
||||
if (var7 > length) {
|
||||
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;
|
||||
var2 += var7;
|
||||
var3 -= var7;
|
||||
dstIndex += var7;
|
||||
length -= var7;
|
||||
}
|
||||
|
||||
if (var3 > this.readBuffer.length) {
|
||||
if (length > this.readBuffer.length) {
|
||||
this.accessFile.seek(this.field51);
|
||||
|
||||
for (this.field53 = this.field51; var3 > 0; var3 -= var7) {
|
||||
var7 = this.accessFile.read(var1, var2, var3);
|
||||
for (this.field53 = this.field51; length > 0; length -= var7) {
|
||||
var7 = this.accessFile.read(dst, dstIndex, length);
|
||||
if (var7 == -1) {
|
||||
break;
|
||||
}
|
||||
|
||||
this.field53 += (long)var7;
|
||||
this.field51 += (long)var7;
|
||||
var2 += var7;
|
||||
dstIndex += var7;
|
||||
}
|
||||
} else if (var3 > 0) {
|
||||
} else if (length > 0) {
|
||||
this.load();
|
||||
var7 = var3;
|
||||
if (var3 > this.field48) {
|
||||
var7 = length;
|
||||
if (length > this.field48) {
|
||||
var7 = this.field48;
|
||||
}
|
||||
|
||||
System.arraycopy(this.readBuffer, 0, var1, var2, var7);
|
||||
var2 += var7;
|
||||
var3 -= var7;
|
||||
System.arraycopy(this.readBuffer, 0, dst, dstIndex, var7);
|
||||
dstIndex += var7;
|
||||
length -= var7;
|
||||
this.field51 += (long)var7;
|
||||
}
|
||||
|
||||
if (-1L != this.field49) {
|
||||
if (this.field49 > this.field51 && var3 > 0) {
|
||||
var7 = var2 + (int)(this.field49 - this.field51);
|
||||
if (var7 > var3 + var2) {
|
||||
var7 = var3 + var2;
|
||||
if (this.field49 > this.field51 && length > 0) {
|
||||
var7 = dstIndex + (int)(this.field49 - this.field51);
|
||||
if (var7 > length + dstIndex) {
|
||||
var7 = length + dstIndex;
|
||||
}
|
||||
|
||||
while (var2 < var7) {
|
||||
var1[var2++] = 0;
|
||||
--var3;
|
||||
while (dstIndex < var7) {
|
||||
dst[dstIndex++] = 0;
|
||||
--length;
|
||||
++this.field51;
|
||||
}
|
||||
}
|
||||
@@ -208,9 +208,9 @@ public class BufferedFile {
|
||||
|
||||
if (var8 > -1L && 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) {
|
||||
var3 = (int)((long)var3 - (var10 - this.field51));
|
||||
length = (int)((long)length - (var10 - this.field51));
|
||||
this.field51 = var10;
|
||||
}
|
||||
}
|
||||
@@ -220,7 +220,7 @@ public class BufferedFile {
|
||||
throw var13;
|
||||
}
|
||||
|
||||
if (var3 > 0) {
|
||||
if (length > 0) {
|
||||
throw new EOFException();
|
||||
}
|
||||
}
|
||||
@@ -256,34 +256,34 @@ public class BufferedFile {
|
||||
garbageValue = "-601174169"
|
||||
)
|
||||
@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 {
|
||||
if (this.field51 + (long)var3 > this.capacity) {
|
||||
this.capacity = this.field51 + (long)var3;
|
||||
if (this.field51 + (long)length > this.capacity) {
|
||||
this.capacity = this.field51 + (long)length;
|
||||
}
|
||||
|
||||
if (-1L != this.field49 && (this.field51 < this.field49 || this.field51 > this.field49 + (long)this.field50)) {
|
||||
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));
|
||||
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;
|
||||
var2 += var4;
|
||||
var3 -= var4;
|
||||
srcIndex += var4;
|
||||
length -= var4;
|
||||
this.field50 = this.writeBuffer.length;
|
||||
this.flush();
|
||||
}
|
||||
|
||||
if (var3 <= this.writeBuffer.length) {
|
||||
if (var3 > 0) {
|
||||
if (length <= this.writeBuffer.length) {
|
||||
if (length > 0) {
|
||||
if (this.field49 == -1L) {
|
||||
this.field49 = this.field51;
|
||||
}
|
||||
|
||||
System.arraycopy(var1, var2, this.writeBuffer, (int)(this.field51 - this.field49), var3);
|
||||
this.field51 += (long)var3;
|
||||
System.arraycopy(src, srcIndex, this.writeBuffer, (int)(this.field51 - this.field49), length);
|
||||
this.field51 += (long)length;
|
||||
if (this.field51 - this.field49 > (long)this.field50) {
|
||||
this.field50 = (int)(this.field51 - this.field49);
|
||||
}
|
||||
@@ -294,8 +294,8 @@ public class BufferedFile {
|
||||
this.field53 = this.field51;
|
||||
}
|
||||
|
||||
this.accessFile.write(var1, var2, var3);
|
||||
this.field53 += (long)var3;
|
||||
this.accessFile.write(src, srcIndex, length);
|
||||
this.field53 += (long)length;
|
||||
if (this.field53 > this.field52) {
|
||||
this.field52 = this.field53;
|
||||
}
|
||||
@@ -304,22 +304,22 @@ public class BufferedFile {
|
||||
long var6 = -1L;
|
||||
if (this.field51 >= this.field47 && this.field51 < (long)this.field48 + this.field47) {
|
||||
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;
|
||||
}
|
||||
|
||||
if (this.field51 + (long)var3 > this.field47 && (long)var3 + this.field51 <= (long)this.field48 + this.field47) {
|
||||
var6 = this.field51 + (long)var3;
|
||||
} else if ((long)this.field48 + this.field47 > this.field51 && this.field47 + (long)this.field48 <= (long)var3 + this.field51) {
|
||||
if (this.field51 + (long)length > this.field47 && (long)length + this.field51 <= (long)this.field48 + this.field47) {
|
||||
var6 = this.field51 + (long)length;
|
||||
} else if ((long)this.field48 + this.field47 > this.field51 && this.field47 + (long)this.field48 <= (long)length + this.field51) {
|
||||
var6 = (long)this.field48 + this.field47;
|
||||
}
|
||||
|
||||
if (var10 > -1L && 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) {
|
||||
@@ -387,8 +387,8 @@ public class BufferedFile {
|
||||
garbageValue = "-792629541"
|
||||
)
|
||||
@Export("colorStartTag")
|
||||
static String colorStartTag(int var0) {
|
||||
return "<col=" + Integer.toHexString(var0) + ">";
|
||||
static String colorStartTag(int color) {
|
||||
return "<col=" + Integer.toHexString(color) + ">";
|
||||
}
|
||||
|
||||
@ObfuscatedName("er")
|
||||
|
||||
@@ -40,8 +40,8 @@ public class BufferedNetSocket extends AbstractSocket {
|
||||
garbageValue = "1765046516"
|
||||
)
|
||||
@Export("isAvailable")
|
||||
public boolean isAvailable(int var1) throws IOException {
|
||||
return this.source.isAvailable(var1);
|
||||
public boolean isAvailable(int length) throws IOException {
|
||||
return this.source.isAvailable(length);
|
||||
}
|
||||
|
||||
@ObfuscatedName("q")
|
||||
@@ -70,8 +70,8 @@ public class BufferedNetSocket extends AbstractSocket {
|
||||
garbageValue = "-1089665746"
|
||||
)
|
||||
@Export("read")
|
||||
public int read(byte[] var1, int var2, int var3) throws IOException {
|
||||
return this.source.read(var1, var2, var3);
|
||||
public int read(byte[] dst, int dstIndex, int length) throws IOException {
|
||||
return this.source.read(dst, dstIndex, length);
|
||||
}
|
||||
|
||||
@ObfuscatedName("u")
|
||||
@@ -80,8 +80,8 @@ public class BufferedNetSocket extends AbstractSocket {
|
||||
garbageValue = "-86"
|
||||
)
|
||||
@Export("write")
|
||||
public void write(byte[] var1, int var2, int var3) throws IOException {
|
||||
this.sink.write(var1, var2, var3);
|
||||
public void write(byte[] src, int srcIndex, int length) throws IOException {
|
||||
this.sink.write(src, srcIndex, length);
|
||||
}
|
||||
|
||||
@ObfuscatedName("g")
|
||||
|
||||
@@ -40,8 +40,8 @@ public class BufferedSink implements Runnable {
|
||||
@Export("exception")
|
||||
IOException exception;
|
||||
@ObfuscatedName("l")
|
||||
@Export("isClosed0")
|
||||
boolean isClosed0;
|
||||
@Export("closed")
|
||||
boolean closed;
|
||||
|
||||
BufferedSink(OutputStream var1, int var2) {
|
||||
this.position = 0;
|
||||
@@ -61,7 +61,7 @@ public class BufferedSink implements Runnable {
|
||||
)
|
||||
@Export("isClosed")
|
||||
boolean isClosed() {
|
||||
if (this.isClosed0) {
|
||||
if (this.closed) {
|
||||
try {
|
||||
this.outputStream.close();
|
||||
if (this.exception == null) {
|
||||
@@ -85,8 +85,8 @@ public class BufferedSink implements Runnable {
|
||||
garbageValue = "0"
|
||||
)
|
||||
@Export("write")
|
||||
void write(byte[] var1, int var2, int var3) throws IOException {
|
||||
if (var3 >= 0 && var2 >= 0 && var3 + var2 <= var1.length) {
|
||||
void write(byte[] src, int srcIndex, int length) throws IOException {
|
||||
if (length >= 0 && srcIndex >= 0 && length + srcIndex <= src.length) {
|
||||
synchronized(this) {
|
||||
if (this.exception != null) {
|
||||
throw new IOException(this.exception.toString());
|
||||
@@ -98,18 +98,18 @@ public class BufferedSink implements Runnable {
|
||||
var5 = this.position - this.limit - 1;
|
||||
}
|
||||
|
||||
if (var5 < var3) {
|
||||
if (var5 < length) {
|
||||
throw new IOException("");
|
||||
} else {
|
||||
if (var3 + this.limit <= this.capacity) {
|
||||
System.arraycopy(var1, var2, this.buffer, this.limit, var3);
|
||||
if (length + this.limit <= this.capacity) {
|
||||
System.arraycopy(src, srcIndex, this.buffer, this.limit, length);
|
||||
} else {
|
||||
int var6 = this.capacity - this.limit;
|
||||
System.arraycopy(var1, var2, this.buffer, this.limit, var6);
|
||||
System.arraycopy(var1, var6 + var2, this.buffer, 0, var3 - var6);
|
||||
System.arraycopy(src, srcIndex, this.buffer, this.limit, 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();
|
||||
}
|
||||
}
|
||||
@@ -127,7 +127,7 @@ public class BufferedSink implements Runnable {
|
||||
@Export("close")
|
||||
void close() {
|
||||
synchronized(this) {
|
||||
this.isClosed0 = true;
|
||||
this.closed = true;
|
||||
this.notifyAll();
|
||||
}
|
||||
|
||||
@@ -138,33 +138,33 @@ public class BufferedSink implements Runnable {
|
||||
|
||||
}
|
||||
|
||||
@Export("run")
|
||||
@ObfuscatedName("run")
|
||||
public void run() {
|
||||
while (true) {
|
||||
synchronized(this){}
|
||||
synchronized(this) {
|
||||
;
|
||||
}
|
||||
|
||||
while (true) {
|
||||
boolean var13 = false;
|
||||
boolean var1 = false;
|
||||
|
||||
int var1;
|
||||
int var2;
|
||||
try {
|
||||
var13 = true;
|
||||
var1 = true;
|
||||
if (this.exception != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.position <= this.limit) {
|
||||
var1 = this.limit - this.position;
|
||||
var2 = this.limit - this.position;
|
||||
} else {
|
||||
var1 = this.capacity - this.position + this.limit;
|
||||
var2 = this.capacity - this.position + this.limit;
|
||||
}
|
||||
|
||||
if (var1 <= 0) {
|
||||
if (var2 <= 0) {
|
||||
try {
|
||||
this.outputStream.flush();
|
||||
} catch (IOException var17) {
|
||||
this.exception = var17;
|
||||
} catch (IOException var20) {
|
||||
this.exception = var20;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -179,31 +179,31 @@ public class BufferedSink implements Runnable {
|
||||
continue;
|
||||
}
|
||||
|
||||
var13 = false;
|
||||
var1 = false;
|
||||
} finally {
|
||||
if (var13) {
|
||||
;
|
||||
if (var1) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
try {
|
||||
if (var1 + this.position <= this.capacity) {
|
||||
this.outputStream.write(this.buffer, this.position, var1);
|
||||
} else {
|
||||
int var2 = this.capacity - this.position;
|
||||
if (var2 + this.position <= this.capacity) {
|
||||
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) {
|
||||
IOException var3 = var16;
|
||||
} catch (IOException var17) {
|
||||
IOException var4 = var17;
|
||||
synchronized(this) {
|
||||
this.exception = var3;
|
||||
this.exception = var4;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
synchronized(this) {
|
||||
this.position = (var1 + this.position) % this.capacity;
|
||||
this.position = (var2 + this.position) % this.capacity;
|
||||
}
|
||||
|
||||
if (!this.isClosed()) {
|
||||
@@ -221,13 +221,13 @@ public class BufferedSink implements Runnable {
|
||||
garbageValue = "449588720"
|
||||
)
|
||||
static void method3603() {
|
||||
Tiles.field908 = (byte[][][])null;
|
||||
Fonts.field350 = (byte[][][])null;
|
||||
class32.field1157 = (byte[][][])null;
|
||||
class307.field1155 = (byte[][][])null;
|
||||
Tiles.field910 = (int[][][])null;
|
||||
Tiles.field909 = (byte[][][])null;
|
||||
Huffman.field398 = (int[][])null;
|
||||
Tiles.field908 = ((byte[][][])null);
|
||||
Fonts.field350 = ((byte[][][])null);
|
||||
class32.field1157 = ((byte[][][])null);
|
||||
class307.field1155 = ((byte[][][])null);
|
||||
Tiles.field910 = ((int[][][])null);
|
||||
Tiles.field909 = ((byte[][][])null);
|
||||
Huffman.field398 = ((int[][])null);
|
||||
class13.field1112 = null;
|
||||
Formatting.field353 = null;
|
||||
class214.field1131 = null;
|
||||
|
||||
@@ -14,7 +14,7 @@ public class BufferedSource implements Runnable {
|
||||
@ObfuscatedSignature(
|
||||
signature = "Lir;"
|
||||
)
|
||||
public static AbstractIndexCache field54;
|
||||
public static AbstractArchive field54;
|
||||
@ObfuscatedName("m")
|
||||
@Export("thread")
|
||||
Thread thread;
|
||||
@@ -63,10 +63,10 @@ public class BufferedSource implements Runnable {
|
||||
garbageValue = "1727240458"
|
||||
)
|
||||
@Export("isAvailable")
|
||||
boolean isAvailable(int var1) throws IOException {
|
||||
if (var1 == 0) {
|
||||
boolean isAvailable(int length) throws IOException {
|
||||
if (length == 0) {
|
||||
return true;
|
||||
} else if (var1 > 0 && var1 < this.capacity) {
|
||||
} else if (length > 0 && length < this.capacity) {
|
||||
synchronized(this) {
|
||||
int var3;
|
||||
if (this.position <= this.limit) {
|
||||
@@ -75,7 +75,7 @@ public class BufferedSource implements Runnable {
|
||||
var3 = this.capacity - this.position + this.limit;
|
||||
}
|
||||
|
||||
if (var3 < var1) {
|
||||
if (var3 < length) {
|
||||
if (this.exception != null) {
|
||||
throw new IOException(this.exception.toString());
|
||||
} else {
|
||||
@@ -144,8 +144,8 @@ public class BufferedSource implements Runnable {
|
||||
garbageValue = "-37"
|
||||
)
|
||||
@Export("read")
|
||||
int read(byte[] var1, int var2, int var3) throws IOException {
|
||||
if (var3 >= 0 && var2 >= 0 && var3 + var2 <= var1.length) {
|
||||
int read(byte[] dst, int dstIndex, int length) throws IOException {
|
||||
if (length >= 0 && dstIndex >= 0 && length + dstIndex <= dst.length) {
|
||||
synchronized(this) {
|
||||
int var5;
|
||||
if (this.position <= this.limit) {
|
||||
@@ -154,24 +154,24 @@ public class BufferedSource implements Runnable {
|
||||
var5 = this.capacity - this.position + this.limit;
|
||||
}
|
||||
|
||||
if (var3 > var5) {
|
||||
var3 = var5;
|
||||
if (length > var5) {
|
||||
length = var5;
|
||||
}
|
||||
|
||||
if (var3 == 0 && this.exception != null) {
|
||||
if (length == 0 && this.exception != null) {
|
||||
throw new IOException(this.exception.toString());
|
||||
} else {
|
||||
if (var3 + this.position <= this.capacity) {
|
||||
System.arraycopy(this.buffer, this.position, var1, var2, var3);
|
||||
if (length + this.position <= this.capacity) {
|
||||
System.arraycopy(this.buffer, this.position, dst, dstIndex, length);
|
||||
} else {
|
||||
int var6 = this.capacity - this.position;
|
||||
System.arraycopy(this.buffer, this.position, var1, var2, var6);
|
||||
System.arraycopy(this.buffer, 0, var1, var6 + var2, var3 - var6);
|
||||
System.arraycopy(this.buffer, this.position, dst, dstIndex, 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();
|
||||
return var3;
|
||||
return length;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -201,8 +201,6 @@ public class BufferedSource implements Runnable {
|
||||
|
||||
}
|
||||
|
||||
@Export("run")
|
||||
@ObfuscatedName("run")
|
||||
public void run() {
|
||||
while (true) {
|
||||
int var1;
|
||||
|
||||
@@ -40,8 +40,8 @@ public class ByteArrayPool {
|
||||
@ObfuscatedSignature(
|
||||
signature = "Lit;"
|
||||
)
|
||||
@Export("indexCache13")
|
||||
static IndexCache indexCache13;
|
||||
@Export("archive13")
|
||||
static Archive archive13;
|
||||
|
||||
@ObfuscatedName("f")
|
||||
@ObfuscatedSignature(
|
||||
|
||||
@@ -292,49 +292,49 @@ public final class Bzip2Decompressor {
|
||||
}
|
||||
|
||||
int var33;
|
||||
int var50;
|
||||
for (var50 = 0; var50 < var28; ++var50) {
|
||||
var33 = method3708(5, var0);
|
||||
int var52;
|
||||
for (var33 = 0; var33 < var28; ++var33) {
|
||||
var52 = method3708(5, var0);
|
||||
|
||||
for (var25 = 0; var25 < var27; ++var25) {
|
||||
while (true) {
|
||||
var24 = method3711(var0);
|
||||
if (var24 == 0) {
|
||||
var0.field88[var50][var25] = (byte)var33;
|
||||
var0.field88[var33][var25] = (byte)var52;
|
||||
break;
|
||||
}
|
||||
|
||||
var24 = method3711(var0);
|
||||
if (var24 == 0) {
|
||||
++var33;
|
||||
++var52;
|
||||
} else {
|
||||
--var33;
|
||||
--var52;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var50 = 0; var50 < var28; ++var50) {
|
||||
byte var51 = 32;
|
||||
byte var34 = 0;
|
||||
for (var33 = 0; var33 < var28; ++var33) {
|
||||
byte var34 = 32;
|
||||
byte var35 = 0;
|
||||
|
||||
for (var25 = 0; var25 < var27; ++var25) {
|
||||
if (var0.field88[var50][var25] > var34) {
|
||||
var34 = var0.field88[var50][var25];
|
||||
if (var0.field88[var33][var25] > var35) {
|
||||
var35 = var0.field88[var33][var25];
|
||||
}
|
||||
|
||||
if (var0.field88[var50][var25] < var51) {
|
||||
var51 = var0.field88[var50][var25];
|
||||
if (var0.field88[var33][var25] < var34) {
|
||||
var34 = var0.field88[var33][var25];
|
||||
}
|
||||
}
|
||||
|
||||
method3706(var0.field89[var50], var0.field90[var50], var0.field91[var50], var0.field88[var50], var51, var34, var27);
|
||||
var0.field92[var50] = var51;
|
||||
method3706(var0.field89[var33], var0.field90[var33], var0.field91[var33], var0.field88[var33], var34, var35, var27);
|
||||
var0.field92[var33] = var34;
|
||||
}
|
||||
|
||||
var33 = var0.field80 + 1;
|
||||
int var52 = -1;
|
||||
byte var35 = 0;
|
||||
var52 = var0.field80 + 1;
|
||||
int var53 = -1;
|
||||
byte var54 = 0;
|
||||
|
||||
for (var25 = 0; var25 <= 255; ++var25) {
|
||||
var0.field77[var25] = 0;
|
||||
@@ -355,17 +355,17 @@ public final class Bzip2Decompressor {
|
||||
|
||||
int var39 = 0;
|
||||
byte var40;
|
||||
if (var35 == 0) {
|
||||
++var52;
|
||||
var35 = 50;
|
||||
var40 = var0.field86[var52];
|
||||
if (var54 == 0) {
|
||||
++var53;
|
||||
var54 = 50;
|
||||
var40 = var0.field86[var53];
|
||||
var19 = var0.field92[var40];
|
||||
var20 = var0.field89[var40];
|
||||
var22 = var0.field91[var40];
|
||||
var21 = var0.field90[var40];
|
||||
}
|
||||
|
||||
int var41 = var35 - 1;
|
||||
int var41 = var54 - 1;
|
||||
int var42 = var19;
|
||||
|
||||
int var43;
|
||||
@@ -378,46 +378,46 @@ public final class Bzip2Decompressor {
|
||||
int var45 = var22[var43 - var21[var42]];
|
||||
|
||||
while (true) {
|
||||
int[] var10000;
|
||||
int var54;
|
||||
while (var45 != var33) {
|
||||
int var46;
|
||||
int var47;
|
||||
int[] var46;
|
||||
int var48;
|
||||
while (var45 != var52) {
|
||||
int var49;
|
||||
if (var45 != 0 && var45 != 1) {
|
||||
var46 = var45 - 1;
|
||||
int var48;
|
||||
if (var46 < 16) {
|
||||
var47 = var0.field85[0];
|
||||
var48 = var45 - 1;
|
||||
int var10003;
|
||||
int var50;
|
||||
if (var48 < 16) {
|
||||
var49 = var0.field85[0];
|
||||
|
||||
for (var24 = var0.field84[var47 + var46]; var46 > 3; var46 -= 4) {
|
||||
var48 = var47 + var46;
|
||||
var0.field84[var48] = var0.field84[var48 - 1];
|
||||
var0.field84[var48 - 1] = var0.field84[var48 - 2];
|
||||
var0.field84[var48 - 2] = var0.field84[var48 - 3];
|
||||
var0.field84[var48 - 3] = var0.field84[var48 - 4];
|
||||
for (var24 = var0.field84[var49 + var48]; var48 > 3; var48 -= 4) {
|
||||
var50 = var49 + var48;
|
||||
var0.field84[var50] = var0.field84[var50 - 1];
|
||||
var0.field84[var50 - 1] = var0.field84[var50 - 2];
|
||||
var0.field84[var50 - 2] = var0.field84[var50 - 3];
|
||||
var0.field84[var50 - 3] = var0.field84[var50 - 4];
|
||||
}
|
||||
|
||||
while (var46 > 0) {
|
||||
var0.field84[var47 + var46] = var0.field84[var47 + var46 - 1];
|
||||
--var46;
|
||||
while (var48 > 0) {
|
||||
var0.field84[var49 + var48] = var0.field84[var49 + var48 - 1];
|
||||
--var48;
|
||||
}
|
||||
|
||||
var0.field84[var47] = var24;
|
||||
var0.field84[var49] = var24;
|
||||
} else {
|
||||
var48 = var46 / 16;
|
||||
int var49 = var46 % 16;
|
||||
var47 = var0.field85[var48] + var49;
|
||||
var50 = var48 / 16;
|
||||
int var51 = var48 % 16;
|
||||
var49 = var0.field85[var50] + var51;
|
||||
|
||||
for (var24 = var0.field84[var47]; var47 > var0.field85[var48]; --var47) {
|
||||
var0.field84[var47] = var0.field84[var47 - 1];
|
||||
for (var24 = var0.field84[var49]; var49 > var0.field85[var50]; --var49) {
|
||||
var0.field84[var49] = var0.field84[var49 - 1];
|
||||
}
|
||||
|
||||
for (var54 = var0.field85[var48]++; var48 > 0; --var48) {
|
||||
var54 = var0.field85[var48]--;
|
||||
var0.field84[var0.field85[var48]] = var0.field84[var0.field85[var48 - 1] + 16 - 1];
|
||||
for (var10003 = var0.field85[var50]++; var50 > 0; --var50) {
|
||||
var10003 = var0.field85[var50]--;
|
||||
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;
|
||||
if (var0.field85[0] == 0) {
|
||||
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;
|
||||
++var39;
|
||||
if (var41 == 0) {
|
||||
++var52;
|
||||
++var53;
|
||||
var41 = 50;
|
||||
var40 = var0.field86[var52];
|
||||
var40 = var0.field86[var53];
|
||||
var19 = var0.field92[var40];
|
||||
var20 = var0.field89[var40];
|
||||
var22 = var0.field91[var40];
|
||||
@@ -456,21 +456,21 @@ public final class Bzip2Decompressor {
|
||||
|
||||
var45 = var22[var43 - var21[var42]];
|
||||
} else {
|
||||
var46 = -1;
|
||||
var47 = 1;
|
||||
var48 = -1;
|
||||
var49 = 1;
|
||||
|
||||
do {
|
||||
if (var45 == 0) {
|
||||
var46 += var47;
|
||||
var48 += var49;
|
||||
} else if (var45 == 1) {
|
||||
var46 += var47 * 2;
|
||||
var48 += var49 * 2;
|
||||
}
|
||||
|
||||
var47 *= 2;
|
||||
var49 *= 2;
|
||||
if (var41 == 0) {
|
||||
++var52;
|
||||
++var53;
|
||||
var41 = 50;
|
||||
var40 = var0.field86[var52];
|
||||
var40 = var0.field86[var53];
|
||||
var19 = var0.field92[var40];
|
||||
var20 = var0.field89[var40];
|
||||
var22 = var0.field91[var40];
|
||||
@@ -488,11 +488,11 @@ public final class Bzip2Decompressor {
|
||||
var45 = var22[var43 - var21[var42]];
|
||||
} while(var45 == 0 || var45 == 1);
|
||||
|
||||
++var46;
|
||||
++var48;
|
||||
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;
|
||||
++var39;
|
||||
}
|
||||
@@ -508,16 +508,16 @@ public final class Bzip2Decompressor {
|
||||
}
|
||||
|
||||
for (var25 = 1; var25 <= 256; ++var25) {
|
||||
var10000 = var0.field79;
|
||||
var10000[var25] += var0.field79[var25 - 1];
|
||||
var46 = var0.field79;
|
||||
var46[var25] += var0.field79[var25 - 1];
|
||||
}
|
||||
|
||||
for (var25 = 0; var25 < var39; ++var25) {
|
||||
var24 = (byte)(WorldMapSection0.field1056[var25] & 255);
|
||||
var10000 = WorldMapSection0.field1056;
|
||||
int var53 = var0.field79[var24 & 255];
|
||||
var10000[var53] |= var25 << 8;
|
||||
var54 = var0.field79[var24 & 255]++;
|
||||
var46 = WorldMapSection0.field1056;
|
||||
var48 = var0.field79[var24 & 255];
|
||||
var46[var48] |= var25 << 8;
|
||||
++var0.field79[var24 & 255];
|
||||
}
|
||||
|
||||
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.ObfuscatedName;
|
||||
import net.runelite.mapping.ObfuscatedSignature;
|
||||
import net.runelite.rs.ScriptOpcodes;
|
||||
|
||||
@ObfuscatedName("ao")
|
||||
@Implements("Canvas")
|
||||
@@ -117,8 +118,8 @@ public final class Canvas extends java.awt.Canvas {
|
||||
static int method861(int var0, Script var1, boolean var2) {
|
||||
int var3;
|
||||
int var4;
|
||||
Widget var6;
|
||||
if (var0 == 100) {
|
||||
Widget var5;
|
||||
if (var0 == ScriptOpcodes.CC_CREATE) {
|
||||
RouteStrategy.Interpreter_intStackSize -= 3;
|
||||
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
|
||||
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
|
||||
@@ -126,62 +127,62 @@ public final class Canvas extends java.awt.Canvas {
|
||||
if (var4 == 0) {
|
||||
throw new RuntimeException();
|
||||
} else {
|
||||
var6 = Huffman.getWidget(var3);
|
||||
if (var6.children == null) {
|
||||
var6.children = new Widget[var9 + 1];
|
||||
var5 = Huffman.getWidget(var3);
|
||||
if (var5.children == null) {
|
||||
var5.children = new Widget[var9 + 1];
|
||||
}
|
||||
|
||||
if (var6.children.length <= var9) {
|
||||
if (var5.children.length <= var9) {
|
||||
Widget[] var7 = new Widget[var9 + 1];
|
||||
|
||||
for (int var8 = 0; var8 < var6.children.length; ++var8) {
|
||||
var7[var8] = var6.children[var8];
|
||||
for (int var8 = 0; var8 < var5.children.length; ++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));
|
||||
} else {
|
||||
Widget var10 = new Widget();
|
||||
var10.type = var4;
|
||||
var10.parentId = var10.id = var6.id;
|
||||
var10.parentId = var10.id = var5.id;
|
||||
var10.childIndex = var9;
|
||||
var10.isIf3 = true;
|
||||
var6.children[var9] = var10;
|
||||
var5.children[var9] = var10;
|
||||
if (var2) {
|
||||
WorldMapIcon1.field1030 = var10;
|
||||
} else {
|
||||
class12.field1111 = var10;
|
||||
GrandExchangeOfferAgeComparator.field1111 = var10;
|
||||
}
|
||||
|
||||
class22.method295(var6);
|
||||
class22.method295(var5);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Widget var5;
|
||||
if (var0 == 101) {
|
||||
var5 = var2 ? WorldMapIcon1.field1030 : class12.field1111;
|
||||
var6 = Huffman.getWidget(var5.id);
|
||||
var6.children[var5.childIndex] = null;
|
||||
class22.method295(var6);
|
||||
return 1;
|
||||
} else if (var0 == 102) {
|
||||
var5 = Huffman.getWidget(Interpreter.Interpreter_intStack[--RouteStrategy.Interpreter_intStackSize]);
|
||||
var5.children = null;
|
||||
Widget var6;
|
||||
if (var0 == ScriptOpcodes.CC_DELETE) {
|
||||
var6 = var2 ? WorldMapIcon1.field1030 : GrandExchangeOfferAgeComparator.field1111;
|
||||
var5 = Huffman.getWidget(var6.id);
|
||||
var5.children[var6.childIndex] = null;
|
||||
class22.method295(var5);
|
||||
return 1;
|
||||
} else if (var0 != 200) {
|
||||
if (var0 == 201) {
|
||||
var5 = Huffman.getWidget(Interpreter.Interpreter_intStack[--RouteStrategy.Interpreter_intStackSize]);
|
||||
if (var5 != null) {
|
||||
} else if (var0 == ScriptOpcodes.CC_DELETEALL) {
|
||||
var6 = Huffman.getWidget(Interpreter.Interpreter_intStack[--RouteStrategy.Interpreter_intStackSize]);
|
||||
var6.children = 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;
|
||||
if (var2) {
|
||||
WorldMapIcon1.field1030 = var5;
|
||||
WorldMapIcon1.field1030 = var6;
|
||||
} else {
|
||||
class12.field1111 = var5;
|
||||
GrandExchangeOfferAgeComparator.field1111 = var6;
|
||||
}
|
||||
} else {
|
||||
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 0;
|
||||
@@ -195,13 +196,13 @@ public final class Canvas extends java.awt.Canvas {
|
||||
RouteStrategy.Interpreter_intStackSize -= 2;
|
||||
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
|
||||
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
|
||||
var6 = class204.getWidgetChild(var3, var4);
|
||||
if (var6 != null && var4 != -1) {
|
||||
var5 = class204.getWidgetChild(var3, var4);
|
||||
if (var5 != null && var4 != -1) {
|
||||
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 1;
|
||||
if (var2) {
|
||||
WorldMapIcon1.field1030 = var6;
|
||||
WorldMapIcon1.field1030 = var5;
|
||||
} else {
|
||||
class12.field1111 = var6;
|
||||
GrandExchangeOfferAgeComparator.field1111 = var5;
|
||||
}
|
||||
} else {
|
||||
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",
|
||||
garbageValue = "-9124"
|
||||
)
|
||||
public static void method858(int var0, AbstractIndexCache var1, String var2, String var3, int var4, boolean var5) {
|
||||
int var6 = var1.getArchiveId(var2);
|
||||
int var7 = var1.getRecordId(var6, var3);
|
||||
public static void method858(int var0, AbstractArchive var1, String groupName, String fileName, int var4, boolean var5) {
|
||||
int var6 = var1.getGroupId(groupName);
|
||||
int var7 = var1.getFileId(var6, fileName);
|
||||
class214.field1129 = 1;
|
||||
class214.field1130 = var1;
|
||||
class30.musicTrackArchiveId = var6;
|
||||
class30.musicTrackGroupId = var6;
|
||||
GrandExchangeOffer.musicTrackFileId = var7;
|
||||
WorldMapLabel.field1039 = var4;
|
||||
RectangleMode.musicTrackBoolean = var5;
|
||||
@@ -242,7 +243,7 @@ public final class Canvas extends java.awt.Canvas {
|
||||
|
||||
if (var0.hitpoints == 0) {
|
||||
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();
|
||||
}
|
||||
} 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))) {
|
||||
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;
|
||||
if (var0.field903 == var0.id && var0.field903 == -1) {
|
||||
var0.remove();
|
||||
|
||||
@@ -30,7 +30,7 @@ public class ChatChannel {
|
||||
garbageValue = "463993373"
|
||||
)
|
||||
@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];
|
||||
|
||||
for (int var6 = this.count; var6 > 0; --var6) {
|
||||
@@ -40,11 +40,11 @@ public class ChatChannel {
|
||||
}
|
||||
|
||||
if (var5 == null) {
|
||||
var5 = new Message(var1, var2, var4, var3);
|
||||
var5 = new Message(type, sender, prefix, text);
|
||||
} else {
|
||||
var5.remove();
|
||||
var5.removeDual();
|
||||
var5.set(var1, var2, var4, var3);
|
||||
var5.set(type, sender, prefix, text);
|
||||
}
|
||||
|
||||
this.messages[0] = var5;
|
||||
@@ -61,8 +61,8 @@ public class ChatChannel {
|
||||
garbageValue = "-195254780"
|
||||
)
|
||||
@Export("getMessage")
|
||||
Message getMessage(int var1) {
|
||||
return var1 >= 0 && var1 < this.count ? this.messages[var1] : null;
|
||||
Message getMessage(int index) {
|
||||
return index >= 0 && index < this.count ? this.messages[index] : null;
|
||||
}
|
||||
|
||||
@ObfuscatedName("q")
|
||||
@@ -80,7 +80,8 @@ public class ChatChannel {
|
||||
signature = "(CI)Z",
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -317,7 +318,7 @@ public class ChatChannel {
|
||||
|
||||
if (var0.isIf3) {
|
||||
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);
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -26,7 +26,8 @@ public class ClanChat extends UserList {
|
||||
@Export("owner")
|
||||
public String owner;
|
||||
@ObfuscatedName("k")
|
||||
public byte field96;
|
||||
@Export("minKick")
|
||||
public byte minKick;
|
||||
@ObfuscatedName("n")
|
||||
@ObfuscatedGetter(
|
||||
intValue = -1534670751
|
||||
@@ -95,9 +96,9 @@ public class ClanChat extends UserList {
|
||||
garbageValue = "455791964"
|
||||
)
|
||||
@Export("readUpdate")
|
||||
public final void readUpdate(Buffer var1) {
|
||||
this.method77(var1.readStringCp1252NullTerminated());
|
||||
long var2 = var1.readLong();
|
||||
public final void readUpdate(Buffer buffer) {
|
||||
this.method77(buffer.readStringCp1252NullTerminated());
|
||||
long var2 = buffer.readLong();
|
||||
long var4 = var2;
|
||||
String var6;
|
||||
int var7;
|
||||
@@ -126,17 +127,17 @@ public class ClanChat extends UserList {
|
||||
}
|
||||
|
||||
this.method76(var6);
|
||||
this.field96 = var1.readByte();
|
||||
var7 = var1.readUnsignedByte();
|
||||
this.minKick = buffer.readByte();
|
||||
var7 = buffer.readUnsignedByte();
|
||||
if (var7 != 255) {
|
||||
this.clear();
|
||||
|
||||
for (int var12 = 0; var12 < var7; ++var12) {
|
||||
ClanMate var13 = (ClanMate)this.addLastNoPreviousUsername(new Username(var1.readStringCp1252NullTerminated(), this.loginType));
|
||||
int var10 = var1.readUnsignedShort();
|
||||
ClanMate var13 = (ClanMate)this.addLastNoPreviousUsername(new Username(buffer.readStringCp1252NullTerminated(), this.loginType));
|
||||
int var10 = buffer.readUnsignedShort();
|
||||
var13.set(var10, ++this.field97 - 1);
|
||||
var13.rank = var1.readByte();
|
||||
var1.readStringCp1252NullTerminated();
|
||||
var13.rank = buffer.readByte();
|
||||
buffer.readStringCp1252NullTerminated();
|
||||
this.method79(var13);
|
||||
}
|
||||
}
|
||||
@@ -164,7 +165,7 @@ public class ClanChat extends UserList {
|
||||
}
|
||||
|
||||
var6 = (ClanMate)this.getByCurrentUsername(var2);
|
||||
if (var6 != null && var6.world() == var3) {
|
||||
if (var6 != null && var6.getWorld() == var3) {
|
||||
this.remove(var6);
|
||||
}
|
||||
} else {
|
||||
@@ -217,7 +218,7 @@ public class ClanChat extends UserList {
|
||||
garbageValue = "-128608554"
|
||||
)
|
||||
final void method79(ClanMate var1) {
|
||||
if (var1.username().equals(this.localUser.username())) {
|
||||
if (var1.getUsername().equals(this.localUser.username())) {
|
||||
this.rank = var1.rank;
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ public class ClanMate extends Buddy {
|
||||
)
|
||||
@Export("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")
|
||||
@@ -89,6 +89,6 @@ public class ClanMate extends Buddy {
|
||||
)
|
||||
@Export("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"
|
||||
)
|
||||
static final void method1809(int var0) {
|
||||
if (GroundItemPile.loadWidgetGroup(var0)) {
|
||||
NetFileRequest.method4555(Widget.widgets[var0], -1);
|
||||
if (GroundItemPile.loadInterface(var0)) {
|
||||
NetFileRequest.method4555(Widget.interfaceComponents[var0], -1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ public abstract class Clock {
|
||||
garbageValue = "-126803683"
|
||||
)
|
||||
@Export("wait")
|
||||
public abstract int wait(int var1, int var2);
|
||||
public abstract int wait(int cycleMs, int minSleepMs);
|
||||
|
||||
@ObfuscatedName("m")
|
||||
public static String method3534(long var0) {
|
||||
@@ -41,22 +41,22 @@ public abstract class Clock {
|
||||
++var2;
|
||||
}
|
||||
|
||||
char var4;
|
||||
StringBuilder var8;
|
||||
for (var8 = new StringBuilder(var2); var0 != 0L; var8.append(var4)) {
|
||||
StringBuilder var4;
|
||||
char var8;
|
||||
for (var4 = new StringBuilder(var2); var0 != 0L; var4.append(var8)) {
|
||||
long var5 = var0;
|
||||
var0 /= 37L;
|
||||
var4 = class306.base37Table[(int)(var5 - 37L * var0)];
|
||||
if (var4 == '_') {
|
||||
int var7 = var8.length() - 1;
|
||||
var8.setCharAt(var7, Character.toUpperCase(var8.charAt(var7)));
|
||||
var4 = 160;
|
||||
var8 = class306.base37Table[(int)(var5 - 37L * var0)];
|
||||
if (var8 == '_') {
|
||||
int var7 = var4.length() - 1;
|
||||
var4.setCharAt(var7, Character.toUpperCase(var4.charAt(var7)));
|
||||
var8 = 160;
|
||||
}
|
||||
}
|
||||
|
||||
var8.reverse();
|
||||
var8.setCharAt(0, Character.toUpperCase(var8.charAt(0)));
|
||||
return var8.toString();
|
||||
var4.reverse();
|
||||
var4.setCharAt(0, Character.toUpperCase(var4.charAt(0)));
|
||||
return var4.toString();
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
|
||||
@@ -249,8 +249,8 @@ public class CollisionMap {
|
||||
public void method92(int var1, int var2) {
|
||||
var1 -= this.xInset;
|
||||
var2 -= this.yInset;
|
||||
int[] var10000 = this.flags[var1];
|
||||
var10000[var2] |= 2097152;
|
||||
int[] var3 = this.flags[var1];
|
||||
var3[var2] |= 2097152;
|
||||
}
|
||||
|
||||
@ObfuscatedName("o")
|
||||
@@ -261,8 +261,8 @@ public class CollisionMap {
|
||||
public void method93(int var1, int var2) {
|
||||
var1 -= this.xInset;
|
||||
var2 -= this.yInset;
|
||||
int[] var10000 = this.flags[var1];
|
||||
var10000[var2] |= 262144;
|
||||
int[] var3 = this.flags[var1];
|
||||
var3[var2] |= 262144;
|
||||
}
|
||||
|
||||
@ObfuscatedName("u")
|
||||
@@ -271,8 +271,8 @@ public class CollisionMap {
|
||||
garbageValue = "953350100"
|
||||
)
|
||||
void method94(int var1, int var2, int var3) {
|
||||
int[] var10000 = this.flags[var1];
|
||||
var10000[var2] |= var3;
|
||||
int[] var4 = this.flags[var1];
|
||||
var4[var2] |= var3;
|
||||
}
|
||||
|
||||
@ObfuscatedName("g")
|
||||
@@ -465,8 +465,8 @@ public class CollisionMap {
|
||||
garbageValue = "52290294"
|
||||
)
|
||||
void method97(int var1, int var2, int var3) {
|
||||
int[] var10000 = this.flags[var1];
|
||||
var10000[var2] &= ~var3;
|
||||
int[] var4 = this.flags[var1];
|
||||
var4[var2] &= ~var3;
|
||||
}
|
||||
|
||||
@ObfuscatedName("x")
|
||||
@@ -477,8 +477,8 @@ public class CollisionMap {
|
||||
public void method98(int var1, int var2) {
|
||||
var1 -= this.xInset;
|
||||
var2 -= this.yInset;
|
||||
int[] var10000 = this.flags[var1];
|
||||
var10000[var2] &= -262145;
|
||||
int[] var3 = this.flags[var1];
|
||||
var3[var2] &= -262145;
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
|
||||
@@ -5,8 +5,8 @@ import net.runelite.mapping.ObfuscatedName;
|
||||
import net.runelite.mapping.ObfuscatedSignature;
|
||||
|
||||
@ObfuscatedName("hu")
|
||||
@Implements("TileLocation")
|
||||
public class TileLocation {
|
||||
@Implements("Coord")
|
||||
public class Coord {
|
||||
@ObfuscatedName("m")
|
||||
@ObfuscatedGetter(
|
||||
intValue = 503621925
|
||||
@@ -29,19 +29,19 @@ public class TileLocation {
|
||||
@ObfuscatedSignature(
|
||||
signature = "(Lhu;)V"
|
||||
)
|
||||
public TileLocation(TileLocation var1) {
|
||||
public Coord(Coord var1) {
|
||||
this.plane = var1.plane;
|
||||
this.x = var1.x;
|
||||
this.y = var1.y;
|
||||
}
|
||||
|
||||
public TileLocation(int var1, int var2, int var3) {
|
||||
public Coord(int var1, int var2, int var3) {
|
||||
this.plane = var1;
|
||||
this.x = var2;
|
||||
this.y = var3;
|
||||
}
|
||||
|
||||
public TileLocation(int var1) {
|
||||
public Coord(int var1) {
|
||||
if (var1 == -1) {
|
||||
this.plane = -1;
|
||||
} else {
|
||||
@@ -67,9 +67,9 @@ public class TileLocation {
|
||||
signature = "(Lhu;B)Z",
|
||||
garbageValue = "-1"
|
||||
)
|
||||
@Export("equals0")
|
||||
boolean equals0(TileLocation var1) {
|
||||
return this.plane != var1.plane ? false : (this.x != var1.x ? false : this.y == var1.y);
|
||||
@Export("equalsCoord")
|
||||
boolean equalsCoord(Coord other) {
|
||||
return this.plane != other.plane ? false : (this.x != other.x ? false : this.y == other.y);
|
||||
}
|
||||
|
||||
@ObfuscatedName("q")
|
||||
@@ -77,23 +77,20 @@ public class TileLocation {
|
||||
signature = "(Ljava/lang/String;I)Ljava/lang/String;",
|
||||
garbageValue = "997364398"
|
||||
)
|
||||
@Export("toString0")
|
||||
String toString0(String var1) {
|
||||
return this.plane + var1 + (this.x >> 6) + var1 + (this.y >> 6) + var1 + (this.x & 63) + var1 + (this.y & 63);
|
||||
@Export("toString")
|
||||
String toString(String separator) {
|
||||
return this.plane + separator + (this.x >> 6) + separator + (this.y >> 6) + separator + (this.x & 63) + separator + (this.y & 63);
|
||||
}
|
||||
|
||||
@ObfuscatedName("equals")
|
||||
public boolean method326(Object var1) {
|
||||
return this == var1 ? true : (!(var1 instanceof TileLocation) ? false : this.equals0((TileLocation)var1));
|
||||
public boolean equals(Object var1) {
|
||||
return this == var1 ? true : (!(var1 instanceof Coord) ? false : this.equalsCoord((Coord)var1));
|
||||
}
|
||||
|
||||
@ObfuscatedName("hashCode")
|
||||
public int method327() {
|
||||
public int hashCode() {
|
||||
return this.packed();
|
||||
}
|
||||
|
||||
@ObfuscatedName("toString")
|
||||
public String method328() {
|
||||
return this.toString0(",");
|
||||
public String toString() {
|
||||
return this.toString(",");
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ import net.runelite.mapping.Implements;
|
||||
import net.runelite.mapping.ObfuscatedGetter;
|
||||
import net.runelite.mapping.ObfuscatedName;
|
||||
import net.runelite.mapping.ObfuscatedSignature;
|
||||
import net.runelite.rs.ScriptOpcodes;
|
||||
|
||||
@ObfuscatedName("dp")
|
||||
@Implements("Decimator")
|
||||
@@ -125,12 +126,12 @@ public class Decimator {
|
||||
garbageValue = "-1419232405"
|
||||
)
|
||||
@Export("scaleRate")
|
||||
int scaleRate(int var1) {
|
||||
int scaleRate(int rate) {
|
||||
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")
|
||||
@@ -139,12 +140,12 @@ public class Decimator {
|
||||
garbageValue = "25"
|
||||
)
|
||||
@Export("scalePosition")
|
||||
int scalePosition(int var1) {
|
||||
int scalePosition(int position) {
|
||||
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")
|
||||
@@ -158,7 +159,7 @@ public class Decimator {
|
||||
if (KeyHandler.field453 == KeyHandler.field455) {
|
||||
return false;
|
||||
} else {
|
||||
IndexStoreAction.field411 = KeyHandler.field450[KeyHandler.field453];
|
||||
ArchiveDiskAction.field411 = KeyHandler.field450[KeyHandler.field453];
|
||||
GzipDecompressor.field378 = KeyHandler.field449[KeyHandler.field453];
|
||||
KeyHandler.field453 = KeyHandler.field453 + 1 & 127;
|
||||
return true;
|
||||
@@ -211,10 +212,10 @@ public class Decimator {
|
||||
ViewportMouse.field951 = (var16 + var10) / 2;
|
||||
ViewportMouse.field952 = (var13 + var12) / 2;
|
||||
ViewportMouse.field953 = (var17 - var9) / 2;
|
||||
class311.field1156 = (var16 - var10) / 2;
|
||||
DefaultsGroup.field1156 = (var16 - var10) / 2;
|
||||
Skeleton.field874 = (var13 - var12) / 2;
|
||||
GraphicsObject.field377 = Math.abs(ViewportMouse.field953);
|
||||
ViewportMouse.field954 = Math.abs(class311.field1156);
|
||||
ViewportMouse.field954 = Math.abs(DefaultsGroup.field1156);
|
||||
class248.field1142 = Math.abs(Skeleton.field874);
|
||||
}
|
||||
|
||||
@@ -227,7 +228,7 @@ public class Decimator {
|
||||
var9 = AccessFile.field7 - var5;
|
||||
var10 = ViewportMouse.field951 - var6;
|
||||
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"
|
||||
)
|
||||
static int method2492(int var0, Script var1, boolean var2) {
|
||||
if (var0 == 5630) {
|
||||
if (var0 == ScriptOpcodes.LOGOUT) {
|
||||
Client.field175 = 250;
|
||||
return 1;
|
||||
} else {
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
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("ka")
|
||||
public class class311 {
|
||||
@Implements("DefaultsGroup")
|
||||
public class DefaultsGroup {
|
||||
@ObfuscatedName("m")
|
||||
@ObfuscatedSignature(
|
||||
signature = "Lka;"
|
||||
)
|
||||
static final class311 field3810;
|
||||
@Export("DefaultsGroup_graphics")
|
||||
static final DefaultsGroup DefaultsGroup_graphics;
|
||||
@ObfuscatedName("e")
|
||||
@ObfuscatedGetter(
|
||||
intValue = -2077113503
|
||||
@@ -18,10 +22,11 @@ public class class311 {
|
||||
@ObfuscatedGetter(
|
||||
intValue = -800980069
|
||||
)
|
||||
final int field3809;
|
||||
@Export("group")
|
||||
final int group;
|
||||
|
||||
class311(int var1) {
|
||||
this.field3809 = var1;
|
||||
DefaultsGroup(int var1) {
|
||||
this.group = var1;
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@@ -34,6 +39,6 @@ public class class311 {
|
||||
}
|
||||
|
||||
static {
|
||||
field3810 = new class311(3);
|
||||
DefaultsGroup_graphics = new DefaultsGroup(3);
|
||||
}
|
||||
}
|
||||
@@ -39,8 +39,8 @@ public final class DemotingHashTable {
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@Export("get")
|
||||
public Object get(long var1) {
|
||||
Wrapper var3 = (Wrapper)this.hashTable.get(var1);
|
||||
public Object get(long key) {
|
||||
Wrapper var3 = (Wrapper)this.hashTable.get(key);
|
||||
if (var3 == null) {
|
||||
return null;
|
||||
} else {
|
||||
@@ -70,8 +70,8 @@ public final class DemotingHashTable {
|
||||
|
||||
@ObfuscatedName("f")
|
||||
@Export("remove")
|
||||
void remove(long var1) {
|
||||
Wrapper var3 = (Wrapper)this.hashTable.get(var1);
|
||||
void remove(long key) {
|
||||
Wrapper var3 = (Wrapper)this.hashTable.get(key);
|
||||
this.removeWrapper(var3);
|
||||
}
|
||||
|
||||
@@ -80,31 +80,31 @@ public final class DemotingHashTable {
|
||||
signature = "(Leu;)V"
|
||||
)
|
||||
@Export("removeWrapper")
|
||||
void removeWrapper(Wrapper var1) {
|
||||
if (var1 != null) {
|
||||
var1.remove();
|
||||
var1.removeDual();
|
||||
this.remaining += var1.size;
|
||||
void removeWrapper(Wrapper wrapper) {
|
||||
if (wrapper != null) {
|
||||
wrapper.remove();
|
||||
wrapper.removeDual();
|
||||
this.remaining += wrapper.size;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("w")
|
||||
@Export("put")
|
||||
public void put(Object var1, long var2, int var4) {
|
||||
if (var4 > this.capacity) {
|
||||
public void put(Object value, long key, int size) {
|
||||
if (size > this.capacity) {
|
||||
throw new IllegalStateException();
|
||||
} else {
|
||||
this.remove(var2);
|
||||
this.remaining -= var4;
|
||||
this.remove(key);
|
||||
this.remaining -= size;
|
||||
|
||||
while (this.remaining < 0) {
|
||||
Wrapper var5 = (Wrapper)this.queue.removeLast();
|
||||
this.removeWrapper(var5);
|
||||
}
|
||||
|
||||
DirectWrapper var6 = new DirectWrapper(var1, var4);
|
||||
this.hashTable.put(var6, var2);
|
||||
DirectWrapper var6 = new DirectWrapper(value, size);
|
||||
this.hashTable.put(var6, key);
|
||||
this.queue.add(var6);
|
||||
var6.keyDual = 0L;
|
||||
}
|
||||
@@ -112,7 +112,7 @@ public final class DemotingHashTable {
|
||||
|
||||
@ObfuscatedName("o")
|
||||
@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()) {
|
||||
if (var2.isSoft()) {
|
||||
if (var2.get() == null) {
|
||||
@@ -120,7 +120,7 @@ public final class DemotingHashTable {
|
||||
var2.removeDual();
|
||||
this.remaining += var2.size;
|
||||
}
|
||||
} else if (++var2.keyDual > (long)var1) {
|
||||
} else if (++var2.keyDual > (long)softeningLevel) {
|
||||
SoftWrapper var3 = new SoftWrapper(var2.get(), var2.size);
|
||||
this.hashTable.put(var3, var2.key);
|
||||
DualNodeDeque.DualNodeDeque_addBefore(var3, var2);
|
||||
|
||||
@@ -45,15 +45,15 @@ public class DevicePcmPlayer extends PcmPlayer {
|
||||
garbageValue = "-1738349775"
|
||||
)
|
||||
@Export("open")
|
||||
protected void open(int var1) throws LineUnavailableException {
|
||||
protected void open(int bufferSize) throws LineUnavailableException {
|
||||
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.open();
|
||||
this.line.start();
|
||||
this.capacity2 = var1;
|
||||
this.capacity2 = bufferSize;
|
||||
} 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 >>> 4) + var3 & 252645135;
|
||||
var3 += var3 >>> 8;
|
||||
@@ -64,7 +64,7 @@ public class DevicePcmPlayer extends PcmPlayer {
|
||||
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",
|
||||
garbageValue = "-1516599170"
|
||||
)
|
||||
@Export("drawWidgetGroup")
|
||||
static final void drawWidgetGroup(Widget[] var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) {
|
||||
@Export("drawInterface")
|
||||
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);
|
||||
Rasterizer3D.Rasterizer3D_method1();
|
||||
|
||||
@@ -184,7 +184,7 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
if (var1 != -1412584499 && !var10.isScrollBar) {
|
||||
class279.field1145 = var0;
|
||||
class54.field1161 = var6;
|
||||
class157.field1114 = var7;
|
||||
BuddyRankComparator.field1114 = var7;
|
||||
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) {
|
||||
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) {
|
||||
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 (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) {
|
||||
@@ -358,17 +358,17 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
for (var19 = 0; var19 < var10.rawHeight; ++var19) {
|
||||
for (var20 = 0; var20 < var10.rawWidth; ++var20) {
|
||||
var21 = var12 + var20 * (var10.paddingX + 32);
|
||||
var33 = var13 + var19 * (var10.paddingY + 32);
|
||||
var26 = var13 + var19 * (var10.paddingY + 32);
|
||||
if (var22 < 20) {
|
||||
var21 += var10.inventoryXOffsets[var22];
|
||||
var33 += var10.inventoryYOffsets[var22];
|
||||
var26 += var10.inventoryYOffsets[var22];
|
||||
}
|
||||
|
||||
if (var10.itemIds[var22] <= 0) {
|
||||
if (var10.inventorySprites != null && var22 < 20) {
|
||||
Sprite var36 = var10.getInventorySprite(var22);
|
||||
if (var36 != null) {
|
||||
var36.drawAt2(var21, var33);
|
||||
var36.drawAt2(var21, var26);
|
||||
} else if (Widget.field957) {
|
||||
class22.method295(var10);
|
||||
}
|
||||
@@ -376,38 +376,38 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
} else {
|
||||
boolean var35 = false;
|
||||
boolean var46 = false;
|
||||
var26 = var10.itemIds[var22] - 1;
|
||||
if (var21 + 32 > var2 && var21 < var4 && var33 + 32 > var3 && var33 < var5 || var10 == dragInventoryWidget && var22 == Client.dragItemSlotSource) {
|
||||
var25 = var10.itemIds[var22] - 1;
|
||||
if (var21 + 32 > var2 && var21 < var4 && var26 + 32 > var3 && var26 < var5 || var10 == dragInventoryWidget && var22 == Client.dragItemSlotSource) {
|
||||
Sprite var42;
|
||||
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 {
|
||||
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 (var10 == dragInventoryWidget && var22 == Client.dragItemSlotSource) {
|
||||
var24 = MouseHandler.MouseHandler_x - Client.field205;
|
||||
var25 = MouseHandler.MouseHandler_y - Client.field206;
|
||||
var33 = MouseHandler.MouseHandler_x - Client.field205;
|
||||
var24 = MouseHandler.MouseHandler_y - Client.field206;
|
||||
if (var33 < 5 && var33 > -5) {
|
||||
var33 = 0;
|
||||
}
|
||||
|
||||
if (var24 < 5 && var24 > -5) {
|
||||
var24 = 0;
|
||||
}
|
||||
|
||||
if (var25 < 5 && var25 > -5) {
|
||||
var25 = 0;
|
||||
}
|
||||
|
||||
if (Client.itemDragDuration < 5) {
|
||||
var33 = 0;
|
||||
var24 = 0;
|
||||
var25 = 0;
|
||||
}
|
||||
|
||||
var42.method310(var21 + var24, var33 + var25, 128);
|
||||
var42.method310(var21 + var33, var26 + var24, 128);
|
||||
if (var1 != -1) {
|
||||
Widget var47 = var0[var1 & 65535];
|
||||
int var45;
|
||||
if (var33 + var25 < Rasterizer2D.Rasterizer2D_yClipStart && var47.scrollY > 0) {
|
||||
var45 = (Rasterizer2D.Rasterizer2D_yClipStart - var33 - var25) * Client.field183 / 3;
|
||||
if (var26 + var24 < Rasterizer2D.Rasterizer2D_yClipStart && var47.scrollY > 0) {
|
||||
var45 = (Rasterizer2D.Rasterizer2D_yClipStart - var26 - var24) * Client.field183 / 3;
|
||||
if (var45 > Client.field183 * 10) {
|
||||
var45 = Client.field183 * 10;
|
||||
}
|
||||
@@ -421,8 +421,8 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
class22.method295(var47);
|
||||
}
|
||||
|
||||
if (var25 + var33 + 32 > Rasterizer2D.Rasterizer2D_yClipEnd && var47.scrollY < var47.scrollHeight - var47.height) {
|
||||
var45 = (var33 + var25 + 32 - Rasterizer2D.Rasterizer2D_yClipEnd) * Client.field183 / 3;
|
||||
if (var24 + var26 + 32 > Rasterizer2D.Rasterizer2D_yClipEnd && var47.scrollY < var47.scrollHeight - var47.height) {
|
||||
var45 = (var26 + var24 + 32 - Rasterizer2D.Rasterizer2D_yClipEnd) * Client.field183 / 3;
|
||||
if (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) {
|
||||
var42.method310(var21, var33, 128);
|
||||
var42.method310(var21, var26, 128);
|
||||
} else {
|
||||
var42.drawAt2(var21, var33);
|
||||
var42.drawAt2(var21, var26);
|
||||
}
|
||||
} else {
|
||||
class22.method295(var10);
|
||||
@@ -569,16 +569,16 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
} else {
|
||||
Rasterizer2D.Rasterizer2D_expandClip(var12, var13, var12 + var10.width, var13 + var10.height);
|
||||
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 (var25 = 0; var25 < var33; ++var25) {
|
||||
for (var33 = 0; var33 < var21; ++var33) {
|
||||
for (var24 = 0; var24 < var26; ++var24) {
|
||||
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) {
|
||||
var37.method310(var12 + var19 * var24, var13 + var20 * var25, 256 - (var14 & 255));
|
||||
var37.method310(var12 + var19 * var33, var13 + var20 * var24, 256 - (var14 & 255));
|
||||
} 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) {
|
||||
var28 = Skills.getItemDefinition(var10.itemId);
|
||||
if (var28 != null) {
|
||||
var28 = var28.method144(var10.itemQuantity);
|
||||
var28 = var28.getCountObj(var10.itemQuantity);
|
||||
var43 = var28.getModel(1);
|
||||
if (var43 != null) {
|
||||
var43.calculateBoundsCylinder();
|
||||
@@ -631,17 +631,17 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
}
|
||||
|
||||
Rasterizer3D.method2989(var10.width / 2 + var12, var10.height / 2 + var13);
|
||||
var33 = Rasterizer3D.Rasterizer3D_sine[var10.modelAngleX] * var10.modelZoom >> 16;
|
||||
var24 = Rasterizer3D.Rasterizer3D_cosine[var10.modelAngleX] * var10.modelZoom >> 16;
|
||||
var26 = Rasterizer3D.Rasterizer3D_sine[var10.modelAngleX] * var10.modelZoom >> 16;
|
||||
var33 = Rasterizer3D.Rasterizer3D_cosine[var10.modelAngleX] * var10.modelZoom >> 16;
|
||||
if (var43 != null) {
|
||||
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 {
|
||||
var43.calculateBoundsCylinder();
|
||||
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 {
|
||||
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]);
|
||||
}
|
||||
|
||||
var25 = var21 * (var10.paddingX + 115) + var12;
|
||||
var26 = var20 * (var10.paddingY + 12) + var13;
|
||||
var24 = var21 * (var10.paddingX + 115) + var12;
|
||||
var25 = var20 * (var10.paddingY + 12) + var13;
|
||||
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) {
|
||||
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 {
|
||||
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;
|
||||
for (var30 = MouseRecorder.method1194(var30, var10); var30.length() > 0; var19 = var19 + var39.ascent + 1) {
|
||||
var24 = var30.indexOf("<br>");
|
||||
if (var24 != -1) {
|
||||
var31 = var30.substring(0, var24);
|
||||
var30 = var30.substring(var24 + 4);
|
||||
var33 = var30.indexOf("<br>");
|
||||
if (var33 != -1) {
|
||||
var31 = var30.substring(0, var33);
|
||||
var30 = var30.substring(var33 + 4);
|
||||
} else {
|
||||
var31 = var30;
|
||||
var30 = "";
|
||||
}
|
||||
|
||||
var25 = var39.stringWidth(var31);
|
||||
if (var25 > var22) {
|
||||
var22 = var25;
|
||||
var24 = var39.stringWidth(var31);
|
||||
if (var24 > var22) {
|
||||
var22 = var24;
|
||||
}
|
||||
}
|
||||
|
||||
var22 += 6;
|
||||
var19 += 7;
|
||||
var24 = var12 + var10.width - 5 - var22;
|
||||
var25 = var13 + var10.height + 5;
|
||||
if (var24 < var12 + 5) {
|
||||
var24 = var12 + 5;
|
||||
var33 = var12 + var10.width - 5 - var22;
|
||||
var24 = var13 + var10.height + 5;
|
||||
if (var33 < var12 + 5) {
|
||||
var33 = var12 + 5;
|
||||
}
|
||||
|
||||
if (var22 + var24 > var4) {
|
||||
var24 = var4 - var22;
|
||||
if (var22 + var33 > var4) {
|
||||
var33 = var4 - var22;
|
||||
}
|
||||
|
||||
if (var25 + var19 > var5) {
|
||||
var25 = var5 - var19;
|
||||
if (var24 + var19 > var5) {
|
||||
var24 = var5 - var19;
|
||||
}
|
||||
|
||||
Rasterizer2D.Rasterizer2D_fillRectangle(var24, var25, var22, var19, 16777120);
|
||||
Rasterizer2D.Rasterizer2D_drawRectangle(var24, var25, var22, var19, 0);
|
||||
Rasterizer2D.Rasterizer2D_fillRectangle(var33, var24, var22, var19, 16777120);
|
||||
Rasterizer2D.Rasterizer2D_drawRectangle(var33, var24, var22, var19, 0);
|
||||
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>");
|
||||
if (var32 != -1) {
|
||||
var31 = var30.substring(0, var32);
|
||||
@@ -740,7 +740,7 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
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"
|
||||
)
|
||||
static final void method845(int var0) {
|
||||
if (GroundItemPile.loadWidgetGroup(var0)) {
|
||||
Widget[] var1 = Widget.widgets[var0];
|
||||
if (GroundItemPile.loadInterface(var0)) {
|
||||
Widget[] var1 = Widget.interfaceComponents[var0];
|
||||
|
||||
for (int var2 = 0; var2 < var1.length; ++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