Revert "hooks: remove remaining static callbacks"

This reverts commit 27173d90b5.
This commit is contained in:
Owain van Brakel
2020-05-31 05:58:19 +02:00
parent 3c370f992a
commit b00599777b
2 changed files with 53 additions and 15 deletions

View File

@@ -71,8 +71,6 @@ public interface Callbacks
*/ */
void drawAboveOverheads(); void drawAboveOverheads();
void drawAfterWidgets();
/** /**
* Client top-most draw method, rendering over top of most of game interfaces. * Client top-most draw method, rendering over top of most of game interfaces.
* *

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.callback; package net.runelite.client.callback;
import com.google.inject.Injector;
import java.awt.Color; import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics; import java.awt.Graphics;
@@ -39,12 +40,15 @@ import java.awt.image.VolatileImage;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.BufferProvider;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Entity;
import net.runelite.api.MainBufferProvider; import net.runelite.api.MainBufferProvider;
import net.runelite.api.NullItemID; import net.runelite.api.NullItemID;
import net.runelite.api.RenderOverview; import net.runelite.api.RenderOverview;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.api.WorldMapManager; import net.runelite.api.WorldMapManager;
import net.runelite.api.events.BeforeMenuRender;
import net.runelite.api.events.BeforeRender; import net.runelite.api.events.BeforeRender;
import net.runelite.api.events.Event; import net.runelite.api.events.Event;
import net.runelite.api.events.FakeXpDrop; import net.runelite.api.events.FakeXpDrop;
@@ -52,10 +56,12 @@ import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.hooks.Callbacks; import net.runelite.api.hooks.Callbacks;
import net.runelite.api.hooks.DrawCallbacks;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import static net.runelite.api.widgets.WidgetInfo.WORLD_MAP_VIEW; import static net.runelite.api.widgets.WidgetInfo.WORLD_MAP_VIEW;
import net.runelite.api.widgets.WidgetItem; import net.runelite.api.widgets.WidgetItem;
import net.runelite.client.Notifier; import net.runelite.client.Notifier;
import net.runelite.client.RuneLite;
import net.runelite.client.chat.ChatMessageManager; import net.runelite.client.chat.ChatMessageManager;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.events.DrawFinished; import net.runelite.client.events.DrawFinished;
@@ -83,6 +89,11 @@ public class Hooks implements Callbacks
{ {
private static final long CHECK = RSTimeUnit.GAME_TICKS.getDuration().toNanos(); // ns - how often to run checks private static final long CHECK = RSTimeUnit.GAME_TICKS.getDuration().toNanos(); // ns - how often to run checks
private static final Injector injector = RuneLite.getInjector();
private static final Client client = injector.getInstance(Client.class);
public static final OverlayRenderer renderer = injector.getInstance(OverlayRenderer.class);
private static final OverlayManager overlayManager = injector.getInstance(OverlayManager.class);
private static final GameTick GAME_TICK = GameTick.INSTANCE; private static final GameTick GAME_TICK = GameTick.INSTANCE;
private static final BeforeRender BEFORE_RENDER = BeforeRender.INSTANCE; private static final BeforeRender BEFORE_RENDER = BeforeRender.INSTANCE;
private static final DrawFinished drawFinishedEvent = new DrawFinished(); private static final DrawFinished drawFinishedEvent = new DrawFinished();
@@ -91,14 +102,6 @@ public class Hooks implements Callbacks
private int mouseY = 0; private int mouseY = 0;
private final Image cursor = ImageUtil.getResourceStreamFromClass(Hooks.class, "cursor.png"); private final Image cursor = ImageUtil.getResourceStreamFromClass(Hooks.class, "cursor.png");
@Inject
private Client client;
@Inject
private OverlayRenderer renderer;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private EventBus eventBus; private EventBus eventBus;
@@ -147,7 +150,6 @@ public class Hooks implements Callbacks
/** /**
* Get the Graphics2D for the MainBufferProvider image * Get the Graphics2D for the MainBufferProvider image
* This caches the Graphics2D instance so it can be reused * This caches the Graphics2D instance so it can be reused
*
* @param mainBufferProvider * @param mainBufferProvider
* @return * @return
*/ */
@@ -412,7 +414,7 @@ public class Hooks implements Callbacks
try try
{ {
renderer.render((Graphics2D) finalImage.getGraphics(), OverlayLayer.AFTER_MIRROR); renderer.render((Graphics2D)finalImage.getGraphics(), OverlayLayer.AFTER_MIRROR);
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -473,8 +475,7 @@ public class Hooks implements Callbacks
} }
} }
@Override public static void drawAfterWidgets()
public void drawAfterWidgets()
{ {
MainBufferProvider bufferProvider = (MainBufferProvider) client.getBufferProvider(); MainBufferProvider bufferProvider = (MainBufferProvider) client.getBufferProvider();
Graphics2D graphics2d = getGraphics(bufferProvider); Graphics2D graphics2d = getGraphics(bufferProvider);
@@ -529,6 +530,38 @@ public class Hooks implements Callbacks
deferredEventBus.replay(); deferredEventBus.replay();
} }
public static void renderDraw(Entity entity, int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash)
{
DrawCallbacks drawCallbacks = client.getDrawCallbacks();
if (drawCallbacks != null)
{
drawCallbacks.draw(entity, orientation, pitchSin, pitchCos, yawSin, yawCos, x, y, z, hash);
}
else
{
entity.draw(orientation, pitchSin, pitchCos, yawSin, yawCos, x, y, z, hash);
}
}
public static void clearColorBuffer(int x, int y, int width, int height, int color)
{
BufferProvider bp = client.getBufferProvider();
int canvasWidth = bp.getWidth();
int[] pixels = bp.getPixels();
int pixelPos = y * canvasWidth + x;
int pixelJump = canvasWidth - width;
for (int cy = y; cy < y + height; cy++)
{
for (int cx = x; cx < x + width; cx++)
{
pixels[pixelPos++] = 0;
}
pixelPos += pixelJump;
}
}
@Override @Override
public void drawItem(int itemId, WidgetItem widgetItem) public void drawItem(int itemId, WidgetItem widgetItem)
{ {
@@ -539,6 +572,13 @@ public class Hooks implements Callbacks
} }
} }
public static boolean drawMenu()
{
BeforeMenuRender event = new BeforeMenuRender();
client.getCallbacks().post(BeforeMenuRender.class, event);
return event.isConsumed();
}
public void onScriptCallbackEvent(ScriptCallbackEvent scriptCallbackEvent) public void onScriptCallbackEvent(ScriptCallbackEvent scriptCallbackEvent)
{ {
if (!scriptCallbackEvent.getEventName().equals("fakeXpDrop")) if (!scriptCallbackEvent.getEventName().equals("fakeXpDrop"))
@@ -559,4 +599,4 @@ public class Hooks implements Callbacks
); );
eventBus.post(FakeXpDrop.class, fakeXpDrop); eventBus.post(FakeXpDrop.class, fakeXpDrop);
} }
} }