From 7312347615a4afea311ee908b695df9a36d9f0fe Mon Sep 17 00:00:00 2001 From: GabrielMagnus Date: Tue, 31 Mar 2020 15:52:03 +0200 Subject: [PATCH] =?UTF-8?q?Legger=20til=20funksjonalitet=20for=20=C3=A5=20?= =?UTF-8?q?dele=20ut=20kort=20til=20aktive=20spillere?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Parprogrammering med Torbjørn --- .../roborally/objects/RoboRallyGame.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java b/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java index d5d4602..24554b1 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java +++ b/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java @@ -26,6 +26,7 @@ public class RoboRallyGame implements IDrawableGame { private List> fastConveyorBelts; private List playerList; private final boolean host; + private Deck mainDeck; /** * Instantiates a new robo rally game * @param debug Whether to start the game in debugging mode @@ -123,6 +124,7 @@ public class RoboRallyGame implements IDrawableGame { initializePlayers(); gameBoard = BoardLoaderUtil.loadBoard("boards/Checkmate.txt", robots); generateTileLists(); + mainDeck = DeckLoaderUtil.loadProgrammingCardsDeck(); new Thread(() -> { try { @@ -227,6 +229,7 @@ public class RoboRallyGame implements IDrawableGame { gameBoard.executePowerdown(); if (host) { // TODO: Distribute programming cards to players not in power down + distributeProgrammingCardsToPlayers(); } // TODO: Make program for this player, if not in power down // TODO: Ask player for new power down @@ -239,12 +242,34 @@ public class RoboRallyGame implements IDrawableGame { // Repair robots on repair tiles repairAllRobotsOnRepairTiles(); + // TODO: Update locked cards deck // TODO: Remove non-locked programming cards // TODO: If this player is in power down, ask if it shall continue // Respawn dead robots, as long as they have more lives left respawnRobots(); } + private void distributeProgrammingCardsToPlayers() { + int robotDamage; + ProgrammingCardDeck playerDeck; + mainDeck.shuffle(); + + for (Player player : playerList) { + RobotID robot = player.getRobotID(); + playerDeck = player.getPlayerDeck(); + if (gameBoard.getPowerDown(robot)) { + continue; + } + robotDamage = gameBoard.getRobotDamage(robot); + if (robotDamage >= 9) { + continue; + } + if (playerDeck.isEmpty()) { + playerDeck.draw(mainDeck,9-robotDamage); + } else throw new IllegalStateException("Player deck must be empty!"); + } + } + /** * Runs one phase as defined in the Robo Rally rulebook * @param phaseNumber The number of the phase to run