From e0a2d9d887884e40cd8da5368f49b7a7961b0d74 Mon Sep 17 00:00:00 2001 From: Pojken-Arn Date: Mon, 5 Feb 2024 09:16:50 +0100 Subject: [PATCH 1/5] Added new shapes --- .../com/visualticks/VisualTicksConfig.java | 56 ++++++++++++++++--- .../com/visualticks/VisualTicksOverlay.java | 16 +++++- .../com/visualticks/config/TickShape.java | 10 ++++ 3 files changed, 74 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/visualticks/config/TickShape.java diff --git a/src/main/java/com/visualticks/VisualTicksConfig.java b/src/main/java/com/visualticks/VisualTicksConfig.java index d2de760..26482ce 100644 --- a/src/main/java/com/visualticks/VisualTicksConfig.java +++ b/src/main/java/com/visualticks/VisualTicksConfig.java @@ -1,5 +1,6 @@ package com.visualticks; +import com.visualticks.config.TickShape; import net.runelite.client.config.*; import java.awt.*; @@ -8,12 +9,24 @@ public interface VisualTicksConfig extends Config { String GROUP_NAME = "visualticks"; + String GENERAL_SETTINGS = "General-settings"; + String ALTERNATIVE_SETTINGS = "Alternative-settings"; + + // General settings + @ConfigSection( + position = 0, + name = "General", + description = "General settings" + + ) + String generalSettings = GENERAL_SETTINGS; @ConfigItem( position = 0, keyName = "numberOfTicks", name = "Number of ticks", - description = "Number of tick circles to display" + description = "Number of tick circles to display", + section = generalSettings ) @Range(min = 2, max = 30) default int numberOfTicks() @@ -25,7 +38,8 @@ default int numberOfTicks() position = 1, keyName = "tickColour", name = "Tick colour", - description = "The colour of the ticks" + description = "The colour of the ticks", + section = generalSettings ) @Alpha default Color tickColour() @@ -37,7 +51,8 @@ default Color tickColour() position = 2, keyName = "currentTickColour", name = "Current tick colour", - description = "The colour of the current tick" + description = "The colour of the current tick", + section = generalSettings ) @Alpha default Color currentTickColour() @@ -49,7 +64,8 @@ default Color currentTickColour() position = 3, keyName = "amountPerRow", name = "Amount per row", - description = "How many ticks to display per row" + description = "How many ticks to display per row", + section = generalSettings ) default int amountPerRow() { @@ -57,10 +73,11 @@ default int amountPerRow() } @ConfigItem( - position = 3, + position = 4, keyName = "sizeOfTickShapes", name = "Size of ticks", - description = "How many pixels to make the tick shapes" + description = "How many pixels to make the tick shapes", + section = generalSettings ) default int sizeOfTickShapes() { @@ -71,10 +88,35 @@ default int sizeOfTickShapes() position = 5, keyName = "paddingBetweenTicks", name = "Padding between ticks", - description = "The amount of space between ticks" + description = "The amount of space between ticks", + section = generalSettings ) default int tickPadding() { return 5; } + + + @ConfigItem( + position = 6, + keyName = "arcOnTicks", + name = "Arc", + description = "Arc (if using Rounded Square)", + section = generalSettings + ) + default int getTickArc() { + return 5; + } + + @ConfigItem( + position =7, + keyName = "tickShape", + name = "Shape of the tick", + description = "The shape of the visual ticks", + section = generalSettings + ) + default TickShape getTickShape() + { + return TickShape.CIRCLE; + } } diff --git a/src/main/java/com/visualticks/VisualTicksOverlay.java b/src/main/java/com/visualticks/VisualTicksOverlay.java index e388984..23d009c 100644 --- a/src/main/java/com/visualticks/VisualTicksOverlay.java +++ b/src/main/java/com/visualticks/VisualTicksOverlay.java @@ -32,7 +32,7 @@ public Dimension render(Graphics2D graphics) int y = row * config.sizeOfTickShapes() + row * config.tickPadding(); graphics.setColor(plugin.tick == tick ? config.currentTickColour() : config.tickColour()); - graphics.fillOval(x, y, config.sizeOfTickShapes(), config.sizeOfTickShapes()); + setTickShape(graphics, x, y); position++; if(position > config.amountPerRow() - 1) { @@ -49,4 +49,18 @@ public Dimension render(Graphics2D graphics) return new Dimension(width, height); } + + private void setTickShape(Graphics2D graphics, int xPosition, int yPosition) { + switch (config.getTickShape()) { + case CIRCLE: + graphics.fillOval(xPosition, yPosition, config.sizeOfTickShapes(), config.sizeOfTickShapes()); + break; + case ROUNDED_SQUARE: + graphics.fillRoundRect(xPosition, yPosition ,config.sizeOfTickShapes() , config.sizeOfTickShapes(), config.getTickArc(), config.getTickArc()); + break; + default: + graphics.fillRect(xPosition, yPosition, config.sizeOfTickShapes(), config.sizeOfTickShapes()); + break; + } + } } diff --git a/src/main/java/com/visualticks/config/TickShape.java b/src/main/java/com/visualticks/config/TickShape.java new file mode 100644 index 0000000..e258ae0 --- /dev/null +++ b/src/main/java/com/visualticks/config/TickShape.java @@ -0,0 +1,10 @@ +package com.visualticks.config; + +import lombok.Getter; + +@Getter +public enum TickShape { + SQUARE, + CIRCLE, + ROUNDED_SQUARE; +} From 65b9a8895587f7c63a2046333f4df8abeef4e17f Mon Sep 17 00:00:00 2001 From: Pojken-Arn Date: Mon, 5 Feb 2024 14:58:13 +0100 Subject: [PATCH 2/5] Added new shapes and reset counter on xp drop --- .../com/visualticks/VisualTicksConfig.java | 73 ++++++++++++++++++- .../com/visualticks/VisualTicksOverlay.java | 41 ++++++++++- .../com/visualticks/VisualTicksPlugin.java | 22 +++++- .../com/visualticks/utils/ResetUtils.java | 12 +++ 4 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/visualticks/utils/ResetUtils.java diff --git a/src/main/java/com/visualticks/VisualTicksConfig.java b/src/main/java/com/visualticks/VisualTicksConfig.java index 26482ce..2b8018b 100644 --- a/src/main/java/com/visualticks/VisualTicksConfig.java +++ b/src/main/java/com/visualticks/VisualTicksConfig.java @@ -1,6 +1,7 @@ package com.visualticks; import com.visualticks.config.TickShape; +import net.runelite.api.Skill; import net.runelite.client.config.*; import java.awt.*; @@ -10,7 +11,7 @@ public interface VisualTicksConfig extends Config { String GROUP_NAME = "visualticks"; String GENERAL_SETTINGS = "General-settings"; - String ALTERNATIVE_SETTINGS = "Alternative-settings"; + String RESET_SETTINGS = "Reset-settings"; // General settings @ConfigSection( @@ -119,4 +120,74 @@ default TickShape getTickShape() { return TickShape.CIRCLE; } + + @ConfigSection( + position = 1, + name = "Reset counter", + description = "Reset counter" + + ) + String resetSettings = RESET_SETTINGS; + + + @ConfigItem( + position = 0, + keyName = "reset-conter", + name = "Reset counter on xp drop", + description = "Reset the tick-counter after xp-drop.", + section = resetSettings + ) + default boolean isResetCounter() { + return false; + } + + @ConfigItem( + position = 1, + keyName = "offset", + name = "Offset", + description = "Which tick to start on after the reset.", + section = resetSettings + ) + @Range(min = 0, max = 30) + default int getOffset() { + return 0; + } + + + @ConfigItem( + position = 2, + keyName = "skill", + name = "Skill", + description = "Which skill you want to trigger the reset", + section = resetSettings + ) + default Skill getResetSkill() { + return Skill.HITPOINTS; + } + + @ConfigItem( + position = 3, + keyName = "currentResetTickColour", + name = "Current reset tick colour", + description = "The colour of the reset tick when active", + section = resetSettings + ) + @Alpha + default Color getCurrentResetTickColour() + { + return Color.GREEN; + } + + @ConfigItem( + position = 4, + keyName = "resetTickColour", + name = "Reset tick colour", + description = "The colour of the reset tick when not active", + section = resetSettings + ) + @Alpha + default Color getResetTickColour() + { + return Color.decode("#0D430D"); + } } diff --git a/src/main/java/com/visualticks/VisualTicksOverlay.java b/src/main/java/com/visualticks/VisualTicksOverlay.java index 23d009c..d8f40e8 100644 --- a/src/main/java/com/visualticks/VisualTicksOverlay.java +++ b/src/main/java/com/visualticks/VisualTicksOverlay.java @@ -1,5 +1,6 @@ package com.visualticks; +import com.visualticks.utils.ResetUtils; import lombok.extern.slf4j.Slf4j; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; @@ -16,6 +17,9 @@ public class VisualTicksOverlay extends Overlay @Inject VisualTicksConfig config; + @Inject + ResetUtils resetUtils; + @Inject public VisualTicksOverlay() { @@ -30,8 +34,9 @@ public Dimension render(Graphics2D graphics) { int x = position * config.sizeOfTickShapes() + position * config.tickPadding(); int y = row * config.sizeOfTickShapes() + row * config.tickPadding(); - graphics.setColor(plugin.tick == tick ? config.currentTickColour() : config.tickColour()); + graphics.setColor(plugin.tick == tick ? config.currentTickColour() : config.tickColour()); + setTickColor(graphics, tick); setTickShape(graphics, x, y); position++; @@ -63,4 +68,38 @@ private void setTickShape(Graphics2D graphics, int xPosition, int yPosition) { break; } } + + private void setTickColor(Graphics2D graphics, int tick) { + if (plugin.tick == tick) { + graphics.setColor(setCurrentColor(tick)); + } else if (config.isResetCounter() && isPrayerOnTick(tick)) { + graphics.setColor(config.getResetTickColour()); + } else { + graphics.setColor(config.tickColour()); + } + } + + private Color setCurrentColor(int tick) { + if (!config.isResetCounter()) { + return config.currentTickColour(); + } + if (isPrayerOnTick(tick)) { + return config.getCurrentResetTickColour(); + } else { + return config.currentTickColour(); + } + } + + private boolean isPrayerOnTick(int tick) { + return (tick == ResetUtils.calculateOffset(config.getOffset(), config.numberOfTicks())); + } +/* + private int calculateOffset() { + if (config.getOffset() < config.numberOfTicks()){ + return config.getOffset(); + } + return config.getOffset()% config.numberOfTicks(); + }*/ + + } diff --git a/src/main/java/com/visualticks/VisualTicksPlugin.java b/src/main/java/com/visualticks/VisualTicksPlugin.java index fbf6d5b..7429375 100644 --- a/src/main/java/com/visualticks/VisualTicksPlugin.java +++ b/src/main/java/com/visualticks/VisualTicksPlugin.java @@ -2,8 +2,12 @@ import com.google.inject.Provides; import javax.inject.Inject; + +import com.visualticks.utils.ResetUtils; import lombok.extern.slf4j.Slf4j; +import net.runelite.api.Skill; import net.runelite.api.events.GameTick; +import net.runelite.api.events.StatChanged; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.plugins.Plugin; @@ -25,6 +29,7 @@ public class VisualTicksPlugin extends Plugin @Inject private VisualTicksOverlay overlay; public int tick = 0; + private boolean isReset = false; @Override protected void startUp() throws Exception @@ -38,10 +43,25 @@ protected void shutDown() throws Exception overlayManager.remove(overlay); } + @Subscribe + public void onStatChanged(StatChanged statChanged) + { + if (statChanged.getSkill() == config.getResetSkill()) + { + if (config.isResetCounter()) { + isReset = true; + } + } + } @Subscribe private void onGameTick(GameTick gameTick) { - tick++; + if (isReset) { + tick = ResetUtils.calculateOffset(config.getOffset(), config.numberOfTicks()); + isReset = false; + } else { + tick++; + } if(tick > config.numberOfTicks() - 1) tick = 0; } diff --git a/src/main/java/com/visualticks/utils/ResetUtils.java b/src/main/java/com/visualticks/utils/ResetUtils.java new file mode 100644 index 0000000..d1f2a73 --- /dev/null +++ b/src/main/java/com/visualticks/utils/ResetUtils.java @@ -0,0 +1,12 @@ +package com.visualticks.utils; + +public class ResetUtils { + + + public static int calculateOffset(int offset, int numberOfTicks) { + if (offset < numberOfTicks){ + return offset; + } + return offset % numberOfTicks; + } +} From 18c2df7f790230b894bd773c304086f9ee7492a2 Mon Sep 17 00:00:00 2001 From: Pojken-Arn Date: Mon, 5 Feb 2024 15:04:22 +0100 Subject: [PATCH 3/5] cleanup --- .../java/com/visualticks/VisualTicksConfig.java | 6 +++--- .../java/com/visualticks/VisualTicksOverlay.java | 13 ------------- .../java/com/visualticks/VisualTicksPlugin.java | 1 - 3 files changed, 3 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/visualticks/VisualTicksConfig.java b/src/main/java/com/visualticks/VisualTicksConfig.java index 2b8018b..6d90b14 100644 --- a/src/main/java/com/visualticks/VisualTicksConfig.java +++ b/src/main/java/com/visualticks/VisualTicksConfig.java @@ -143,12 +143,12 @@ default boolean isResetCounter() { @ConfigItem( position = 1, - keyName = "offset", - name = "Offset", + keyName = "startTick", + name = "Start on tick", description = "Which tick to start on after the reset.", section = resetSettings ) - @Range(min = 0, max = 30) + @Range(max = 30) default int getOffset() { return 0; } diff --git a/src/main/java/com/visualticks/VisualTicksOverlay.java b/src/main/java/com/visualticks/VisualTicksOverlay.java index d8f40e8..700448a 100644 --- a/src/main/java/com/visualticks/VisualTicksOverlay.java +++ b/src/main/java/com/visualticks/VisualTicksOverlay.java @@ -17,9 +17,6 @@ public class VisualTicksOverlay extends Overlay @Inject VisualTicksConfig config; - @Inject - ResetUtils resetUtils; - @Inject public VisualTicksOverlay() { @@ -35,7 +32,6 @@ public Dimension render(Graphics2D graphics) int x = position * config.sizeOfTickShapes() + position * config.tickPadding(); int y = row * config.sizeOfTickShapes() + row * config.tickPadding(); - graphics.setColor(plugin.tick == tick ? config.currentTickColour() : config.tickColour()); setTickColor(graphics, tick); setTickShape(graphics, x, y); @@ -93,13 +89,4 @@ private Color setCurrentColor(int tick) { private boolean isPrayerOnTick(int tick) { return (tick == ResetUtils.calculateOffset(config.getOffset(), config.numberOfTicks())); } -/* - private int calculateOffset() { - if (config.getOffset() < config.numberOfTicks()){ - return config.getOffset(); - } - return config.getOffset()% config.numberOfTicks(); - }*/ - - } diff --git a/src/main/java/com/visualticks/VisualTicksPlugin.java b/src/main/java/com/visualticks/VisualTicksPlugin.java index 7429375..df44c66 100644 --- a/src/main/java/com/visualticks/VisualTicksPlugin.java +++ b/src/main/java/com/visualticks/VisualTicksPlugin.java @@ -5,7 +5,6 @@ import com.visualticks.utils.ResetUtils; import lombok.extern.slf4j.Slf4j; -import net.runelite.api.Skill; import net.runelite.api.events.GameTick; import net.runelite.api.events.StatChanged; import net.runelite.client.config.ConfigManager; From e8aeb7ba386521b249835958c1f746bf99018a58 Mon Sep 17 00:00:00 2001 From: Pojken-Arn Date: Mon, 5 Feb 2024 15:09:19 +0100 Subject: [PATCH 4/5] renaming of function --- .../java/com/visualticks/VisualTicksOverlay.java | 12 ++++++------ src/main/java/com/visualticks/VisualTicksPlugin.java | 1 - src/main/java/com/visualticks/utils/ResetUtils.java | 1 - 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/visualticks/VisualTicksOverlay.java b/src/main/java/com/visualticks/VisualTicksOverlay.java index 700448a..5e6a8a6 100644 --- a/src/main/java/com/visualticks/VisualTicksOverlay.java +++ b/src/main/java/com/visualticks/VisualTicksOverlay.java @@ -53,14 +53,14 @@ public Dimension render(Graphics2D graphics) private void setTickShape(Graphics2D graphics, int xPosition, int yPosition) { switch (config.getTickShape()) { - case CIRCLE: - graphics.fillOval(xPosition, yPosition, config.sizeOfTickShapes(), config.sizeOfTickShapes()); + case SQUARE: + graphics.fillRect(xPosition, yPosition, config.sizeOfTickShapes(), config.sizeOfTickShapes()); break; case ROUNDED_SQUARE: graphics.fillRoundRect(xPosition, yPosition ,config.sizeOfTickShapes() , config.sizeOfTickShapes(), config.getTickArc(), config.getTickArc()); break; default: - graphics.fillRect(xPosition, yPosition, config.sizeOfTickShapes(), config.sizeOfTickShapes()); + graphics.fillOval(xPosition, yPosition, config.sizeOfTickShapes(), config.sizeOfTickShapes()); break; } } @@ -68,7 +68,7 @@ private void setTickShape(Graphics2D graphics, int xPosition, int yPosition) { private void setTickColor(Graphics2D graphics, int tick) { if (plugin.tick == tick) { graphics.setColor(setCurrentColor(tick)); - } else if (config.isResetCounter() && isPrayerOnTick(tick)) { + } else if (config.isResetCounter() && isResetTick(tick)) { graphics.setColor(config.getResetTickColour()); } else { graphics.setColor(config.tickColour()); @@ -79,14 +79,14 @@ private Color setCurrentColor(int tick) { if (!config.isResetCounter()) { return config.currentTickColour(); } - if (isPrayerOnTick(tick)) { + if (isResetTick(tick)) { return config.getCurrentResetTickColour(); } else { return config.currentTickColour(); } } - private boolean isPrayerOnTick(int tick) { + private boolean isResetTick(int tick) { return (tick == ResetUtils.calculateOffset(config.getOffset(), config.numberOfTicks())); } } diff --git a/src/main/java/com/visualticks/VisualTicksPlugin.java b/src/main/java/com/visualticks/VisualTicksPlugin.java index df44c66..9a6e3db 100644 --- a/src/main/java/com/visualticks/VisualTicksPlugin.java +++ b/src/main/java/com/visualticks/VisualTicksPlugin.java @@ -2,7 +2,6 @@ import com.google.inject.Provides; import javax.inject.Inject; - import com.visualticks.utils.ResetUtils; import lombok.extern.slf4j.Slf4j; import net.runelite.api.events.GameTick; diff --git a/src/main/java/com/visualticks/utils/ResetUtils.java b/src/main/java/com/visualticks/utils/ResetUtils.java index d1f2a73..d57b25e 100644 --- a/src/main/java/com/visualticks/utils/ResetUtils.java +++ b/src/main/java/com/visualticks/utils/ResetUtils.java @@ -2,7 +2,6 @@ public class ResetUtils { - public static int calculateOffset(int offset, int numberOfTicks) { if (offset < numberOfTicks){ return offset; From a4faf1df266683c3831ed0e704b2fe53a5fa3380 Mon Sep 17 00:00:00 2001 From: Pojken-Arn Date: Mon, 5 Feb 2024 15:20:31 +0100 Subject: [PATCH 5/5] renamed config name --- src/main/java/com/visualticks/VisualTicksConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/visualticks/VisualTicksConfig.java b/src/main/java/com/visualticks/VisualTicksConfig.java index 6d90b14..e7d3308 100644 --- a/src/main/java/com/visualticks/VisualTicksConfig.java +++ b/src/main/java/com/visualticks/VisualTicksConfig.java @@ -112,7 +112,7 @@ default int getTickArc() { @ConfigItem( position =7, keyName = "tickShape", - name = "Shape of the tick", + name = "Shape", description = "The shape of the visual ticks", section = generalSettings )