merge the new developmentbranch into the test branch #39
@@ -1,8 +1,20 @@
|
||||
package pp.mdga.server.automaton.game.turn;
|
||||
|
||||
import pp.mdga.game.Piece;
|
||||
import pp.mdga.game.card.PowerCard;
|
||||
import pp.mdga.message.server.DiceNowMessage;
|
||||
import pp.mdga.message.server.PossibleCardMessage;
|
||||
import pp.mdga.server.ServerGameLogic;
|
||||
import pp.mdga.server.automaton.game.AnimationState;
|
||||
import pp.mdga.server.automaton.game.TurnState;
|
||||
import pp.mdga.server.automaton.game.turn.powercard.ChoosePowerCardState;
|
||||
import pp.mdga.server.automaton.game.turn.powercard.PowerCardAutomatonState;
|
||||
import pp.mdga.server.automaton.game.turn.powercard.ShieldCardState;
|
||||
import pp.mdga.server.automaton.game.turn.powercard.SwapCardState;
|
||||
import pp.mdga.server.automaton.game.turn.powercard.TurboCardState;
|
||||
import pp.mdga.visitor.ServerCardVisitor;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class PowerCardState extends TurnAutomatonState {
|
||||
/**
|
||||
@@ -10,6 +22,22 @@ public class PowerCardState extends TurnAutomatonState {
|
||||
*/
|
||||
private static final System.Logger LOGGER = System.getLogger(PowerCardState.class.getName());
|
||||
|
||||
/**
|
||||
* Create PowerCardState states.
|
||||
*/
|
||||
private PowerCardAutomatonState currentState;
|
||||
private final ChoosePowerCardState choosePowerCardState;
|
||||
private final ShieldCardState shieldCardState;
|
||||
private final SwapCardState swapCardState;
|
||||
private final TurboCardState turboCardState;
|
||||
|
||||
/**
|
||||
* Create PowerCardState attributes.
|
||||
*/
|
||||
private ServerCardVisitor visitor;
|
||||
private PowerCard selectedCard;
|
||||
private final Set<Piece> selectedPieces = new HashSet<>();
|
||||
|
||||
/**
|
||||
* Constructs a server state of the specified game logic.
|
||||
*
|
||||
@@ -18,15 +46,137 @@ public class PowerCardState extends TurnAutomatonState {
|
||||
*/
|
||||
public PowerCardState(TurnState turnAutomaton, ServerGameLogic logic) {
|
||||
super(turnAutomaton, logic);
|
||||
this.choosePowerCardState = new ChoosePowerCardState(this, logic);
|
||||
this.shieldCardState = new ShieldCardState(this, logic);
|
||||
this.swapCardState = new SwapCardState(this, logic);
|
||||
this.turboCardState = new TurboCardState(this, logic);
|
||||
this.setCurrentState(this.choosePowerCardState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enter() {
|
||||
LOGGER.log(System.Logger.Level.DEBUG, "Exited PowerCardState state.");
|
||||
this.visitor = new ServerCardVisitor(this.turnAutomaton.getPlayer());
|
||||
for (PowerCard card: this.turnAutomaton.getPlayer().getHandCards()) {
|
||||
card.accept(this.visitor);
|
||||
}
|
||||
|
||||
if (this.visitor.getCards().isEmpty()) {
|
||||
this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new DiceNowMessage());
|
||||
this.turnAutomaton.setCurrentState(this.turnAutomaton.getRollDiceState());
|
||||
} else {
|
||||
this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new PossibleCardMessage(this.visitor.getCards()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exit() {
|
||||
LOGGER.log(System.Logger.Level.DEBUG, "Entered PowerCardState state.");
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be used to add the given piece parameter to the selectedPieces attribute of PowerCardState
|
||||
* class.
|
||||
*
|
||||
* @param piece as the new selected piece as a Piece object.
|
||||
*/
|
||||
public void addSelectedPiece(Piece piece) {
|
||||
this.selectedPieces.add(piece);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be used to return currentState attribute of PowerCardState class.
|
||||
*
|
||||
* @return currentState as a PowerCardAutomatonState object.
|
||||
*/
|
||||
public PowerCardAutomatonState getCurrentState() {
|
||||
return this.currentState;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be used to return choosePowerCardState attribute of PowerCardState class.
|
||||
*
|
||||
* @return choosePowerCardState as a ChoosePowerCardState object.
|
||||
*/
|
||||
public ChoosePowerCardState getChoosePowerCardState() {
|
||||
return this.choosePowerCardState;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be used to return shieldCardState attribute of PowerCardState class.
|
||||
*
|
||||
* @return shieldCardState as a ShieldCardState object.
|
||||
*/
|
||||
public ShieldCardState getShieldCardState() {
|
||||
return this.shieldCardState;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be used to return swapCardState attribute of PowerCardState class.
|
||||
*
|
||||
* @return swapCardState as a SwapCardState object.
|
||||
*/
|
||||
public SwapCardState getSwapCardState() {
|
||||
return this.swapCardState;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be used to return turboCardState attribute of PowerCardState class.
|
||||
*
|
||||
* @return turboCardState as a TurboCardState object.
|
||||
*/
|
||||
public TurboCardState getTurboCardState() {
|
||||
return this.turboCardState;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be used to return visitor attribute of PowerCardState class.
|
||||
*
|
||||
* @return visitor as a ServerCardVisitor object.
|
||||
*/
|
||||
public ServerCardVisitor getVisitor() {
|
||||
return this.visitor;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be used to return selectedPieces attribute of PowerCardState class.
|
||||
*
|
||||
* @return selectedCard as a PowerCard object.
|
||||
*/
|
||||
public PowerCard getSelectedCard() {
|
||||
return this.selectedCard;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be used to return selectedPieces attribute of PowerCardState class.
|
||||
*
|
||||
* @return selectedPieces as a Set of Piece objects.
|
||||
*/
|
||||
public Set<Piece> getSelectedPieces() {
|
||||
return this.selectedPieces;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be used to set currentState attribute of PowerCardState class to the given state parameter.
|
||||
* In Addition, the currentState will be exited, changed and entered.
|
||||
*
|
||||
* @param state as the new currentState attribute as a PowerCardAutomatonState object.
|
||||
*/
|
||||
public void setCurrentState(PowerCardAutomatonState state) {
|
||||
if (this.currentState != null) {
|
||||
this.currentState.exit();
|
||||
}
|
||||
this.currentState = state;
|
||||
this.currentState.enter();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be used to set selectedCard attribute of PowerCardState class to the given selectedCard
|
||||
* parameter.
|
||||
*
|
||||
* @param selectedCard as the new selectedCard attribute as a PowerCard object.
|
||||
*/
|
||||
public void setSelectedCard(PowerCard selectedCard) {
|
||||
this.selectedCard = selectedCard;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user