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"),
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user