Get kits to hang around during Map voting

This commit is contained in:
Sam 2018-07-23 16:47:11 +01:00 committed by Alexander Meech
parent 2d36508d69
commit c39995aa20
8 changed files with 79 additions and 24 deletions

View File

@ -1364,7 +1364,7 @@ public abstract class Game extends ListenerComponent implements Lifetimed
UtilPlayer.message(player, ArcadeFormat.Line); UtilPlayer.message(player, ArcadeFormat.Line);
UtilPlayer.message(player, C.cGreen + "Game - " + C.cWhiteB + GetName()); UtilPlayer.message(player, C.cGreen + "Game - " + C.cYellowB + GetName());
UtilPlayer.message(player, ""); UtilPlayer.message(player, "");
for (String line : this.GetDesc()) for (String line : this.GetDesc())
@ -1434,7 +1434,7 @@ public abstract class Game extends ListenerComponent implements Lifetimed
UtilPlayer.message(player, ""); UtilPlayer.message(player, "");
UtilPlayer.message(player, ArcadeFormat.Line); UtilPlayer.message(player, ArcadeFormat.Line);
UtilPlayer.message(player, "§aGame - §f§l" + this.GetName()); UtilPlayer.message(player, C.cGreen + "Game - " + C.cYellowB + GetName());
UtilPlayer.message(player, ""); UtilPlayer.message(player, "");
UtilPlayer.message(player, ""); UtilPlayer.message(player, "");
@ -1507,7 +1507,7 @@ public abstract class Game extends ListenerComponent implements Lifetimed
UtilPlayer.message(player, ""); UtilPlayer.message(player, "");
UtilPlayer.message(player, ArcadeFormat.Line); UtilPlayer.message(player, ArcadeFormat.Line);
UtilPlayer.message(player, "§aGame - §f§l" + this.GetName()); UtilPlayer.message(player, C.cGreen + "Game - " + C.cYellowB + GetName());
UtilPlayer.message(player, ""); UtilPlayer.message(player, "");
if (places == null || places.isEmpty()) if (places == null || places.isEmpty())

View File

