Update RoboRallyGame.java

Implenterer updatePlayerLockedProgrammingCards og removeNonLockedProgrammingCardsFromPlayers

Co-Authored-By: torlunjen <torlunjen@users.noreply.github.com>
This commit is contained in:
GabrielMagnus 2020-04-02 12:27:50 +02:00
parent 6b3e15dcd7
commit 4738ce6baa

View File

@ -124,7 +124,7 @@ public class RoboRallyGame implements IDrawableGame {
initializePlayers(); initializePlayers();
gameBoard = BoardLoaderUtil.loadBoard("boards/Checkmate.txt", robots); gameBoard = BoardLoaderUtil.loadBoard("boards/Checkmate.txt", robots);
generateTileLists(); generateTileLists();
if (host) { if (host) {
mainDeck = DeckLoaderUtil.loadProgrammingCardsDeck(); mainDeck = DeckLoaderUtil.loadProgrammingCardsDeck();
} }
@ -231,7 +231,6 @@ public class RoboRallyGame implements IDrawableGame {
// Set damage of robots in power down to 0 // Set damage of robots in power down to 0
gameBoard.executePowerdown(); gameBoard.executePowerdown();
if (host) { if (host) {
// TODO: Distribute programming cards to players not in power down
distributeProgrammingCardsToPlayers(); distributeProgrammingCardsToPlayers();
} }
// TODO: Make program for this player, if not in power down // TODO: Make program for this player, if not in power down
@ -245,17 +244,60 @@ public class RoboRallyGame implements IDrawableGame {
// Repair robots on repair tiles // Repair robots on repair tiles
repairAllRobotsOnRepairTiles(); repairAllRobotsOnRepairTiles();
// TODO: Update locked cards deck if (host) {
// TODO: Remove non-locked programming cards updatePlayerLockedProgrammingCards();
removeNonLockedProgrammingCardsFromPlayers();
}
// TODO: If this player is in power down, ask if it shall continue // TODO: If this player is in power down, ask if it shall continue
// Respawn dead robots, as long as they have more lives left // Respawn dead robots, as long as they have more lives left
respawnRobots(); respawnRobots();
} }
/**
* Locks the players programming cards in relation to the robots damage
*/
private void updatePlayerLockedProgrammingCards() {
for (Player player : playerList) {
List<ProgrammingCard> playerProgram = player.getProgram();
ProgrammingCardDeck playerDeck = player.getPlayerDeck();
ProgrammingCardDeck lockedPlayerDeck = player.getLockedPlayerDeck();
int robotDamage = gameBoard.getRobotDamage(player.getRobotID());
if (robotDamage <= 4) {
lockedPlayerDeck.emptyInto(player.getPlayerDeck());
player.setLockedPlayerDeck(lockedPlayerDeck);
continue;
}
for (int i = 1; i <= (robotDamage-4); i++) {
ProgrammingCard card = playerProgram.get(playerProgram.size()-i);
if (card.compareTo(playerDeck.peekTop()) == 0) {
lockedPlayerDeck.draw(playerDeck);
} else {
playerDeck.draw(playerDeck);
}
}
player.setPlayerDeck(playerDeck);
player.setLockedPlayerDeck(lockedPlayerDeck);
}
}
/**
* Moves non-locked player programming cards from their hand back to the main deck
*/
private void removeNonLockedProgrammingCardsFromPlayers() {
for (Player player : playerList) {
ProgrammingCardDeck playerDeck = player.getPlayerDeck();
playerDeck.emptyInto(mainDeck);
player.setPlayerDeck(playerDeck);
}
}
/** /**
* Deals correct amount of cards to active players, based on their robots damage * Deals correct amount of cards to active players, based on their robots damage
*/ */
private void distributeProgrammingCardsToPlayers() { public void distributeProgrammingCardsToPlayers() {
int robotDamage; int robotDamage;
ProgrammingCardDeck playerDeck; ProgrammingCardDeck playerDeck;
mainDeck.shuffle(); mainDeck.shuffle();