package tc.oc.pgm.polls;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import org.bukkit.scheduler.BukkitScheduler;
public class PollManager {
private final Plugin parent;
private final BukkitScheduler scheduler;
private final PluginManager pm;
private Poll poll = null;
private int pollTaskId = -1;
public PollManager(Plugin parent) {
this.parent = parent;
this.scheduler = parent.getServer().getScheduler();
this.pm = parent.getServer().getPluginManager();
}
/**
* Gets the current poll if there is one running.
* @return Current poll or null.
*/
public Poll getPoll() {
return this.poll;
}
/**
* Indicates whether or not a poll is currently running.
*/
public boolean isPollRunning() {
return this.poll != null;
}
/**
* Starts a new poll specified by the poll object.
*/
public void startPoll(Poll poll) {
if(!this.isPollRunning()) {
this.pollTaskId = this.scheduler.scheduleSyncRepeatingTask(this.parent, poll, 0, 5*20);
this.poll = poll;
this.pm.callEvent(new PollStartEvent(poll));
}
}
/**
* Ends the poll with a specified reason.
*/
public void endPoll(PollEndReason reason) {
if(this.isPollRunning()) {
this.pm.callEvent(new PollEndEvent(this.poll, reason));
this.scheduler.cancelTask(this.pollTaskId);
this.pollTaskId = -1;
this.poll = null;
}
}
}