use of net.runelite.api.Client in project runelite by runelite.
the class MenuManager method onMenuEntryAdded.
@Subscribe
public void onMenuEntryAdded(MenuEntryAdded event) {
int widgetId = event.getActionParam1();
Collection<WidgetMenuOption> options = managedMenuOptions.get(widgetId);
Client client = clientProvider.get();
if (client == null) {
return;
}
for (WidgetMenuOption currentMenu : options) {
if (// Don't add if we have already added it to this widget
!menuContainsCustomMenu(currentMenu)) {
MenuEntry[] menuEntries = client.getMenuEntries();
menuEntries = Arrays.copyOf(menuEntries, menuEntries.length + 1);
MenuEntry menuEntry = menuEntries[menuEntries.length - 1] = new MenuEntry();
menuEntry.setOption(currentMenu.getMenuOption());
menuEntry.setParam1(widgetId);
menuEntry.setTarget(currentMenu.getMenuTarget());
menuEntry.setType(MenuAction.RUNELITE.getId());
client.setMenuEntries(menuEntries);
}
}
}
use of net.runelite.api.Client in project runelite by runelite.
the class ClanManager method loadClanChatIcons.
private void loadClanChatIcons() {
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;
for (BufferedImage image : clanChatImages) {
IndexedSprite sprite = createIndexedSprite(client, image);
newModIcons[curPosition++] = sprite;
}
client.setModIcons(newModIcons);
modIconsLength = newModIcons.length;
} catch (IOException e) {
log.warn("Failed loading of clan chat icons", e);
}
}
use of net.runelite.api.Client in project runelite by runelite.
the class ChatMessageManager method refreshAll.
public void refreshAll() {
final Client client = clientProvider.get();
executor.submit(() -> {
client.getChatLineMap().values().stream().filter(Objects::nonNull).flatMap(clb -> Arrays.stream(clb.getLines())).filter(Objects::nonNull).forEach(this::update);
client.refreshChat();
});
}
use of net.runelite.api.Client in project runelite by runelite.
the class InfoBoxOverlay method render.
@Override
public Dimension render(Graphics2D graphics) {
List<InfoBox> infoBoxes = infoboxManager.getInfoBoxes();
if (infoBoxes.isEmpty()) {
return null;
}
int width = infoBoxes.size() * (BOXSIZE + SEPARATOR);
int x = 0;
for (InfoBox box : infoBoxes) {
if (!box.render()) {
continue;
}
final InfoBoxComponent infoBoxComponent = new InfoBoxComponent();
infoBoxComponent.setColor(box.getTextColor());
infoBoxComponent.setImage(box.getImage());
infoBoxComponent.setText(box.getText());
infoBoxComponent.setPosition(new Point(x, 0));
final Dimension infoBoxBounds = infoBoxComponent.render(graphics);
if (!Strings.isNullOrEmpty(box.getTooltip())) {
final Rectangle intersectionRectangle = new Rectangle(infoBoxBounds);
intersectionRectangle.setLocation(getBounds().getLocation());
intersectionRectangle.translate(x, 0);
final Point transformed = OverlayUtil.transformPosition(getPosition(), intersectionRectangle.getSize());
intersectionRectangle.translate(transformed.x, transformed.y);
final Client client = clientProvider.get();
if (client != null && intersectionRectangle.contains(new Point(client.getMouseCanvasPosition().getX(), client.getMouseCanvasPosition().getY()))) {
tooltipManager.add(new Tooltip(box.getTooltip()));
}
}
x += BOXSIZE + SEPARATOR;
}
return new Dimension(width, BOXSIZE);
}
use of net.runelite.api.Client in project runelite by runelite.
the class RegionTileManager method forEachTile.
/**
* Iterates over each tile in current region if player is logged in
* @param consumer consumer accepting tile as parameter
*/
public void forEachTile(Consumer<Tile> consumer) {
final Client client = clientProvider.get();
if (client == null || client.getGameState() != GameState.LOGGED_IN) {
return;
}
final Region region = client.getRegion();
final Tile[][][] tiles = region.getTiles();
int z = client.getPlane();
for (int x = 0; x < REGION_SIZE; ++x) {
for (int y = 0; y < REGION_SIZE; ++y) {
Tile tile = tiles[z][x][y];
if (tile == null) {
continue;
}
consumer.accept(tile);
}
}
}
Aggregations