Public Repository for the Magicbane Shadowbane Emulator
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
2.3 KiB

// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.job;
public class JobContainer implements Comparable<JobContainer> {
final AbstractJob job;
final long timeOfExecution;
final boolean noTimer;
JobContainer(AbstractJob job, long timeOfExecution) {
if (job == null) {
throw new IllegalArgumentException("No 'null' jobs allowed.");
}
this.job = job;
this.timeOfExecution = timeOfExecution;
this.noTimer = false;
}
public JobContainer(AbstractJob job) {
if (job == null) {
throw new IllegalArgumentException("No 'null' jobs allowed.");
}
this.job = job;
this.timeOfExecution = Long.MAX_VALUE;
this.noTimer = true;
}
public AbstractJob getJob() {
return job;
}
public boolean noTimer() {
return noTimer;
}
public long timeOfExection() {
return this.timeOfExecution;
}
public int timeToExecutionLeft() {
if (JobScheduler.getInstance().isAlive()) {
int timeLeft = (int) (timeOfExecution - System.currentTimeMillis());
if (timeLeft < 0)
timeLeft = 0;
return timeLeft;
} else
return (int) (timeOfExecution - JobScheduler.getInstance().getTimeOfKill());
}
@Override
public int compareTo(JobContainer compared) {
if (timeOfExecution < compared.timeOfExecution) {
return -1;
}
if (timeOfExecution > compared.timeOfExecution) {
return 1;
}
return 0;
}
@Override
public boolean equals(Object obj) {
return job.equals(((JobContainer) obj).job);
}
@Override
public int hashCode() {
return job.hashCode();
}
public void cancelJob() {
if (job != null && job instanceof AbstractScheduleJob)
((AbstractScheduleJob)job).cancelJob();
}
}