custom cursor: add option to use equipped weapon

This commit is contained in:
Justin Hiltz
2020-03-18 17:18:13 -03:00
committed by GitHub
parent f9436d06e3
commit 6c5c579fd1
2 changed files with 66 additions and 4 deletions

View File

@@ -38,6 +38,7 @@ public enum CustomCursor
DRAGON_DAGGER_POISON("Dragon Dagger (p)", "cursor-dragon-dagger-p.png"),
TROUT("Trout", "cursor-trout.png"),
DRAGON_SCIMITAR("Dragon Scimitar", "cursor-dragon-scimitar.png"),
EQUIPPED_WEAPON("Equipped Weapon"),
CUSTOM_IMAGE("Custom Image");
private final String name;
@@ -55,4 +56,4 @@ public enum CustomCursor
this.name = name;
this.cursorImage = ImageUtil.getResourceStreamFromClass(CustomCursorPlugin.class, icon);
}
}
}

View File

@@ -30,10 +30,18 @@ import java.io.File;
import javax.imageio.ImageIO;
import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.InventoryID;
import net.runelite.api.Item;
import net.runelite.api.ItemContainer;
import net.runelite.api.EquipmentInventorySlot;
import net.runelite.api.events.ItemContainerChanged;
import net.runelite.client.RuneLite;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.ClientUI;
@@ -48,12 +56,21 @@ public class CustomCursorPlugin extends Plugin
{
private static final File CUSTOM_IMAGE_FILE = new File(RuneLite.RUNELITE_DIR, "cursor.png");
@Inject
private Client client;
@Inject
private ClientThread clientThread;
@Inject
private ClientUI clientUI;
@Inject
private CustomCursorConfig config;
@Inject
private ItemManager itemManager;
@Provides
CustomCursorConfig provideConfig(ConfigManager configManager)
{
@@ -81,6 +98,15 @@ public class CustomCursorPlugin extends Plugin
}
}
@Subscribe
public void onItemContainerChanged(ItemContainerChanged event)
{
if (config.selectedCursor() == CustomCursor.EQUIPPED_WEAPON && event.getContainerId() == InventoryID.EQUIPMENT.getId())
{
updateCursor();
}
}
private void updateCursor()
{
CustomCursor selectedCursor = config.selectedCursor();
@@ -108,10 +134,45 @@ public class CustomCursorPlugin extends Plugin
{
clientUI.resetCursor();
}
return;
}
else if (selectedCursor == CustomCursor.EQUIPPED_WEAPON)
{
clientThread.invokeLater(() ->
{
final ItemContainer equipment = client.getItemContainer(InventoryID.EQUIPMENT);
assert selectedCursor.getCursorImage() != null;
clientUI.setCursor(selectedCursor.getCursorImage(), selectedCursor.getName());
if (equipment == null)
{
clientUI.resetCursor();
return;
}
final Item[] items = equipment.getItems();
final int weaponIdx = EquipmentInventorySlot.WEAPON.getSlotIdx();
if (items == null || weaponIdx >= items.length)
{
clientUI.resetCursor();
return;
}
final Item weapon = items[EquipmentInventorySlot.WEAPON.getSlotIdx()];
final BufferedImage image = itemManager.getImage(weapon.getId());
if (weapon.getQuantity() > 0)
{
clientUI.setCursor(image, selectedCursor.getName());
}
else
{
clientUI.resetCursor();
}
});
}
else
{
assert selectedCursor.getCursorImage() != null;
clientUI.setCursor(selectedCursor.getCursorImage(), selectedCursor.getName());
}
}
}