use of net.runelite.api.Client in project runelite by runelite.
the class OverlayRenderer method mouseDragged.
@Override
public MouseEvent mouseDragged(MouseEvent mouseEvent) {
if (!inOverlayDraggingMode) {
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());
if (!canvasRect.contains(mousePoint)) {
return mouseEvent;
}
if (movedOverlay != null) {
mousePoint.translate(-overlayOffset.x, -overlayOffset.y);
movedOverlay.setPreferredPosition(null);
movedOverlay.setPreferredLocation(mousePoint);
rebuildOverlayLayers();
mouseEvent.consume();
}
return mouseEvent;
}
use of net.runelite.api.Client in project runelite by runelite.
the class OverlayRenderer method rebuildOverlays.
private void rebuildOverlays() {
final List<Overlay> overlays = Stream.concat(pluginManager.getPlugins().stream().filter(pluginManager::isPluginEnabled).flatMap(plugin -> plugin.getOverlays().stream()), Stream.of(infoBoxOverlay, tooltipOverlay)).filter(Objects::nonNull).collect(Collectors.toList());
sortOverlays(overlays);
allOverlays.clear();
allOverlays.addAll(overlays);
final Client client = clientProvider.get();
for (final Overlay overlay : overlays) {
final Point location = loadOverlayLocation(overlay);
if (location != null && client.getCanvas() != null && !client.getCanvas().contains(location)) {
overlay.setPreferredLocation(null);
saveOverlayLocation(overlay);
} else {
overlay.setPreferredLocation(location);
}
final OverlayPosition position = loadOverlayPosition(overlay);
overlay.setPreferredPosition(position);
}
rebuildOverlayLayers();
}
use of net.runelite.api.Client in project runelite by runelite.
the class OverlayRenderer method render.
public void render(Graphics2D graphics, final OverlayLayer layer) {
final Client client = clientProvider.get();
final List<Overlay> overlays = overlayLayerOverlayMap.get(layer);
if (client == null || overlays == null || overlays.isEmpty() || client.getGameState() != GameState.LOGGED_IN || client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null || client.getViewportWidget() == null) {
return;
}
if (shouldInvalidateBounds()) {
snapCorners = buildSnapCorners();
}
// Create copy of snap corners because overlays will modify them
OverlayBounds snapCorners = new OverlayBounds(this.snapCorners);
// Set font based on configuration
graphics.setFont(runeLiteConfig.useSmallFont() ? FontManager.getRunescapeSmallFont() : FontManager.getRunescapeFont());
OverlayUtil.setGraphicProperties(graphics);
// Draw snap corners
if (layer == OverlayLayer.UNDER_WIDGETS && movedOverlay != null) {
final OverlayBounds translatedSnapCorners = snapCorners.translated(-SNAP_CORNER_SIZE.width, -SNAP_CORNER_SIZE.height);
final Color previous = graphics.getColor();
for (final Rectangle corner : translatedSnapCorners.getBounds()) {
graphics.setColor(corner.contains(mousePosition) ? SNAP_CORNER_ACTIVE_COLOR : SNAP_CORNER_COLOR);
graphics.fill(corner);
}
graphics.setColor(previous);
}
for (Overlay overlay : overlays) {
OverlayPosition overlayPosition = overlay.getPosition();
if (overlay.getPreferredPosition() != null) {
overlayPosition = overlay.getPreferredPosition();
}
if (overlayPosition == OverlayPosition.ABOVE_CHATBOX_RIGHT && !isResizeable) {
// On fixed mode, ABOVE_CHATBOX_RIGHT is in the same location as
// BOTTOM_RIGHT. Just use BOTTOM_RIGHT to prevent overlays from
// drawing over each other.
overlayPosition = OverlayPosition.BOTTOM_RIGHT;
}
if (overlayPosition == OverlayPosition.DYNAMIC || overlayPosition == OverlayPosition.TOOLTIP) {
safeRender(client, overlay, layer, graphics, new Point());
} else {
final Point location = overlay.getBounds().getLocation();
final Dimension dimension = overlay.getBounds().getSize();
// If the final position is not modified, layout it
if (overlay.getPreferredLocation() == null || overlay.getPreferredPosition() != null) {
final Rectangle snapCorner = snapCorners.forPosition(overlayPosition);
final Point translation = OverlayUtil.transformPosition(overlayPosition, dimension);
location.setLocation(snapCorner.getX() + translation.x, snapCorner.getY() + translation.y);
final Point padding = OverlayUtil.padPosition(overlayPosition, dimension, PADDING);
snapCorner.translate(padding.x, padding.y);
} else {
location.setLocation(overlay.getPreferredLocation());
}
safeRender(client, overlay, layer, graphics, location);
dimension.setSize(overlay.getBounds().getSize());
if (dimension.width == 0 && dimension.height == 0) {
continue;
}
if (inOverlayDraggingMode) {
final Color previous = graphics.getColor();
graphics.setColor(movedOverlay == overlay ? MOVING_OVERLAY_ACTIVE_COLOR : MOVING_OVERLAY_COLOR);
graphics.drawRect(location.x, location.y, dimension.width - 1, dimension.height - 1);
graphics.setColor(previous);
}
}
}
}
use of net.runelite.api.Client in project runelite by runelite.
the class ClientUI method giveClientFocus.
private void giveClientFocus() {
if (client instanceof Client) {
final Canvas c = ((Client) client).getCanvas();
c.requestFocusInWindow();
} else if (client != null) {
client.requestFocusInWindow();
}
}
use of net.runelite.api.Client in project runelite by runelite.
the class RuneLite method start.
public void start() throws Exception {
// Load RuneLite or Vanilla client
final boolean hasRs = !getOptions().has("no-rs");
final Optional<Applet> optionalClient = hasRs ? new ClientLoader().loadRs() : Optional.empty();
if (!optionalClient.isPresent() && hasRs) {
System.exit(-1);
return;
}
final Applet client = optionalClient.orElse(null);
final boolean isOutdated = client == null || !(client instanceof Client);
if (!isOutdated) {
this.client = (Client) client;
}
// Initialize UI
clientUI.init(client);
// Initialize Discord service
discordService.init();
// Register event listeners
eventBus.register(clientUI);
eventBus.register(overlayRenderer);
eventBus.register(menuManager);
eventBus.register(chatMessageManager);
eventBus.register(pluginManager);
eventBus.register(itemManager);
eventBus.register(clanManager);
// Load user configuration
configManager.load();
// Tell the plugin manager if client is outdated or not
pluginManager.setOutdated(isOutdated);
// Load the plugins, but does not start them yet.
// This will initialize configuration
pluginManager.loadCorePlugins();
// Plugins have provided their config, so set default config
// to main settings
pluginManager.loadDefaultPluginConfiguration();
// Start client session
clientSessionManager.start();
// Load the session, including saved configuration
sessionManager.loadSession();
// Start plugins
pluginManager.startCorePlugins();
// Refresh title toolbar
titleToolbar.refresh();
// Show UI after all plugins are loaded
clientUI.show();
}
Aggregations