public class BreakManager { private long hours; private long rest; private long lastBreak; private long breakStart; private boolean isBreaking = false; public BreakManager(long play, long rest) { this.hours = (play * 3600); this.rest = (rest * 3600); this.lastBreak = System.currentTimeMillis(); } public boolean shouldBreak() { if (isBreaking) { if (isBreakOver()) { System.out.println("Ending break"); isBreaking = false; lastBreak = System.currentTimeMillis(); return false; } else { return true; } } else { if (isTimeToBreak()) { isBreaking = true; breakStart = System.currentTimeMillis(); System.out.println("Breaking."); return true; } else { return false; } } } public int getSecondsToBreak() { int time = (int) (hours - ((System.currentTimeMillis() - lastBreak) / 1000)); return time; } public int getSecondsToBreakEnd() { int time = (int) (rest - ((System.currentTimeMillis() - breakStart) / 1000)); return time; } public boolean isTimeToBreak() { return (System.currentTimeMillis() - lastBreak) / 1000 >= hours; } public boolean isBreakOver() { return (System.currentTimeMillis() - breakStart) / 1000 >= rest; } }