From 18050c604c9e77ff56bf65e95eddd807a0679c8d Mon Sep 17 00:00:00 2001 From: Owain van Brakel Date: Wed, 22 Dec 2021 15:09:19 +0100 Subject: [PATCH] project: set GameDrawingMode --- .../java/com/openosrs/injector/Injector.java | 3 ++ .../injectors/raw/GameDrawingMode.java | 50 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 injector/src/main/java/com/openosrs/injector/injectors/raw/GameDrawingMode.java diff --git a/injector/src/main/java/com/openosrs/injector/Injector.java b/injector/src/main/java/com/openosrs/injector/Injector.java index 2264ff15f1..b767970b3f 100644 --- a/injector/src/main/java/com/openosrs/injector/Injector.java +++ b/injector/src/main/java/com/openosrs/injector/Injector.java @@ -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)); diff --git a/injector/src/main/java/com/openosrs/injector/injectors/raw/GameDrawingMode.java b/injector/src/main/java/com/openosrs/injector/injectors/raw/GameDrawingMode.java new file mode 100644 index 0000000000..977d304a89 --- /dev/null +++ b/injector/src/main/java/com/openosrs/injector/injectors/raw/GameDrawingMode.java @@ -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(""); + + Instructions ins = clinit.getCode().getInstructions(); + ListIterator 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)); + } + } + } + } +}