* Added possibility to allow other players to see hand cards of player.

This commit is contained in:
LevelX2 2014-11-24 23:03:21 +01:00
parent d0e1107a3e
commit 7e145d2cfd
33 changed files with 1093 additions and 190 deletions

View file

@ -43,5 +43,10 @@ public enum PlayerAction {
CONCEDE,
MANA_AUTO_PAYMENT_ON,
MANA_AUTO_PAYMENT_OFF,
RESET_AUTO_SELECT_REPLACEMENT_EFFECTS
RESET_AUTO_SELECT_REPLACEMENT_EFFECTS,
REVOKE_PERMISSIONS_TO_SEE_HAND_CARDS,
REQUEST_PERMISSION_TO_SEE_HAND_CARDS,
ADD_PERMISSION_TO_SEE_HAND_CARDS,
PERMISSION_REQUESTS_ALLOWED_ON,
PERMISSION_REQUESTS_ALLOWED_OFF
}

View file

@ -49,6 +49,7 @@ public class MatchPlayer {
private boolean doneSideboarding;
private int priorityTimeLeft;
public MatchPlayer(Player player, Deck deck) {
this.player = player;
this.deck = deck;

View file

@ -519,4 +519,13 @@ public interface Player extends MageItem, Copyable<Player> {
*/
void setCastSourceIdWithoutMana(UUID sourceId);
UUID getCastSourceIdWithoutMana();
// permission handling to show hand cards
void addPermissionToShowHandCards(UUID watcherUserId);
boolean hasUserPermissionToSeeHand(UUID userId);
void revokePermissionToSeeHandCards();
void setRequestToShowHandCardsAllowed(boolean requestAllowed);
boolean isRequestToShowHandCardsAllowed();
Set<UUID> getUsersAllowedToSeeHandCards();
}

View file

@ -200,6 +200,10 @@ public abstract class PlayerImpl implements Player, Serializable {
protected boolean isGameUnderControl = true;
protected UUID turnController;
protected Set<UUID> playersUnderYourControl = new HashSet<>();
protected Set<UUID> usersAllowedToSeeHandCards = new HashSet<>();
protected boolean requestsAllowedToSeeHandCards = true;
protected List<UUID> attachments = new ArrayList<>();
protected boolean topCardRevealed = false;
@ -214,12 +218,12 @@ public abstract class PlayerImpl implements Player, Serializable {
protected UserData userData;
/**
* During some steps we can't play anything
*/
protected final Map<PhaseStep, Step.StepPart> silentPhaseSteps = new HashMap<PhaseStep, Step.StepPart>() {{
put(PhaseStep.DECLARE_ATTACKERS, Step.StepPart.PRE);
}};
protected final Map<PhaseStep, Step.StepPart> silentPhaseSteps = new HashMap<PhaseStep, Step.StepPart>()
{{ put(PhaseStep.DECLARE_ATTACKERS, Step.StepPart.PRE);}};
public PlayerImpl(String name, RangeOfInfluence range) {
this(UUID.randomUUID());
@ -286,6 +290,9 @@ public abstract class PlayerImpl implements Player, Serializable {
this.topCardRevealed = player.topCardRevealed;
this.playersUnderYourControl.clear();
this.playersUnderYourControl.addAll(player.playersUnderYourControl);
this.usersAllowedToSeeHandCards.addAll(player.usersAllowedToSeeHandCards);
this.requestsAllowedToSeeHandCards = player.requestsAllowedToSeeHandCards;
this.isTestMode = player.isTestMode;
this.isGameUnderControl = player.isGameUnderControl;
@ -361,6 +368,9 @@ public abstract class PlayerImpl implements Player, Serializable {
this.priorityTimeLeft = player.getPriorityTimeLeft();
this.reachedNextTurnAfterLeaving = player.hasReachedNextTurnAfterLeaving();
this.castSourceIdWithoutMana = player.getCastSourceIdWithoutMana();
this.usersAllowedToSeeHandCards.addAll(player.getUsersAllowedToSeeHandCards());
this.requestsAllowedToSeeHandCards = player.isRequestToShowHandCardsAllowed();
}
@Override
@ -1771,6 +1781,13 @@ public abstract class PlayerImpl implements Player, Serializable {
passedUntilEndOfTurn = false;
passedUntilNextMain = false;
passedUntilStackResolved = false;
break;
case PERMISSION_REQUESTS_ALLOWED_OFF:
this.setRequestToShowHandCardsAllowed(false);
break;
case PERMISSION_REQUESTS_ALLOWED_ON:
this.setRequestToShowHandCardsAllowed(true);
break;
}
logger.trace("PASS Priority: " + playerAction.toString());
}
@ -2721,5 +2738,35 @@ public abstract class PlayerImpl implements Player, Serializable {
public boolean getPassedUntilStackResolved() {
return passedUntilStackResolved;
}
@Override
public void revokePermissionToSeeHandCards() {
usersAllowedToSeeHandCards.clear();
}
@Override
public void addPermissionToShowHandCards(UUID watcherUserId) {
usersAllowedToSeeHandCards.add(watcherUserId);
}
@Override
public void setRequestToShowHandCardsAllowed(boolean requestAllowed) {
this.requestsAllowedToSeeHandCards = requestAllowed;
}
@Override
public boolean isRequestToShowHandCardsAllowed() {
return requestsAllowedToSeeHandCards;
}
@Override
public boolean hasUserPermissionToSeeHand(UUID userId) {
return usersAllowedToSeeHandCards.contains(userId);
}
@Override
public Set<UUID> getUsersAllowedToSeeHandCards() {
return usersAllowedToSeeHandCards;
}
}

View file

@ -12,12 +12,14 @@ public class UserData implements Serializable {
protected int groupId;
protected int avatarId;
protected boolean showAbilityPickerForced;
protected boolean allowRequestShowHandCards;
protected UserSkipPrioritySteps userSkipPrioritySteps;
public UserData(UserGroup userGroup, int avatarId, boolean showAbilityPickerForced, UserSkipPrioritySteps userSkipPrioritySteps) {
public UserData(UserGroup userGroup, int avatarId, boolean showAbilityPickerForced, boolean allowRequestShowHandCards, UserSkipPrioritySteps userSkipPrioritySteps) {
this.groupId = userGroup.getGroupId();
this.avatarId = avatarId;
this.showAbilityPickerForced = showAbilityPickerForced;
this.allowRequestShowHandCards = allowRequestShowHandCards;
this.userSkipPrioritySteps = userSkipPrioritySteps;
}
@ -45,6 +47,14 @@ public class UserData implements Serializable {
this.showAbilityPickerForced = showAbilityPickerForced;
}
public void setAllowRequestShowHandCards(boolean allowRequestShowHandCards) {
this.allowRequestShowHandCards = allowRequestShowHandCards;
}
public boolean allowRequestShowHandCards() {
return allowRequestShowHandCards;
}
public UserSkipPrioritySteps getUserSkipPrioritySteps() {
return userSkipPrioritySteps;
}