X-Git-Url: https://git.defcon.no/?a=blobdiff_plain;ds=sidebyside;f=src%2Fno%2Fdefcon%2Fyavote%2FVotemanager.java;h=bacbd92940dac0aabc9537f0d53a180c09c923ef;hb=739207dfc5e69c48d29249bbebcadf716c28cb23;hp=2212b7a40f7c254324d65b3feecc98e994dc986e;hpb=3cb57c6708fa0ad2d6c9a6276b759279cbc3a5cc;p=YAVote diff --git a/src/no/defcon/yavote/Votemanager.java b/src/no/defcon/yavote/Votemanager.java index 2212b7a..bacbd92 100644 --- a/src/no/defcon/yavote/Votemanager.java +++ b/src/no/defcon/yavote/Votemanager.java @@ -64,7 +64,7 @@ public class Votemanager { yesVoters.add(p.getName()); - if ( checkRatio( ) ) + if ( ((float) yesVoters.size() / (float) plugin.getServer().getOnlinePlayers().length ) >= getRequired() ) { applyVote( voteType ); return true; @@ -101,6 +101,24 @@ public class Votemanager { return voteType; } + public void removeVote(Player player ) + { + if ( ! voteRunning || (voteType == null ) ) + return; + + if ( yesVoters.contains(player.getName()) ) + yesVoters.remove(player.getName()); + + if ( noVoters.contains(player.getName()) ) + noVoters.remove(player.getName()); + + if ( yesVoters.size() + noVoters.size() == 0 ) + cancelVote(); + + else if ( ((float) yesVoters.size() / (float) (plugin.getServer().getOnlinePlayers().length - 1) ) >= getRequired() ) + applyVote( voteType ); + } + public boolean addVote(Player player, boolean yes) { if ( ! voteRunning || (voteType == null ) ) @@ -114,7 +132,7 @@ public class Votemanager { if (yes == true) yesVoters.add(player.getName()); else noVoters.add(player.getName()); - if ( (yes == true) && checkRatio( ) ) + if ( ( yes == true) && ( ((float) yesVoters.size() / (float) plugin.getServer().getOnlinePlayers().length ) >= getRequired() ) ) { applyVote( voteType ); return true; @@ -160,17 +178,15 @@ public class Votemanager { clearState(); } - private boolean checkRatio( ) + private float getRequired( ) { - float required = 0.5F; + float req = 0.0f; if ( voteType.equalsIgnoreCase("sun") || voteType.equalsIgnoreCase("rain") || voteType.equalsIgnoreCase("storm") ) - required = (float)plugin.getConfig().getInt("vote.weather.requiredPercent") / 100.0F; + req = (float)plugin.getConfig().getInt("vote.weather.requiredPercent") / 100.0F; else if ( voteType.equalsIgnoreCase("day") || voteType.equalsIgnoreCase("night") ) - required = (float)plugin.getConfig().getInt("vote.time.requiredPercent") / 100.0F; - - float ratio = (float) yesVoters.size() / (float) plugin.getServer().getOnlinePlayers().length; - if ( ratio > required ) return true; - return false; + req = (float)plugin.getConfig().getInt("vote.time.requiredPercent") / 100.0F; + + return req; } private void clearState()