mirror of
https://github.com/magefree/mage.git
synced 2025-12-29 23:12:10 -08:00
* Added possibility to allow other players to see hand cards of player.
This commit is contained in:
parent
d0e1107a3e
commit
7e145d2cfd
33 changed files with 1093 additions and 190 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue