diff --git a/Util/Util.iml b/Util/Util.iml index 47d817c..30c8770 100644 --- a/Util/Util.iml +++ b/Util/Util.iml @@ -3,6 +3,7 @@ + diff --git a/Util/src/io/reisub/dreambot/util/CAbstractScript.java b/Util/src/io/reisub/dreambot/util/CAbstractScript.java new file mode 100644 index 0000000..41d1af4 --- /dev/null +++ b/Util/src/io/reisub/dreambot/util/CAbstractScript.java @@ -0,0 +1,60 @@ +package io.reisub.dreambot.util; + +import io.reisub.dreambot.util.ui.UI; +import org.dreambot.api.script.AbstractScript; + +import java.awt.*; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + +public abstract class CAbstractScript extends AbstractScript implements MouseListener { + private final UI ui; + + public CAbstractScript() { + ui = UI.getInstance(getSDNName()); + } + + public UI getUI() { + return ui; + } + + @Override + public void onPaint(Graphics g){ + ui.draw(g); + } + + @Override + public void onPause() { + ui.pause(); + } + + @Override + public void onResume() { + ui.resume(); + } + + @Override + public void mouseClicked(MouseEvent mouseEvent) { + ui.mouseClicked(mouseEvent); + } + + @Override + public void mousePressed(MouseEvent mouseEvent) { + ui.mousePressed(mouseEvent); + } + + @Override + public void mouseReleased(MouseEvent mouseEvent) { + ui.mouseReleased(mouseEvent); + } + + @Override + public void mouseEntered(MouseEvent mouseEvent) { + ui.mouseEntered(mouseEvent); + } + + @Override + public void mouseExited(MouseEvent mouseEvent) { + ui.mouseExited(mouseEvent); + } +} diff --git a/Util/src/io/reisub/dreambot/util/CTaskScript.java b/Util/src/io/reisub/dreambot/util/CTaskScript.java new file mode 100644 index 0000000..9190bed --- /dev/null +++ b/Util/src/io/reisub/dreambot/util/CTaskScript.java @@ -0,0 +1,60 @@ +package io.reisub.dreambot.util; + +import io.reisub.dreambot.util.ui.UI; +import org.dreambot.api.script.impl.TaskScript; + +import java.awt.*; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + +public abstract class CTaskScript extends TaskScript implements MouseListener { + private final UI ui; + + public CTaskScript() { + ui = UI.getInstance(getSDNName()); + } + + public UI getUI() { + return ui; + } + + @Override + public void onPaint(Graphics g){ + ui.draw(g); + } + + @Override + public void onPause() { + ui.pause(); + } + + @Override + public void onResume() { + ui.resume(); + } + + @Override + public void mouseClicked(MouseEvent mouseEvent) { + ui.mouseClicked(mouseEvent); + } + + @Override + public void mousePressed(MouseEvent mouseEvent) { + ui.mousePressed(mouseEvent); + } + + @Override + public void mouseReleased(MouseEvent mouseEvent) { + ui.mouseReleased(mouseEvent); + } + + @Override + public void mouseEntered(MouseEvent mouseEvent) { + ui.mouseEntered(mouseEvent); + } + + @Override + public void mouseExited(MouseEvent mouseEvent) { + ui.mouseExited(mouseEvent); + } +} diff --git a/Util/src/io/reisub/dreambot/util/ui/UI.java b/Util/src/io/reisub/dreambot/util/ui/UI.java new file mode 100644 index 0000000..6bb1cb6 --- /dev/null +++ b/Util/src/io/reisub/dreambot/util/ui/UI.java @@ -0,0 +1,189 @@ +package io.reisub.dreambot.util.ui; + +import org.dreambot.api.methods.skills.Skill; +import org.dreambot.api.methods.skills.SkillTracker; +import org.dreambot.api.methods.skills.Skills; +import org.dreambot.api.script.ScriptManager; +import org.dreambot.api.utilities.Timer; + +import java.awt.*; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.Arrays; + +public class UI implements MouseListener { + private final Color blue = new Color(23, 147, 209); + private final Color gray = new Color(51, 51, 51); + private final Color grayTransparent = new Color(51, 51, 51, 245); + private final String scriptName; + private static UI ui; + private Graphics g; + private int X = 0; + private int Y = 0; + private final int X_PADDING = 5; + private final int Y_PADDING = 35; + private final int LINE_SPACING = 20; + private int lines = 0; + private boolean hide; + private boolean drawTime = true; + private boolean drawExperience = true; + private final java.util.List skillsToTrack; + private int customLines = 0; + private final Timer timer; + + public static UI getInstance(String scriptName) { + if (ui == null) { + ui = new UI(scriptName); + } + + return ui; + } + + private UI(String scriptName) { + this.scriptName = scriptName; + hide = false; + timer = new Timer(); + skillsToTrack = new ArrayList<>(); + } + + public void pause() { + timer.pause(); + } + + public void resume() { + timer.resume(); + } + + public void addSkills(Skill... skills) { + SkillTracker.start(skills); + skillsToTrack.addAll(Arrays.asList(skills)); + } + + public void setTime(boolean b) { + this.drawTime = b; + } + + public void setCustomLines(int customLines) { + this.customLines = customLines; + } + + public int getHourlyRate(int current) { + return timer.getHourlyRate(current); + } + + public void draw(Graphics g) { + this.g = g; + this.lines = 0; + + drawUIToggle(); + if (hide) return; + + drawInfoBox(); + + if (ScriptManager.getScriptManager().isPaused()) { + drawString(scriptName + " [PAUSED]", Color.red); + } else { + drawString(scriptName, blue); + } + + if (drawTime) drawString("Time running: " + timer.formatTime()); + if (drawExperience) drawExperience(); + } + + private void drawUIToggle() { + int w = 40; + int h = 15; + + g.setColor(blue); + g.drawRect(X, Y, w, h); + + g.setColor(gray); + g.fillRect(X+1, Y+1, w-1, h-1); + + g.setColor(Color.white); + if (hide) { + g.drawString("show", X+5, Y+12); + } else { + g.drawString("hide", X+5, Y+12); + } + } + + private void drawInfoBox() { + int x = 0; + int y = 20; + int w = 250; + + int expectedLines = 1; + expectedLines = drawTime ? expectedLines + 1 : expectedLines; + if (drawExperience) { + expectedLines += skillsToTrack.size() * 3; + } + expectedLines += customLines; + + int h = expectedLines * 20; + + g.setColor(blue); + g.drawRect(x,y, w, h); + + g.setColor(grayTransparent); + g.fillRect(x+1, y+1, w-1, h-1); + } + + private void drawExperience() { + for (Skill s : skillsToTrack) { + drawString(s.getName() + ": " + Skills.getRealLevel(s) + " (" + SkillTracker.getGainedLevels(s) + ")"); + drawString(SkillTracker.getGainedExperiencePerHour(s) + " xp/h (" + SkillTracker.getGainedLevels(s) + ")", 10); + drawString("TTL: " + Timer.formatTime(SkillTracker.getTimeToLevel(s)), 10); + } + } + + public void drawString(String s) { + drawString(s, Color.white); + } + + public void drawString(String s, Color color) { + drawString(s, color, 0); + } + + public void drawString(String s, int xPadding) { + drawString(s, Color.white, xPadding); + } + + public void drawString(String s, Color color, int xPadding) { + g.setColor(color); + g.drawString(s, X_PADDING + xPadding, Y_PADDING + (LINE_SPACING * lines)); + lines++; + } + + @Override + public void mouseClicked(MouseEvent mouseEvent) { + if (mouseEvent.getButton() == 1) { + Rectangle r = new Rectangle(0, 0, 40, 15); + if (r.contains(mouseEvent.getPoint())) { + hide = !hide; + } + } + } + + @Override + public void mousePressed(MouseEvent mouseEvent) { + + } + + @Override + public void mouseReleased(MouseEvent mouseEvent) { + + } + + @Override + public void mouseEntered(MouseEvent mouseEvent) { + + } + + @Override + public void mouseExited(MouseEvent mouseEvent) { + + } +}