Skip to content

Commit

Permalink
Updated the updater of the timers, to use the new system.
Browse files Browse the repository at this point in the history
The updater task is started when the plugin is enabled, so a timer can be added before the start of the game.

Related to #30.
  • Loading branch information
AmauryCarrade committed Sep 3, 2014
1 parent 2423d35 commit 3a722ff
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 34 deletions.
13 changes: 12 additions & 1 deletion src/main/java/me/azenet/UHPlugin/UHBorderManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,17 @@ public void setWarningSize(int diameter) {
setWarningSize(diameter, 0, null);
}

/**
* Returns the UHTimer object representing the countdown before the next border reduction.
* <p>
* Returns null if there isn't any countdown running currently.
*
* @return The timer.
*/
public UHTimer getWarningTimer() {
return p.getTimerManager().getTimer(this.warningTimerName);
}

/**
* Stops the display of the warning messages.
*/
Expand All @@ -234,7 +245,7 @@ public void cancelWarning() {
}
}

UHTimer timer = p.getTimerManager().getTimer(this.warningTimerName);
UHTimer timer = getWarningTimer();
timer.stop();
p.getTimerManager().unregisterTimer(timer);
}
Expand Down
1 change: 0 additions & 1 deletion src/main/java/me/azenet/UHPlugin/UHGameManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
import me.azenet.UHPlugin.i18n.I18n;
import me.azenet.UHPlugin.task.FireworksOnWinnersTask;
import me.azenet.UHPlugin.task.TeamStartTask;
import me.azenet.UHPlugin.task.UpdateTimerTask;

import org.bukkit.Bukkit;
import org.bukkit.Difficulty;
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/me/azenet/UHPlugin/UHPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import me.azenet.UHPlugin.listeners.UHCraftingListener;
import me.azenet.UHPlugin.listeners.UHGameListener;
import me.azenet.UHPlugin.listeners.UHGameplayListener;
import me.azenet.UHPlugin.task.UpdateTimerTask;

import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
Expand Down Expand Up @@ -116,6 +117,11 @@ public void onEnable() {
// Imports teams from the config.
this.teamManager.importTeamsFromConfig();

// Starts the task that updates the timers.
// Started here, so a timer can be displayed before the start of the game
// (example: countdown before the start).
new UpdateTimerTask(this).runTaskTimer(this, 20l, 20l);

getLogger().info(i18n.t("load.loaded"));
}

Expand Down
4 changes: 4 additions & 0 deletions src/main/java/me/azenet/UHPlugin/UHTimerManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,10 @@ public void unregisterTimer(UHTimer timer) {
public void updateStartedTimersList() {
runningTimers = new HashMap<String,UHTimer>();

if(getMainTimer() != null && getMainTimer().isRunning()) {
runningTimers.put(getMainTimer().getName(), getMainTimer());
}

for(UHTimer timer : timers.values()) {
if(timer.isRunning()) {
runningTimers.put(timer.getName(), timer);
Expand Down
31 changes: 1 addition & 30 deletions src/main/java/me/azenet/UHPlugin/task/BorderWarningTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,23 +42,6 @@ public void run() {
return; // No messages are sent if the game is frozen.
}

int minutesLeft = 0;

if(p.getBorderManager().getWarningFinalTimeEnabled()) {
minutesLeft = (int) ((p.getBorderManager().getWarningFinalTime() - System.currentTimeMillis()) / (60 * 1000) % 60);
int secondsLeft = (int) ((p.getBorderManager().getWarningFinalTime() - System.currentTimeMillis()) / 1000 % 60);

if(secondsLeft > 30) {
minutesLeft++;
}
if(secondsLeft < 0) { // Timer is up, but "-0" minutes
minutesLeft = -1;
}
}
else {
minutesLeft = -1;
}

// Message sent to all players outside the border
for(Player player : p.getBorderManager().getPlayersOutside(p.getBorderManager().getWarningSize())) {
int distance = p.getBorderManager().getDistanceToBorder(player.getLocation(), p.getBorderManager().getWarningSize());
Expand All @@ -70,19 +53,7 @@ public void run() {
player.sendMessage(i.t("borders.warning.messageSquared", String.valueOf(p.getBorderManager().getWarningSize())));
}

if(minutesLeft <= 0) {
player.sendMessage(i.t("borders.warning.messageDistance", String.valueOf(distance)));
}
else {
player.sendMessage(i.t("borders.warning.messageDistanceTime", String.valueOf(distance), String.valueOf(minutesLeft)));
}
}

// Message sent to the sender of the warning if the timer is up
if(p.getBorderManager().getWarningFinalTimeEnabled() && minutesLeft <= 0) {
p.getBorderManager().getWarningSender().sendMessage(i.t("borders.warning.timerUp"));
p.getBorderManager().sendCheckMessage(p.getBorderManager().getWarningSender(), p.getBorderManager().getWarningSize());
p.getBorderManager().stopWarningTime();
player.sendMessage(i.t("borders.warning.messageDistance", String.valueOf(distance)));
}
}
}
6 changes: 4 additions & 2 deletions src/main/java/me/azenet/UHPlugin/task/UpdateTimerTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
package me.azenet.UHPlugin.task;

import me.azenet.UHPlugin.UHPlugin;
import me.azenet.UHPlugin.UHTimer;

import org.bukkit.scheduler.BukkitRunnable;

Expand All @@ -33,7 +34,8 @@ public UpdateTimerTask(UHPlugin p) {

@Override
public void run() {
p.getGameManager().updateTimer();
for(UHTimer timer : p.getTimerManager().getRunningTimers()) {
timer.update();
}
}

}

0 comments on commit 3a722ff

Please sign in to comment.