From 449c36a5fcffbb6205046c3063a6e3d6622d431c Mon Sep 17 00:00:00 2001 From: torlunjen Date: Tue, 14 Apr 2020 15:13:41 +0200 Subject: [PATCH 1/7] Endret parameter i test metode --- .../java/inf112/fiasko/roborally/objects/RoboRallyGameTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/inf112/fiasko/roborally/objects/RoboRallyGameTest.java b/src/test/java/inf112/fiasko/roborally/objects/RoboRallyGameTest.java index 16ad48c..dbfe085 100644 --- a/src/test/java/inf112/fiasko/roborally/objects/RoboRallyGameTest.java +++ b/src/test/java/inf112/fiasko/roborally/objects/RoboRallyGameTest.java @@ -12,7 +12,7 @@ public class RoboRallyGameTest { @Before public void setUp() { - game = new RoboRallyGame(new ArrayList<>(),"Checkmate.txt",false); + game = new RoboRallyGame(new ArrayList<>(),"Checkmate.txt",false, "Jonny"); } @Test From fe78a2f6666a6c519803301bf41d89dfd95f98c2 Mon Sep 17 00:00:00 2001 From: GabrielMagnus Date: Tue, 14 Apr 2020 15:15:39 +0200 Subject: [PATCH 2/7] Lager en skjerm som viser vinner av spillet Co-Authored-By: torlunjen --- .../game_wrapper/screens/WinnerScreen.java | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/main/java/inf112/fiasko/roborally/game_wrapper/screens/WinnerScreen.java diff --git a/src/main/java/inf112/fiasko/roborally/game_wrapper/screens/WinnerScreen.java b/src/main/java/inf112/fiasko/roborally/game_wrapper/screens/WinnerScreen.java new file mode 100644 index 0000000..7026e08 --- /dev/null +++ b/src/main/java/inf112/fiasko/roborally/game_wrapper/screens/WinnerScreen.java @@ -0,0 +1,76 @@ +package inf112.fiasko.roborally.game_wrapper.screens; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.OrthographicCamera; +import com.badlogic.gdx.scenes.scene2d.InputEvent; +import com.badlogic.gdx.scenes.scene2d.InputListener; +import com.badlogic.gdx.scenes.scene2d.Stage; +import com.badlogic.gdx.scenes.scene2d.ui.TextButton; +import com.badlogic.gdx.utils.viewport.FitViewport; +import com.badlogic.gdx.utils.viewport.Viewport; +import inf112.fiasko.roborally.game_wrapper.RoboRallyWrapper; +import inf112.fiasko.roborally.game_wrapper.SimpleButton; + +public class WinnerScreen extends AbstractScreen { + private final RoboRallyWrapper roboRallyWrapper; + + private final OrthographicCamera camera; + private final Viewport viewport; + private final Stage stage; + + /** + * Instantiates a new winner screen + * @param roboRallyWrapper The Robo Rally wrapper which is parent of this screen + */ + public WinnerScreen(final RoboRallyWrapper roboRallyWrapper) { + camera = new OrthographicCamera(); + viewport = new FitViewport(applicationWidth, applicationHeight, camera); + stage = new Stage(); + stage.setViewport(viewport); + TextButton quitButton = new SimpleButton("Quit", roboRallyWrapper.font).getButton(); + stage.addActor(quitButton); + quitButton.setY(applicationHeight / 2f); + camera.setToOrtho(false, applicationWidth, applicationHeight); + quitButton.addListener(new InputListener() { + @Override + public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) { + Gdx.app.exit(); + return true; + } + }); + quitButton.setX(applicationWidth / 2f + quitButton.getWidth()/2); + this.roboRallyWrapper = roboRallyWrapper; + camera.setToOrtho(false, applicationWidth, applicationHeight); + } + + @Override + public void render(float delta) { + Gdx.gl.glClearColor(0.2f, 1f, 0.2f, 1); + Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); + camera.update(); + roboRallyWrapper.batch.setProjectionMatrix(camera.combined); + + roboRallyWrapper.batch.begin(); + roboRallyWrapper.font.draw(roboRallyWrapper.batch, "The winner is: " + + roboRallyWrapper.roboRallyGame.getWinningPlayerName(),applicationWidth / 2f - 380 / 2f, + applicationHeight / 2f + 100,380, 1, + true); + roboRallyWrapper.font.draw(roboRallyWrapper.batch, "Click the button to exit the game", + applicationWidth / 2f - 380 / 2f,applicationHeight / 2f + 100,380, 1, + true); + roboRallyWrapper.batch.end(); + stage.draw(); + } + + @Override + public void resize(int width, int height) { + viewport.update(width, height); + } + + @Override + public void show() { + Gdx.input.setInputProcessor(stage); + } + +} \ No newline at end of file From 3edc1c384a6c82eebb8a024ffdb01df44a7432e3 Mon Sep 17 00:00:00 2001 From: GabrielMagnus Date: Tue, 14 Apr 2020 15:16:51 +0200 Subject: [PATCH 3/7] Legger til enum for vinnsenario Co-Authored-By: torlunjen --- .../inf112/fiasko/roborally/element_properties/GameState.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/inf112/fiasko/roborally/element_properties/GameState.java b/src/main/java/inf112/fiasko/roborally/element_properties/GameState.java index f9c9dee..7c673aa 100644 --- a/src/main/java/inf112/fiasko/roborally/element_properties/GameState.java +++ b/src/main/java/inf112/fiasko/roborally/element_properties/GameState.java @@ -16,5 +16,7 @@ public enum GameState { //Indicates that the user is in the process of choosing whether to power down CHOOSING_POWER_DOWN, //Indicates that the user is in the process of choosing whether to stay in power down - CHOOSING_STAY_IN_POWER_DOWN + CHOOSING_STAY_IN_POWER_DOWN, + //Indicates that the game is won by a player + GAME_IS_WON } From 0c23036a33c5b2b21a87136da8f432f8444d4a65 Mon Sep 17 00:00:00 2001 From: GabrielMagnus Date: Tue, 14 Apr 2020 15:17:41 +0200 Subject: [PATCH 4/7] Legger til sjekk for om noen har vunnet, og viser vinnerskjermen Co-Authored-By: torlunjen --- .../roborally/game_wrapper/screens/BoardActiveScreen.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/inf112/fiasko/roborally/game_wrapper/screens/BoardActiveScreen.java b/src/main/java/inf112/fiasko/roborally/game_wrapper/screens/BoardActiveScreen.java index 9d14f43..f1b9308 100644 --- a/src/main/java/inf112/fiasko/roborally/game_wrapper/screens/BoardActiveScreen.java +++ b/src/main/java/inf112/fiasko/roborally/game_wrapper/screens/BoardActiveScreen.java @@ -12,6 +12,7 @@ import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.utils.Disposable; import com.badlogic.gdx.utils.viewport.ExtendViewport; import com.badlogic.gdx.utils.viewport.Viewport; +import inf112.fiasko.roborally.element_properties.GameState; import inf112.fiasko.roborally.game_wrapper.RoboRallyWrapper; import inf112.fiasko.roborally.objects.IDrawableGame; import inf112.fiasko.roborally.objects.IDrawableObject; @@ -74,6 +75,11 @@ public class BoardActiveScreen extends AbstractScreen implements InputProcessor roboRallyWrapper.batch.begin(); drawBoard(roboRallyWrapper.batch); roboRallyWrapper.batch.end(); + + // Checks if there has been found a winning player and then changes the screen to display the winning screen + if (roboRallyWrapper.roboRallyGame.getGameState() == GameState.GAME_IS_WON) { + roboRallyWrapper.setScreen(roboRallyWrapper.screenManager.getWinnerScreen(roboRallyWrapper)); + } } @Override From 83e0d2ceee4421e6179eb7e907597fc190575d06 Mon Sep 17 00:00:00 2001 From: GabrielMagnus Date: Tue, 14 Apr 2020 15:18:36 +0200 Subject: [PATCH 5/7] =?UTF-8?q?Legger=20til=20metode=20for=20=C3=A5=20hent?= =?UTF-8?q?e=20ut=20en=20vinnerskjerm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: torlunjen --- .../roborally/game_wrapper/ScreenManager.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/inf112/fiasko/roborally/game_wrapper/ScreenManager.java b/src/main/java/inf112/fiasko/roborally/game_wrapper/ScreenManager.java index 42e29a8..7fca5e8 100644 --- a/src/main/java/inf112/fiasko/roborally/game_wrapper/ScreenManager.java +++ b/src/main/java/inf112/fiasko/roborally/game_wrapper/ScreenManager.java @@ -1,14 +1,7 @@ package inf112.fiasko.roborally.game_wrapper; -import inf112.fiasko.roborally.game_wrapper.screens.BoardActiveScreen; -import inf112.fiasko.roborally.game_wrapper.screens.CardChoiceScreen; -import inf112.fiasko.roborally.game_wrapper.screens.LoadingScreen; -import inf112.fiasko.roborally.game_wrapper.screens.PowerDownScreen; -import inf112.fiasko.roborally.game_wrapper.screens.UsernameScreen; -import inf112.fiasko.roborally.game_wrapper.screens.IPAddressScreen; -import inf112.fiasko.roborally.game_wrapper.screens.LobbyScreen; -import inf112.fiasko.roborally.game_wrapper.screens.StartMenuScreen; +import inf112.fiasko.roborally.game_wrapper.screens.*; /** * Keeps track of screen instances @@ -21,6 +14,19 @@ public class ScreenManager { private UsernameScreen usernameScreen; private IPAddressScreen ipAddressScreen; private LobbyScreen lobbyScreen; + private WinnerScreen winnerScreen; + + /** + * Gets an instance of the winner screen + * @param roboRallyWrapper The Robo Rally launcher instance to use + * @return A winner screen instance + */ + public synchronized WinnerScreen getWinnerScreen(RoboRallyWrapper roboRallyWrapper) { + if (this.winnerScreen == null) { + this.winnerScreen = new WinnerScreen(roboRallyWrapper); + } + return winnerScreen; + } /** * Gets an instance of the power down screen From 48afdfd9f9c879ff1c04938481d938efe6cd01a3 Mon Sep 17 00:00:00 2001 From: GabrielMagnus Date: Tue, 14 Apr 2020 15:19:23 +0200 Subject: [PATCH 6/7] Lager setGameState metode og getWinningPlayerName metode Co-Authored-By: torlunjen --- .../fiasko/roborally/objects/IDrawableGame.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/inf112/fiasko/roborally/objects/IDrawableGame.java b/src/main/java/inf112/fiasko/roborally/objects/IDrawableGame.java index e6ac90c..2273ff1 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/IDrawableGame.java +++ b/src/main/java/inf112/fiasko/roborally/objects/IDrawableGame.java @@ -63,4 +63,15 @@ public interface IDrawableGame { */ 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(); + } From ff2f8a849e61c4f3c59a3975d931dc7d03370858 Mon Sep 17 00:00:00 2001 From: GabrielMagnus Date: Tue, 14 Apr 2020 15:21:48 +0200 Subject: [PATCH 7/7] Lager felt for winningPlayerName og setter og getter til den Co-Authored-By: torlunjen --- .../fiasko/roborally/objects/RoboRallyGame.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java b/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java index a3ee01f..c7be8dc 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java +++ b/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java @@ -30,11 +30,21 @@ public class RoboRallyGame implements IDrawableGame { private final boolean host; private Deck mainDeck; private GameState gameState = GameState.INITIAL_SETUP; + private String winningPlayerName; + + public String getWinningPlayerName() { + return winningPlayerName; + } + + public void setWinningPlayerName(String winningPlayerName) { + this.winningPlayerName = winningPlayerName; + } /** * Returns the gameState of the game * @return the gameState of the game */ + @Override public GameState getGameState(){ return gameState; } @@ -43,6 +53,7 @@ public class RoboRallyGame implements IDrawableGame { * Sets the gameState of the game * @param gameState the gameState */ + @Override public void setGameState(GameState gameState) { this.gameState = gameState; } @@ -499,14 +510,13 @@ public class RoboRallyGame implements IDrawableGame { gameBoard.updateFlagOnRobot(robotID, flag.getElement().getTileType()); robot.setHasTouchedFlagThisTurn(true); if (victoryCheck(robot.getLastFlagVisited(), listOfFlags.size())) { - Player winningPlayer; for (Player player : playerList) { if (player.getRobotID() != robotID) { continue; } - winningPlayer = player; + setWinningPlayerName(player.getName()); + setGameState(GameState.GAME_IS_WON); } - //TODO: Make win screen announcing the winning player } } }