Fix sudden death
This commit is contained in:
@@ -125,4 +125,15 @@ public class WebSocketController {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@MessageMapping("enter-sudden-death")
|
||||
public void enterSuddenDeath(@Header("room") String roomId, @Header("player") String player) {
|
||||
Grid g = gm.findGrid(roomId);
|
||||
try {
|
||||
gm.enterSuddenDeath(g);
|
||||
} catch (IllegalGameActionException e) {
|
||||
publishError(player.charAt(0), e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ public class GameManager {
|
||||
/**
|
||||
* Enters the sudden death phase
|
||||
*/
|
||||
private void enterSuddenDeath(Grid g) {
|
||||
private void enterSuddenDeathInternal(Grid g) {
|
||||
newGameEvent(g, GameEvent.newSuddenDeath());
|
||||
if(allGreenRevealed(g, 'A', g.getConfig().isOnlyOneGreenGreen())) {
|
||||
// If all 'A''s greens are revealed, A is the only one to guess
|
||||
@@ -209,7 +209,7 @@ public class GameManager {
|
||||
if(g.getUsedHints() >= g.getConfig().getMaxMaxHint()) {
|
||||
if(!g.getConfig().isSuddenDeath()) {
|
||||
// We're entering sudden death
|
||||
enterSuddenDeath(g);
|
||||
enterSuddenDeathInternal(g);
|
||||
} else {
|
||||
// Only sudden death can get us out
|
||||
setPhase(g, Phase.NEED_SUDDEN_DEATH);
|
||||
@@ -301,6 +301,13 @@ public class GameManager {
|
||||
newGameEvent(g, GameEvent.newEndGuessingEvent(true, player));
|
||||
}
|
||||
|
||||
public void enterSuddenDeath(Grid g) throws IllegalGameActionException {
|
||||
if(!g.getPhase().isNeedMoreHints()) {
|
||||
throw new IllegalGameActionException(g, "You can only enter sudden death when being out of hints");
|
||||
}
|
||||
enterSuddenDeathInternal(g);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* UPDATE GAME CONFIG
|
||||
@@ -396,7 +403,7 @@ public class GameManager {
|
||||
setPhase(g, Phase.needMoreHints(g.getPhase().getHinting()));
|
||||
} else if (g.getPhase() == Phase.NEED_SUDDEN_DEATH) {
|
||||
// We're entering sudden death
|
||||
enterSuddenDeath(g);
|
||||
enterSuddenDeathInternal(g);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ public class Grid {
|
||||
return (this == HINTING_BOTH) || (this == ((player == 'A')?HINTING_A:HINTING_B));
|
||||
}
|
||||
public boolean isGuessing(char player) {
|
||||
return (this == ((player == 'A')?GUESSING_A:GUESSING_B));
|
||||
return this == guessing(player) || this == suddenDeathOnly(player) || this == SUDDEN_DEATH_BOTH;
|
||||
}
|
||||
public boolean isAnyoneGuessing() {
|
||||
return isGuessing('A') || isGuessing('B');
|
||||
|
||||
Reference in New Issue
Block a user