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;
import java.awt.image.BufferedImage;
import javax.annotation.Nullable;
import lombok.Getter;
import net.runelite.client.util.ImageUtil;
@Getter
public enum CustomCursor
{
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_POISON("Dragon Dagger (p)", "cursor-dragon-dagger-p.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;
@Getter
@Nullable
private final BufferedImage cursorImage;
CustomCursor(String name)
{
this.name = name;
this.cursorImage = null;
}
CustomCursor(String name, String icon)
{
this.name = name;
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;
import com.google.inject.Provides;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
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.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.ClientUI;
@@ -38,8 +43,11 @@ import net.runelite.client.ui.ClientUI;
description = "Replaces your mouse cursor image",
enabledByDefault = false
)
@Slf4j
public class CustomCursorPlugin extends Plugin
{
private static final File CUSTOM_IMAGE_FILE = new File(RuneLite.RUNELITE_DIR, "cursor.png");
@Inject
private ClientUI clientUI;
@@ -76,6 +84,34 @@ public class CustomCursorPlugin extends Plugin
private void updateCursor()
{
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());
}
}