Add: JavaDoc for Game constructors and game action methods
This commit is contained in:
@@ -123,10 +123,21 @@ public class Game implements Serializable {
|
|||||||
return playersList.stream().filter(x->x.getUserName().equals(Username)).findFirst().orElse(null);
|
return playersList.stream().filter(x->x.getUserName().equals(Username)).findFirst().orElse(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the configured number of players for this game.
|
||||||
|
*
|
||||||
|
* @return the configured number of players for this game.
|
||||||
|
*/
|
||||||
public int getNPlayers() {
|
public int getNPlayers() {
|
||||||
return nPlayers;
|
return nPlayers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a game with the specified number of players.
|
||||||
|
*
|
||||||
|
* @param nPlayers the configured number of players for the game.
|
||||||
|
* @throws IllegalArgumentException if {@code nPlayers < 0} or {@code nPlayers > 5}.
|
||||||
|
*/
|
||||||
public Game(int nPlayers) throws IllegalArgumentException{
|
public Game(int nPlayers) throws IllegalArgumentException{
|
||||||
if(nPlayers < 0||nPlayers > 5)
|
if(nPlayers < 0||nPlayers > 5)
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
@@ -141,11 +152,24 @@ public class Game implements Serializable {
|
|||||||
playersList = new ArrayList<>();
|
playersList = new ArrayList<>();
|
||||||
OptionalCardQueue = new LinkedList<>();
|
OptionalCardQueue = new LinkedList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a game with 0 configured players.
|
||||||
|
*/
|
||||||
public Game()
|
public Game()
|
||||||
{
|
{
|
||||||
this(0);
|
this(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to add the specified player to the game.
|
||||||
|
* The operation succeeds only if the configured number of players is not 0,
|
||||||
|
* the current game stage is {@code WAITING}, and the player is not already present.
|
||||||
|
* If the number of players reaches the configured maximum, the game is initialized.
|
||||||
|
*
|
||||||
|
* @param player the player to add to the game.
|
||||||
|
* @return {@code true} if the player is successfully added, {@code false} otherwise.
|
||||||
|
*/
|
||||||
public boolean addPlayer(Player player) {
|
public boolean addPlayer(Player player) {
|
||||||
if(this.nPlayers==0)
|
if(this.nPlayers==0)
|
||||||
{
|
{
|
||||||
@@ -162,6 +186,12 @@ public class Game implements Serializable {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the game after all required players have been added.
|
||||||
|
* The method creates the appropriate order logic card according to the number of players,
|
||||||
|
* selects the first current player, and updates the game stage to {@code SLOT_CHOICE}.
|
||||||
|
*/
|
||||||
public void init() {
|
public void init() {
|
||||||
|
|
||||||
switch (nPlayers) {
|
switch (nPlayers) {
|
||||||
@@ -182,7 +212,18 @@ public class Game implements Serializable {
|
|||||||
currentState.GameStageUpdate(GameStages.SLOT_CHOICE);
|
currentState.GameStageUpdate(GameStages.SLOT_CHOICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
//region Cotroller Methods
|
//region Controller Methods
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to assign the slot at the specified index to the specified player.
|
||||||
|
* The operation succeeds only if the index is valid, the current game stage is {@code SLOT_CHOICE},
|
||||||
|
* the specified player is the current player, and the selected slot is not already assigned.
|
||||||
|
* If the slot is successfully assigned, the next player setup is triggered.
|
||||||
|
*
|
||||||
|
* @param player the player performing the slot choice.
|
||||||
|
* @param slotIndex the index of the selected slot.
|
||||||
|
* @return {@code true} if the slot choice succeeds, {@code false} otherwise.
|
||||||
|
*/
|
||||||
public boolean SlotChoiceByIndex(Player player, int slotIndex) {
|
public boolean SlotChoiceByIndex(Player player, int slotIndex) {
|
||||||
if(slotIndex<0 || slotIndex>=slotMap.size())
|
if(slotIndex<0 || slotIndex>=slotMap.size())
|
||||||
return false;
|
return false;
|
||||||
@@ -206,6 +247,20 @@ public class Game implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//region Drawing Methods
|
//region Drawing Methods
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to draw the upper tribe card at the specified index for the specified player.
|
||||||
|
* The operation succeeds only if the index is valid, the game stage is {@code RESOLVING_ACTIONS},
|
||||||
|
* the specified player is the current player, at least one upper card draw is still available,
|
||||||
|
* and the selected tribe card is not an event card.
|
||||||
|
* If successful, the card is inserted into the player's collection, removed from the board,
|
||||||
|
* and the number of remaining upper draws is decremented.
|
||||||
|
* If both upper and lower draws become zero, the next player setup is triggered.
|
||||||
|
*
|
||||||
|
* @param player the player performing the draw.
|
||||||
|
* @param cardIndex the index of the upper tribe card to draw.
|
||||||
|
* @return {@code true} if the draw succeeds, {@code false} otherwise.
|
||||||
|
*/
|
||||||
public boolean DrawUpperTribeCardByIndex(Player player,int cardIndex) {
|
public boolean DrawUpperTribeCardByIndex(Player player,int cardIndex) {
|
||||||
if( cardIndex<0 || cardIndex >=board.upperListTribe.size())
|
if( cardIndex<0 || cardIndex >=board.upperListTribe.size())
|
||||||
return false;
|
return false;
|
||||||
@@ -232,6 +287,20 @@ public class Game implements Serializable {
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to draw the lower tribe card at the specified index for the specified player.
|
||||||
|
* The operation succeeds only if the index is valid, the game stage is {@code RESOLVING_ACTIONS},
|
||||||
|
* the specified player is the current player, at least one lower card draw is still available,
|
||||||
|
* and the selected tribe card is not an event card.
|
||||||
|
* If successful, the card is inserted into the player's collection, removed from the board,
|
||||||
|
* and the number of remaining lower draws is decremented.
|
||||||
|
* If both lower and upper draws become zero, the next player setup is triggered.
|
||||||
|
*
|
||||||
|
* @param player the player performing the draw.
|
||||||
|
* @param cardIndex the index of the lower tribe card to draw.
|
||||||
|
* @return {@code true} if the draw succeeds, {@code false} otherwise.
|
||||||
|
*/
|
||||||
public boolean DrawLowerTribeCardByIndex(Player player, int cardIndex) {
|
public boolean DrawLowerTribeCardByIndex(Player player, int cardIndex) {
|
||||||
if( cardIndex<0 || cardIndex >=board.lowerListTribe.size())
|
if( cardIndex<0 || cardIndex >=board.lowerListTribe.size())
|
||||||
return false;
|
return false;
|
||||||
@@ -261,6 +330,18 @@ public class Game implements Serializable {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to draw the upper building card at the specified index for the specified player.
|
||||||
|
* The operation succeeds only if the index is valid, the game stage is {@code RESOLVING_ACTIONS},
|
||||||
|
* the specified player is the current player, at least one upper card draw is still available,
|
||||||
|
* and the selected building card can be bought by the player.
|
||||||
|
* If successful, the building card is removed from the board and the number of remaining upper draws is decremented.
|
||||||
|
* If both upper and lower draws become zero, the next player setup is triggered.
|
||||||
|
*
|
||||||
|
* @param player the player performing the draw.
|
||||||
|
* @param cardIndex the index of the upper building card to draw.
|
||||||
|
* @return {@code true} if the draw succeeds, {@code false} otherwise.
|
||||||
|
*/
|
||||||
public boolean DrawUpperBuildingCardByIndex(Player player,int cardIndex) {
|
public boolean DrawUpperBuildingCardByIndex(Player player,int cardIndex) {
|
||||||
if( cardIndex<0 || cardIndex >=board.upperListBuilding.size())
|
if( cardIndex<0 || cardIndex >=board.upperListBuilding.size())
|
||||||
return false;
|
return false;
|
||||||
@@ -287,6 +368,19 @@ public class Game implements Serializable {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to draw the lower building card at the specified index for the specified player.
|
||||||
|
* The operation succeeds only if the index is valid, the game stage is {@code RESOLVING_ACTIONS},
|
||||||
|
* the specified player is the current player, at least one lower card draw is still available,
|
||||||
|
* and the selected building card can be bought by the player.
|
||||||
|
* If successful, the building card is removed from the board and the number of remaining lower draws is decremented.
|
||||||
|
* If both lower and upper draws become zero, the next player setup is triggered.
|
||||||
|
*
|
||||||
|
* @param player the player performing the draw.
|
||||||
|
* @param cardIndex the index of the lower building card to draw.
|
||||||
|
* @return {@code true} if the draw succeeds, {@code false} otherwise.
|
||||||
|
*/
|
||||||
public boolean DrawLowerBuildingCardByIndex(Player player,int cardIndex) {
|
public boolean DrawLowerBuildingCardByIndex(Player player,int cardIndex) {
|
||||||
if( cardIndex<0 || cardIndex >=board.lowerListBuilding.size())
|
if( cardIndex<0 || cardIndex >=board.lowerListBuilding.size())
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user