added TimeoutMessage
This commit is contained in:
parent
04524a8a0b
commit
cae83fe2f9
@ -149,6 +149,8 @@ public final class Game extends BaseState {
|
||||
LocalDateTime.ofInstant(Instant.ofEpochMilli(input.getTimeout()), ZoneId.systemDefault())
|
||||
);
|
||||
}
|
||||
} else if (observerMessage instanceof TimeoutMessage) {
|
||||
client.println("Timed out.");
|
||||
} else {
|
||||
throw new AssertionError("Unknown observer message " + observerMessage.getClass().getSimpleName() + "");
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ import eu.jonahbauer.wizard.common.util.SealedClassTypeAdapterFactory;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode
|
||||
public abstract sealed class ObserverMessage permits CardMessage, HandMessage, PredictionMessage, ScoreMessage, StateMessage, TrickMessage, TrumpMessage, UserInputMessage {
|
||||
public abstract sealed class ObserverMessage permits CardMessage, HandMessage, PredictionMessage, ScoreMessage, StateMessage, TimeoutMessage, TrickMessage, TrumpMessage, UserInputMessage {
|
||||
private static final Gson GSON = new GsonBuilder()
|
||||
.registerTypeAdapterFactory(SealedClassTypeAdapterFactory.of(ObserverMessage.class, "Message"))
|
||||
.create();
|
||||
|
@ -0,0 +1,4 @@
|
||||
package eu.jonahbauer.wizard.common.messages.observer;
|
||||
|
||||
public final class TimeoutMessage extends ObserverMessage {
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package eu.jonahbauer.wizard.core.machine.states.round;
|
||||
|
||||
import eu.jonahbauer.wizard.common.messages.observer.PredictionMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.TimeoutMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.UserInputMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.player.PlayerMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.player.PredictMessage;
|
||||
@ -44,6 +45,7 @@ public final class ChangingPrediction extends RoundState {
|
||||
|
||||
@Override
|
||||
public Optional<GameState> onTimeout(Game game) {
|
||||
game.notify(new TimeoutMessage());
|
||||
return transition(game, oldPrediction + 1);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.machine.states.round;
|
||||
|
||||
import eu.jonahbauer.wizard.common.messages.observer.TimeoutMessage;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.machine.states.GameData;
|
||||
import eu.jonahbauer.wizard.core.machine.Game;
|
||||
@ -57,6 +58,7 @@ public final class DeterminingTrump extends RoundState {
|
||||
|
||||
@Override
|
||||
public Optional<GameState> onTimeout(Game game) {
|
||||
game.notify(new TimeoutMessage());
|
||||
Card.Suit[] suits;
|
||||
if (werewolf) {
|
||||
suits = new Card.Suit[]{Card.Suit.BLUE, Card.Suit.GREEN, Card.Suit.RED, Card.Suit.YELLOW, Card.Suit.NONE};
|
||||
|
@ -1,5 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.machine.states.round;
|
||||
|
||||
import eu.jonahbauer.wizard.common.messages.observer.TimeoutMessage;
|
||||
import eu.jonahbauer.wizard.core.machine.states.GameData;
|
||||
import eu.jonahbauer.wizard.core.machine.Game;
|
||||
import eu.jonahbauer.wizard.core.machine.GameState;
|
||||
@ -32,6 +33,7 @@ public final class Predicting extends RoundState {
|
||||
|
||||
@Override
|
||||
public Optional<GameState> onTimeout(Game game) {
|
||||
game.notify(new TimeoutMessage());
|
||||
try {
|
||||
checkPrediction(game, 0);
|
||||
return transition(game, 0);
|
||||
|
@ -1,6 +1,7 @@
|
||||
package eu.jonahbauer.wizard.core.machine.states.trick;
|
||||
|
||||
import eu.jonahbauer.wizard.common.messages.observer.HandMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.TimeoutMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.UserInputMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.player.JuggleMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.player.PlayerMessage;
|
||||
@ -30,6 +31,7 @@ public final class Juggling extends TrickState {
|
||||
|
||||
@Override
|
||||
public Optional<GameState> onTimeout(Game game) {
|
||||
game.notify(new TimeoutMessage());
|
||||
for (UUID player : get(PLAYERS)) {
|
||||
juggledCards.computeIfAbsent(player, p -> {
|
||||
var hand = get(HANDS).get(p);
|
||||
|
@ -1,5 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.machine.states.trick;
|
||||
|
||||
import eu.jonahbauer.wizard.common.messages.observer.TimeoutMessage;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.machine.states.GameData;
|
||||
import eu.jonahbauer.wizard.core.machine.Game;
|
||||
@ -45,6 +46,7 @@ public final class PlayingCard extends TrickState {
|
||||
|
||||
@Override
|
||||
public Optional<GameState> onTimeout(Game game) {
|
||||
game.notify(new TimeoutMessage());
|
||||
var hand = get(HANDS).get(get(CURRENT_PLAYER));
|
||||
var stack = get(STACK);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user