From 58d9e230949bd08c60b1f791851e1990393d241b Mon Sep 17 00:00:00 2001 From: SCoutinho Date: Tue, 2 Jan 2018 17:32:45 +0000 Subject: [PATCH] [FEATURE] Added days into Timer Credits to @parnassian --- .../parabot/environment/api/utils/Timer.java | 206 +++++++++--------- 1 file changed, 105 insertions(+), 101 deletions(-) diff --git a/src/main/java/org/parabot/environment/api/utils/Timer.java b/src/main/java/org/parabot/environment/api/utils/Timer.java index d062895..823c159 100644 --- a/src/main/java/org/parabot/environment/api/utils/Timer.java +++ b/src/main/java/org/parabot/environment/api/utils/Timer.java @@ -1,120 +1,124 @@ package org.parabot.environment.api.utils; /** - * * A simple timer class - * + * * @author Everel, Parameter - * */ public class Timer { - private long start; - private long end; + private long start; + private long end; - /** - * Timer Constructor - * - * @param end - */ - public Timer(long end) { + /** + * Timer Constructor + * + * @param end + */ + public Timer(long end) { + start = System.currentTimeMillis(); + this.end = System.currentTimeMillis() + end; + } - start = System.currentTimeMillis(); - this.end = System.currentTimeMillis() + end; - } + /** + * Timer Constructor + */ + public Timer() { + this(0); + } - /** - * Timer Constructor - */ - public Timer() { - this(0); - } + /** + * Determines the remaining time left. + * + * @return the remaining time. + */ + public long getRemaining() { + return end - System.currentTimeMillis(); + } - /** - * Determines the remaining time left. - * - * @return the remaining time. - */ - public long getRemaining() { - return end - System.currentTimeMillis(); - } + /** + * Determines if the end time has been reached, does not mean it stopped + * running. + */ + public boolean isFinished() { + return System.currentTimeMillis() > end; + } - /** - * Determines if the end time has been reached, does not mean it stopped - * running. - */ - public boolean isFinished() { - return System.currentTimeMillis() > end; - } + /** + * Stops and resets the timer + */ + public void restart() { + stop(); + reset(); + } - /** - * Stops and resets the timer - */ - public void restart() { - stop(); - reset(); - } + /** + * Resets the timer if stopped + */ + public void reset() { + if (start == 0) { + start = System.currentTimeMillis(); + } + } - /** - * Resets the timer if stopped - */ - public void reset() { - if (start == 0) { - start = System.currentTimeMillis(); - } - } + /** + * Resets the timer + */ + public void stop() { + end = (end - start) + System.currentTimeMillis(); + start = 0; + } - /** - * Resets the timer - */ - public void stop() { - end = (end - start) + System.currentTimeMillis(); - start = 0; - } + /** + * Determines if timer is running + * + * @return true if timer is running + */ + public boolean isRunning() { + return start != 0; + } - /** - * Determines if timer is running - * - * @return true if timer is running - */ - public boolean isRunning() { - return start != 0; - } + /** + * Gets the run time in long millis. + * + * @return the elapsed time. + */ + public long getElapsedTime() { + return System.currentTimeMillis() - start; + } - /** - * Gets the run time in long millis. - * - * @return the elapsed time. - */ - public long getElapsedTime() { - return System.currentTimeMillis() - start; - } + /** + * Calculates hourly gains based on given variable + * + * @param gained variable + * + * @return hourly gains + */ + public int getPerHour(final int gained) { + return (int) ((gained) * 3600000D / (System.currentTimeMillis() - start)); + } - /** - * Calculates hourly gains based on given variable - * - * @param gained - * variable - * @return hourly gains - */ - public int getPerHour(final int gained) { - return (int) ((gained) * 3600000D / (System.currentTimeMillis() - start)); - } - - /** - * Generates string based on HH:MM:SS - * - * @return String - */ - @Override - public String toString() { - StringBuilder b = new StringBuilder(); - long elapsed = getElapsedTime(); - int second = (int) (elapsed / 1000 % 60); - int minute = (int) (elapsed / 60000 % 60); - int hour = (int) (elapsed / 3600000 % 60); - b.append(hour < 10 ? "0" : "").append(hour).append(":"); - b.append(minute < 10 ? "0" : "").append(minute).append(":"); - b.append(second < 10 ? "0" : "").append(second); - return new String(b); - } + /** + * Generates string based on DD:HH:MM:SS + * + * @return String + */ + @Override + public String toString() { + StringBuilder b = new StringBuilder(); + long elapsed = getElapsedTime(); + int day = (int) (elapsed / 86400000); + elapsed -= day * 86400000; + int hour = (int) (elapsed / 3600000); + elapsed -= hour * 3600000; + int minute = (int) (elapsed / 60000); + elapsed -= minute * 60000; + int second = (int) (elapsed / 1000); + if (day > 0) { + b.append(day < 10 ? "0" : "").append(day).append("d:"); + } + b.append(hour < 10 ? "0" : "").append(hour).append(":"); + b.append(minute < 10 ? "0" : "").append(minute).append(":"); + b.append(second < 10 ? "0" : "").append(second); + return new String(b); + } }