From 4fb23b482baa909c57b3b6ef76feab959100ac33 Mon Sep 17 00:00:00 2001 From: Daniel Saukel Date: Fri, 17 Jun 2016 15:44:04 +0200 Subject: [PATCH] #40: Don't start games if requirements are not satisfied --- .../dre2n/dungeonsxl/announcer/Announcer.java | 24 ++++++++++++------- .../task/AnnouncerStartGameTask.java | 5 ++++ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/github/dre2n/dungeonsxl/announcer/Announcer.java b/src/main/java/io/github/dre2n/dungeonsxl/announcer/Announcer.java index cfce4d83..76bd35f7 100644 --- a/src/main/java/io/github/dre2n/dungeonsxl/announcer/Announcer.java +++ b/src/main/java/io/github/dre2n/dungeonsxl/announcer/Announcer.java @@ -149,6 +149,7 @@ public class Announcer { this.maxPlayersPerGroup = maxPlayersPerGroup; } + /* Getters and setters */ /** * @return the name of the announcer */ @@ -297,6 +298,20 @@ public class Announcer { return startTask; } + /** + * @return whether enough players and groups joined the announced game to start + */ + public boolean areRequirementsFulfilled() { + int i = 0; + for (DGroup group : dGroups) { + if (group != null && group.getPlayers().size() >= minPlayersPerGroup) { + i++; + } + } + return i >= minGroupsPerGame; + } + + /* Actions */ /** * Cancels the start task and sets it to null. */ @@ -383,14 +398,7 @@ public class Announcer { showGUI(player); - int i = 0; - for (DGroup group : dGroups) { - if (group != null && group.getPlayers().size() >= minPlayersPerGroup) { - i++; - } - } - - if (i >= minGroupsPerGame) { + if (areRequirementsFulfilled()) { if (startTask == null) { startTask = new AnnouncerStartGameTask(this); startTask.runTaskLater(plugin, 20 * 30L); diff --git a/src/main/java/io/github/dre2n/dungeonsxl/task/AnnouncerStartGameTask.java b/src/main/java/io/github/dre2n/dungeonsxl/task/AnnouncerStartGameTask.java index 80518445..faba80be 100644 --- a/src/main/java/io/github/dre2n/dungeonsxl/task/AnnouncerStartGameTask.java +++ b/src/main/java/io/github/dre2n/dungeonsxl/task/AnnouncerStartGameTask.java @@ -59,6 +59,11 @@ public class AnnouncerStartGameTask extends BukkitRunnable { @Override public void run() { + if (!announcer.areRequirementsFulfilled()) { + cancel(); + return; + } + Game game = null; for (DGroup dGroup : announcer.getDGroups()) {