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