merge the new developmentbranch into the test branch #39
@@ -1,8 +1,20 @@
|
|||||||
package pp.mdga.server.automaton.game.turn;
|
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.ServerGameLogic;
|
||||||
import pp.mdga.server.automaton.game.AnimationState;
|
|
||||||
import pp.mdga.server.automaton.game.TurnState;
|
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 {
|
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());
|
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.
|
* Constructs a server state of the specified game logic.
|
||||||
*
|
*
|
||||||
@@ -18,15 +46,137 @@ public class PowerCardState extends TurnAutomatonState {
|
|||||||
*/
|
*/
|
||||||
public PowerCardState(TurnState turnAutomaton, ServerGameLogic logic) {
|
public PowerCardState(TurnState turnAutomaton, ServerGameLogic logic) {
|
||||||
super(turnAutomaton, 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
|
@Override
|
||||||
public void enter() {
|
public void enter() {
|
||||||
LOGGER.log(System.Logger.Level.DEBUG, "Exited PowerCardState state.");
|
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
|
@Override
|
||||||
public void exit() {
|
public void exit() {
|
||||||
LOGGER.log(System.Logger.Level.DEBUG, "Entered PowerCardState state.");
|
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