@ -81,6 +81,8 @@ public class GameCreationManager implements Listener
createGame(); createGame();
} }
checkMapVoting();
//Archive Game //Archive Game
if (Manager.GetGame() != null && Manager.GetGame().GetState() == GameState.Dead) if (Manager.GetGame() != null && Manager.GetGame().GetState() == GameState.Dead)
{ {
@ -176,7 +178,7 @@ public class GameCreationManager implements Listener
_votingManager.updateMapRatings(); _votingManager.updateMapRatings();
_votingManager.deactivate(); _votingManager.deactivate();
} }
else if (_votingManager.isVoteInProgress()) else if (_votingManager.isVoteBlocking())
{ {
return; return;
} }
@ -242,20 +244,6 @@ public class GameCreationManager implements Listener
Class<? extends Game> gameClass = gameType.getGameClass(); Class<? extends Game> gameClass = gameType.getGameClass();
// If map voting and ONLY map voting is enabled
// Also need to make sure a map and game haven't been selected by /game set beforehand
if (MapPref == null && _nextGame == null && Manager.GetServerConfig().MapVoting && !Manager.GetServerConfig().GameVoting)
{
if (!_votingManager.canStartVote())
{
return;
}
_nextGame = gameType;
_votingManager.callVote(new MapVote(Manager, gameType, getMapsToVote(gameType)));
return;
}
_nextGame = null; _nextGame = null;
//Reset Changes //Reset Changes
@ -299,12 +287,22 @@ public class GameCreationManager implements Listener
try try
{ {
// Maps // No map voting, load the maps now
loadMaps(gameType); boolean loadMapsNow = !Manager.GetServerConfig().MapVoting;
if (loadMapsNow)
{
loadMaps(gameType);
}
// Create Game instance // Create Game instance
Game game = gameClass.getConstructor(ArcadeManager.class).newInstance(Manager); Game game = gameClass.getConstructor(ArcadeManager.class).newInstance(Manager);
if (loadMapsNow)
{
game.WorldData.Initialize();
}
Manager.SetGame(game); Manager.SetGame(game);
} }
catch (NoSuchMethodException ex) catch (NoSuchMethodException ex)
@ -338,6 +336,32 @@ public class GameCreationManager implements Listener
TimingManager.stop("registerEvents"); TimingManager.stop("registerEvents");
} }
private void checkMapVoting()
{
Game game = Manager.GetGame();
if (game == null || MapPref != null || !Manager.GetServerConfig().MapVoting || Manager.GetServerConfig().GameVoting)
{
return;
}
if (_votingManager.getFinishedVote() != null)
{
MapPref = _votingManager.getFinishedVote().getWinner().getName();
_votingManager.deactivate();
// Load maps for the running game
loadMaps(game.GetType());
// Load the world data
game.WorldData.Initialize();
}
else if (!_votingManager.isVoteInProgress() && _votingManager.canStartVote())
{
_votingManager.callVote(new MapVote(Manager, game.GetType(), getMapsToVote(game.GetType())));
}
}
private void loadMaps(GameType gameType) private void loadMaps(GameType gameType)
{ {
_maps = new HashMap<>(); _maps = new HashMap<>();

View File

@ -724,12 +724,26 @@ public abstract class LobbyManager implements Listener
@EventHandler @EventHandler
public void eqiupKitOnJoin(PlayerJoinEvent event) public void eqiupKitOnJoin(PlayerJoinEvent event)
{ {
if (_manager.GetGame() == null) Game game = _manager.GetGame();
if (game == null)
{ {
return; return;
} }
equipActiveKit(event.getPlayer()); Player player = event.getPlayer();
if (game.InProgress())
{
GameTeam team = game.GetTeam(player);
if (team == null || !team.IsAlive(player))
{
return;
}
}
equipActiveKit(player);
} }
@EventHandler @EventHandler

View File

@ -59,6 +59,8 @@ public abstract class Vote<T extends Voteable>
public abstract List<VoteRating> getMapRatings(); public abstract List<VoteRating> getMapRatings();
public abstract boolean isBlocking();
public void vote(Player player, T value) public void vote(Player player, T value)
{ {
if (value == null) if (value == null)

View File

@ -254,6 +254,11 @@ public class VotingManager extends ListenerComponent implements Lifetimed
return _currentVote != null; return _currentVote != null;
} }
public boolean isVoteBlocking()
{
return isVoteInProgress() && getCurrentVote().isBlocking();
}
public boolean canStartVote() public boolean canStartVote()
{ {
if (_manager.getValidPlayersForGameStart().size() < _manager.GetPlayerMin()) if (_manager.getValidPlayersForGameStart().size() < _manager.GetPlayerMin())

View File

@ -113,6 +113,12 @@ public class GameVote extends Vote<GameType>
return _winningMapVote.getMapRatings(); return _winningMapVote.getMapRatings();
} }
@Override
public boolean isBlocking()
{
return true;
}
public MapVote getWinningMapVote() public MapVote getWinningMapVote()
{ {
return _winningMapVote; return _winningMapVote;

View File

@ -63,4 +63,10 @@ public class MapVote extends Vote<VotableMap>
.map(votableMap -> new VoteRating(_gameType.getGameId(), votableMap.getDisplayName(), winner.equals(votableMap) ? ratingWin : ratingLose)) .map(votableMap -> new VoteRating(_gameType.getGameId(), votableMap.getDisplayName(), winner.equals(votableMap) ? ratingWin : ratingLose))
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
@Override
public boolean isBlocking()
{
return false;
}
} }

View File

@ -64,8 +64,6 @@ public class WorldData
{ {
Host = game; Host = game;
Id = GetNewId(); Id = GetNewId();
Initialize();
} }
public void Initialize() public void Initialize()