Search in sources :

Example 1 with Client

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;
}
Also used : Rectangle(java.awt.Rectangle) Point(java.awt.Point) Client(net.runelite.api.Client)

Example 2 with Client

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();
}
Also used : Color(java.awt.Color) Rectangle(java.awt.Rectangle) KeyManager(net.runelite.client.input.KeyManager) Provider(javax.inject.Provider) TooltipOverlay(net.runelite.client.ui.overlay.tooltip.TooltipOverlay) FocusChanged(net.runelite.api.events.FocusChanged) Widget(net.runelite.api.widgets.Widget) Point(java.awt.Point) HashMap(java.util.HashMap) Singleton(javax.inject.Singleton) MouseListener(net.runelite.client.input.MouseListener) ConfigManager(net.runelite.client.config.ConfigManager) Inject(javax.inject.Inject) SwingUtilities(javax.swing.SwingUtilities) Graphics2D(java.awt.Graphics2D) Map(java.util.Map) WidgetInfo(net.runelite.api.widgets.WidgetInfo) InfoBoxOverlay(net.runelite.client.ui.overlay.infobox.InfoBoxOverlay) Subscribe(com.google.common.eventbus.Subscribe) GameState(net.runelite.api.GameState) BufferedImage(java.awt.image.BufferedImage) RuneLiteConfig(net.runelite.client.config.RuneLiteConfig) MoreObjects(com.google.common.base.MoreObjects) PluginChanged(net.runelite.client.events.PluginChanged) KeyEvent(java.awt.event.KeyEvent) Client(net.runelite.api.Client) Collectors(java.util.stream.Collectors) MouseEvent(java.awt.event.MouseEvent) KeyListener(net.runelite.client.input.KeyListener) PluginManager(net.runelite.client.plugins.PluginManager) Objects(java.util.Objects) Consumer(java.util.function.Consumer) Dimension(java.awt.Dimension) List(java.util.List) Slf4j(lombok.extern.slf4j.Slf4j) Stream(java.util.stream.Stream) MouseManager(net.runelite.client.input.MouseManager) GameStateChanged(net.runelite.api.events.GameStateChanged) Collections(java.util.Collections) FontManager(net.runelite.client.ui.FontManager) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) ConfigGroup(net.runelite.client.config.ConfigGroup) Point(java.awt.Point) TooltipOverlay(net.runelite.client.ui.overlay.tooltip.TooltipOverlay) InfoBoxOverlay(net.runelite.client.ui.overlay.infobox.InfoBoxOverlay) Client(net.runelite.api.Client)

Example 3 with Client

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);
            }
        }
    }
}
Also used : Color(java.awt.Color) Rectangle(java.awt.Rectangle) Point(java.awt.Point) Dimension(java.awt.Dimension) Client(net.runelite.api.Client) TooltipOverlay(net.runelite.client.ui.overlay.tooltip.TooltipOverlay) InfoBoxOverlay(net.runelite.client.ui.overlay.infobox.InfoBoxOverlay)

Example 4 with Client

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();
    }
}
Also used : Canvas(java.awt.Canvas) Client(net.runelite.api.Client)

Example 5 with Client

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();
}
Also used : Applet(java.applet.Applet) Client(net.runelite.api.Client)

Aggregations

Client (net.runelite.api.Client)23 Dimension (java.awt.Dimension)6 Rectangle (java.awt.Rectangle)6 Point (java.awt.Point)5 Color (java.awt.Color)3 Subscribe (com.google.common.eventbus.Subscribe)2 Graphics2D (java.awt.Graphics2D)2 BufferedImage (java.awt.image.BufferedImage)2 List (java.util.List)2 Objects (java.util.Objects)2 Collectors (java.util.stream.Collectors)2 Stream (java.util.stream.Stream)2 MenuEntry (net.runelite.api.MenuEntry)2 NPC (net.runelite.api.NPC)2 NPCComposition (net.runelite.api.NPCComposition)2 InfoBoxOverlay (net.runelite.client.ui.overlay.infobox.InfoBoxOverlay)2 TooltipOverlay (net.runelite.client.ui.overlay.tooltip.TooltipOverlay)2 MoreObjects (com.google.common.base.MoreObjects)1 Inject (com.google.inject.Inject)1 Applet (java.applet.Applet)1