Minor fixes. Only one person can have wind walker now. Tokens spawn at 30s rather than 15

#story[1293]
This commit is contained in:
William Muir
2017-09-27 11:55:40 +13:00
parent 2eb7e603f1
commit 85ca91db96
2 changed files with 34 additions and 19 deletions
+33 -18
View File
@@ -84,7 +84,7 @@ public class GameState implements Runnable {
public static final Integer HANDLING_BOOST_MULTIPLIER = 2; public static final Integer HANDLING_BOOST_MULTIPLIER = 2;
private static final Double BAD_RANDOM_SPEED_PENALTY = 0.3; private static final Double BAD_RANDOM_SPEED_PENALTY = 0.3;
public static final Long BUMPER_DISABLE_TIME = 5_000L; public static final Long BUMPER_DISABLE_TIME = 5_000L;
private static final Long TOKEN_SPAWN_TIME = 15_000L; private static final Long TOKEN_SPAWN_TIME = 30_000L;
private static Long previousUpdateTime; private static Long previousUpdateTime;
public static Double windDirection; public static Double windDirection;
@@ -360,6 +360,7 @@ public class GameState implements Runnable {
private void spawnNewToken() { private void spawnNewToken() {
tokensInPlay.clear(); tokensInPlay.clear();
Token token = randomSpawn.getRandomTokenLocation(); Token token = randomSpawn.getRandomTokenLocation();
token.assignType(TokenType.WIND_WALKER);
logger.debug("Spawned token of type " + token.getTokenType()); logger.debug("Spawned token of type " + token.getTokenType());
tokensInPlay.add(token); tokensInPlay.add(token);
} }
@@ -436,26 +437,47 @@ public class GameState implements Runnable {
/** /**
* Powers up a yacht with the given token type. * Powers up a thisYacht with the given token type.
* *
* @param yacht The yacht to be powered up * @param thisYacht The yacht to be powered up
* @param collidedToken The token which this yacht collided with * @param collidedToken The token which this thisYacht collided with
*/ */
private void powerUpYacht(ServerYacht yacht, Token collidedToken) { private void powerUpYacht(ServerYacht thisYacht, Token collidedToken) {
//The random token has a 50% chance of becoming another token else becoming a speed detriment! //The random token has a 50% chance of becoming another token else becoming a speed detriment!
if (collidedToken.getTokenType() == TokenType.RANDOM && new Random().nextBoolean()) { if (collidedToken.getTokenType() == TokenType.RANDOM && new Random().nextBoolean()) {
collidedToken.realiseRandom(); collidedToken.realiseRandom();
} }
yacht.powerUp(collidedToken.getTokenType()); //If another yacht has the wind walker token, They should be powered down. Only one allowed!
else if (collidedToken.getTokenType() == TokenType.WIND_WALKER) {
for (ServerYacht otherYacht : yachts.values()) {
if (otherYacht != thisYacht && otherYacht.getPowerUp() == TokenType.WIND_WALKER) {
powerDownYacht(otherYacht);
}
}
}
thisYacht.powerUp(collidedToken.getTokenType());
String logMessage = String logMessage =
yacht.getBoatName() + " has picked up a " + collidedToken.getTokenType().getName() thisYacht.getBoatName() + " has picked up a " + collidedToken.getTokenType().getName()
+ " token"; + " token";
notifyMessageListeners(MessageFactory.makeChatterMessage(yacht.getSourceId(), logMessage)); notifyMessageListeners(
MessageFactory.makeChatterMessage(thisYacht.getSourceId(), logMessage));
notifyMessageListeners(MessageFactory.getRaceXML()); notifyMessageListeners(MessageFactory.getRaceXML());
notifyMessageListeners(MessageFactory.makePickupMessage(yacht, collidedToken)); notifyMessageListeners(MessageFactory.makePickupMessage(thisYacht, collidedToken));
logger.debug( logger.debug(
"Yacht: " + yacht.getShortName() + " got powerup " + collidedToken.getTokenType()); "Yacht: " + thisYacht.getShortName() + " got powerup " + collidedToken.getTokenType());
}
private void powerDownYacht(ServerYacht yacht) {
String logMessage =
yacht.getBoatName() + "'s " + yacht.getPowerUp().getName() + " expired";
notifyMessageListeners(
MessageFactory.makeChatterMessage(yacht.getSourceId(), logMessage));
notifyMessageListeners(MessageFactory.makePowerDownMessage(yacht));
logger.debug("Yacht: " + yacht.getShortName() + " powered down!");
yacht.powerDown();
} }
// TODO: 23/09/17 wmu16 - This is a hacky way to have the boat power down. Need some sort of separation between token and status effect :/ // TODO: 23/09/17 wmu16 - This is a hacky way to have the boat power down. Need some sort of separation between token and status effect :/
@@ -487,14 +509,7 @@ public class GameState implements Runnable {
if (yacht.getPowerUp() != null) { if (yacht.getPowerUp() != null) {
if (System.currentTimeMillis() - yacht.getPowerUpStartTime() > yacht.getPowerUp() if (System.currentTimeMillis() - yacht.getPowerUpStartTime() > yacht.getPowerUp()
.getTimeout()) { .getTimeout()) {
String logMessage = powerDownYacht(yacht);
yacht.getBoatName() + "'s " + yacht.getPowerUp().getName() + " expired";
notifyMessageListeners(
MessageFactory.makeChatterMessage(yacht.getSourceId(), logMessage));
notifyMessageListeners(MessageFactory.makePowerDownMessage(yacht));
logger.debug("Yacht: " + yacht.getShortName() + " powered down!");
yacht.powerDown();
} }
} }
} }
@@ -9,7 +9,7 @@ public enum TokenType {
BOOST(0, "Boost", 10_000), BOOST(0, "Boost", 10_000),
HANDLING(1, "Handling", 10_000), HANDLING(1, "Handling", 10_000),
BUMPER(2, "Bumper", 10_000), BUMPER(2, "Bumper", 10_000),
WIND_WALKER(3, "Wind Walker", 10_000), WIND_WALKER(3, "Wind Walker", 30_000),
RANDOM(4, "Random", 10_000); RANDOM(4, "Random", 10_000);
private int value; private int value;