Properly use javax.inject.Provider
Instead of using providers in classes that should not be even used when the optional dependencies are not present, move all Provider<> injects to RuneLite (and to other top-level classes in other cases). Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
@@ -41,7 +41,6 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import javax.inject.Provider;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.ChatMessageType;
|
import net.runelite.api.ChatMessageType;
|
||||||
@@ -67,18 +66,18 @@ public class Notifier
|
|||||||
private static final int FLASH_DURATION = 2000;
|
private static final int FLASH_DURATION = 2000;
|
||||||
private static final String MESSAGE_COLOR = "FF0000";
|
private static final String MESSAGE_COLOR = "FF0000";
|
||||||
|
|
||||||
private final Provider<Client> client;
|
private final Client client;
|
||||||
private final String appName;
|
private final String appName;
|
||||||
private final RuneLiteConfig runeLiteConfig;
|
private final RuneLiteConfig runeLiteConfig;
|
||||||
private final Provider<ClientUI> clientUI;
|
private final ClientUI clientUI;
|
||||||
private final ScheduledExecutorService executorService;
|
private final ScheduledExecutorService executorService;
|
||||||
private final Path notifyIconPath;
|
private final Path notifyIconPath;
|
||||||
private Instant flashStart;
|
private Instant flashStart;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private Notifier(
|
private Notifier(
|
||||||
final Provider<ClientUI> clientUI,
|
final ClientUI clientUI,
|
||||||
final Provider<Client> client,
|
final Client client,
|
||||||
final RuneLiteConfig runeliteConfig,
|
final RuneLiteConfig runeliteConfig,
|
||||||
final RuneLiteProperties runeLiteProperties,
|
final RuneLiteProperties runeLiteProperties,
|
||||||
final ScheduledExecutorService executorService)
|
final ScheduledExecutorService executorService)
|
||||||
@@ -99,13 +98,6 @@ public class Notifier
|
|||||||
|
|
||||||
public void notify(String message, TrayIcon.MessageType type)
|
public void notify(String message, TrayIcon.MessageType type)
|
||||||
{
|
{
|
||||||
final ClientUI clientUI = this.clientUI.get();
|
|
||||||
|
|
||||||
if (clientUI == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!runeLiteConfig.sendNotificationsWhenFocused() && clientUI.isFocused())
|
if (!runeLiteConfig.sendNotificationsWhenFocused() && clientUI.isFocused())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -128,9 +120,7 @@ public class Notifier
|
|||||||
|
|
||||||
if (runeLiteConfig.enableGameMessageNotification())
|
if (runeLiteConfig.enableGameMessageNotification())
|
||||||
{
|
{
|
||||||
final Client client = this.client.get();
|
if (client.getGameState() == GameState.LOGGED_IN)
|
||||||
|
|
||||||
if (client != null && client.getGameState() == GameState.LOGGED_IN)
|
|
||||||
{
|
{
|
||||||
client.addChatMessage(ChatMessageType.GAME, appName,
|
client.addChatMessage(ChatMessageType.GAME, appName,
|
||||||
"<col=" + MESSAGE_COLOR + ">" + message + "</col>", "");
|
"<col=" + MESSAGE_COLOR + ">" + message + "</col>", "");
|
||||||
@@ -150,9 +140,7 @@ public class Notifier
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Client client = this.client.get();
|
if (client.getGameCycle() % 40 >= 20)
|
||||||
|
|
||||||
if (client == null || client.getGameCycle() % 40 >= 20)
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -195,13 +183,6 @@ public class Notifier
|
|||||||
final String message,
|
final String message,
|
||||||
final TrayIcon.MessageType type)
|
final TrayIcon.MessageType type)
|
||||||
{
|
{
|
||||||
final ClientUI clientUI = this.clientUI.get();
|
|
||||||
|
|
||||||
if (clientUI == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clientUI.getTrayIcon() != null)
|
if (clientUI.getTrayIcon() != null)
|
||||||
{
|
{
|
||||||
clientUI.getTrayIcon().displayMessage(title, message, type);
|
clientUI.getTrayIcon().displayMessage(title, message, type);
|
||||||
|
|||||||
@@ -81,24 +81,12 @@ public class RuneLite
|
|||||||
@Inject
|
@Inject
|
||||||
private PluginManager pluginManager;
|
private PluginManager pluginManager;
|
||||||
|
|
||||||
@Inject
|
|
||||||
private MenuManager menuManager;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private EventBus eventBus;
|
private EventBus eventBus;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ConfigManager configManager;
|
private ConfigManager configManager;
|
||||||
|
|
||||||
@Inject
|
|
||||||
private ChatMessageManager chatMessageManager;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private CommandManager commandManager;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private OverlayRenderer overlayRenderer;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private DrawManager drawManager;
|
private DrawManager drawManager;
|
||||||
|
|
||||||
@@ -114,12 +102,6 @@ public class RuneLite
|
|||||||
@Inject
|
@Inject
|
||||||
private ClientUI clientUI;
|
private ClientUI clientUI;
|
||||||
|
|
||||||
@Inject
|
|
||||||
private Provider<ItemManager> itemManager;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private ClanManager clanManager;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private InfoBoxManager infoBoxManager;
|
private InfoBoxManager infoBoxManager;
|
||||||
|
|
||||||
@@ -127,13 +109,31 @@ public class RuneLite
|
|||||||
private OverlayManager overlayManager;
|
private OverlayManager overlayManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private InfoBoxOverlay infoBoxOverlay;
|
private Provider<ItemManager> itemManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private TooltipOverlay tooltipOverlay;
|
private Provider<OverlayRenderer> overlayRenderer;
|
||||||
|
|
||||||
@Inject
|
@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
|
@Inject
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -243,35 +243,34 @@ public class RuneLite
|
|||||||
// Initialize UI
|
// Initialize UI
|
||||||
clientUI.open(this);
|
clientUI.open(this);
|
||||||
|
|
||||||
// Initialize chat colors
|
|
||||||
chatMessageManager.loadColors();
|
|
||||||
|
|
||||||
// Initialize Discord service
|
// Initialize Discord service
|
||||||
discordService.init();
|
discordService.init();
|
||||||
|
|
||||||
// Register event listeners
|
// Register event listeners
|
||||||
eventBus.register(clientUI);
|
eventBus.register(clientUI);
|
||||||
eventBus.register(pluginManager);
|
eventBus.register(pluginManager);
|
||||||
eventBus.register(overlayRenderer);
|
|
||||||
eventBus.register(overlayManager);
|
eventBus.register(overlayManager);
|
||||||
eventBus.register(drawManager);
|
eventBus.register(drawManager);
|
||||||
eventBus.register(menuManager);
|
|
||||||
eventBus.register(chatMessageManager);
|
|
||||||
eventBus.register(commandManager);
|
|
||||||
eventBus.register(clanManager);
|
|
||||||
eventBus.register(infoBoxManager);
|
eventBus.register(infoBoxManager);
|
||||||
|
|
||||||
if (!isOutdated)
|
if (!isOutdated)
|
||||||
{
|
{
|
||||||
eventBus.register(itemManager.get());
|
// Initialize chat colors
|
||||||
WidgetOverlay.createOverlays(client).forEach(overlayManager::add);
|
chatMessageManager.get().loadColors();
|
||||||
}
|
|
||||||
|
|
||||||
// Add core overlays after configuration has been loaded so their properties will be
|
eventBus.register(overlayRenderer.get());
|
||||||
// loaded properly
|
eventBus.register(clanManager.get());
|
||||||
overlayManager.add(infoBoxOverlay);
|
eventBus.register(itemManager.get());
|
||||||
overlayManager.add(worldMapOverlay);
|
eventBus.register(menuManager.get());
|
||||||
overlayManager.add(tooltipOverlay);
|
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
|
// Start plugins
|
||||||
pluginManager.startCorePlugins();
|
pluginManager.startCorePlugins();
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ import java.util.concurrent.ConcurrentLinkedQueue;
|
|||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Provider;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.ChatLineBuffer;
|
import net.runelite.api.ChatLineBuffer;
|
||||||
@@ -57,17 +56,17 @@ import net.runelite.client.config.ChatColorConfig;
|
|||||||
public class ChatMessageManager
|
public class ChatMessageManager
|
||||||
{
|
{
|
||||||
private final Multimap<ChatMessageType, ChatColor> colorCache = HashMultimap.create();
|
private final Multimap<ChatMessageType, ChatColor> colorCache = HashMultimap.create();
|
||||||
private final Provider<Client> clientProvider;
|
private final Client client;
|
||||||
private final ScheduledExecutorService executor;
|
private final ScheduledExecutorService executor;
|
||||||
private final ChatColorConfig chatColorConfig;
|
private final ChatColorConfig chatColorConfig;
|
||||||
private int transparencyVarbit = -1;
|
private int transparencyVarbit = -1;
|
||||||
private final Queue<QueuedMessage> queuedMessages = new ConcurrentLinkedQueue<>();
|
private final Queue<QueuedMessage> queuedMessages = new ConcurrentLinkedQueue<>();
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ChatMessageManager(Provider<Client> clientProvider, ScheduledExecutorService executor,
|
private ChatMessageManager(Client client, ScheduledExecutorService executor,
|
||||||
ChatColorConfig chatColorConfig)
|
ChatColorConfig chatColorConfig)
|
||||||
{
|
{
|
||||||
this.clientProvider = clientProvider;
|
this.client = client;
|
||||||
this.executor = executor;
|
this.executor = executor;
|
||||||
this.chatColorConfig = chatColorConfig;
|
this.chatColorConfig = chatColorConfig;
|
||||||
}
|
}
|
||||||
@@ -75,7 +74,7 @@ public class ChatMessageManager
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onVarbitChanged(VarbitChanged event)
|
public void onVarbitChanged(VarbitChanged event)
|
||||||
{
|
{
|
||||||
int setting = clientProvider.get().getVar(Varbits.TRANSPARENT_CHATBOX);
|
int setting = client.getVar(Varbits.TRANSPARENT_CHATBOX);
|
||||||
|
|
||||||
if (transparencyVarbit != setting)
|
if (transparencyVarbit != setting)
|
||||||
{
|
{
|
||||||
@@ -103,7 +102,6 @@ public class ChatMessageManager
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onSetMessage(SetMessage setMessage)
|
public void onSetMessage(SetMessage setMessage)
|
||||||
{
|
{
|
||||||
final Client client = clientProvider.get();
|
|
||||||
MessageNode messageNode = setMessage.getMessageNode();
|
MessageNode messageNode = setMessage.getMessageNode();
|
||||||
ChatMessageType chatMessageType = setMessage.getType();
|
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)
|
for (ChatMessageType chatMessageType : types)
|
||||||
{
|
{
|
||||||
@@ -495,8 +493,6 @@ public class ChatMessageManager
|
|||||||
colorCache.remove(chatMessageType, chatColor);
|
colorCache.remove(chatMessageType, chatColor);
|
||||||
colorCache.put(chatMessageType, chatColor);
|
colorCache.put(chatMessageType, chatColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void queue(QueuedMessage message)
|
public void queue(QueuedMessage message)
|
||||||
@@ -515,8 +511,6 @@ public class ChatMessageManager
|
|||||||
|
|
||||||
private void add(QueuedMessage message)
|
private void add(QueuedMessage message)
|
||||||
{
|
{
|
||||||
final Client client = clientProvider.get();
|
|
||||||
|
|
||||||
// this updates chat cycle
|
// this updates chat cycle
|
||||||
client.addChatMessage(
|
client.addChatMessage(
|
||||||
message.getType(),
|
message.getType(),
|
||||||
@@ -541,7 +535,6 @@ public class ChatMessageManager
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Client client = clientProvider.get();
|
|
||||||
final boolean transparent = client.isResized() && client.getVar(Varbits.TRANSPARENT_CHATBOX) != 0;
|
final boolean transparent = client.isResized() && client.getVar(Varbits.TRANSPARENT_CHATBOX) != 0;
|
||||||
final Collection<ChatColor> chatColors = colorCache.get(target.getType());
|
final Collection<ChatColor> chatColors = colorCache.get(target.getType());
|
||||||
|
|
||||||
@@ -571,10 +564,8 @@ public class ChatMessageManager
|
|||||||
return resultMessage.get();
|
return resultMessage.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshAll()
|
private void refreshAll()
|
||||||
{
|
{
|
||||||
final Client client = clientProvider.get();
|
|
||||||
|
|
||||||
executor.submit(() ->
|
executor.submit(() ->
|
||||||
{
|
{
|
||||||
client.getChatLineMap().values().stream()
|
client.getChatLineMap().values().stream()
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Provider;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
@@ -51,19 +50,19 @@ public class CommandManager
|
|||||||
private static final String CHATBOX_INPUT = "chatboxInput";
|
private static final String CHATBOX_INPUT = "chatboxInput";
|
||||||
private static final String PRIVMATE_MESSAGE = "privateMessage";
|
private static final String PRIVMATE_MESSAGE = "privateMessage";
|
||||||
|
|
||||||
private final Provider<Client> clientProvider;
|
private final Client client;
|
||||||
private final EventBus eventBus;
|
private final EventBus eventBus;
|
||||||
private final Provider<ClientThread> clientThreadProvider;
|
private final ClientThread clientThread;
|
||||||
private boolean sending;
|
private boolean sending;
|
||||||
|
|
||||||
private final List<ChatboxInputListener> chatboxInputListenerList = new ArrayList<>();
|
private final List<ChatboxInputListener> chatboxInputListenerList = new ArrayList<>();
|
||||||
|
|
||||||
@Inject
|
@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.eventBus = eventBus;
|
||||||
this.clientThreadProvider = clientThreadProvider;
|
this.clientThread = clientThread;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void register(ChatboxInputListener chatboxInputListener)
|
public void register(ChatboxInputListener chatboxInputListener)
|
||||||
@@ -100,7 +99,6 @@ public class CommandManager
|
|||||||
|
|
||||||
private void runCommand()
|
private void runCommand()
|
||||||
{
|
{
|
||||||
Client client = clientProvider.get();
|
|
||||||
String typedText = client.getVar(VarClientStr.CHATBOX_TYPED_TEXT).substring(2); // strip ::
|
String typedText = client.getVar(VarClientStr.CHATBOX_TYPED_TEXT).substring(2); // strip ::
|
||||||
|
|
||||||
log.debug("Command: {}", typedText);
|
log.debug("Command: {}", typedText);
|
||||||
@@ -122,7 +120,6 @@ public class CommandManager
|
|||||||
|
|
||||||
private void handleInput(ScriptCallbackEvent event)
|
private void handleInput(ScriptCallbackEvent event)
|
||||||
{
|
{
|
||||||
Client client = clientProvider.get();
|
|
||||||
final String[] stringStack = client.getStringStack();
|
final String[] stringStack = client.getStringStack();
|
||||||
final int[] intStack = client.getIntStack();
|
final int[] intStack = client.getIntStack();
|
||||||
int stringStackCount = client.getStringStackSize();
|
int stringStackCount = client.getStringStackSize();
|
||||||
@@ -144,7 +141,6 @@ public class CommandManager
|
|||||||
}
|
}
|
||||||
resumed = true;
|
resumed = true;
|
||||||
|
|
||||||
ClientThread clientThread = clientThreadProvider.get();
|
|
||||||
clientThread.invokeLater(() -> sendChatboxInput(chatType, typedText));
|
clientThread.invokeLater(() -> sendChatboxInput(chatType, typedText));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -163,7 +159,6 @@ public class CommandManager
|
|||||||
|
|
||||||
private void handlePrivateMessage(ScriptCallbackEvent event)
|
private void handlePrivateMessage(ScriptCallbackEvent event)
|
||||||
{
|
{
|
||||||
Client client = clientProvider.get();
|
|
||||||
final String[] stringStack = client.getStringStack();
|
final String[] stringStack = client.getStringStack();
|
||||||
final int[] intStack = client.getIntStack();
|
final int[] intStack = client.getIntStack();
|
||||||
int stringStackCount = client.getStringStackSize();
|
int stringStackCount = client.getStringStackSize();
|
||||||
@@ -185,7 +180,6 @@ public class CommandManager
|
|||||||
}
|
}
|
||||||
resumed = true;
|
resumed = true;
|
||||||
|
|
||||||
ClientThread clientThread = clientThreadProvider.get();
|
|
||||||
clientThread.invokeLater(() -> sendPrivmsg(target, message));
|
clientThread.invokeLater(() -> sendPrivmsg(target, message));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -205,7 +199,6 @@ public class CommandManager
|
|||||||
|
|
||||||
private void sendChatboxInput(int chatType, String input)
|
private void sendChatboxInput(int chatType, String input)
|
||||||
{
|
{
|
||||||
Client client = clientProvider.get();
|
|
||||||
sending = true;
|
sending = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -219,7 +212,6 @@ public class CommandManager
|
|||||||
|
|
||||||
private void sendPrivmsg(String target, String message)
|
private void sendPrivmsg(String target, String message)
|
||||||
{
|
{
|
||||||
Client client = clientProvider.get();
|
|
||||||
client.runScript(ScriptID.PRIVMSG, target, message);
|
client.runScript(ScriptID.PRIVMSG, target, message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ import java.util.Objects;
|
|||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Provider;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.ClanMember;
|
import net.runelite.api.ClanMember;
|
||||||
@@ -66,7 +65,7 @@ public class ClanManager
|
|||||||
|
|
||||||
private int modIconsLength;
|
private int modIconsLength;
|
||||||
|
|
||||||
private final Provider<Client> clientProvider;
|
private final Client client;
|
||||||
private final BufferedImage[] clanChatImages = new BufferedImage[CLANCHAT_IMAGES.length];
|
private final BufferedImage[] clanChatImages = new BufferedImage[CLANCHAT_IMAGES.length];
|
||||||
|
|
||||||
private final LoadingCache<String, ClanMemberRank> clanRanksCache = CacheBuilder.newBuilder()
|
private final LoadingCache<String, ClanMemberRank> clanRanksCache = CacheBuilder.newBuilder()
|
||||||
@@ -77,7 +76,6 @@ public class ClanManager
|
|||||||
@Override
|
@Override
|
||||||
public ClanMemberRank load(String key) throws Exception
|
public ClanMemberRank load(String key) throws Exception
|
||||||
{
|
{
|
||||||
final Client client = clientProvider.get();
|
|
||||||
final ClanMember[] clanMembersArr = client.getClanMembers();
|
final ClanMember[] clanMembersArr = client.getClanMembers();
|
||||||
|
|
||||||
if (clanMembersArr == null || clanMembersArr.length == 0)
|
if (clanMembersArr == null || clanMembersArr.length == 0)
|
||||||
@@ -95,9 +93,9 @@ public class ClanManager
|
|||||||
});
|
});
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public ClanManager(Provider<Client> clientProvider)
|
private ClanManager(Client client)
|
||||||
{
|
{
|
||||||
this.clientProvider = clientProvider;
|
this.client = client;
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (String resource : CLANCHAT_IMAGES)
|
for (String resource : CLANCHAT_IMAGES)
|
||||||
@@ -158,7 +156,6 @@ public class ClanManager
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
final Client client = clientProvider.get();
|
|
||||||
final IndexedSprite[] modIcons = client.getModIcons();
|
final IndexedSprite[] modIcons = client.getModIcons();
|
||||||
final IndexedSprite[] newModIcons = Arrays.copyOf(modIcons, modIcons.length + CLANCHAT_IMAGES.length);
|
final IndexedSprite[] newModIcons = Arrays.copyOf(modIcons, modIcons.length + CLANCHAT_IMAGES.length);
|
||||||
int curPosition = newModIcons.length - CLANCHAT_IMAGES.length;
|
int curPosition = newModIcons.length - CLANCHAT_IMAGES.length;
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ import java.util.HashSet;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Provider;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
@@ -63,7 +62,7 @@ public class MenuManager
|
|||||||
private static final int IDX_LOWER = 4;
|
private static final int IDX_LOWER = 4;
|
||||||
private static final int IDX_UPPER = 8;
|
private static final int IDX_UPPER = 8;
|
||||||
|
|
||||||
private final Provider<Client> clientProvider;
|
private final Client client;
|
||||||
private final EventBus eventBus;
|
private final EventBus eventBus;
|
||||||
|
|
||||||
//Maps the indexes that are being used to the menu option.
|
//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<>();
|
private final Set<String> npcMenuOptions = new HashSet<>();
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public MenuManager(Provider<Client> clientProvider, EventBus eventBus)
|
private MenuManager(Client client, EventBus eventBus)
|
||||||
{
|
{
|
||||||
this.clientProvider = clientProvider;
|
this.client = client;
|
||||||
this.eventBus = eventBus;
|
this.eventBus = eventBus;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,13 +83,6 @@ public class MenuManager
|
|||||||
npcMenuOptions.add(option);
|
npcMenuOptions.add(option);
|
||||||
|
|
||||||
// add to surrounding npcs
|
// add to surrounding npcs
|
||||||
Client client = clientProvider.get();
|
|
||||||
|
|
||||||
if (client == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (NPC npc : client.getNpcs())
|
for (NPC npc : client.getNpcs())
|
||||||
{
|
{
|
||||||
NPCComposition composition = npc.getComposition();
|
NPCComposition composition = npc.getComposition();
|
||||||
@@ -103,13 +95,6 @@ public class MenuManager
|
|||||||
npcMenuOptions.remove(option);
|
npcMenuOptions.remove(option);
|
||||||
|
|
||||||
// remove this option from all npc compositions
|
// remove this option from all npc compositions
|
||||||
Client client = clientProvider.get();
|
|
||||||
|
|
||||||
if (client == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (NPC npc : client.getNpcs())
|
for (NPC npc : client.getNpcs())
|
||||||
{
|
{
|
||||||
NPCComposition composition = npc.getComposition();
|
NPCComposition composition = npc.getComposition();
|
||||||
@@ -141,13 +126,6 @@ public class MenuManager
|
|||||||
|
|
||||||
private boolean menuContainsCustomMenu(WidgetMenuOption customMenuOption)
|
private boolean menuContainsCustomMenu(WidgetMenuOption customMenuOption)
|
||||||
{
|
{
|
||||||
Client client = clientProvider.get();
|
|
||||||
|
|
||||||
if (client == null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (MenuEntry menuEntry : client.getMenuEntries())
|
for (MenuEntry menuEntry : client.getMenuEntries())
|
||||||
{
|
{
|
||||||
String option = menuEntry.getOption();
|
String option = menuEntry.getOption();
|
||||||
@@ -166,12 +144,6 @@ public class MenuManager
|
|||||||
{
|
{
|
||||||
int widgetId = event.getActionParam1();
|
int widgetId = event.getActionParam1();
|
||||||
Collection<WidgetMenuOption> options = managedMenuOptions.get(widgetId);
|
Collection<WidgetMenuOption> options = managedMenuOptions.get(widgetId);
|
||||||
Client client = clientProvider.get();
|
|
||||||
|
|
||||||
if (client == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (WidgetMenuOption currentMenu : options)
|
for (WidgetMenuOption currentMenu : options)
|
||||||
{
|
{
|
||||||
@@ -332,13 +304,6 @@ public class MenuManager
|
|||||||
|
|
||||||
private void addPlayerMenuItem(int playerOptionIndex, String menuText)
|
private void addPlayerMenuItem(int playerOptionIndex, String menuText)
|
||||||
{
|
{
|
||||||
Client client = clientProvider.get();
|
|
||||||
|
|
||||||
if (client == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
client.getPlayerOptions()[playerOptionIndex] = menuText;
|
client.getPlayerOptions()[playerOptionIndex] = menuText;
|
||||||
client.getPlayerOptionsPriorities()[playerOptionIndex] = true;
|
client.getPlayerOptionsPriorities()[playerOptionIndex] = true;
|
||||||
client.getPlayerMenuTypes()[playerOptionIndex] = MenuAction.RUNELITE.getId();
|
client.getPlayerMenuTypes()[playerOptionIndex] = MenuAction.RUNELITE.getId();
|
||||||
@@ -348,31 +313,16 @@ public class MenuManager
|
|||||||
|
|
||||||
private void removePlayerMenuItem(int playerOptionIndex)
|
private void removePlayerMenuItem(int playerOptionIndex)
|
||||||
{
|
{
|
||||||
Client client = clientProvider.get();
|
|
||||||
|
|
||||||
if (client == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
client.getPlayerOptions()[playerOptionIndex] = null;
|
client.getPlayerOptions()[playerOptionIndex] = null;
|
||||||
playerMenuIndexMap.remove(playerOptionIndex);
|
playerMenuIndexMap.remove(playerOptionIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find the next empty player menu slot index
|
* Find the next empty player menu slot index
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private int findEmptyPlayerMenuIndex()
|
private int findEmptyPlayerMenuIndex()
|
||||||
{
|
{
|
||||||
int index = IDX_LOWER;
|
int index = IDX_LOWER;
|
||||||
Client client = clientProvider.get();
|
|
||||||
|
|
||||||
if (client == null)
|
|
||||||
{
|
|
||||||
return IDX_UPPER;
|
|
||||||
}
|
|
||||||
|
|
||||||
String[] playerOptions = client.getPlayerOptions();
|
String[] playerOptions = client.getPlayerOptions();
|
||||||
while (index < IDX_UPPER && playerOptions[index] != null)
|
while (index < IDX_UPPER && playerOptions[index] != null)
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ import java.util.concurrent.ScheduledExecutorService;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
|
import javax.inject.Provider;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
@@ -85,7 +86,7 @@ public class PluginManager
|
|||||||
private final Scheduler scheduler;
|
private final Scheduler scheduler;
|
||||||
private final ConfigManager configManager;
|
private final ConfigManager configManager;
|
||||||
private final ScheduledExecutorService executor;
|
private final ScheduledExecutorService executor;
|
||||||
private final SceneTileManager sceneTileManager;
|
private final Provider<SceneTileManager> sceneTileManager;
|
||||||
private final List<Plugin> plugins = new CopyOnWriteArrayList<>();
|
private final List<Plugin> plugins = new CopyOnWriteArrayList<>();
|
||||||
private final List<Plugin> activePlugins = new CopyOnWriteArrayList<>();
|
private final List<Plugin> activePlugins = new CopyOnWriteArrayList<>();
|
||||||
private final String runeliteGroupName = RuneLiteConfig.class
|
private final String runeliteGroupName = RuneLiteConfig.class
|
||||||
@@ -102,7 +103,7 @@ public class PluginManager
|
|||||||
final Scheduler scheduler,
|
final Scheduler scheduler,
|
||||||
final ConfigManager configManager,
|
final ConfigManager configManager,
|
||||||
final ScheduledExecutorService executor,
|
final ScheduledExecutorService executor,
|
||||||
final SceneTileManager sceneTileManager)
|
final Provider<SceneTileManager> sceneTileManager)
|
||||||
{
|
{
|
||||||
this.developerMode = developerMode;
|
this.developerMode = developerMode;
|
||||||
this.eventBus = eventBus;
|
this.eventBus = eventBus;
|
||||||
@@ -323,7 +324,15 @@ public class PluginManager
|
|||||||
});
|
});
|
||||||
|
|
||||||
log.debug("Plugin {} is now running", plugin.getClass().getSimpleName());
|
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);
|
eventBus.register(plugin);
|
||||||
schedule(plugin);
|
schedule(plugin);
|
||||||
eventBus.post(new PluginChanged(plugin, true));
|
eventBus.post(new PluginChanged(plugin, true));
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ import java.util.concurrent.ScheduledExecutorService;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Provider;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.MenuAction;
|
import net.runelite.api.MenuAction;
|
||||||
@@ -69,10 +70,10 @@ public class HiscorePlugin extends Plugin
|
|||||||
private Client client;
|
private Client client;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ClientToolbar clientToolbar;
|
private Provider<MenuManager> menuManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private MenuManager menuManager;
|
private ClientToolbar clientToolbar;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ScheduledExecutorService executor;
|
private ScheduledExecutorService executor;
|
||||||
@@ -112,9 +113,9 @@ public class HiscorePlugin extends Plugin
|
|||||||
|
|
||||||
clientToolbar.addNavigation(navButton);
|
clientToolbar.addNavigation(navButton);
|
||||||
|
|
||||||
if (config.playerOption())
|
if (config.playerOption() && client != null)
|
||||||
{
|
{
|
||||||
menuManager.addPlayerMenuItem(LOOKUP);
|
menuManager.get().addPlayerMenuItem(LOOKUP);
|
||||||
}
|
}
|
||||||
if (config.autocomplete())
|
if (config.autocomplete())
|
||||||
{
|
{
|
||||||
@@ -127,7 +128,11 @@ public class HiscorePlugin extends Plugin
|
|||||||
{
|
{
|
||||||
hiscorePanel.removeInputKeyListener(autocompleter);
|
hiscorePanel.removeInputKeyListener(autocompleter);
|
||||||
clientToolbar.removeNavigation(navButton);
|
clientToolbar.removeNavigation(navButton);
|
||||||
menuManager.removePlayerMenuItem(LOOKUP);
|
|
||||||
|
if (client != null)
|
||||||
|
{
|
||||||
|
menuManager.get().removePlayerMenuItem(LOOKUP);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@@ -135,11 +140,14 @@ public class HiscorePlugin extends Plugin
|
|||||||
{
|
{
|
||||||
if (event.getGroup().equals("hiscore"))
|
if (event.getGroup().equals("hiscore"))
|
||||||
{
|
{
|
||||||
menuManager.removePlayerMenuItem(LOOKUP);
|
if (client != null)
|
||||||
|
|
||||||
if (config.playerOption())
|
|
||||||
{
|
{
|
||||||
menuManager.addPlayerMenuItem(LOOKUP);
|
menuManager.get().removePlayerMenuItem(LOOKUP);
|
||||||
|
|
||||||
|
if (config.playerOption())
|
||||||
|
{
|
||||||
|
menuManager.get().addPlayerMenuItem(LOOKUP);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event.getKey().equals("autocomplete"))
|
if (event.getKey().equals("autocomplete"))
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ import java.awt.event.KeyEvent;
|
|||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Provider;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
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 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_COLOR = new Color(255, 255, 0, 100);
|
||||||
private static final Color MOVING_OVERLAY_ACTIVE_COLOR = new Color(255, 255, 0, 200);
|
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 OverlayManager overlayManager;
|
||||||
private final RuneLiteConfig runeLiteConfig;
|
private final RuneLiteConfig runeLiteConfig;
|
||||||
|
|
||||||
@@ -87,13 +86,13 @@ public class OverlayRenderer extends MouseListener implements KeyListener
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private OverlayRenderer(
|
private OverlayRenderer(
|
||||||
final Provider<Client> clientProvider,
|
final Client client,
|
||||||
final OverlayManager overlayManager,
|
final OverlayManager overlayManager,
|
||||||
final RuneLiteConfig runeLiteConfig,
|
final RuneLiteConfig runeLiteConfig,
|
||||||
final MouseManager mouseManager,
|
final MouseManager mouseManager,
|
||||||
final KeyManager keyManager)
|
final KeyManager keyManager)
|
||||||
{
|
{
|
||||||
this.clientProvider = clientProvider;
|
this.client = client;
|
||||||
this.overlayManager = overlayManager;
|
this.overlayManager = overlayManager;
|
||||||
this.runeLiteConfig = runeLiteConfig;
|
this.runeLiteConfig = runeLiteConfig;
|
||||||
keyManager.registerKeyListener(this);
|
keyManager.registerKeyListener(this);
|
||||||
@@ -111,11 +110,9 @@ public class OverlayRenderer extends MouseListener implements KeyListener
|
|||||||
|
|
||||||
public void render(Graphics2D graphics, final OverlayLayer layer)
|
public void render(Graphics2D graphics, final OverlayLayer layer)
|
||||||
{
|
{
|
||||||
final Client client = clientProvider.get();
|
|
||||||
final List<Overlay> overlays = overlayManager.getLayer(layer);
|
final List<Overlay> overlays = overlayManager.getLayer(layer);
|
||||||
|
|
||||||
if (client == null
|
if (overlays == null
|
||||||
|| overlays == null
|
|
||||||
|| overlays.isEmpty()
|
|| overlays.isEmpty()
|
||||||
|| client.getGameState() != GameState.LOGGED_IN
|
|| client.getGameState() != GameState.LOGGED_IN
|
||||||
|| client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null
|
|| client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null
|
||||||
@@ -274,13 +271,6 @@ public class OverlayRenderer extends MouseListener implements KeyListener
|
|||||||
return mouseEvent;
|
return mouseEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Client client = clientProvider.get();
|
|
||||||
|
|
||||||
if (client == null)
|
|
||||||
{
|
|
||||||
return mouseEvent;
|
|
||||||
}
|
|
||||||
|
|
||||||
final Point mousePoint = mouseEvent.getPoint();
|
final Point mousePoint = mouseEvent.getPoint();
|
||||||
mousePosition.setLocation(mousePoint);
|
mousePosition.setLocation(mousePoint);
|
||||||
final Rectangle canvasRect = new Rectangle(client.getRealDimensions());
|
final Rectangle canvasRect = new Rectangle(client.getRealDimensions());
|
||||||
@@ -399,7 +389,6 @@ public class OverlayRenderer extends MouseListener implements KeyListener
|
|||||||
|
|
||||||
private boolean shouldInvalidateBounds()
|
private boolean shouldInvalidateBounds()
|
||||||
{
|
{
|
||||||
final Client client = clientProvider.get();
|
|
||||||
final Widget chatbox = client.getWidget(WidgetInfo.CHATBOX_MESSAGES);
|
final Widget chatbox = client.getWidget(WidgetInfo.CHATBOX_MESSAGES);
|
||||||
final boolean resizeableChanged = isResizeable != client.isResized();
|
final boolean resizeableChanged = isResizeable != client.isResized();
|
||||||
boolean changed = false;
|
boolean changed = false;
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ import java.awt.Point;
|
|||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Provider;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.client.config.RuneLiteConfig;
|
import net.runelite.client.config.RuneLiteConfig;
|
||||||
@@ -51,19 +50,19 @@ public class InfoBoxOverlay extends Overlay
|
|||||||
private final PanelComponent panelComponent = new PanelComponent();
|
private final PanelComponent panelComponent = new PanelComponent();
|
||||||
private final InfoBoxManager infoboxManager;
|
private final InfoBoxManager infoboxManager;
|
||||||
private final TooltipManager tooltipManager;
|
private final TooltipManager tooltipManager;
|
||||||
private final Provider<Client> clientProvider;
|
private final Client client;
|
||||||
private final RuneLiteConfig config;
|
private final RuneLiteConfig config;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private InfoBoxOverlay(
|
private InfoBoxOverlay(
|
||||||
InfoBoxManager infoboxManager,
|
InfoBoxManager infoboxManager,
|
||||||
TooltipManager tooltipManager,
|
TooltipManager tooltipManager,
|
||||||
Provider<Client> clientProvider,
|
Client client,
|
||||||
RuneLiteConfig config)
|
RuneLiteConfig config)
|
||||||
{
|
{
|
||||||
this.tooltipManager = tooltipManager;
|
this.tooltipManager = tooltipManager;
|
||||||
this.infoboxManager = infoboxManager;
|
this.infoboxManager = infoboxManager;
|
||||||
this.clientProvider = clientProvider;
|
this.client = client;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
setPosition(OverlayPosition.TOP_LEFT);
|
setPosition(OverlayPosition.TOP_LEFT);
|
||||||
|
|
||||||
@@ -105,34 +104,30 @@ public class InfoBoxOverlay extends Overlay
|
|||||||
}
|
}
|
||||||
|
|
||||||
final Dimension dimension = panelComponent.render(graphics);
|
final Dimension dimension = panelComponent.render(graphics);
|
||||||
final Client client = clientProvider.get();
|
|
||||||
|
|
||||||
// Handle tooltips
|
// 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());
|
if (child instanceof InfoBoxComponent)
|
||||||
|
|
||||||
for (final LayoutableRenderableEntity child : panelComponent.getChildren())
|
|
||||||
{
|
{
|
||||||
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());
|
tooltipManager.add(new Tooltip(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))
|
|
||||||
{
|
|
||||||
tooltipManager.add(new Tooltip(component.getTooltip()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.awt.Point;
|
|||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Provider;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
@@ -47,12 +46,12 @@ public class TooltipOverlay extends Overlay
|
|||||||
private static final int OFFSET = 24;
|
private static final int OFFSET = 24;
|
||||||
private static final int PADDING = 2;
|
private static final int PADDING = 2;
|
||||||
private final TooltipManager tooltipManager;
|
private final TooltipManager tooltipManager;
|
||||||
private final Provider<Client> clientProvider;
|
private final Client client;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private TooltipOverlay(Provider<Client> clientProvider, TooltipManager tooltipManager)
|
private TooltipOverlay(Client client, TooltipManager tooltipManager)
|
||||||
{
|
{
|
||||||
this.clientProvider = clientProvider;
|
this.client = client;
|
||||||
this.tooltipManager = tooltipManager;
|
this.tooltipManager = tooltipManager;
|
||||||
setPosition(OverlayPosition.TOOLTIP);
|
setPosition(OverlayPosition.TOOLTIP);
|
||||||
setPriority(OverlayPriority.HIGHEST);
|
setPriority(OverlayPriority.HIGHEST);
|
||||||
@@ -69,7 +68,6 @@ public class TooltipOverlay extends Overlay
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Client client = clientProvider.get();
|
|
||||||
final Rectangle clientCanvasBounds = new Rectangle(client.getRealDimensions());
|
final Rectangle clientCanvasBounds = new Rectangle(client.getRealDimensions());
|
||||||
final net.runelite.api.Point mouseCanvasPosition = client.getMouseCanvasPosition();
|
final net.runelite.api.Point mouseCanvasPosition = client.getMouseCanvasPosition();
|
||||||
final Point mousePosition = new Point(mouseCanvasPosition.getX(), mouseCanvasPosition.getY() + OFFSET);
|
final Point mousePosition = new Point(mouseCanvasPosition.getX(), mouseCanvasPosition.getY() + OFFSET);
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ import java.awt.Rectangle;
|
|||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Provider;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
@@ -60,16 +59,16 @@ public class WorldMapOverlay extends Overlay
|
|||||||
private static final int TOOLTIP_PADDING_WIDTH = 2;
|
private static final int TOOLTIP_PADDING_WIDTH = 2;
|
||||||
|
|
||||||
private final WorldMapPointManager worldMapPointManager;
|
private final WorldMapPointManager worldMapPointManager;
|
||||||
private final Provider<Client> clientProvider;
|
private final Client client;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private WorldMapOverlay(
|
private WorldMapOverlay(
|
||||||
Provider<Client> clientProvider,
|
Client client,
|
||||||
WorldMapPointManager worldMapPointManager,
|
WorldMapPointManager worldMapPointManager,
|
||||||
MouseManager mouseManager,
|
MouseManager mouseManager,
|
||||||
WorldMapOverlayMouseListener worldMapOverlayMouseListener)
|
WorldMapOverlayMouseListener worldMapOverlayMouseListener)
|
||||||
{
|
{
|
||||||
this.clientProvider = clientProvider;
|
this.client = client;
|
||||||
this.worldMapPointManager = worldMapPointManager;
|
this.worldMapPointManager = worldMapPointManager;
|
||||||
setPosition(OverlayPosition.DYNAMIC);
|
setPosition(OverlayPosition.DYNAMIC);
|
||||||
setPriority(OverlayPriority.HIGHEST);
|
setPriority(OverlayPriority.HIGHEST);
|
||||||
@@ -87,8 +86,6 @@ public class WorldMapOverlay extends Overlay
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Client client = clientProvider.get();
|
|
||||||
|
|
||||||
Widget widget = client.getWidget(WidgetInfo.WORLD_MAP_VIEW);
|
Widget widget = client.getWidget(WidgetInfo.WORLD_MAP_VIEW);
|
||||||
if (widget == null)
|
if (widget == null)
|
||||||
{
|
{
|
||||||
@@ -181,7 +178,7 @@ public class WorldMapOverlay extends Overlay
|
|||||||
*/
|
*/
|
||||||
public Point mapWorldPointToGraphicsPoint(WorldPoint worldPoint)
|
public Point mapWorldPointToGraphicsPoint(WorldPoint worldPoint)
|
||||||
{
|
{
|
||||||
RenderOverview ro = clientProvider.get().getRenderOverview();
|
RenderOverview ro = client.getRenderOverview();
|
||||||
|
|
||||||
if (!ro.getWorldMapData().surfaceContainsPosition(worldPoint.getX(), worldPoint.getY()))
|
if (!ro.getWorldMapData().surfaceContainsPosition(worldPoint.getX(), worldPoint.getY()))
|
||||||
{
|
{
|
||||||
@@ -190,7 +187,7 @@ public class WorldMapOverlay extends Overlay
|
|||||||
|
|
||||||
Float pixelsPerTile = ro.getWorldMapZoom();
|
Float pixelsPerTile = ro.getWorldMapZoom();
|
||||||
|
|
||||||
Widget map = clientProvider.get().getWidget(WidgetInfo.WORLD_MAP_VIEW);
|
Widget map = client.getWidget(WidgetInfo.WORLD_MAP_VIEW);
|
||||||
if (map != null)
|
if (map != null)
|
||||||
{
|
{
|
||||||
Rectangle worldMapRect = map.getBounds();
|
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);
|
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.setColor(TOOLTIP_BACKGROUND);
|
||||||
graphics.setFont(FontManager.getRunescapeFont());
|
graphics.setFont(FontManager.getRunescapeFont());
|
||||||
FontMetrics fm = graphics.getFontMetrics();
|
FontMetrics fm = graphics.getFontMetrics();
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import java.awt.Rectangle;
|
|||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Provider;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
@@ -42,14 +41,14 @@ import net.runelite.client.input.MouseListener;
|
|||||||
@Singleton
|
@Singleton
|
||||||
public class WorldMapOverlayMouseListener extends MouseListener
|
public class WorldMapOverlayMouseListener extends MouseListener
|
||||||
{
|
{
|
||||||
private final Provider<Client> clientProvider;
|
private final Client client;
|
||||||
private final WorldMapPointManager worldMapPointManager;
|
private final WorldMapPointManager worldMapPointManager;
|
||||||
private WorldMapPoint tooltipPoint = null;
|
private WorldMapPoint tooltipPoint = null;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private WorldMapOverlayMouseListener(Provider<Client> clientProvider, WorldMapPointManager worldMapPointManager)
|
private WorldMapOverlayMouseListener(Client client, WorldMapPointManager worldMapPointManager)
|
||||||
{
|
{
|
||||||
this.clientProvider = clientProvider;
|
this.client = client;
|
||||||
this.worldMapPointManager = worldMapPointManager;
|
this.worldMapPointManager = worldMapPointManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,7 +59,7 @@ public class WorldMapOverlayMouseListener extends MouseListener
|
|||||||
|
|
||||||
if (SwingUtilities.isLeftMouseButton(e) && !worldMapPoints.isEmpty())
|
if (SwingUtilities.isLeftMouseButton(e) && !worldMapPoints.isEmpty())
|
||||||
{
|
{
|
||||||
Point mousePos = clientProvider.get().getMouseCanvasPosition();
|
Point mousePos = client.getMouseCanvasPosition();
|
||||||
|
|
||||||
for (WorldMapPoint worldMapPoint : worldMapPoints)
|
for (WorldMapPoint worldMapPoint : worldMapPoints)
|
||||||
{
|
{
|
||||||
@@ -71,7 +70,6 @@ public class WorldMapOverlayMouseListener extends MouseListener
|
|||||||
{
|
{
|
||||||
// jump map to position of point
|
// jump map to position of point
|
||||||
WorldPoint target = worldMapPoint.getWorldPoint();
|
WorldPoint target = worldMapPoint.getWorldPoint();
|
||||||
Client client = clientProvider.get();
|
|
||||||
RenderOverview renderOverview = client.getRenderOverview();
|
RenderOverview renderOverview = client.getRenderOverview();
|
||||||
renderOverview.setWorldMapPositionTarget(target);
|
renderOverview.setWorldMapPositionTarget(target);
|
||||||
}
|
}
|
||||||
@@ -92,7 +90,6 @@ public class WorldMapOverlayMouseListener extends MouseListener
|
|||||||
return mouseEvent;
|
return mouseEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Client client = clientProvider.get();
|
|
||||||
final Point mousePos = client.getMouseCanvasPosition();
|
final Point mousePos = client.getMouseCanvasPosition();
|
||||||
final Widget view = client.getWidget(WidgetInfo.WORLD_MAP_VIEW);
|
final Widget view = client.getWidget(WidgetInfo.WORLD_MAP_VIEW);
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.Objects;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Provider;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.Constants;
|
import net.runelite.api.Constants;
|
||||||
@@ -49,12 +48,12 @@ import net.runelite.api.events.WallObjectSpawned;
|
|||||||
public class SceneTileManager
|
public class SceneTileManager
|
||||||
{
|
{
|
||||||
private final EventBus eventBus = new EventBus();
|
private final EventBus eventBus = new EventBus();
|
||||||
private final Provider<Client> clientProvider;
|
private final Client client;
|
||||||
|
|
||||||
@Inject
|
@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)
|
public void forEachTile(Consumer<Tile> consumer)
|
||||||
{
|
{
|
||||||
final Client client = clientProvider.get();
|
if (client.getGameState() != GameState.LOGGED_IN)
|
||||||
|
|
||||||
if (client == null || client.getGameState() != GameState.LOGGED_IN)
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user