Docs: refine JavaDoc for building effects and controllers

This commit is contained in:
MatteoPellegrino05
2026-05-20 16:52:26 +02:00
parent 884121f4b2
commit 0b24845e9d
9 changed files with 259 additions and 196 deletions
@@ -1,42 +1,39 @@
package it.polimi.ingsw.gc14.Controller;
import it.polimi.ingsw.gc14.Model.*;
import it.polimi.ingsw.gc14.Model.GamePackage.Board;
import it.polimi.ingsw.gc14.Model.GamePackage.CurrentState;
import it.polimi.ingsw.gc14.Model.MiniModel;
import it.polimi.ingsw.gc14.Network.IClient;
import it.polimi.ingsw.gc14.Network.NetworkEvents.*;
import it.polimi.ingsw.gc14.View.IView;
import java.rmi.RemoteException;
import java.util.Map;
import java.util.Objects;
/**
* Controller class that holds all the components of the client, such as view, network client and Game Controller.
* It provides methods to set the client components and to execute requested actions.
* Controller responsible for coordinating the client-side components,
* including the view, the network client and the local mini model.
*
* <p>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.
*
* <p>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
*
* <p>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
*
* <p>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
*
* <p>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
*
* <p>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.
*
* <p>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.
*
* <p>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.
*
* <p>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.
* <p>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)));
}
}
}
}