From 0b24845e9d15d742ed41f63b0b9e6a58f048587c Mon Sep 17 00:00:00 2001
From: MatteoPellegrino05 It receives user actions from the view, performs basic client-side
+ * checks and forwards valid requests to the network client.
*/
public class ClientController {
- /** Game Controller of the client */
+ /** Local mini model representing the client-side game state. */
public MiniModel miniModel;
- /** View of the client */
+ /** View of the client. */
public IView view;
- /** Network client (either TCP or RMI) */
+ /** Network client, either TCP or RMI. */
private IClient client;
- /**
- * The username of the client associated with this event.
- */
+ /** Username associated with this client. */
public String myUsername;
-
-
/**
- * Constructs the ClientController.
- * Initializes all attributes.
- * @param view the client view (either TUI or GUI)
+ * Constructs a client controller with the specified view.
+ *
+ * The network client is initially unset and an empty local mini model
+ * is created.
+ *
+ * @param view the client view, either TUI or GUI.
*/
public ClientController(IView view) {
this.view = view;
@@ -44,19 +41,19 @@ public class ClientController {
this.miniModel = new MiniModel();
}
-
/**
* Sets the network client.
- * @param client the client to set (either TCP or RMI)
+ *
+ * @param client the client to set, either TCP or RMI.
*/
public void setClient(IClient client) {
this.client = client;
}
-
/**
- * Sets the model in the GameController and updates the view.
- * @param model the model to set
+ * Sets the local mini model and updates the view accordingly.
+ *
+ * @param model the mini model to set.
*/
public void setModel(MiniModel model) {
this.miniModel = model;
@@ -64,131 +61,139 @@ public class ClientController {
}
/**
- * Sets the username of the client associated with this event.
+ * Sets the username associated with this client.
*
* @param username the username to set.
*/
- public void setMyUsername (String username) {
- this.myUsername=username;
+ public void setMyUsername(String username) {
+ this.myUsername = username;
}
-
/**
* Displays an error message in the view.
- * @param message the error message to display
+ *
+ * @param message the error message to display.
*/
public void onError(String message) {
view.showError(message);
}
-
/**
* Requests to draw a tribe card from the upper list.
- * Creates a NetworkEvent and sends it through the network client.
- * @param playerUsername the name of the player performing the action
- * @param pos the index of the card to draw
+ *
+ * If the specified player is not the current player, an error message
+ * is shown. Otherwise, the request is forwarded to the network client.
+ *
+ * @param playerUsername the username of the player performing the action.
+ * @param pos the index of the card to draw.
*/
public void drawUpperTribeCard(String playerUsername, int pos) {
-
- if(!Objects.equals(playerUsername, miniModel.currentState.getCurrentPlayer().getUserName()))
- {
+ if (!Objects.equals(playerUsername, miniModel.currentState.getCurrentPlayer().getUserName())) {
view.showError("It's not your turn!");
- }
- else
- {
+ } else {
client.drawUpperTribeCard(playerUsername, pos);
}
}
-
/**
* Requests to draw a tribe card from the lower list.
- * Creates a NetworkEvent and sends it through the network client.
- * @param playerUsername the name of the player performing the action
- * @param pos the index of the card to draw
+ *
+ * If the specified player is not the current player, an error message
+ * is shown. Otherwise, the request is forwarded to the network client.
+ *
+ * @param playerUsername the username of the player performing the action.
+ * @param pos the index of the card to draw.
*/
- public void drawLowerTribeCard(String playerUsername,int pos) {
- if(!Objects.equals(playerUsername, miniModel.currentState.getCurrentPlayer().getUserName()))
+ public void drawLowerTribeCard(String playerUsername, int pos) {
+ if (!Objects.equals(playerUsername, miniModel.currentState.getCurrentPlayer().getUserName())) {
view.showError("It's not your turn!");
- else
+ } else {
client.drawLowerTribeCard(playerUsername, pos);
+ }
}
-
/**
* Requests to draw a building card from the upper list.
- * Creates a NetworkEvent and sends it through the network client.
- * @param playerUsername the name of the player performing the action
- * @param pos the index of the card to draw
+ *
+ * If the specified player is not the current player, an error message
+ * is shown. Otherwise, the request is forwarded to the network client.
+ *
+ * @param playerUsername the username of the player performing the action.
+ * @param pos the index of the card to draw.
*/
- public void drawUpperBuildingCard(String playerUsername,int pos) {
- if(!Objects.equals(playerUsername, miniModel.currentState.getCurrentPlayer().getUserName()))
+ public void drawUpperBuildingCard(String playerUsername, int pos) {
+ if (!Objects.equals(playerUsername, miniModel.currentState.getCurrentPlayer().getUserName())) {
view.showError("It's not your turn!");
- else {
- client.drawUpperBuildingCard(playerUsername,pos);
+ } else {
+ client.drawUpperBuildingCard(playerUsername, pos);
}
-
}
-
/**
* Requests to draw a building card from the lower list.
- * Creates a NetworkEvent and sends it through the network client.
- * @param playerUsername the name of the player performing the action
- * @param pos the index of the card to draw
+ *
+ * If the specified player is not the current player, an error message
+ * is shown. Otherwise, the request is forwarded to the network client.
+ *
+ * @param playerUsername the username of the player performing the action.
+ * @param pos the index of the card to draw.
*/
- public void drawLowerBuildingCard(String playerUsername,int pos) {
- if(!Objects.equals(playerUsername,miniModel.currentState.getCurrentPlayer().getUserName()))
+ public void drawLowerBuildingCard(String playerUsername, int pos) {
+ if (!Objects.equals(playerUsername, miniModel.currentState.getCurrentPlayer().getUserName())) {
view.showError("It's not your turn!");
- else {
- client.drawLowerBuildingCard(playerUsername,pos);
+ } else {
+ client.drawLowerBuildingCard(playerUsername, pos);
}
}
-
/**
- * Requests to skip turn .
- * This action is available only when the player cannot draw any tribe card.
- * @param playerUsername the name of the player performing the action
+ * Requests to skip the current turn.
+ *
+ * If the specified player is not the current player, an error message
+ * is shown. Otherwise, the request is forwarded to the network client.
+ *
+ * @param playerUsername the username of the player performing the action.
*/
public void skipTurn(String playerUsername) {
- if(!Objects.equals(playerUsername,miniModel.currentState.getCurrentPlayer().getUserName()))
+ if (!Objects.equals(playerUsername, miniModel.currentState.getCurrentPlayer().getUserName())) {
view.showError("It's not your turn!");
- else {
+ } else {
client.skipTurn(playerUsername);
}
}
-
/**
- * Used to perform the slot choice action for the specified player at the specified position.
- * @param playerUsername the name of the player performing the action
- * @param pos the index of the selected slot
+ * Requests the selection of a slot by the specified player.
+ *
+ * If the specified player is not the current player, an error message
+ * is shown. Otherwise, the request is forwarded to the network client.
+ *
+ * @param playerUsername the username of the player performing the action.
+ * @param pos the index of the selected slot.
*/
- public void slotChoice(String playerUsername,int pos) {
- if(!Objects.equals(playerUsername, miniModel.currentState.getCurrentPlayer().getUserName()))
+ public void slotChoice(String playerUsername, int pos) {
+ if (!Objects.equals(playerUsername, miniModel.currentState.getCurrentPlayer().getUserName())) {
view.showError("It's not your turn!");
- else {
- client.slotChoice(playerUsername,pos);
+ } else {
+ client.slotChoice(playerUsername, pos);
}
}
/**
* Handles the selection of a totem by the specified player.
*
- * If the player is not the current one, an error message is shown.
- * Otherwise, the selected totem is retrieved from the available totems
- * and the choice is forwarded to the client.
+ * If the specified player is not the current player, an error message
+ * is shown. Otherwise, the selected totem is retrieved from the available
+ * totems list and the choice is forwarded to the network client.
*
* @param playerUsername the username of the player making the choice.
- * @param pos the position of the selected totem in the available totems list.
+ * @param pos the index of the selected totem in the available totems list.
*/
- public void totemChoice(String playerUsername,int pos) {
- if(!Objects.equals(playerUsername, miniModel.currentState.getCurrentPlayer().getUserName()))
+ public void totemChoice(String playerUsername, int pos) {
+ if (!Objects.equals(playerUsername, miniModel.currentState.getCurrentPlayer().getUserName())) {
view.showError("It's not your turn!");
- else {
+ } else {
client.totemChoice(playerUsername, String.valueOf(miniModel.availableTotems.get(pos)));
}
}
-
-}
+}
\ No newline at end of file
diff --git a/src/main/java/it/polimi/ingsw/gc14/Controller/GameController.java b/src/main/java/it/polimi/ingsw/gc14/Controller/GameController.java
index 382b2f6..25f42de 100644
--- a/src/main/java/it/polimi/ingsw/gc14/Controller/GameController.java
+++ b/src/main/java/it/polimi/ingsw/gc14/Controller/GameController.java
@@ -5,9 +5,10 @@ import it.polimi.ingsw.gc14.Model.Player;
import it.polimi.ingsw.gc14.Model.Totems;
/**
- * Controller class that manages interactions between the client-side logic
- * and the {@link Game} model.
- * It provides methods to add players and to perform game actions by delegating them to the model.
+ * Controller responsible for managing interactions with the {@link Game} model.
+ *
+ * It provides methods to update the game state by delegating player-related
+ * actions and game actions to the underlying model.
*/
public class GameController {
@@ -36,7 +37,8 @@ public class GameController {
*
* @param username the username of the player who disconnected.
* @return {@code true} if the disconnection is handled successfully,
- * {@code false} if no player with the specified username exists.
+ * {@code false} if no player with the specified username exists
+ * or if the operation fails.
*/
public boolean DisconnectedPlayer(String username)
{
@@ -51,7 +53,8 @@ public class GameController {
*
* @param username the username of the player who reconnected.
* @return {@code true} if the reconnection is handled successfully,
- * {@code false} if no player with the specified username exists.
+ * {@code false} if no player with the specified username exists
+ * or if the operation fails.
*/
public boolean ReconnectPlayer(String username)
{
@@ -83,19 +86,21 @@ public class GameController {
* Attempts to add a new player with the specified username to the game model.
*
* @param username the username of the player to add.
- * @return {@code true} if the player is successfully added, {@code false} otherwise.
+ * @return {@code true} if the player is successfully added,
+ * {@code false} otherwise.
*/
public boolean addPlayer(String username) {
return model.addPlayer(new Player(username));
}
/**
- * Attempts to draw an upper tribe card for the specified player from the specified position.
+ * Attempts to draw an upper tribe card for the specified player
+ * from the specified position.
*
* @param playerUsername the username of the player performing the action.
* @param pos the position of the upper tribe card to draw.
- * @return {@code true} if the action succeeds, {@code false} if the player does not exist
- * or if the draw operation fails.
+ * @return {@code true} if the action succeeds,
+ * {@code false} if the player does not exist or if the draw operation fails.
*/
public boolean drawUpperTribeCard(String playerUsername,int pos) {
Player player= model.getPlayerByUsername(playerUsername);
@@ -105,12 +110,13 @@ public class GameController {
}
/**
- * Attempts to draw a lower tribe card for the specified player from the specified position.
+ * Attempts to draw a lower tribe card for the specified player
+ * from the specified position.
*
* @param playerUsername the username of the player performing the action.
* @param pos the position of the lower tribe card to draw.
- * @return {@code true} if the action succeeds, {@code false} if the player does not exist
- * or if the draw operation fails.
+ * @return {@code true} if the action succeeds,
+ * {@code false} if the player does not exist or if the draw operation fails.
*/
public boolean drawLowerTribeCard(String playerUsername,int pos) {
Player player= model.getPlayerByUsername(playerUsername);
@@ -120,12 +126,13 @@ public class GameController {
}
/**
- * Attempts to draw an upper building card for the specified player from the specified position.
+ * Attempts to draw an upper building card for the specified player
+ * from the specified position.
*
* @param playerUsername the username of the player performing the action.
* @param pos the position of the upper building card to draw.
- * @return {@code true} if the action succeeds, {@code false} if the player does not exist
- * or if the draw operation fails.
+ * @return {@code true} if the action succeeds,
+ * {@code false} if the player does not exist or if the draw operation fails.
*/
public boolean drawUpperBuildingCard(String playerUsername,int pos) {
Player player= model.getPlayerByUsername(playerUsername);
@@ -135,12 +142,13 @@ public class GameController {
}
/**
- * Attempts to draw a lower building card for the specified player from the specified position.
+ * Attempts to draw a lower building card for the specified player
+ * from the specified position.
*
* @param playerUsername the username of the player performing the action.
* @param pos the position of the lower building card to draw.
- * @return {@code true} if the action succeeds, {@code false} if the player does not exist
- * or if the draw operation fails.
+ * @return {@code true} if the action succeeds,
+ * {@code false} if the player does not exist or if the draw operation fails.
*/
public boolean drawLowerBuildingCard(String playerUsername,int pos) {
Player player= model.getPlayerByUsername(playerUsername);
@@ -153,9 +161,9 @@ public class GameController {
/**
* Skips the card drawing action for the specified player.
*
- * @param playerUsername the username of the player who wants to skip the turn action.
- * @return {@code true} if the skip action is valid and successfully performed;
- * {@code false} if the player does not exist or the action is not valid.
+ * @param playerUsername the username of the player performing the action.
+ * @return {@code true} if the skip action is valid and successfully performed,
+ * {@code false} if the player does not exist or if the action is not valid.
*/
public boolean SkipTurn(String playerUsername) {
Player player= model.getPlayerByUsername(playerUsername);
@@ -167,12 +175,13 @@ public class GameController {
/**
- * Attempts to perform the slot choice action for the specified player at the specified position.
+ * Attempts to perform the slot choice action for the specified player
+ * at the specified position.
*
* @param playerUsername the username of the player performing the action.
* @param pos the position of the chosen slot.
- * @return {@code true} if the action succeeds, {@code false} if the player does not exist
- * or if the slot choice operation fails.
+ * @return {@code true} if the action succeeds,
+ * {@code false} if the player does not exist or if the slot choice operation fails.
*/
public boolean slotChoice(String playerUsername,int pos) {
Player player= model.getPlayerByUsername(playerUsername);
@@ -185,9 +194,10 @@ public class GameController {
* Applies the totem choice made by the player associated with the specified username.
*
* @param playerUsername the username of the player making the choice.
- * @param totem the name of the selected totem.
+ * @param totem the name of the selected totem.
* @return {@code true} if the choice is handled successfully,
- * {@code false} if no player with the specified username exists.
+ * {@code false} if no player with the specified username exists
+ * or if the choice operation fails.
*/
public boolean TotemChoice(String playerUsername,String totem) {
Player player= model.getPlayerByUsername(playerUsername);
@@ -195,4 +205,4 @@ public class GameController {
return false;
return model.TotemChoice(player, Totems.valueOf(totem));
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building0.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building0.java
index 6d122eb..4c9bfb4 100644
--- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building0.java
+++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building0.java
@@ -8,28 +8,34 @@ import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
/**
- * From the moment you buy this building, every time you complete a set of 6 different characters, you gain 5 food.
- * Note: sets of characters already present before purchasing the building do not count.
+ * Building effect that grants 5 food for each new complete set of
+ * 6 different character types obtained after purchasing this building.
+ *
+ * Character sets already completed before the building is purchased
+ * are stored during initialization and do not provide food.
*/
public class Building0 extends BuildingCard {
/**
- * The purchased attribute is used to indicate whether the card has already been initialized.
+ * Indicates whether the building effect has already been initialized
+ * after purchase.
*/
boolean purchased ;
/**
- * The numSet attribute indicates how many complete sets the player has.
+ * Number of complete character sets already counted by this building effect.
*/
private int numSet;
/**
- * Constructor of the building.
+ * Creates a building with the specified image identifier, era, price
+ * and prestige value.
*
* @param idImage the image identifier of the building.
* @param era the game era of the building.
* @param price the price in food of the building.
- * @param prestigeValue the number of Prestige Points gained from this building at the end of the game.
+ * @param prestigeValue the number of Prestige Points granted by this building
+ * at the end of the game.
*/
public Building0(String idImage,int era,int price,int prestigeValue) {
super(idImage,era,price,prestigeValue);
@@ -40,10 +46,12 @@ public class Building0 extends BuildingCard {
}
/**
- * Constructor of the building
- * @param era The game era of the building.
- * @param price The price (in food) of the building.
- * @param prestigeValue The number of Prestige Points gained from this building at the end of the game.
+ * Creates a building with the specified era, price and prestige value.
+ *
+ * @param era the game era of the building.
+ * @param price the price in food of the building.
+ * @param prestigeValue the number of Prestige Points granted by this building
+ * at the end of the game.
*/
public Building0(int era,int price,int prestigeValue) {
super(era,price,prestigeValue);
@@ -54,9 +62,12 @@ public class Building0 extends BuildingCard {
}
/**
- * Method used to purchase the building. It also handles its initialization.
- * @param player The player who buys the building.
- * @return The outcome of the operation.
+ * Attempts to purchase the building and initializes its effect if the
+ * purchase succeeds.
+ *
+ * @param player the player who attempts to buy the building.
+ * @return {@code true} if the building is successfully purchased and initialized,
+ * {@code false} otherwise.
*/
@Override
public boolean buy(Player player)
@@ -68,9 +79,12 @@ public class Building0 extends BuildingCard {
}
/**
- * Initializes the building by counting the number of complete sets at the moment of purchase.
- * The building can only be initialized once.
- * @param player The player who owns the building, whose cards are counted to determine the number of sets.
+ * Initializes the building effect by storing the number of complete
+ * character sets already owned by the player at the moment of purchase.
+ *
+ * The initialization is performed only once.
+ *
+ * @param player the player who owns the building.
*/
public void initialize(Player player)
{
@@ -88,8 +102,13 @@ public class Building0 extends BuildingCard {
}
/**
- * Method to clone the building: it creates an exact copy.
- * @return The new copy of the building
+ * Creates a new building instance with the same configuration values
+ * as this card.
+ *
+ * The runtime state of the effect, such as initialization status and
+ * counted character sets, is not copied.
+ *
+ * @return a new building card with the same base properties.
*/
@Override
public BuildingCard clone() {
@@ -97,10 +116,13 @@ public class Building0 extends BuildingCard {
}
/**
- * Calculates the current number of card sets and subtracts the previous value (i.e., the number of newly obtained sets).
- * The player gains an amount of food equal to 5 times this result.
- * @param player The player who owns the building.
- * @throws IllegalArgumentException thrown if the specified player does not own this card.
+ * Applies the building effect to the specified player.
+ *
+ * The method counts the complete character sets currently owned by the player
+ * and grants 5 food for each set completed since the last stored value.
+ *
+ * @param player the player who owns the building.
+ * @throws IllegalArgumentException if the specified player does not own this card.
*/
@Override
public void applyEffect(Player player) throws IllegalArgumentException {
@@ -120,4 +142,4 @@ public class Building0 extends BuildingCard {
numSet=min_temp;
};
-}
+}
\ No newline at end of file
diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building1.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building1.java
index 3d182d7..f3d84df 100644
--- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building1.java
+++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building1.java
@@ -5,27 +5,31 @@ import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
/**
- * During the Sustenance Event, you have a discount of 1 food token on the total you
- * would have to pay, for each of the indicated characters in your tribe.
+ * Building effect that grants a discount of 1 food during the Sustenance Event
+ * for each character of the indicated type present in the player's tribe.
*/
public class Building1 extends BuildingCard {
/**
- * The icon attribute indicates the character type involved in the building effect.
+ * Character type involved in the building effect.
*/
private CharacterType icon ;
/**
- * @return The character type associated with this building effect.
+ * Returns the character type associated with this building effect.
+ *
+ * @return the character type associated with this building effect.
*/
public CharacterType getIcon() {return icon;}
/**
- * Constructor of the building.
- * @param era The game era of the building.
- * @param price The price (in food) of the building.
- * @param prestigeValue The number of Prestige Points gained from this building at the end of the game.
- * @param icon The character type used by the building effect.
+ * Creates a building with the specified era, price, prestige value
+ * and character type involved in its effect.
+ *
+ * @param era the game era of the building.
+ * @param price the price in food of the building.
+ * @param prestigeValue the number of Prestige Points gained from this building at the end of the game.
+ * @param icon the character type used by the building effect.
*/
public Building1(int era, int price,int prestigeValue, CharacterType icon) {
super(era,price,prestigeValue);
@@ -35,7 +39,8 @@ public class Building1 extends BuildingCard {
}
/**
- * Constructor of the building.
+ * Creates a building with the specified image identifier, era, price,
+ * prestige value and character type involved in its effect.
*
* @param idIMG the image identifier of the building.
* @param era the game era of the building.
@@ -51,8 +56,10 @@ public class Building1 extends BuildingCard {
}
/**
- * Method to clone the building: it creates an exact copy.
- * @return The new copy of the building.
+ * Creates a new building instance with the same configuration values
+ * as this card.
+ *
+ * @return a new building card with the same base properties and icon.
*/
@Override
public BuildingCard clone() {
@@ -60,17 +67,13 @@ public class Building1 extends BuildingCard {
}
/**
- * Prints a string representation of this {@code Building1}. This specific variation is used in the {@code Game}'s
- * toString to print a more detailed version.
- * includes:
- *
This class defines the specific behavior and effects of building card 10. + *
A complete set contains one character card of each {@link CharacterType}. */ public class Building10 extends BuildingCard { @@ -53,8 +54,9 @@ public class Building10 extends BuildingCard { /** * Applies the effect of this building card to the specified player. - * The effect grants 6 prestige points for each complete set of character cards. - * owned by the player, where a complete set contains one card of each. + * + *
The effect grants 6 Prestige Points for each complete set of character + * cards owned by the player, where a complete set contains one card of each * {@link CharacterType}. * * @param player the player to whom the effect is applied. diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building11.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building11.java index 25ff457..9871d87 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building11.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building11.java @@ -6,9 +6,11 @@ import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType; import it.polimi.ingsw.gc14.Model.Player; /** - * Represents the building card number 11. + * At the end of the game, the player gains Prestige Points based on the number + * of cards of the indicated character type in their tribe. * - *
This class defines the specific behavior and effects of building card 11. + *
The gained amount is equal to the number of matching character cards + * multiplied by the building's prestige multiplier. */ public class Building11 extends BuildingCard { @@ -85,8 +87,8 @@ public class Building11 extends BuildingCard { * The effect grants prestige points equal to the number of cards of the * associated CharacterType owned by the player, multiplied by the prestige multiplier. * - * @param player the player to whom the effect is applied- - * @throws IllegalArgumentException if the player does not own this building card- + * @param player the player to whom the effect is applied. + * @throws IllegalArgumentException if the player does not own this building card. */ @Override public void applyEffect(Player player) throws IllegalArgumentException { @@ -96,15 +98,10 @@ public class Building11 extends BuildingCard { } /** - * Prints a string representation of this {@code Building1}. This specific variation is used in the {@code Game}'s - * toString to print a more detailed version. - *
includes: - *
This class defines the specific behavior and effects of building card 13. + * At the end of the game, this building grants 25 Prestige Points + * to the player who owns it. */ public class Building13 extends BuildingCard{ @@ -49,7 +48,8 @@ public class Building13 extends BuildingCard{ } /** - * Applies the effect of this building card to the specified player. + * Applies the effect of this building card to the specified player, + * granting 25 Prestige Points. * * @param player the player to whom the effect is applied. * @throws IllegalArgumentException if the player does not own this building card. diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4.java index adca5f9..f25bd89 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4.java @@ -8,23 +8,28 @@ import it.polimi.ingsw.gc14.Model.Player; import java.util.HashMap; /** - * From the moment you purchase this building, every time you obtain a pair of identical inventors, you gain 3 food. - * This effect doesn't apply to already owned pairs at the time of purchase. + * Building effect that grants 3 food for each new pair of identical inventors + * obtained after purchasing this building. + * + *
Pairs of identical inventors already owned at the moment of purchase + * are stored during initialization and do not provide food. */ public class Building4 extends BuildingCard { /** - * The purchased attribute is used to indicate whether the card has already been initialized. + * Indicates whether the building effect has already been initialized + * after purchase. */ boolean purchased ; /** - * The numPair attribute indicates how many pairs of inventors the player has. + * Number of inventor pairs already counted by this building effect. */ int numPair; /** - * Constructor of the building + * Creates a building with the specified era, price and prestige value. + * * @param era The game era of the building. * @param price The price (in food) of the building. * @param prestigeValue The number of Prestige Points gained from this building at the end of the game. @@ -36,7 +41,8 @@ public class Building4 extends BuildingCard { } /** - * Constructor of the building. + * Creates a building with the specified image identifier, era, price + * and prestige value. * * @param idIMG the image identifier of the building. * @param era the game era of the building. @@ -50,9 +56,12 @@ public class Building4 extends BuildingCard { } /** - * Initializes the building by counting the number of pairs of inventors at the moment of purchase. - * The building can only be initialized once. - * @param player the player who owns the building, whose inventors are counted to determine the number of pairs. + * Initializes the building effect by storing the number of pairs of identical + * inventors already owned by the player at the moment of purchase. + * + *
The initialization is performed only once. + * + * @param player the player who owns the building. */ public void initialize(Player player) { @@ -79,9 +88,12 @@ public class Building4 extends BuildingCard { } /** - * Method used to purchase the building. It also handles its initialization. + * Attempts to purchase the building and initializes its effect if the + * purchase succeeds. + * * @param player The player who buys the building. - * @return The outcome of the operation. + * @return {@code true} if the building is successfully purchased and initialized, + * {@code false} otherwise. */ @Override public boolean buy(Player player) @@ -93,8 +105,13 @@ public class Building4 extends BuildingCard { } /** - * Method to clone the building: it creates an exact copy. - * @return The new copy of the building. + * Creates a new building instance with the same configuration values + * as this card. + * + *
The runtime state of the effect, such as initialization status and + * counted inventor pairs, is not copied. + * + * @return a new building card with the same base properties. */ @Override public BuildingCard clone() { @@ -102,8 +119,11 @@ public class Building4 extends BuildingCard { } /** - * Calculates the current number of pairs and subtracts the previous value (i.e., the number of newly obtained pairs). - * The player gains an amount of food equal to 3 times this result. + * Applies the building effect to the specified player. + * + *
The method counts the current number of pairs of identical inventors + * and grants 3 food for each pair obtained since the last stored value. + * * @param player The player who owns the building. * @throws IllegalArgumentException Thrown if the specified player does not own this card. */ @@ -132,4 +152,4 @@ public class Building4 extends BuildingCard { player.addFood(3*(temp-numPair)); numPair = temp; }; -} +} \ No newline at end of file diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building8.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building8.java index be87fa5..924fea5 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building8.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building8.java @@ -47,7 +47,11 @@ public class Building8 extends BuildingCard { } /** - * For each builder in the player's hand, the player gains double the Prestige Point indicated on the builder card. + * Applies the building effect by granting additional Prestige Points equal to + * the Prestige Value of each Builder card owned by the player. + * + *
This effectively doubles the contribution of Builder cards to the final score. + * * @param player The player who owns the building. * @throws IllegalArgumentException Thrown if the specified player does not own this building. */ @@ -60,4 +64,4 @@ public class Building8 extends BuildingCard { } } -} +} \ No newline at end of file