mirror of
https://github.com/inf112-v20/Fiasko.git
synced 2025-01-31 23:29:36 +01:00
Fikser rekkefølge for metoder og flytter kommentarer fra klasse til interface
This commit is contained in:
parent
c7710deac5
commit
29261f037f
@ -28,20 +28,47 @@ public interface IInteractableGame {
|
||||
*/
|
||||
String getWinningPlayerName();
|
||||
|
||||
void reciveAllProgrammes(ProgamsContainer programs) throws InterruptedException;
|
||||
/**
|
||||
* Continues turn when programs for all players are received from the server
|
||||
* @param programs The programs container received from the server
|
||||
* @throws InterruptedException If interrupted during sleep
|
||||
*/
|
||||
void receiveAllPrograms(ProgamsContainer programs) throws InterruptedException;
|
||||
|
||||
void recivedStayInPowerdown(PowerdownContainer powerdowns);
|
||||
|
||||
List<ProgrammingCard> getProgram();
|
||||
|
||||
int getProgramSize();
|
||||
|
||||
void setPlayerHand(ProgrammingCardDeck playerHand);
|
||||
/**
|
||||
* Continues turn when stay in power down is received from all players
|
||||
* @param powerDowns The power down container received from the server
|
||||
*/
|
||||
void receiveStayInPowerDown(PowerdownContainer powerDowns);
|
||||
|
||||
/**
|
||||
* Gets the hand of this player
|
||||
* @return The hand of this player
|
||||
*/
|
||||
ProgrammingCardDeck getPlayerHand();
|
||||
|
||||
/**
|
||||
* Sets the hand of this player
|
||||
* @param playerHand The new hand of this player
|
||||
*/
|
||||
void setPlayerHand(ProgrammingCardDeck playerHand);
|
||||
|
||||
/**
|
||||
* Gets the amount of cards the player can choose for their program
|
||||
* @return The size of the player's next program
|
||||
*/
|
||||
int getProgramSize();
|
||||
|
||||
/**
|
||||
* Gets the program of this player
|
||||
* @return The program of this player
|
||||
*/
|
||||
List<ProgrammingCard> getProgram();
|
||||
|
||||
/**
|
||||
* Sets the program of this player
|
||||
* @param program The program of this player
|
||||
*/
|
||||
void setProgram(List<ProgrammingCard> program);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,8 +1,6 @@
|
||||
package inf112.fiasko.roborally.objects;
|
||||
|
||||
import com.esotericsoftware.kryonet.Connection;
|
||||
import inf112.fiasko.roborally.elementproperties.Action;
|
||||
import inf112.fiasko.roborally.elementproperties.Direction;
|
||||
import inf112.fiasko.roborally.elementproperties.GameState;
|
||||
import inf112.fiasko.roborally.elementproperties.Position;
|
||||
import inf112.fiasko.roborally.elementproperties.RobotID;
|
||||
@ -16,11 +14,8 @@ import inf112.fiasko.roborally.utility.DeckLoaderUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* This class represent a game which is drawable using libgdx
|
||||
@ -40,22 +35,6 @@ public class RoboRallyGame implements IRoboRallyGame {
|
||||
private ProgrammingCardDeck playerHand;
|
||||
private Phase phase;
|
||||
|
||||
public ProgrammingCardDeck getPlayerHand() {
|
||||
return playerHand;
|
||||
}
|
||||
|
||||
public void setPlayerHand(ProgrammingCardDeck playerHand) {
|
||||
this.playerHand = playerHand;
|
||||
}
|
||||
|
||||
public List<ProgrammingCard> getProgram() {
|
||||
return program;
|
||||
}
|
||||
|
||||
public void setProgram(List<ProgrammingCard> program) {
|
||||
this.program = program;
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiates a new Robo Rally game
|
||||
* @param playerList A list of all the players participating in the game
|
||||
@ -81,9 +60,6 @@ public class RoboRallyGame implements IRoboRallyGame {
|
||||
this.phase = new Phase(gameBoard, playerList, 600, this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Instantiates a new Robo Rally game
|
||||
* @param playerList A list of all the players participating in the game
|
||||
@ -144,22 +120,73 @@ public class RoboRallyGame implements IRoboRallyGame {
|
||||
this.gameState = gameState;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name of the player playing this instance of the game
|
||||
* @return The name of this player
|
||||
*/
|
||||
public String getPlayerName() {
|
||||
return playerName;
|
||||
@Override
|
||||
public ProgrammingCardDeck getPlayerHand() {
|
||||
return playerHand;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the name of the player playing this instance of the game
|
||||
* @param playerName The new name of this player
|
||||
*/
|
||||
public void setPlayerName(String playerName) {
|
||||
this.playerName = playerName;
|
||||
@Override
|
||||
public void setPlayerHand(ProgrammingCardDeck playerHand) {
|
||||
this.playerHand = playerHand;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProgrammingCard> getProgram() {
|
||||
return program;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getProgramSize() {
|
||||
Player player = getPlayerFromName(playerName);
|
||||
if (player != null) {
|
||||
return Math.min(5, 5 - gameBoard.getRobotDamage(player.getRobotID()) + 4);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setProgram(List<ProgrammingCard> program) {
|
||||
this.program = program;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveAllPrograms(ProgamsContainer programs) throws InterruptedException {
|
||||
//Reads data from server and updates player objects
|
||||
Map<String, List<ProgrammingCard>> programMap = programs.getProgram();
|
||||
Map<String, Boolean> powerDown = programs.getPowerdown();
|
||||
String playerName;
|
||||
for (Player player : playerList) {
|
||||
playerName = player.getName();
|
||||
player.setInProgram(programMap.get(playerName));
|
||||
player.setPowerDownNextRound(powerDown.get(playerName));
|
||||
}
|
||||
//Runs 5 phases
|
||||
setGameState(GameState.RUNNING_PROGRAMS);
|
||||
phase.runPhase(1);
|
||||
phase.runPhase(2);
|
||||
phase.runPhase(3);
|
||||
phase.runPhase(4);
|
||||
phase.runPhase(5);
|
||||
|
||||
// Repair robots on repair tiles
|
||||
repairAllRobotsOnRepairTiles();
|
||||
//Updates the host's card deck
|
||||
if (host) {
|
||||
updateLockedProgrammingCardsForAllPlayers();
|
||||
removeNonLockedProgrammingCardsFromPlayers();
|
||||
}
|
||||
sendAllDeadPlayersToServer();
|
||||
// TODO: If this player is in power down, ask if it shall continue
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveStayInPowerDown(PowerdownContainer powerDowns) {
|
||||
for (Player player : playerList) {
|
||||
player.setPowerDownNextRound(powerDowns.getPowerdown().get(player.getName()));
|
||||
}
|
||||
respawnRobots();
|
||||
resetHasTouchedFlagThisTurnForAllRobots();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name of the player that won the game
|
||||
@ -211,75 +238,25 @@ public class RoboRallyGame implements IRoboRallyGame {
|
||||
mainDeck = DeckLoaderUtil.loadProgrammingCardsDeck();
|
||||
}
|
||||
|
||||
new Thread(() -> {
|
||||
try {
|
||||
runTurn();
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
}).start();
|
||||
new Thread(this::runTurn).start();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a player object given a player name
|
||||
* @param name The name of the player to get
|
||||
* @return The corresponding player object or null if no such object exists
|
||||
*/
|
||||
private Player getPlayerFromName(String name) {
|
||||
for (Player player : playerList) {
|
||||
if (player.getName().equals(name)) {
|
||||
return player;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public int getProgramSize(){
|
||||
Player player = getPlayerFromName(playerName);
|
||||
if (player != null) {
|
||||
return Math.min(5, 5 - gameBoard.getRobotDamage(player.getRobotID()) + 4);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs all the steps of one turn in the game
|
||||
* @throws InterruptedException If interrupted while trying to sleep
|
||||
*/
|
||||
private void runTurn() throws InterruptedException {
|
||||
// The method should follow this sequence:
|
||||
/*
|
||||
Tilegne programeringskort
|
||||
|
||||
Programmer roboten
|
||||
|
||||
Gå i power down
|
||||
|
||||
Kjør 5 faser
|
||||
|
||||
Flagg + reprasjonstiles reparerer
|
||||
|
||||
Fjerner ulåste programmeringskort
|
||||
|
||||
Spør om de i power down skal fortsette i power down
|
||||
|
||||
Respawn roboter
|
||||
*/
|
||||
|
||||
private void runTurn() {
|
||||
// Sets the power down status to true on robots that have players who planned one this turn.
|
||||
// Resets players power down for next turn to false.
|
||||
updateRobotPowerDown();
|
||||
// Set damage of robots in power down to 0
|
||||
gameBoard.executePowerdown();
|
||||
if (host) {
|
||||
//Distributes programming cards for all players, and sends a deck to each player
|
||||
distributeProgrammingCardsToPlayers();
|
||||
if (server == null) {
|
||||
System.out.println("Serveren er null");
|
||||
}
|
||||
for (Connection connection: server.getPlayerNames().keySet()) {
|
||||
for (Connection connection : server.getPlayerNames().keySet()) {
|
||||
String playerName = server.getPlayerNames().get(connection);
|
||||
Player player = getPlayerFromName(playerName);
|
||||
if (player != null && player.getPlayerDeck() != null) {
|
||||
@ -287,50 +264,7 @@ public class RoboRallyGame implements IRoboRallyGame {
|
||||
}
|
||||
}
|
||||
}
|
||||
setGameState(GameState.JUST_BEFORE_CHOOSING_CARDS);
|
||||
|
||||
// TODO: Make program for this player, if not in power down
|
||||
// TODO: Ask player for new power down
|
||||
// Run the phases of the game
|
||||
|
||||
|
||||
// TODO: If this player is in power down, ask if it shall continue
|
||||
// Respawn dead robots, as long as they have more lives left
|
||||
}
|
||||
|
||||
public void recivedStayInPowerdown(PowerdownContainer powerdowns){
|
||||
for (Player player:playerList) {
|
||||
player.setPowerDownNextRound(powerdowns.getPowerdown().get(player.getName()));
|
||||
}
|
||||
respawnRobots();
|
||||
resetHasTouchedFlagThisTurnForAllRobots();
|
||||
}
|
||||
|
||||
public void reciveAllProgrammes(ProgamsContainer programs) throws InterruptedException {
|
||||
Map<String,List<ProgrammingCard>> progs = programs.getProgram();
|
||||
Map<String,Boolean> powerdown = programs.getPowerdown();
|
||||
String playername;
|
||||
for (Player player:playerList) {
|
||||
playername = player.getName();
|
||||
player.setInProgram(progs.get(playername));
|
||||
player.setPowerDownNextRound(powerdown.get(playername));
|
||||
}
|
||||
setGameState(GameState.RUNNING_PROGRAMS);
|
||||
phase.runPhase(1);
|
||||
phase.runPhase(2);
|
||||
phase.runPhase(3);
|
||||
phase.runPhase(4);
|
||||
phase.runPhase(5);
|
||||
|
||||
// Repair robots on repair tiles
|
||||
repairAllRobotsOnRepairTiles();
|
||||
if (host) {
|
||||
updateLockedProgrammingCardsForAllPlayers();
|
||||
removeNonLockedProgrammingCardsFromPlayers();
|
||||
}
|
||||
// TODO: If this player is in power down, ask if it shall continue
|
||||
|
||||
|
||||
setGameState(GameState.LOADING);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -472,4 +406,18 @@ public class RoboRallyGame implements IRoboRallyGame {
|
||||
private void setRobotPowerDown(Player player, Boolean powerDownStatus) {
|
||||
gameBoard.setPowerDown(player.getRobotID(), powerDownStatus);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a player object given a player name
|
||||
* @param name The name of the player to get
|
||||
* @return The corresponding player object or null if no such object exists
|
||||
*/
|
||||
private Player getPlayerFromName(String name) {
|
||||
for (Player player : playerList) {
|
||||
if (player.getName().equals(name)) {
|
||||
return player;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user