From d13abe5591c676255b33ca089a6cc82c59bacb29 Mon Sep 17 00:00:00 2001 From: Logan Fick Date: Sat, 4 Jun 2022 18:08:48 -0400 Subject: [PATCH] Fixed queue wait time decay rate calculation being imprecise. --- .../logal/snowbrawl/managers/MatchManager.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/dev/logal/snowbrawl/managers/MatchManager.java b/src/main/java/dev/logal/snowbrawl/managers/MatchManager.java index 05eae53..9299e95 100644 --- a/src/main/java/dev/logal/snowbrawl/managers/MatchManager.java +++ b/src/main/java/dev/logal/snowbrawl/managers/MatchManager.java @@ -276,10 +276,19 @@ public class MatchManager implements Listener, Runnable { * @return The amount of ticks per second the queue wait time will decay, up to 10. */ public int getQueueDecayRate(){ - final int availablePlayers = this.snowbrawl.getServer().getOnlinePlayers().size() - this.getPlayersInMatches().size(); // The amount of players online but not in a match. - final int queuedPlayers = this.getQueuedPlayers().size(); // The amount of queued players. + final float availablePlayers = this.snowbrawl.getServer().getOnlinePlayers().size() - this.getPlayersInMatches().size(); // The amount of players online but not in a match. + final float queuedPlayers = this.getQueuedPlayers().size(); // The amount of queued players. - return (queuedPlayers / availablePlayers) * 10; // Return a value between 1 and 10 + final int decayRate = (int) (queuedPlayers / availablePlayers) * 10; + + // Clamp decay rate between 1 and 10 ticks per second. + if (decayRate < 1){ + return 1; + } else if (decayRate > 10){ + return 10; + } else { + return decayRate; + } } /**