customcursor: support providing custom cursor images

Co-authored-by: Adam <Adam@sigterm.info>
This commit is contained in:
Ryan H
2020-02-08 18:19:05 -05:00
committed by Adam
parent 5bbd3fa30c
commit 1a9efe885e
2 changed files with 49 additions and 10 deletions

View File

@@ -25,9 +25,11 @@
package net.runelite.client.plugins.customcursor; package net.runelite.client.plugins.customcursor;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import javax.annotation.Nullable;
import lombok.Getter; import lombok.Getter;
import net.runelite.client.util.ImageUtil; import net.runelite.client.util.ImageUtil;
@Getter
public enum CustomCursor public enum CustomCursor
{ {
RS3_GOLD("RS3 Gold", "cursor-rs3-gold.png"), RS3_GOLD("RS3 Gold", "cursor-rs3-gold.png"),
@@ -35,21 +37,22 @@ public enum CustomCursor
DRAGON_DAGGER("Dragon Dagger", "cursor-dragon-dagger.png"), DRAGON_DAGGER("Dragon Dagger", "cursor-dragon-dagger.png"),
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"),
CUSTOM_IMAGE("Custom Image");
private final String name; private final String name;
@Getter @Nullable
private final BufferedImage cursorImage; private final BufferedImage cursorImage;
CustomCursor(String name)
{
this.name = name;
this.cursorImage = null;
}
CustomCursor(String name, String icon) CustomCursor(String name, String icon)
{ {
this.name = name; this.name = name;
this.cursorImage = ImageUtil.getResourceStreamFromClass(CustomCursorPlugin.class, icon); this.cursorImage = ImageUtil.getResourceStreamFromClass(CustomCursorPlugin.class, icon);
} }
@Override
public String toString()
{
return name;
}
} }

View File

@@ -25,10 +25,15 @@
package net.runelite.client.plugins.customcursor; package net.runelite.client.plugins.customcursor;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.client.events.ConfigChanged; import lombok.extern.slf4j.Slf4j;
import net.runelite.client.RuneLite;
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.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;
@@ -38,8 +43,11 @@ import net.runelite.client.ui.ClientUI;
description = "Replaces your mouse cursor image", description = "Replaces your mouse cursor image",
enabledByDefault = false enabledByDefault = false
) )
@Slf4j
public class CustomCursorPlugin extends Plugin public class CustomCursorPlugin extends Plugin
{ {
private static final File CUSTOM_IMAGE_FILE = new File(RuneLite.RUNELITE_DIR, "cursor.png");
@Inject @Inject
private ClientUI clientUI; private ClientUI clientUI;
@@ -76,6 +84,34 @@ public class CustomCursorPlugin extends Plugin
private void updateCursor() private void updateCursor()
{ {
CustomCursor selectedCursor = config.selectedCursor(); CustomCursor selectedCursor = config.selectedCursor();
clientUI.setCursor(selectedCursor.getCursorImage(), selectedCursor.toString());
if (selectedCursor == CustomCursor.CUSTOM_IMAGE)
{
if (CUSTOM_IMAGE_FILE.exists())
{
try
{
BufferedImage image;
synchronized (ImageIO.class)
{
image = ImageIO.read(CUSTOM_IMAGE_FILE);
}
clientUI.setCursor(image, selectedCursor.getName());
}
catch (Exception e)
{
log.error("error setting custom cursor", e);
clientUI.resetCursor();
}
}
else
{
clientUI.resetCursor();
}
return;
}
assert selectedCursor.getCursorImage() != null;
clientUI.setCursor(selectedCursor.getCursorImage(), selectedCursor.getName());
} }
} }