mirror of
https://github.com/magefree/mage.git
synced 2025-12-24 04:22:01 -08:00
Add mulligan options to NewTableDialog, passing mulligan information to games.
This commit is contained in:
parent
7885a42168
commit
4a232b148c
51 changed files with 532 additions and 364 deletions
|
|
@ -1,19 +1,18 @@
|
|||
|
||||
package mage.game;
|
||||
|
||||
import java.util.*;
|
||||
import mage.constants.MultiplayerAttackOption;
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.RangeOfInfluence;
|
||||
import mage.game.mulligan.CanadianHighlanderMulligan;
|
||||
import mage.game.mulligan.Mulligan;
|
||||
import mage.game.turn.TurnMod;
|
||||
import mage.players.Player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public abstract class GameCanadianHighlanderImpl extends GameImpl {
|
||||
|
||||
public GameCanadianHighlanderImpl(MultiplayerAttackOption attackOption, RangeOfInfluence range, int freeMulligans, int startLife) {
|
||||
super(attackOption, range, new CanadianHighlanderMulligan(freeMulligans), startLife);
|
||||
public GameCanadianHighlanderImpl(MultiplayerAttackOption attackOption, RangeOfInfluence range, Mulligan mulligan, int startLife) {
|
||||
super(attackOption, range, mulligan, startLife);
|
||||
}
|
||||
|
||||
public GameCanadianHighlanderImpl(final GameCanadianHighlanderImpl game) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
package mage.game;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.InfoEffect;
|
||||
|
|
@ -12,11 +10,14 @@ import mage.constants.MultiplayerAttackOption;
|
|||
import mage.constants.PhaseStep;
|
||||
import mage.constants.RangeOfInfluence;
|
||||
import mage.constants.Zone;
|
||||
import mage.game.mulligan.VancouverMulligan;
|
||||
import mage.game.mulligan.Mulligan;
|
||||
import mage.game.turn.TurnMod;
|
||||
import mage.players.Player;
|
||||
import mage.watchers.common.CommanderInfoWatcher;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public abstract class GameCommanderImpl extends GameImpl {
|
||||
|
||||
// private final Map<UUID, Cards> mulliganedCards = new HashMap<>();
|
||||
|
|
@ -25,8 +26,8 @@ public abstract class GameCommanderImpl extends GameImpl {
|
|||
protected boolean alsoLibrary; // replace commander going to library
|
||||
protected boolean startingPlayerSkipsDraw = true;
|
||||
|
||||
public GameCommanderImpl(MultiplayerAttackOption attackOption, RangeOfInfluence range, int freeMulligans, int startLife) {
|
||||
super(attackOption, range, new VancouverMulligan(freeMulligans), startLife);
|
||||
public GameCommanderImpl(MultiplayerAttackOption attackOption, RangeOfInfluence range, Mulligan mulligan, int startLife) {
|
||||
super(attackOption, range, mulligan, startLife);
|
||||
}
|
||||
|
||||
public GameCommanderImpl(final GameCommanderImpl game) {
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.cards.repository.CardInfo;
|
||||
import mage.cards.repository.CardRepository;
|
||||
import mage.constants.*;
|
||||
import mage.game.mulligan.VancouverMulligan;
|
||||
import mage.game.mulligan.Mulligan;
|
||||
import mage.game.turn.TurnMod;
|
||||
import mage.players.Player;
|
||||
import mage.watchers.common.CommanderInfoWatcher;
|
||||
|
|
@ -31,8 +31,8 @@ public abstract class GameTinyLeadersImpl extends GameImpl {
|
|||
protected boolean alsoLibrary; // replace also commander going to library
|
||||
protected boolean startingPlayerSkipsDraw = true;
|
||||
|
||||
public GameTinyLeadersImpl(MultiplayerAttackOption attackOption, RangeOfInfluence range, int freeMulligans, int startLife) {
|
||||
super(attackOption, range, new VancouverMulligan(freeMulligans), startLife);
|
||||
public GameTinyLeadersImpl(MultiplayerAttackOption attackOption, RangeOfInfluence range, Mulligan mulligan, int startLife) {
|
||||
super(attackOption, range, mulligan, startLife);
|
||||
}
|
||||
|
||||
public GameTinyLeadersImpl(final GameTinyLeadersImpl game) {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import mage.constants.MatchTimeLimit;
|
|||
import mage.constants.MultiplayerAttackOption;
|
||||
import mage.constants.RangeOfInfluence;
|
||||
import mage.constants.SkillLevel;
|
||||
import mage.game.mulligan.MulliganType;
|
||||
import mage.game.result.ResultProtos;
|
||||
import mage.players.PlayerType;
|
||||
|
||||
|
|
@ -47,6 +48,7 @@ public class MatchOptions implements Serializable {
|
|||
* Time each player has during the game to play using his\her priority.
|
||||
*/
|
||||
protected MatchTimeLimit matchTimeLimit; // 0 = no priorityTime handling
|
||||
protected MulliganType mulliganType;
|
||||
|
||||
/*public MatchOptions(String name, String gameType) {
|
||||
this.name = name;
|
||||
|
|
@ -257,4 +259,16 @@ public class MatchOptions implements Serializable {
|
|||
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
public void setMullgianType(MulliganType mulliganType) {
|
||||
this.mulliganType = mulliganType;
|
||||
}
|
||||
|
||||
public MulliganType getMulliganType() {
|
||||
if (mulliganType == null) {
|
||||
return MulliganType.GAME_DEFAULT;
|
||||
}
|
||||
return mulliganType;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
43
Mage/src/main/java/mage/game/mulligan/MulliganType.java
Normal file
43
Mage/src/main/java/mage/game/mulligan/MulliganType.java
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
package mage.game.mulligan;
|
||||
|
||||
public enum MulliganType {
|
||||
|
||||
GAME_DEFAULT("Game Default"),
|
||||
VANCOUVER("Vancouver"),
|
||||
PARIS("Paris"),
|
||||
LONDON("London"),
|
||||
CANADIAN_HIGHLANDER("Canadian Highlander");
|
||||
|
||||
private final String displayName;
|
||||
|
||||
MulliganType(String displayName) {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
|
||||
public Mulligan getMulligan(int freeMulligans) {
|
||||
switch(this) {
|
||||
case PARIS:
|
||||
return new ParisMulligan(freeMulligans);
|
||||
case CANADIAN_HIGHLANDER:
|
||||
return new CanadianHighlanderMulligan(freeMulligans);
|
||||
case LONDON:
|
||||
return new LondonMulligan(freeMulligans);
|
||||
default:
|
||||
case VANCOUVER:
|
||||
return new VancouverMulligan(freeMulligans);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
public MulliganType orDefault(MulliganType defaultMulligan) {
|
||||
if (this == GAME_DEFAULT) {
|
||||
return defaultMulligan;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue