package inf112.fiasko.roborally.objects; import inf112.fiasko.roborally.elementproperties.GameState; import inf112.fiasko.roborally.networking.containers.PowerDownContainer; import inf112.fiasko.roborally.networking.containers.ProgamsContainer; import java.util.List; /** * This interface describes */ public interface InteractableGame { /** * 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(); /** * Sets the name of the player that won the game * * @param winningPlayerName The player winning the game */ void setWinningPlayerName(String winningPlayerName); /** * 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; /** * 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 getProgram(); /** * Sets the program of this player * * @param program The program of this player */ void setProgram(List program); }