project: set GameDrawingMode

This commit is contained in:
Owain van Brakel
2021-12-22 15:09:19 +01:00
parent 7ad3563097
commit 18050c604c
2 changed files with 53 additions and 0 deletions

View File

@@ -18,6 +18,7 @@ import com.openosrs.injector.injectors.RSApiInjector;
import com.openosrs.injector.injectors.raw.AddPlayerToMenu;
import com.openosrs.injector.injectors.raw.ClearColorBuffer;
import com.openosrs.injector.injectors.raw.DrawMenu;
import com.openosrs.injector.injectors.raw.GameDrawingMode;
import com.openosrs.injector.injectors.raw.GraphicsObject;
import com.openosrs.injector.injectors.raw.Occluder;
import com.openosrs.injector.injectors.raw.RasterizerAlpha;
@@ -149,6 +150,8 @@ public class Injector extends InjectData implements InjectTaskHandler
inject(new DrawMenu(this));
inject(new GameDrawingMode(this));
inject(new AddPlayerToMenu(this));
inject(new RuneliteMenuEntry(this));

View File

@@ -0,0 +1,50 @@
package com.openosrs.injector.injectors.raw;
import com.openosrs.injector.InjectUtil;
import com.openosrs.injector.injection.InjectData;
import com.openosrs.injector.injectors.AbstractInjector;
import java.util.ListIterator;
import net.runelite.asm.ClassFile;
import net.runelite.asm.Method;
import net.runelite.asm.attributes.code.Instruction;
import net.runelite.asm.attributes.code.Instructions;
import net.runelite.asm.attributes.code.instructions.LDC;
import net.runelite.asm.attributes.code.instructions.PutStatic;
import net.runelite.asm.pool.Field;
public class GameDrawingMode extends AbstractInjector
{
public GameDrawingMode(InjectData inject)
{
super(inject);
}
public void inject()
{
final ClassFile clientVanilla = inject.toVanilla(
inject.getDeobfuscated()
.findClass("Client")
);
final Field gameDrawingMode = InjectUtil.findField(inject, "gameDrawingMode", "Client").getPoolField();
Method clinit = clientVanilla.findMethod("<clinit>");
Instructions ins = clinit.getCode().getInstructions();
ListIterator<Instruction> iterator = ins.getInstructions().listIterator();
while (iterator.hasNext())
{
Instruction i = iterator.next();
if (i instanceof PutStatic)
{
Field field = ((PutStatic) i).getField();
if (field.getName().equals(gameDrawingMode.getName()))
{
iterator.add(new LDC(ins, 2));
iterator.add(new PutStatic(ins, gameDrawingMode));
}
}
}
}
}