Merge pull request #4534 from deathbeam/use-providers

Properly use javax.inject.Provider
This commit is contained in:
Tomas Slusny
2018-07-29 23:48:59 +02:00
committed by GitHub
14 changed files with 129 additions and 229 deletions

View File

@@ -41,7 +41,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.ScheduledExecutorService;
import javax.inject.Provider;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.ChatMessageType;
@@ -67,18 +66,18 @@ public class Notifier
private static final int FLASH_DURATION = 2000;
private static final String MESSAGE_COLOR = "FF0000";
private final Provider<Client> client;
private final Client client;
private final String appName;
private final RuneLiteConfig runeLiteConfig;
private final Provider<ClientUI> clientUI;
private final ClientUI clientUI;
private final ScheduledExecutorService executorService;
private final Path notifyIconPath;
private Instant flashStart;
@Inject
private Notifier(
final Provider<ClientUI> clientUI,
final Provider<Client> client,
final ClientUI clientUI,
final Client client,
final RuneLiteConfig runeliteConfig,
final RuneLiteProperties runeLiteProperties,
final ScheduledExecutorService executorService)
@@ -99,13 +98,6 @@ public class Notifier
public void notify(String message, TrayIcon.MessageType type)
{
final ClientUI clientUI = this.clientUI.get();
if (clientUI == null)
{
return;
}
if (!runeLiteConfig.sendNotificationsWhenFocused() && clientUI.isFocused())
{
return;
@@ -128,9 +120,7 @@ public class Notifier
if (runeLiteConfig.enableGameMessageNotification())
{
final Client client = this.client.get();
if (client != null && client.getGameState() == GameState.LOGGED_IN)
if (client.getGameState() == GameState.LOGGED_IN)
{
client.addChatMessage(ChatMessageType.GAME, appName,
"<col=" + MESSAGE_COLOR + ">" + message + "</col>", "");
@@ -150,9 +140,7 @@ public class Notifier
return;
}
final Client client = this.client.get();
if (client == null || client.getGameCycle() % 40 >= 20)
if (client.getGameCycle() % 40 >= 20)
{
return;
}
@@ -195,13 +183,6 @@ public class Notifier
final String message,
final TrayIcon.MessageType type)
{
final ClientUI clientUI = this.clientUI.get();
if (clientUI == null)
{
return;
}
if (clientUI.getTrayIcon() != null)
{
clientUI.getTrayIcon().displayMessage(title, message, type);

View File

@@ -81,24 +81,12 @@ public class RuneLite
@Inject
private PluginManager pluginManager;
@Inject
private MenuManager menuManager;
@Inject
private EventBus eventBus;
@Inject
private ConfigManager configManager;
@Inject
private ChatMessageManager chatMessageManager;
@Inject
private CommandManager commandManager;
@Inject
private OverlayRenderer overlayRenderer;
@Inject
private DrawManager drawManager;
@@ -114,12 +102,6 @@ public class RuneLite
@Inject
private ClientUI clientUI;
@Inject
private Provider<ItemManager> itemManager;
@Inject
private ClanManager clanManager;
@Inject
private InfoBoxManager infoBoxManager;
@@ -127,13 +109,31 @@ public class RuneLite
private OverlayManager overlayManager;
@Inject
private InfoBoxOverlay infoBoxOverlay;
private Provider<ItemManager> itemManager;
@Inject
private TooltipOverlay tooltipOverlay;
private Provider<OverlayRenderer> overlayRenderer;
@Inject
private WorldMapOverlay worldMapOverlay;
private Provider<ClanManager> clanManager;
@Inject
private Provider<ChatMessageManager> chatMessageManager;
@Inject
private Provider<MenuManager> menuManager;
@Inject
private Provider<CommandManager> commandManager;
@Inject
private Provider<InfoBoxOverlay> infoBoxOverlay;
@Inject
private Provider<TooltipOverlay> tooltipOverlay;
@Inject
private Provider<WorldMapOverlay> worldMapOverlay;
@Inject
@Nullable
@@ -243,35 +243,34 @@ public class RuneLite
// Initialize UI
clientUI.open(this);
// Initialize chat colors
chatMessageManager.loadColors();
// Initialize Discord service
discordService.init();
// Register event listeners
eventBus.register(clientUI);
eventBus.register(pluginManager);
eventBus.register(overlayRenderer);
eventBus.register(overlayManager);
eventBus.register(drawManager);
eventBus.register(menuManager);
eventBus.register(chatMessageManager);
eventBus.register(commandManager);
eventBus.register(clanManager);
eventBus.register(infoBoxManager);
if (!isOutdated)
{
eventBus.register(itemManager.get());
WidgetOverlay.createOverlays(client).forEach(overlayManager::add);
}
// Initialize chat colors
chatMessageManager.get().loadColors();
// Add core overlays after configuration has been loaded so their properties will be
// loaded properly
overlayManager.add(infoBoxOverlay);
overlayManager.add(worldMapOverlay);
overlayManager.add(tooltipOverlay);
eventBus.register(overlayRenderer.get());
eventBus.register(clanManager.get());
eventBus.register(itemManager.get());
eventBus.register(menuManager.get());
eventBus.register(chatMessageManager.get());
eventBus.register(commandManager.get());
// Add core overlays
WidgetOverlay.createOverlays(client).forEach(overlayManager::add);
overlayManager.add(infoBoxOverlay.get());
overlayManager.add(worldMapOverlay.get());
overlayManager.add(tooltipOverlay.get());
}
// Start plugins
pluginManager.startCorePlugins();

View File

@@ -38,7 +38,6 @@ import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.atomic.AtomicReference;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.ChatLineBuffer;
@@ -57,17 +56,17 @@ import net.runelite.client.config.ChatColorConfig;
public class ChatMessageManager
{
private final Multimap<ChatMessageType, ChatColor> colorCache = HashMultimap.create();
private final Provider<Client> clientProvider;
private final Client client;
private final ScheduledExecutorService executor;
private final ChatColorConfig chatColorConfig;
private int transparencyVarbit = -1;
private final Queue<QueuedMessage> queuedMessages = new ConcurrentLinkedQueue<>();
@Inject
private ChatMessageManager(Provider<Client> clientProvider, ScheduledExecutorService executor,
private ChatMessageManager(Client client, ScheduledExecutorService executor,
ChatColorConfig chatColorConfig)
{
this.clientProvider = clientProvider;
this.client = client;
this.executor = executor;
this.chatColorConfig = chatColorConfig;
}
@@ -75,7 +74,7 @@ public class ChatMessageManager
@Subscribe
public void onVarbitChanged(VarbitChanged event)
{
int setting = clientProvider.get().getVar(Varbits.TRANSPARENT_CHATBOX);
int setting = client.getVar(Varbits.TRANSPARENT_CHATBOX);
if (transparencyVarbit != setting)
{
@@ -103,7 +102,6 @@ public class ChatMessageManager
@Subscribe
public void onSetMessage(SetMessage setMessage)
{
final Client client = clientProvider.get();
MessageNode messageNode = setMessage.getMessageNode();
ChatMessageType chatMessageType = setMessage.getType();
@@ -487,7 +485,7 @@ public class ChatMessageManager
}
}
private ChatMessageManager cacheColor(final ChatColor chatColor, final ChatMessageType... types)
private void cacheColor(final ChatColor chatColor, final ChatMessageType... types)
{
for (ChatMessageType chatMessageType : types)
{
@@ -495,8 +493,6 @@ public class ChatMessageManager
colorCache.remove(chatMessageType, chatColor);
colorCache.put(chatMessageType, chatColor);
}
return this;
}
public void queue(QueuedMessage message)
@@ -515,8 +511,6 @@ public class ChatMessageManager
private void add(QueuedMessage message)
{
final Client client = clientProvider.get();
// this updates chat cycle
client.addChatMessage(
message.getType(),
@@ -541,7 +535,6 @@ public class ChatMessageManager
return;
}
final Client client = clientProvider.get();
final boolean transparent = client.isResized() && client.getVar(Varbits.TRANSPARENT_CHATBOX) != 0;
final Collection<ChatColor> chatColors = colorCache.get(target.getType());
@@ -571,10 +564,8 @@ public class ChatMessageManager
return resultMessage.get();
}
public void refreshAll()
private void refreshAll()
{
final Client client = clientProvider.get();
executor.submit(() ->
{
client.getChatLineMap().values().stream()

View File

@@ -31,7 +31,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
@@ -51,19 +50,19 @@ public class CommandManager
private static final String CHATBOX_INPUT = "chatboxInput";
private static final String PRIVMATE_MESSAGE = "privateMessage";
private final Provider<Client> clientProvider;
private final Client client;
private final EventBus eventBus;
private final Provider<ClientThread> clientThreadProvider;
private final ClientThread clientThread;
private boolean sending;
private final List<ChatboxInputListener> chatboxInputListenerList = new ArrayList<>();
@Inject
public CommandManager(Provider<Client> clientProvider, EventBus eventBus, Provider<ClientThread> clientThreadProvider)
private CommandManager(Client client, EventBus eventBus, ClientThread clientThread)
{
this.clientProvider = clientProvider;
this.client = client;
this.eventBus = eventBus;
this.clientThreadProvider = clientThreadProvider;
this.clientThread = clientThread;
}
public void register(ChatboxInputListener chatboxInputListener)
@@ -100,7 +99,6 @@ public class CommandManager
private void runCommand()
{
Client client = clientProvider.get();
String typedText = client.getVar(VarClientStr.CHATBOX_TYPED_TEXT).substring(2); // strip ::
log.debug("Command: {}", typedText);
@@ -122,7 +120,6 @@ public class CommandManager
private void handleInput(ScriptCallbackEvent event)
{
Client client = clientProvider.get();
final String[] stringStack = client.getStringStack();
final int[] intStack = client.getIntStack();
int stringStackCount = client.getStringStackSize();
@@ -144,7 +141,6 @@ public class CommandManager
}
resumed = true;
ClientThread clientThread = clientThreadProvider.get();
clientThread.invokeLater(() -> sendChatboxInput(chatType, typedText));
}
};
@@ -163,7 +159,6 @@ public class CommandManager
private void handlePrivateMessage(ScriptCallbackEvent event)
{
Client client = clientProvider.get();
final String[] stringStack = client.getStringStack();
final int[] intStack = client.getIntStack();
int stringStackCount = client.getStringStackSize();
@@ -185,7 +180,6 @@ public class CommandManager
}
resumed = true;
ClientThread clientThread = clientThreadProvider.get();
clientThread.invokeLater(() -> sendPrivmsg(target, message));
}
};
@@ -205,7 +199,6 @@ public class CommandManager
private void sendChatboxInput(int chatType, String input)
{
Client client = clientProvider.get();
sending = true;
try
{
@@ -219,7 +212,6 @@ public class CommandManager
private void sendPrivmsg(String target, String message)
{
Client client = clientProvider.get();
client.runScript(ScriptID.PRIVMSG, target, message);
}
}

View File

@@ -39,7 +39,6 @@ import java.util.Objects;
import java.util.concurrent.TimeUnit;
import javax.imageio.ImageIO;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.ClanMember;
@@ -66,7 +65,7 @@ public class ClanManager
private int modIconsLength;
private final Provider<Client> clientProvider;
private final Client client;
private final BufferedImage[] clanChatImages = new BufferedImage[CLANCHAT_IMAGES.length];
private final LoadingCache<String, ClanMemberRank> clanRanksCache = CacheBuilder.newBuilder()
@@ -77,7 +76,6 @@ public class ClanManager
@Override
public ClanMemberRank load(String key) throws Exception
{
final Client client = clientProvider.get();
final ClanMember[] clanMembersArr = client.getClanMembers();
if (clanMembersArr == null || clanMembersArr.length == 0)
@@ -95,9 +93,9 @@ public class ClanManager
});
@Inject
public ClanManager(Provider<Client> clientProvider)
private ClanManager(Client client)
{
this.clientProvider = clientProvider;
this.client = client;
int i = 0;
for (String resource : CLANCHAT_IMAGES)
@@ -158,7 +156,6 @@ public class ClanManager
{
try
{
final Client client = clientProvider.get();
final IndexedSprite[] modIcons = client.getModIcons();
final IndexedSprite[] newModIcons = Arrays.copyOf(modIcons, modIcons.length + CLANCHAT_IMAGES.length);
int curPosition = newModIcons.length - CLANCHAT_IMAGES.length;

View File

@@ -36,7 +36,6 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
@@ -63,7 +62,7 @@ public class MenuManager
private static final int IDX_LOWER = 4;
private static final int IDX_UPPER = 8;
private final Provider<Client> clientProvider;
private final Client client;
private final EventBus eventBus;
//Maps the indexes that are being used to the menu option.
@@ -73,9 +72,9 @@ public class MenuManager
private final Set<String> npcMenuOptions = new HashSet<>();
@Inject
public MenuManager(Provider<Client> clientProvider, EventBus eventBus)
private MenuManager(Client client, EventBus eventBus)
{
this.clientProvider = clientProvider;
this.client = client;
this.eventBus = eventBus;
}
@@ -84,13 +83,6 @@ public class MenuManager
npcMenuOptions.add(option);
// add to surrounding npcs
Client client = clientProvider.get();
if (client == null)
{
return;
}
for (NPC npc : client.getNpcs())
{
NPCComposition composition = npc.getComposition();
@@ -103,13 +95,6 @@ public class MenuManager
npcMenuOptions.remove(option);
// remove this option from all npc compositions
Client client = clientProvider.get();
if (client == null)
{
return;
}
for (NPC npc : client.getNpcs())
{
NPCComposition composition = npc.getComposition();
@@ -141,13 +126,6 @@ public class MenuManager
private boolean menuContainsCustomMenu(WidgetMenuOption customMenuOption)
{
Client client = clientProvider.get();
if (client == null)
{
return false;
}
for (MenuEntry menuEntry : client.getMenuEntries())
{
String option = menuEntry.getOption();
@@ -166,12 +144,6 @@ public class MenuManager
{
int widgetId = event.getActionParam1();
Collection<WidgetMenuOption> options = managedMenuOptions.get(widgetId);
Client client = clientProvider.get();
if (client == null)
{
return;
}
for (WidgetMenuOption currentMenu : options)
{
@@ -332,13 +304,6 @@ public class MenuManager
private void addPlayerMenuItem(int playerOptionIndex, String menuText)
{
Client client = clientProvider.get();
if (client == null)
{
return;
}
client.getPlayerOptions()[playerOptionIndex] = menuText;
client.getPlayerOptionsPriorities()[playerOptionIndex] = true;
client.getPlayerMenuTypes()[playerOptionIndex] = MenuAction.RUNELITE.getId();
@@ -348,31 +313,16 @@ public class MenuManager
private void removePlayerMenuItem(int playerOptionIndex)
{
Client client = clientProvider.get();
if (client == null)
{
return;
}
client.getPlayerOptions()[playerOptionIndex] = null;
playerMenuIndexMap.remove(playerOptionIndex);
}
/**
* Find the next empty player menu slot index
*
* @return
*/
private int findEmptyPlayerMenuIndex()
{
int index = IDX_LOWER;
Client client = clientProvider.get();
if (client == null)
{
return IDX_UPPER;
}
String[] playerOptions = client.getPlayerOptions();
while (index < IDX_UPPER && playerOptions[index] != null)

View File

@@ -54,6 +54,7 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.stream.Collectors;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Provider;
import javax.inject.Singleton;
import javax.swing.SwingUtilities;
import lombok.Setter;
@@ -85,7 +86,7 @@ public class PluginManager
private final Scheduler scheduler;
private final ConfigManager configManager;
private final ScheduledExecutorService executor;
private final SceneTileManager sceneTileManager;
private final Provider<SceneTileManager> sceneTileManager;
private final List<Plugin> plugins = new CopyOnWriteArrayList<>();
private final List<Plugin> activePlugins = new CopyOnWriteArrayList<>();
private final String runeliteGroupName = RuneLiteConfig.class
@@ -102,7 +103,7 @@ public class PluginManager
final Scheduler scheduler,
final ConfigManager configManager,
final ScheduledExecutorService executor,
final SceneTileManager sceneTileManager)
final Provider<SceneTileManager> sceneTileManager)
{
this.developerMode = developerMode;
this.eventBus = eventBus;
@@ -323,7 +324,15 @@ public class PluginManager
});
log.debug("Plugin {} is now running", plugin.getClass().getSimpleName());
sceneTileManager.simulateObjectSpawns(plugin);
if (!isOutdated && sceneTileManager != null)
{
final SceneTileManager sceneTileManager = this.sceneTileManager.get();
if (sceneTileManager != null)
{
sceneTileManager.simulateObjectSpawns(plugin);
}
}
eventBus.register(plugin);
schedule(plugin);
eventBus.post(new PluginChanged(plugin, true));

View File

@@ -34,6 +34,7 @@ import java.util.concurrent.ScheduledExecutorService;
import javax.annotation.Nullable;
import javax.imageio.ImageIO;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.swing.SwingUtilities;
import net.runelite.api.Client;
import net.runelite.api.MenuAction;
@@ -69,10 +70,10 @@ public class HiscorePlugin extends Plugin
private Client client;
@Inject
private ClientToolbar clientToolbar;
private Provider<MenuManager> menuManager;
@Inject
private MenuManager menuManager;
private ClientToolbar clientToolbar;
@Inject
private ScheduledExecutorService executor;
@@ -112,9 +113,9 @@ public class HiscorePlugin extends Plugin
clientToolbar.addNavigation(navButton);
if (config.playerOption())
if (config.playerOption() && client != null)
{
menuManager.addPlayerMenuItem(LOOKUP);
menuManager.get().addPlayerMenuItem(LOOKUP);
}
if (config.autocomplete())
{
@@ -127,7 +128,11 @@ public class HiscorePlugin extends Plugin
{
hiscorePanel.removeInputKeyListener(autocompleter);
clientToolbar.removeNavigation(navButton);
menuManager.removePlayerMenuItem(LOOKUP);
if (client != null)
{
menuManager.get().removePlayerMenuItem(LOOKUP);
}
}
@Subscribe
@@ -135,11 +140,14 @@ public class HiscorePlugin extends Plugin
{
if (event.getGroup().equals("hiscore"))
{
menuManager.removePlayerMenuItem(LOOKUP);
if (config.playerOption())
if (client != null)
{
menuManager.addPlayerMenuItem(LOOKUP);
menuManager.get().removePlayerMenuItem(LOOKUP);
if (config.playerOption())
{
menuManager.get().addPlayerMenuItem(LOOKUP);
}
}
if (event.getKey().equals("autocomplete"))

View File

@@ -35,7 +35,6 @@ import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import javax.swing.SwingUtilities;
import lombok.extern.slf4j.Slf4j;
@@ -68,7 +67,7 @@ public class OverlayRenderer extends MouseListener implements KeyListener
private static final Color SNAP_CORNER_ACTIVE_COLOR = new Color(0, 255, 0, 100);
private static final Color MOVING_OVERLAY_COLOR = new Color(255, 255, 0, 100);
private static final Color MOVING_OVERLAY_ACTIVE_COLOR = new Color(255, 255, 0, 200);
private final Provider<Client> clientProvider;
private final Client client;
private final OverlayManager overlayManager;
private final RuneLiteConfig runeLiteConfig;
@@ -87,13 +86,13 @@ public class OverlayRenderer extends MouseListener implements KeyListener
@Inject
private OverlayRenderer(
final Provider<Client> clientProvider,
final Client client,
final OverlayManager overlayManager,
final RuneLiteConfig runeLiteConfig,
final MouseManager mouseManager,
final KeyManager keyManager)
{
this.clientProvider = clientProvider;
this.client = client;
this.overlayManager = overlayManager;
this.runeLiteConfig = runeLiteConfig;
keyManager.registerKeyListener(this);
@@ -111,11 +110,9 @@ public class OverlayRenderer extends MouseListener implements KeyListener
public void render(Graphics2D graphics, final OverlayLayer layer)
{
final Client client = clientProvider.get();
final List<Overlay> overlays = overlayManager.getLayer(layer);
if (client == null
|| overlays == null
if (overlays == null
|| overlays.isEmpty()
|| client.getGameState() != GameState.LOGGED_IN
|| client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null
@@ -274,13 +271,6 @@ public class OverlayRenderer extends MouseListener implements KeyListener
return mouseEvent;
}
final Client client = clientProvider.get();
if (client == null)
{
return mouseEvent;
}
final Point mousePoint = mouseEvent.getPoint();
mousePosition.setLocation(mousePoint);
final Rectangle canvasRect = new Rectangle(client.getRealDimensions());
@@ -399,7 +389,6 @@ public class OverlayRenderer extends MouseListener implements KeyListener
private boolean shouldInvalidateBounds()
{
final Client client = clientProvider.get();
final Widget chatbox = client.getWidget(WidgetInfo.CHATBOX_MESSAGES);
final boolean resizeableChanged = isResizeable != client.isResized();
boolean changed = false;

View File

@@ -32,7 +32,6 @@ import java.awt.Point;
import java.awt.Rectangle;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import net.runelite.api.Client;
import net.runelite.client.config.RuneLiteConfig;
@@ -51,19 +50,19 @@ public class InfoBoxOverlay extends Overlay
private final PanelComponent panelComponent = new PanelComponent();
private final InfoBoxManager infoboxManager;
private final TooltipManager tooltipManager;
private final Provider<Client> clientProvider;
private final Client client;
private final RuneLiteConfig config;
@Inject
private InfoBoxOverlay(
InfoBoxManager infoboxManager,
TooltipManager tooltipManager,
Provider<Client> clientProvider,
Client client,
RuneLiteConfig config)
{
this.tooltipManager = tooltipManager;
this.infoboxManager = infoboxManager;
this.clientProvider = clientProvider;
this.client = client;
this.config = config;
setPosition(OverlayPosition.TOP_LEFT);
@@ -105,34 +104,30 @@ public class InfoBoxOverlay extends Overlay
}
final Dimension dimension = panelComponent.render(graphics);
final Client client = clientProvider.get();
// Handle tooltips
if (client != null)
final Point mouse = new Point(client.getMouseCanvasPosition().getX(), client.getMouseCanvasPosition().getY());
for (final LayoutableRenderableEntity child : panelComponent.getChildren())
{
final Point mouse = new Point(client.getMouseCanvasPosition().getX(), client.getMouseCanvasPosition().getY());
for (final LayoutableRenderableEntity child : panelComponent.getChildren())
if (child instanceof InfoBoxComponent)
{
if (child instanceof InfoBoxComponent)
final InfoBoxComponent component = (InfoBoxComponent) child;
if (!Strings.isNullOrEmpty(component.getTooltip()))
{
final InfoBoxComponent component = (InfoBoxComponent) child;
final Rectangle intersectionRectangle = new Rectangle(component.getPreferredLocation(), component.getPreferredSize());
if (!Strings.isNullOrEmpty(component.getTooltip()))
// Move the intersection based on overlay position
intersectionRectangle.translate(getBounds().x, getBounds().y);
// Move the intersection based on overlay "orientation"
final Point transformed = OverlayUtil.transformPosition(getPosition(), intersectionRectangle.getSize());
intersectionRectangle.translate(transformed.x, transformed.y);
if (intersectionRectangle.contains(mouse))
{
final Rectangle intersectionRectangle = new Rectangle(component.getPreferredLocation(), component.getPreferredSize());
// Move the intersection based on overlay position
intersectionRectangle.translate(getBounds().x, getBounds().y);
// Move the intersection based on overlay "orientation"
final Point transformed = OverlayUtil.transformPosition(getPosition(), intersectionRectangle.getSize());
intersectionRectangle.translate(transformed.x, transformed.y);
if (intersectionRectangle.contains(mouse))
{
tooltipManager.add(new Tooltip(component.getTooltip()));
}
tooltipManager.add(new Tooltip(component.getTooltip()));
}
}
}

View File

@@ -30,7 +30,6 @@ import java.awt.Point;
import java.awt.Rectangle;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
@@ -47,12 +46,12 @@ public class TooltipOverlay extends Overlay
private static final int OFFSET = 24;
private static final int PADDING = 2;
private final TooltipManager tooltipManager;
private final Provider<Client> clientProvider;
private final Client client;
@Inject
private TooltipOverlay(Provider<Client> clientProvider, TooltipManager tooltipManager)
private TooltipOverlay(Client client, TooltipManager tooltipManager)
{
this.clientProvider = clientProvider;
this.client = client;
this.tooltipManager = tooltipManager;
setPosition(OverlayPosition.TOOLTIP);
setPriority(OverlayPriority.HIGHEST);
@@ -69,7 +68,6 @@ public class TooltipOverlay extends Overlay
return null;
}
final Client client = clientProvider.get();
final Rectangle clientCanvasBounds = new Rectangle(client.getRealDimensions());
final net.runelite.api.Point mouseCanvasPosition = client.getMouseCanvasPosition();
final Point mousePosition = new Point(mouseCanvasPosition.getX(), mouseCanvasPosition.getY() + OFFSET);

View File

@@ -33,7 +33,6 @@ import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
@@ -60,16 +59,16 @@ public class WorldMapOverlay extends Overlay
private static final int TOOLTIP_PADDING_WIDTH = 2;
private final WorldMapPointManager worldMapPointManager;
private final Provider<Client> clientProvider;
private final Client client;
@Inject
private WorldMapOverlay(
Provider<Client> clientProvider,
Client client,
WorldMapPointManager worldMapPointManager,
MouseManager mouseManager,
WorldMapOverlayMouseListener worldMapOverlayMouseListener)
{
this.clientProvider = clientProvider;
this.client = client;
this.worldMapPointManager = worldMapPointManager;
setPosition(OverlayPosition.DYNAMIC);
setPriority(OverlayPriority.HIGHEST);
@@ -87,8 +86,6 @@ public class WorldMapOverlay extends Overlay
return null;
}
final Client client = clientProvider.get();
Widget widget = client.getWidget(WidgetInfo.WORLD_MAP_VIEW);
if (widget == null)
{
@@ -181,7 +178,7 @@ public class WorldMapOverlay extends Overlay
*/
public Point mapWorldPointToGraphicsPoint(WorldPoint worldPoint)
{
RenderOverview ro = clientProvider.get().getRenderOverview();
RenderOverview ro = client.getRenderOverview();
if (!ro.getWorldMapData().surfaceContainsPosition(worldPoint.getX(), worldPoint.getY()))
{
@@ -190,7 +187,7 @@ public class WorldMapOverlay extends Overlay
Float pixelsPerTile = ro.getWorldMapZoom();
Widget map = clientProvider.get().getWidget(WidgetInfo.WORLD_MAP_VIEW);
Widget map = client.getWidget(WidgetInfo.WORLD_MAP_VIEW);
if (map != null)
{
Rectangle worldMapRect = map.getBounds();
@@ -232,7 +229,7 @@ public class WorldMapOverlay extends Overlay
drawPoint = new Point(drawPoint.getX() + TOOLTIP_OFFSET_WIDTH, drawPoint.getY() + TOOLTIP_OFFSET_HEIGHT);
graphics.setClip(0, 0, clientProvider.get().getCanvas().getWidth(), clientProvider.get().getCanvas().getHeight());
graphics.setClip(0, 0, client.getCanvas().getWidth(), client.getCanvas().getHeight());
graphics.setColor(TOOLTIP_BACKGROUND);
graphics.setFont(FontManager.getRunescapeFont());
FontMetrics fm = graphics.getFontMetrics();

View File

@@ -28,7 +28,6 @@ import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import javax.swing.SwingUtilities;
import net.runelite.api.Client;
@@ -42,14 +41,14 @@ import net.runelite.client.input.MouseListener;
@Singleton
public class WorldMapOverlayMouseListener extends MouseListener
{
private final Provider<Client> clientProvider;
private final Client client;
private final WorldMapPointManager worldMapPointManager;
private WorldMapPoint tooltipPoint = null;
@Inject
private WorldMapOverlayMouseListener(Provider<Client> clientProvider, WorldMapPointManager worldMapPointManager)
private WorldMapOverlayMouseListener(Client client, WorldMapPointManager worldMapPointManager)
{
this.clientProvider = clientProvider;
this.client = client;
this.worldMapPointManager = worldMapPointManager;
}
@@ -60,7 +59,7 @@ public class WorldMapOverlayMouseListener extends MouseListener
if (SwingUtilities.isLeftMouseButton(e) && !worldMapPoints.isEmpty())
{
Point mousePos = clientProvider.get().getMouseCanvasPosition();
Point mousePos = client.getMouseCanvasPosition();
for (WorldMapPoint worldMapPoint : worldMapPoints)
{
@@ -71,7 +70,6 @@ public class WorldMapOverlayMouseListener extends MouseListener
{
// jump map to position of point
WorldPoint target = worldMapPoint.getWorldPoint();
Client client = clientProvider.get();
RenderOverview renderOverview = client.getRenderOverview();
renderOverview.setWorldMapPositionTarget(target);
}
@@ -92,7 +90,6 @@ public class WorldMapOverlayMouseListener extends MouseListener
return mouseEvent;
}
final Client client = clientProvider.get();
final Point mousePos = client.getMouseCanvasPosition();
final Widget view = client.getWidget(WidgetInfo.WORLD_MAP_VIEW);

View File

@@ -30,7 +30,6 @@ import java.util.Objects;
import java.util.Optional;
import java.util.function.Consumer;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import net.runelite.api.Client;
import net.runelite.api.Constants;
@@ -49,12 +48,12 @@ import net.runelite.api.events.WallObjectSpawned;
public class SceneTileManager
{
private final EventBus eventBus = new EventBus();
private final Provider<Client> clientProvider;
private final Client client;
@Inject
public SceneTileManager(Provider<Client> clientProvider)
private SceneTileManager(Client client)
{
this.clientProvider = clientProvider;
this.client = client;
}
/**
@@ -64,9 +63,7 @@ public class SceneTileManager
*/
public void forEachTile(Consumer<Tile> consumer)
{
final Client client = clientProvider.get();
if (client == null || client.getGameState() != GameState.LOGGED_IN)
if (client.getGameState() != GameState.LOGGED_IN)
{
return;
}