custom cursor: add option to use equipped weapon
This commit is contained in:
@@ -38,6 +38,7 @@ public enum CustomCursor
|
|||||||
DRAGON_DAGGER_POISON("Dragon Dagger (p)", "cursor-dragon-dagger-p.png"),
|
DRAGON_DAGGER_POISON("Dragon Dagger (p)", "cursor-dragon-dagger-p.png"),
|
||||||
TROUT("Trout", "cursor-trout.png"),
|
TROUT("Trout", "cursor-trout.png"),
|
||||||
DRAGON_SCIMITAR("Dragon Scimitar", "cursor-dragon-scimitar.png"),
|
DRAGON_SCIMITAR("Dragon Scimitar", "cursor-dragon-scimitar.png"),
|
||||||
|
EQUIPPED_WEAPON("Equipped Weapon"),
|
||||||
CUSTOM_IMAGE("Custom Image");
|
CUSTOM_IMAGE("Custom Image");
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
@@ -55,4 +56,4 @@ public enum CustomCursor
|
|||||||
this.name = name;
|
this.name = name;
|
||||||
this.cursorImage = ImageUtil.getResourceStreamFromClass(CustomCursorPlugin.class, icon);
|
this.cursorImage = ImageUtil.getResourceStreamFromClass(CustomCursorPlugin.class, icon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,10 +30,18 @@ import java.io.File;
|
|||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
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.RuneLite;
|
||||||
|
import net.runelite.client.callback.ClientThread;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
import net.runelite.client.eventbus.Subscribe;
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
import net.runelite.client.events.ConfigChanged;
|
import net.runelite.client.events.ConfigChanged;
|
||||||
|
import net.runelite.client.game.ItemManager;
|
||||||
import net.runelite.client.plugins.Plugin;
|
import net.runelite.client.plugins.Plugin;
|
||||||
import net.runelite.client.plugins.PluginDescriptor;
|
import net.runelite.client.plugins.PluginDescriptor;
|
||||||
import net.runelite.client.ui.ClientUI;
|
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");
|
private static final File CUSTOM_IMAGE_FILE = new File(RuneLite.RUNELITE_DIR, "cursor.png");
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private Client client;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ClientThread clientThread;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ClientUI clientUI;
|
private ClientUI clientUI;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private CustomCursorConfig config;
|
private CustomCursorConfig config;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ItemManager itemManager;
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
CustomCursorConfig provideConfig(ConfigManager configManager)
|
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()
|
private void updateCursor()
|
||||||
{
|
{
|
||||||
CustomCursor selectedCursor = config.selectedCursor();
|
CustomCursor selectedCursor = config.selectedCursor();
|
||||||
@@ -108,10 +134,45 @@ public class CustomCursorPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
clientUI.resetCursor();
|
clientUI.resetCursor();
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
else if (selectedCursor == CustomCursor.EQUIPPED_WEAPON)
|
||||||
|
{
|
||||||
|
clientThread.invokeLater(() ->
|
||||||
|
{
|
||||||
|
final ItemContainer equipment = client.getItemContainer(InventoryID.EQUIPMENT);
|
||||||
|
|
||||||
assert selectedCursor.getCursorImage() != null;
|
if (equipment == null)
|
||||||
clientUI.setCursor(selectedCursor.getCursorImage(), selectedCursor.getName());
|
{
|
||||||
|
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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user