From f46d2f4e2936a60b1f66e5adebee71f4ff3b5e65 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Thu, 16 Apr 2020 10:03:52 +0200 Subject: [PATCH] Splitter opp interfacer for tegning og intragering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Endrer ting slik at spillet får vite om server og klient ved initialisering Registerer Action for kryo Oppdaterer konstruktør i RoboRallyGameTest --- .../gamewrapper/RoboRallyWrapper.java | 4 +- .../screens/BoardActiveScreen.java | 6 +-- .../gamewrapper/screens/LoadingScreen.java | 8 +--- .../networking/RoboRallyClientListener.java | 2 +- .../networking/RoboRallyServerListener.java | 2 +- .../roborally/objects/IDrawableGame.java | 28 ----------- .../roborally/objects/IInteractableGame.java | 26 +++++++++++ .../roborally/objects/IRoboRallyGame.java | 3 ++ .../roborally/objects/RoboRallyGame.java | 46 ++++++++----------- .../fiasko/roborally/utility/NetworkUtil.java | 2 + .../roborally/objects/RoboRallyGameTest.java | 3 +- 11 files changed, 59 insertions(+), 71 deletions(-) create mode 100644 src/main/java/inf112/fiasko/roborally/objects/IInteractableGame.java create mode 100644 src/main/java/inf112/fiasko/roborally/objects/IRoboRallyGame.java diff --git a/src/main/java/inf112/fiasko/roborally/gamewrapper/RoboRallyWrapper.java b/src/main/java/inf112/fiasko/roborally/gamewrapper/RoboRallyWrapper.java index 34b73df..2847134 100644 --- a/src/main/java/inf112/fiasko/roborally/gamewrapper/RoboRallyWrapper.java +++ b/src/main/java/inf112/fiasko/roborally/gamewrapper/RoboRallyWrapper.java @@ -6,13 +6,13 @@ import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import inf112.fiasko.roborally.networking.RoboRallyClient; import inf112.fiasko.roborally.networking.RoboRallyServer; -import inf112.fiasko.roborally.objects.IDrawableGame; +import inf112.fiasko.roborally.objects.IRoboRallyGame; public class RoboRallyWrapper extends Game { public SpriteBatch batch; public BitmapFont font; public ScreenManager screenManager; - public IDrawableGame roboRallyGame; + public IRoboRallyGame roboRallyGame; public RoboRallyServer server; public RoboRallyClient client; diff --git a/src/main/java/inf112/fiasko/roborally/gamewrapper/screens/BoardActiveScreen.java b/src/main/java/inf112/fiasko/roborally/gamewrapper/screens/BoardActiveScreen.java index 75bc53a..70671b8 100644 --- a/src/main/java/inf112/fiasko/roborally/gamewrapper/screens/BoardActiveScreen.java +++ b/src/main/java/inf112/fiasko/roborally/gamewrapper/screens/BoardActiveScreen.java @@ -14,8 +14,8 @@ import com.badlogic.gdx.utils.viewport.ExtendViewport; import com.badlogic.gdx.utils.viewport.Viewport; import inf112.fiasko.roborally.elementproperties.GameState; import inf112.fiasko.roborally.gamewrapper.RoboRallyWrapper; -import inf112.fiasko.roborally.objects.IDrawableGame; import inf112.fiasko.roborally.objects.IDrawableObject; +import inf112.fiasko.roborally.objects.IRoboRallyGame; import inf112.fiasko.roborally.utility.IOUtil; import inf112.fiasko.roborally.utility.TextureConverterUtil; @@ -27,7 +27,7 @@ import java.util.List; public class BoardActiveScreen extends AbstractScreen implements InputProcessor { private final RoboRallyWrapper roboRallyWrapper; private final OrthographicCamera camera; - private IDrawableGame debugGame; + private IRoboRallyGame debugGame; private final int tileDimensions = 64; private float cameraZoom = 1; @@ -97,7 +97,7 @@ public class BoardActiveScreen extends AbstractScreen implements InputProcessor @Override public boolean keyUp(int keyCode) { if (keyCode == Input.Keys.HOME) { - IDrawableGame temp = roboRallyWrapper.roboRallyGame; + IRoboRallyGame temp = roboRallyWrapper.roboRallyGame; roboRallyWrapper.roboRallyGame = debugGame; this.debugGame = temp; return true; diff --git a/src/main/java/inf112/fiasko/roborally/gamewrapper/screens/LoadingScreen.java b/src/main/java/inf112/fiasko/roborally/gamewrapper/screens/LoadingScreen.java index ed61166..0c9f506 100644 --- a/src/main/java/inf112/fiasko/roborally/gamewrapper/screens/LoadingScreen.java +++ b/src/main/java/inf112/fiasko/roborally/gamewrapper/screens/LoadingScreen.java @@ -45,19 +45,13 @@ public class LoadingScreen extends AbstractScreen { roboRallyWrapper.batch.end(); long time = System.currentTimeMillis(); //TODO: Allow to set any condition and next screen - if (roboRallyWrapper.roboRallyGame != null && roboRallyWrapper.roboRallyGame.getGameState() != initialGameState ) { + if (roboRallyWrapper.roboRallyGame != null && roboRallyWrapper.roboRallyGame.getGameState() != initialGameState) { handleScreenChange(); } } private void handleScreenChange() { switch (initialGameState) { - case BEGINNING_OF_GAME: - if(roboRallyWrapper.roboRallyGame.getClient()==null){ - roboRallyWrapper.roboRallyGame.setClient(roboRallyWrapper.client); - roboRallyWrapper.roboRallyGame.setServer(roboRallyWrapper.server); - } - case SENDING_CARDS: roboRallyWrapper.setScreen(roboRallyWrapper.screenManager.getBoardActiveScreen(this.roboRallyWrapper)); break; diff --git a/src/main/java/inf112/fiasko/roborally/networking/RoboRallyClientListener.java b/src/main/java/inf112/fiasko/roborally/networking/RoboRallyClientListener.java index 85e543d..2cf7019 100644 --- a/src/main/java/inf112/fiasko/roborally/networking/RoboRallyClientListener.java +++ b/src/main/java/inf112/fiasko/roborally/networking/RoboRallyClientListener.java @@ -32,7 +32,7 @@ class RoboRallyClientListener extends Listener { } else if (object instanceof GameStartInfo) { GameStartInfo info = (GameStartInfo) object; wrapper.roboRallyGame = new RoboRallyGame(info.getPlayerList(), info.getBoardName(), - wrapper.server != null,info.getPlayerName()); + wrapper.server != null, info.getPlayerName(), wrapper.client, wrapper.server); wrapper.setScreen(wrapper.screenManager.getLoadingScreen(wrapper)); } else if(object instanceof ProgrammingCardDeck){ diff --git a/src/main/java/inf112/fiasko/roborally/networking/RoboRallyServerListener.java b/src/main/java/inf112/fiasko/roborally/networking/RoboRallyServerListener.java index 2c59875..e8dd3f7 100644 --- a/src/main/java/inf112/fiasko/roborally/networking/RoboRallyServerListener.java +++ b/src/main/java/inf112/fiasko/roborally/networking/RoboRallyServerListener.java @@ -19,7 +19,7 @@ class RoboRallyServerListener extends Listener { private Connection host; private final Map clients; private final Map playerNames; - private List deadPlayers; + private final List deadPlayers; /** * Instantiates a new Robo Rally server listener diff --git a/src/main/java/inf112/fiasko/roborally/objects/IDrawableGame.java b/src/main/java/inf112/fiasko/roborally/objects/IDrawableGame.java index e1e8358..bede67e 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/IDrawableGame.java +++ b/src/main/java/inf112/fiasko/roborally/objects/IDrawableGame.java @@ -1,9 +1,5 @@ package inf112.fiasko.roborally.objects; -import inf112.fiasko.roborally.elementproperties.GameState; -import inf112.fiasko.roborally.networking.RoboRallyClient; -import inf112.fiasko.roborally.networking.RoboRallyServer; - import java.util.List; /** @@ -58,28 +54,4 @@ public interface IDrawableGame { * @return A list of all robots to draw */ List getRobotsToDraw(); - - /** - * Gets the current state og the game - * @return The state the game is currently in - */ - GameState getGameState(); - - /** - * Sets the current state og the game - */ - void setGameState(GameState gameState); - - /** - * Gets the name of the player who won - * @return A string of the player name - */ - String getWinningPlayerName(); - - - RoboRallyClient getClient(); - - void setClient(RoboRallyClient client); - - void setServer(RoboRallyServer server); } diff --git a/src/main/java/inf112/fiasko/roborally/objects/IInteractableGame.java b/src/main/java/inf112/fiasko/roborally/objects/IInteractableGame.java new file mode 100644 index 0000000..29742a8 --- /dev/null +++ b/src/main/java/inf112/fiasko/roborally/objects/IInteractableGame.java @@ -0,0 +1,26 @@ +package inf112.fiasko.roborally.objects; + +import inf112.fiasko.roborally.elementproperties.GameState; + +/** + * This interface describes + */ +public interface IInteractableGame { + /** + * Gets the current state og the game + * @return The state the game is currently in + */ + GameState getGameState(); + + /** + * Sets the state of the game + * @param gameState The new state of the game + */ + void setGameState(GameState gameState); + + /** + * Gets the name of the player who won + * @return A string of the player name + */ + String getWinningPlayerName(); +} diff --git a/src/main/java/inf112/fiasko/roborally/objects/IRoboRallyGame.java b/src/main/java/inf112/fiasko/roborally/objects/IRoboRallyGame.java new file mode 100644 index 0000000..06c334f --- /dev/null +++ b/src/main/java/inf112/fiasko/roborally/objects/IRoboRallyGame.java @@ -0,0 +1,3 @@ +package inf112.fiasko.roborally.objects; + +public interface IRoboRallyGame extends IDrawableGame, IInteractableGame {} diff --git a/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java b/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java index 2caf2d1..5cbd62f 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java +++ b/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java @@ -23,7 +23,7 @@ import java.util.concurrent.TimeUnit; /** * This class represent a game which is drawable using libgdx */ -public class RoboRallyGame implements IDrawableGame { +public class RoboRallyGame implements IRoboRallyGame { private Board gameBoard; private List> cogwheels; private List> conveyorBelts; @@ -33,19 +33,19 @@ public class RoboRallyGame implements IDrawableGame { private final boolean host; private Deck mainDeck; private GameState gameState = GameState.BEGINNING_OF_GAME; - private String nameOfPlayer; - private RoboRallyClient client; + private String playerName; + private final RoboRallyClient client; private RoboRallyServer server; private String winningPlayerName; - public String getNameOfPlayer() { - return nameOfPlayer; + public String getPlayerName() { + return playerName; } - public void setNameOfPlayer(String nameOfPlayer) { - this.nameOfPlayer = nameOfPlayer; + public void setPlayerName(String playerName) { + this.playerName = playerName; } @@ -75,30 +75,17 @@ public class RoboRallyGame implements IDrawableGame { this.gameState = gameState; } - @Override - public RoboRallyClient getClient() { - return client; - } - - @Override - public void setClient(RoboRallyClient client) { - this.client=client; - - } - - @Override - public void setServer(RoboRallyServer server) { - this.server=server; - } - /** * Instantiates a new robo rally game * @param debug Whether to start the game in debugging mode */ - public RoboRallyGame(List playerList, String boardName, boolean host, boolean debug, String name) { - this.nameOfPlayer = name; + public RoboRallyGame(List playerList, String boardName, boolean host, String name, RoboRallyClient client, + RoboRallyServer server, boolean debug) { + this.playerName = name; this.host = host; this.playerList = playerList; + this.client = client; + this.server = server; if (debug) { initializeDebugMode(); } else { @@ -109,10 +96,13 @@ public class RoboRallyGame implements IDrawableGame { /** * Instantiates a new robo rally game */ - public RoboRallyGame(List playerList, String boardName,boolean host,String nameOfPlayer) { - this.nameOfPlayer = nameOfPlayer; + public RoboRallyGame(List playerList, String boardName, boolean host, String playerName, RoboRallyClient client, + RoboRallyServer server) { + this.playerName = playerName; this.host = host; this.playerList = playerList; + this.client = client; + this.server = server; initializeGame(boardName); } @@ -275,7 +265,7 @@ public class RoboRallyGame implements IDrawableGame { for (Connection connection: server.getPlayerNames().keySet()) { String playerName = server.getPlayerNames().get(connection); Player player = getPlayerFromName(playerName); - if(player.getPlayerDeck()!=null) { + if (player != null && player.getPlayerDeck() != null) { server.sendToClient(connection, player.getPlayerDeck()); } } diff --git a/src/main/java/inf112/fiasko/roborally/utility/NetworkUtil.java b/src/main/java/inf112/fiasko/roborally/utility/NetworkUtil.java index 921233b..55bd52a 100644 --- a/src/main/java/inf112/fiasko/roborally/utility/NetworkUtil.java +++ b/src/main/java/inf112/fiasko/roborally/utility/NetworkUtil.java @@ -1,6 +1,7 @@ package inf112.fiasko.roborally.utility; import com.esotericsoftware.kryo.Kryo; +import inf112.fiasko.roborally.elementproperties.Action; import inf112.fiasko.roborally.elementproperties.RobotID; import inf112.fiasko.roborally.networking.containers.ErrorResponse; import inf112.fiasko.roborally.networking.containers.GameStartInfo; @@ -29,5 +30,6 @@ public final class NetworkUtil { kryo.register(Player.class); kryo.register(RobotID.class); kryo.register(ProgrammingCardDeck.class); + kryo.register(Action.class); } } diff --git a/src/test/java/inf112/fiasko/roborally/objects/RoboRallyGameTest.java b/src/test/java/inf112/fiasko/roborally/objects/RoboRallyGameTest.java index 0f4cece..eb1aa03 100644 --- a/src/test/java/inf112/fiasko/roborally/objects/RoboRallyGameTest.java +++ b/src/test/java/inf112/fiasko/roborally/objects/RoboRallyGameTest.java @@ -12,7 +12,8 @@ public class RoboRallyGameTest { @Before public void setUp() { - game = new RoboRallyGame(new ArrayList<>(),"Checkmate.txt",false, "Player1"); + game = new RoboRallyGame(new ArrayList<>(),"Checkmate.txt",false, "Player1", + null, null); } @Test