tears of guthix: add config for tears color

Add the ability to toggle green tears off and allow for both tear
colors to be changed
This commit is contained in:
Christian Gati
2021-01-24 07:43:23 -08:00
committed by GitHub
parent c9cd33a8dd
commit 68aacfa0bb
3 changed files with 104 additions and 7 deletions

View File

@@ -0,0 +1,72 @@
/*
* Copyright (c) 2020, cgati <https://github.com/cgati>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.tearsofguthix;
import java.awt.Color;
import net.runelite.client.config.Alpha;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
import net.runelite.client.util.ColorUtil;
@ConfigGroup("tearsofguthix")
public interface TearsOfGuthixConfig extends Config
{
@ConfigItem(
keyName = "showGreenTearsTimer",
name = "Enable Green Tears Timer",
description = "Configures whether to display a timer for green tears or not",
position = 1
)
default boolean showGreenTearsTimer()
{
return true;
}
@Alpha
@ConfigItem(
keyName = "blueTearsColor",
name = "Blue Tears Color",
description = "Color of Blue Tears timer",
position = 2
)
default Color getBlueTearsColor()
{
return ColorUtil.colorWithAlpha(Color.CYAN, 100);
}
@Alpha
@ConfigItem(
keyName = "greenTearsColor",
name = "Green Tears Color",
description = "Color of Green Tears timer",
position = 3
)
default Color getGreenTearsColor()
{
return ColorUtil.colorWithAlpha(Color.GREEN, 100);
}
}

View File

@@ -36,17 +36,18 @@ import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.components.ProgressPieComponent;
import net.runelite.client.util.ColorUtil;
class TearsOfGuthixOverlay extends Overlay
{
private static final Color CYAN_ALPHA = new Color(Color.CYAN.getRed(), Color.CYAN.getGreen(), Color.CYAN.getBlue(), 100);
private static final Color GREEN_ALPHA = new Color(Color.GREEN.getRed(), Color.GREEN.getGreen(), Color.GREEN.getBlue(), 100);
private static final Duration MAX_TIME = Duration.ofSeconds(9);
private final TearsOfGuthixConfig config;
private final TearsOfGuthixPlugin plugin;
@Inject
private TearsOfGuthixOverlay(TearsOfGuthixPlugin plugin)
private TearsOfGuthixOverlay(TearsOfGuthixConfig config, TearsOfGuthixPlugin plugin)
{
this.config = config;
this.plugin = plugin;
setPosition(OverlayPosition.DYNAMIC);
setLayer(OverlayLayer.ABOVE_SCENE);
@@ -55,8 +56,24 @@ class TearsOfGuthixOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (plugin.getStreams().isEmpty())
{
return null;
}
Color blueTearsFill = config.getBlueTearsColor();
Color greenTearsFill = config.getGreenTearsColor();
Color blueTearsBorder = ColorUtil.colorWithAlpha(blueTearsFill, 255);
Color greenTearsBorder = ColorUtil.colorWithAlpha(greenTearsFill, 255);
plugin.getStreams().forEach((object, timer) ->
{
if ((object.getId() == ObjectID.GREEN_TEARS || object.getId() == ObjectID.GREEN_TEARS_6666)
&& !config.showGreenTearsTimer())
{
return;
}
final Point position = object.getCanvasLocation(100);
if (position == null)
@@ -70,14 +87,14 @@ class TearsOfGuthixOverlay extends Overlay
if (object.getId() == ObjectID.BLUE_TEARS ||
object.getId() == ObjectID.BLUE_TEARS_6665)
{
progressPie.setFill(CYAN_ALPHA);
progressPie.setBorderColor(Color.CYAN);
progressPie.setFill(blueTearsFill);
progressPie.setBorderColor(blueTearsBorder);
}
else if (object.getId() == ObjectID.GREEN_TEARS ||
object.getId() == ObjectID.GREEN_TEARS_6666)
{
progressPie.setFill(GREEN_ALPHA);
progressPie.setBorderColor(Color.GREEN);
progressPie.setFill(greenTearsFill);
progressPie.setBorderColor(greenTearsBorder);
}
progressPie.setPosition(position);

View File

@@ -28,6 +28,7 @@ import java.time.Instant;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import com.google.inject.Provides;
import lombok.Getter;
import net.runelite.api.Client;
import net.runelite.api.DecorativeObject;
@@ -35,6 +36,7 @@ import net.runelite.api.ObjectID;
import net.runelite.api.events.DecorativeObjectDespawned;
import net.runelite.api.events.DecorativeObjectSpawned;
import net.runelite.api.events.GameStateChanged;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
@@ -61,6 +63,12 @@ public class TearsOfGuthixPlugin extends Plugin
@Getter
private final Map<DecorativeObject, Instant> streams = new HashMap<>();
@Provides
TearsOfGuthixConfig provideConfig(ConfigManager configManager)
{
return configManager.getConfig(TearsOfGuthixConfig.class);
}
@Override
protected void startUp()
{