Client- und Server-Nachrichten verbessert(#9)
This commit is contained in:
@@ -3,10 +3,10 @@ package eu.jonahbauer.wizard.core;
|
||||
import eu.jonahbauer.wizard.common.messages.player.PickTrumpMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.player.PlayCardMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.player.PredictMessage;
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.machine.Game;
|
||||
import eu.jonahbauer.wizard.core.messages.Observer;
|
||||
import eu.jonahbauer.wizard.core.model.Configuration;
|
||||
import eu.jonahbauer.wizard.core.model.GameConfiguration;
|
||||
import eu.jonahbauer.wizard.core.model.Configurations;
|
||||
|
||||
import java.util.List;
|
||||
@@ -17,7 +17,7 @@ import java.util.regex.Pattern;
|
||||
|
||||
public class CLI {
|
||||
public static void main(String[] args) {
|
||||
Configuration config = Configurations.DEFAULT.withTimeout(0);
|
||||
GameConfiguration config = Configurations.DEFAULT.withTimeout(0);
|
||||
Observer observer = (player, msg) -> System.out.println(msg);
|
||||
Game game = new Game(config, observer);
|
||||
var players = List.of(
|
||||
|
@@ -7,7 +7,7 @@ import eu.jonahbauer.wizard.core.messages.Observer;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.ObserverMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.StateMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.player.PlayerMessage;
|
||||
import eu.jonahbauer.wizard.core.model.Configuration;
|
||||
import eu.jonahbauer.wizard.core.model.GameConfiguration;
|
||||
import eu.jonahbauer.wizard.core.util.Util;
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -22,16 +22,16 @@ public final class Game extends Context<GameState, Game> {
|
||||
@Getter
|
||||
private final Random random;
|
||||
@Getter
|
||||
private final Configuration config;
|
||||
private final GameConfiguration config;
|
||||
private final Observer observer;
|
||||
|
||||
public Game(Configuration config, Observer observer) {
|
||||
public Game(GameConfiguration config, Observer observer) {
|
||||
this.random = new Random();
|
||||
this.config = config;
|
||||
this.observer = observer;
|
||||
}
|
||||
|
||||
public Game(long seed, Configuration config, Observer observer) {
|
||||
public Game(long seed, GameConfiguration config, Observer observer) {
|
||||
this.random = new Random(seed);
|
||||
this.config = config;
|
||||
this.observer = observer;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.machine.states;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.util.Pair;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
@@ -1,7 +1,7 @@
|
||||
package eu.jonahbauer.wizard.core.machine.states.round;
|
||||
|
||||
import eu.jonahbauer.wizard.common.messages.observer.HandMessage;
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.machine.Game;
|
||||
import eu.jonahbauer.wizard.core.machine.states.GameData;
|
||||
import eu.jonahbauer.wizard.core.model.deck.Deck;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.machine.states.round;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.machine.states.GameData;
|
||||
import eu.jonahbauer.wizard.core.machine.Game;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.HandMessage;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.machine.states.trick;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.machine.states.GameData;
|
||||
import eu.jonahbauer.wizard.core.machine.Game;
|
||||
import eu.jonahbauer.wizard.core.machine.states.InvalidDataException;
|
||||
|
@@ -4,7 +4,7 @@ import eu.jonahbauer.wizard.common.messages.observer.HandMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.UserInputMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.player.JuggleMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.player.PlayerMessage;
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.machine.Game;
|
||||
import eu.jonahbauer.wizard.core.machine.states.GameData;
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.machine.states.trick;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.machine.states.GameData;
|
||||
import eu.jonahbauer.wizard.core.machine.Game;
|
||||
import eu.jonahbauer.wizard.core.machine.states.InvalidDataException;
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.Configuration;
|
||||
import eu.jonahbauer.wizard.core.model.deck.Decks;
|
||||
import lombok.experimental.UtilityClass;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
@@ -12,55 +13,55 @@ import java.util.NoSuchElementException;
|
||||
|
||||
@UtilityClass
|
||||
public class Configurations {
|
||||
private static final Map<String, Configuration> CONFIGURATIONS = new HashMap<>();
|
||||
private static final Map<Configuration, GameConfiguration> CONFIGURATIONS = new HashMap<>();
|
||||
|
||||
public static final Configuration DEFAULT = register("DEFAULT", new Configuration(
|
||||
public static final GameConfiguration DEFAULT = register(Configuration.DEFAULT, new GameConfiguration(
|
||||
Decks.DEFAULT,
|
||||
true,
|
||||
10 * 60 * 1000
|
||||
));
|
||||
|
||||
public static final Configuration DEFAULT_PM1 = register("DEFAULT_PM1", new Configuration(
|
||||
public static final GameConfiguration DEFAULT_PM1 = register(Configuration.DEFAULT_PM1, new GameConfiguration(
|
||||
Decks.DEFAULT,
|
||||
false,
|
||||
10 * 60 * 1000
|
||||
));
|
||||
|
||||
public static final Configuration ANNIVERSARY_2016 = register("ANNIVERSARY_2016", new Configuration(
|
||||
public static final GameConfiguration ANNIVERSARY_2016 = register(Configuration.ANNIVERSARY_2016, new GameConfiguration(
|
||||
Decks.ANNIVERSARY_2016,
|
||||
true,
|
||||
10 * 60 * 1000
|
||||
));
|
||||
|
||||
public static final Configuration ANNIVERSARY_2016_PM1 = register("ANNIVERSARY_2016_PM1", new Configuration(
|
||||
public static final GameConfiguration ANNIVERSARY_2016_PM1 = register(Configuration.ANNIVERSARY_2016_PM1, new GameConfiguration(
|
||||
Decks.ANNIVERSARY_2016,
|
||||
false,
|
||||
10 * 60 * 1000
|
||||
));
|
||||
|
||||
public static final Configuration ANNIVERSARY_2021 = register("ANNIVERSARY_2021", new Configuration(
|
||||
public static final GameConfiguration ANNIVERSARY_2021 = register(Configuration.ANNIVERSARY_2021, new GameConfiguration(
|
||||
Decks.ANNIVERSARY_2021,
|
||||
true,
|
||||
10 * 60 * 1000
|
||||
));
|
||||
|
||||
public static final Configuration ANNIVERSARY_2021_PM1 = register("ANNIVERSARY_2021_PM1", new Configuration(
|
||||
public static final GameConfiguration ANNIVERSARY_2021_PM1 = register(Configuration.ANNIVERSARY_2021_PM1, new GameConfiguration(
|
||||
Decks.ANNIVERSARY_2021,
|
||||
false,
|
||||
10 * 60 * 1000
|
||||
));
|
||||
|
||||
@Contract("_,_ -> param2")
|
||||
private static Configuration register(@NotNull String name, @NotNull Configuration configuration) {
|
||||
if (CONFIGURATIONS.putIfAbsent(name.toUpperCase(Locale.ROOT), configuration) != null) {
|
||||
private static GameConfiguration register(@NotNull Configuration name, @NotNull GameConfiguration configuration) {
|
||||
if (CONFIGURATIONS.putIfAbsent(name, configuration) != null) {
|
||||
throw new IllegalArgumentException("Name already taken.");
|
||||
}
|
||||
return configuration;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Configuration get(@NotNull String name) {
|
||||
var out = CONFIGURATIONS.get(name.toUpperCase(Locale.ROOT));
|
||||
public static GameConfiguration get(@NotNull Configuration name) {
|
||||
var out = CONFIGURATIONS.get(name);
|
||||
if (out == null) throw new NoSuchElementException("Configuration with name '" + name + "' does not exist.");
|
||||
return out;
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Value;
|
||||
@@ -12,7 +12,7 @@ import java.util.Set;
|
||||
@Value
|
||||
@Accessors(fluent = true)
|
||||
@AllArgsConstructor(access = AccessLevel.PACKAGE)
|
||||
public class Configuration {
|
||||
public class GameConfiguration {
|
||||
Set<Card> cards;
|
||||
boolean allowExactPredictions;
|
||||
@With long timeout;
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model.card;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.util.Pair;
|
||||
import lombok.experimental.UtilityClass;
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model.card;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.util.Pair;
|
||||
|
||||
import java.util.List;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model.card;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.util.Pair;
|
||||
|
||||
import java.util.List;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model.card;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.util.Pair;
|
||||
import lombok.Getter;
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model.card;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.util.Pair;
|
||||
import lombok.Getter;
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model.card;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.util.Pair;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model.card;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import lombok.experimental.UtilityClass;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model.card;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
|
||||
public class JesterCard extends SimpleCard {
|
||||
public JesterCard(Card card) {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model.card;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.util.Pair;
|
||||
import lombok.Getter;
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model.card;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model.card;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
|
||||
public class WizardCard extends SimpleCard {
|
||||
public WizardCard(Card card) {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model.deck;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.Unmodifiable;
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model.deck;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import lombok.experimental.UtilityClass;
|
||||
|
||||
import java.util.*;
|
||||
|
@@ -3,7 +3,7 @@ package eu.jonahbauer.wizard.core.machine;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.ObserverMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.UserInputMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.player.*;
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.messages.Observer;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
@@ -4,11 +4,11 @@ import eu.jonahbauer.wizard.common.messages.observer.HandMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.StateMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.TrumpMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.UserInputMessage;
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.machine.Game;
|
||||
import eu.jonahbauer.wizard.core.machine.MessageQueue;
|
||||
import eu.jonahbauer.wizard.core.machine.states.GameData;
|
||||
import eu.jonahbauer.wizard.core.model.Configuration;
|
||||
import eu.jonahbauer.wizard.core.model.GameConfiguration;
|
||||
import eu.jonahbauer.wizard.core.model.Configurations;
|
||||
import lombok.SneakyThrows;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -35,7 +35,7 @@ public class DeterminingTrumpTest {
|
||||
|
||||
@SneakyThrows
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
private Game performTest(Configuration configuration, int round, Map<UUID, List<Card>> hands, Card trumpCard, MessageQueue queue) {
|
||||
private Game performTest(GameConfiguration configuration, int round, Map<UUID, List<Card>> hands, Card trumpCard, MessageQueue queue) {
|
||||
Game game = spy(new Game(configuration, queue));
|
||||
doFinish().when(game).transition(any(), any(Predicting.class));
|
||||
queue.setGame(game);
|
||||
|
@@ -3,13 +3,13 @@ package eu.jonahbauer.wizard.core.machine.states.round;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.PredictionMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.StateMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.UserInputMessage;
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.machine.Game;
|
||||
import eu.jonahbauer.wizard.core.machine.GameTestUtils;
|
||||
import eu.jonahbauer.wizard.core.machine.MessageQueue;
|
||||
import eu.jonahbauer.wizard.core.machine.states.GameData;
|
||||
import eu.jonahbauer.wizard.core.machine.states.trick.StartingTrick;
|
||||
import eu.jonahbauer.wizard.core.model.Configuration;
|
||||
import eu.jonahbauer.wizard.core.model.GameConfiguration;
|
||||
import eu.jonahbauer.wizard.core.model.Configurations;
|
||||
import lombok.SneakyThrows;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -37,7 +37,7 @@ public class PredictingTest {
|
||||
|
||||
@SneakyThrows
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
private Game performTest(Configuration configuration, int round, MessageQueue queue) {
|
||||
private Game performTest(GameConfiguration configuration, int round, MessageQueue queue) {
|
||||
Map<UUID, List<Card>> hands = Map.of(
|
||||
players[0], Collections.nCopies(round + 1, Card.HIDDEN),
|
||||
players[1], Collections.nCopies(round + 1, Card.HIDDEN),
|
||||
|
@@ -1,11 +1,11 @@
|
||||
package eu.jonahbauer.wizard.core.machine.states.round;
|
||||
|
||||
import eu.jonahbauer.wizard.common.messages.observer.*;
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.machine.Game;
|
||||
import eu.jonahbauer.wizard.core.machine.MessageQueue;
|
||||
import eu.jonahbauer.wizard.core.machine.states.GameData;
|
||||
import eu.jonahbauer.wizard.core.model.Configuration;
|
||||
import eu.jonahbauer.wizard.core.model.GameConfiguration;
|
||||
import eu.jonahbauer.wizard.core.model.Configurations;
|
||||
import lombok.SneakyThrows;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -32,7 +32,7 @@ public class RoundTest {
|
||||
};
|
||||
|
||||
@SneakyThrows
|
||||
private Game performTest(long seed, Configuration configuration, int round, MessageQueue queue) {
|
||||
private Game performTest(long seed, GameConfiguration configuration, int round, MessageQueue queue) {
|
||||
Game game = spy(new Game(seed, configuration, queue));
|
||||
doFinish().when(game).transition(any(), any(StartingRound.class));
|
||||
queue.setGame(game);
|
||||
|
@@ -1,13 +1,13 @@
|
||||
package eu.jonahbauer.wizard.core.machine.states.trick;
|
||||
|
||||
import eu.jonahbauer.wizard.common.messages.observer.*;
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.machine.Game;
|
||||
import eu.jonahbauer.wizard.core.machine.GameTestUtils;
|
||||
import eu.jonahbauer.wizard.core.machine.MessageQueue;
|
||||
import eu.jonahbauer.wizard.core.machine.states.GameData;
|
||||
import eu.jonahbauer.wizard.core.machine.states.round.FinishingRound;
|
||||
import eu.jonahbauer.wizard.core.model.Configuration;
|
||||
import eu.jonahbauer.wizard.core.model.GameConfiguration;
|
||||
import eu.jonahbauer.wizard.core.model.Configurations;
|
||||
import lombok.SneakyThrows;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -34,7 +34,7 @@ public class TrickTest {
|
||||
|
||||
@SneakyThrows
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
private Game performTest(Configuration configuration, int round, int trick, Map<UUID, List<Card>> hands, Card.Suit trump, MessageQueue queue) {
|
||||
private Game performTest(GameConfiguration configuration, int round, int trick, Map<UUID, List<Card>> hands, Card.Suit trump, MessageQueue queue) {
|
||||
Game game = spy(new Game(configuration, queue));
|
||||
doFinish().when(game).transition(any(), any(StartingTrick.class));
|
||||
doFinish().when(game).transition(any(), any(FinishingRound.class));
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package eu.jonahbauer.wizard.core.model.card;
|
||||
|
||||
import eu.jonahbauer.wizard.common.model.card.Card;
|
||||
import eu.jonahbauer.wizard.common.model.Card;
|
||||
import eu.jonahbauer.wizard.core.util.Pair;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
|
Reference in New Issue
Block a user