diff --git a/.gitattributes b/.gitattributes index 1c1b0a532b1..22f0ba289df 100644 --- a/.gitattributes +++ b/.gitattributes @@ -14205,6 +14205,7 @@ src/main/java/forge/game/event/FlipCoinEvent.java -text src/main/java/forge/game/event/LandPlayedEvent.java -text src/main/java/forge/game/event/LifeLossEvent.java -text src/main/java/forge/game/event/ManaBurnEvent.java -text +src/main/java/forge/game/event/MulliganEvent.java -text src/main/java/forge/game/event/PoisonCounterEvent.java -text src/main/java/forge/game/event/SetTappedEvent.java -text src/main/java/forge/game/event/ShuffleEvent.java -text diff --git a/src/main/java/forge/control/input/InputMulligan.java b/src/main/java/forge/control/input/InputMulligan.java index c1d10ecb0aa..1874503549f 100644 --- a/src/main/java/forge/control/input/InputMulligan.java +++ b/src/main/java/forge/control/input/InputMulligan.java @@ -84,9 +84,9 @@ public class InputMulligan extends Input { @Override public final void selectButtonCancel() { final Player humanPlayer = Singletons.getControl().getPlayer(); - final int newHand = humanPlayer.doMulligan(); + humanPlayer.doMulligan(); - if (newHand == 0) { + if (humanPlayer.getCardsIn(ZoneType.Hand).isEmpty()) { this.end(); } else { ButtonUtil.enableAllFocusOk(); diff --git a/src/main/java/forge/game/GameState.java b/src/main/java/forge/game/GameState.java index 1cf4df89fff..c21dafd7941 100644 --- a/src/main/java/forge/game/GameState.java +++ b/src/main/java/forge/game/GameState.java @@ -118,8 +118,12 @@ public class GameState { endOfTurn = new EndOfTurn(this); endOfCombat = new EndOfCombat(this); + if ( match0.getGameType() == GameType.Quest) + events.register(Singletons.getModel().getQuest()); // this one listens to player's mulligans ATM + events.register(Singletons.getControl().getSoundSystem()); events.register(gameLog); + } /** diff --git a/src/main/java/forge/game/event/MulliganEvent.java b/src/main/java/forge/game/event/MulliganEvent.java new file mode 100644 index 00000000000..2baa7348645 --- /dev/null +++ b/src/main/java/forge/game/event/MulliganEvent.java @@ -0,0 +1,15 @@ +package forge.game.event; + +import forge.game.player.Player; + +/** + * TODO: Write javadoc for this type. + * + */ +public class MulliganEvent extends Event { + + public final Player player; + public MulliganEvent(Player p) { + player = p; + } +} diff --git a/src/main/java/forge/game/player/HumanPlayer.java b/src/main/java/forge/game/player/HumanPlayer.java index dba11169373..49633907fd5 100644 --- a/src/main/java/forge/game/player/HumanPlayer.java +++ b/src/main/java/forge/game/player/HumanPlayer.java @@ -24,13 +24,10 @@ import forge.Card; import forge.Singletons; import forge.card.spellability.SpellAbility; import forge.control.input.Input; -import forge.game.GameType; import forge.game.GameState; import forge.game.zone.ZoneType; import forge.gui.GuiChoose; import forge.gui.GuiDialog; -import forge.quest.QuestController; -import forge.quest.bazaar.QuestItemType; /** *
@@ -131,19 +128,6 @@ public class HumanPlayer extends Player {
return PlayerType.HUMAN;
}
- @Override
- public final int doMulligan() {
- int newHand = super.doMulligan();
- final QuestController quest = Singletons.getModel().getQuest();
- final boolean isQuest = Singletons.getModel().getMatch().getGameType().equals(GameType.Quest);
- if (isQuest && quest.getAssets().hasItem(QuestItemType.SLEIGHT) && (getStats().getMulliganCount() == 1)) {
- drawCard();
- newHand++;
- getStats().notifyOpeningHandSize(newHand);
- }
- return newHand;
- }
-
/* (non-Javadoc)
* @see forge.game.player.Player#getController()
*/
diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java
index dd0698f0376..7705c11f586 100644
--- a/src/main/java/forge/game/player/Player.java
+++ b/src/main/java/forge/game/player/Player.java
@@ -61,6 +61,7 @@ import forge.game.event.CardDiscardedEvent;
import forge.game.event.DrawCardEvent;
import forge.game.event.LandPlayedEvent;
import forge.game.event.LifeLossEvent;
+import forge.game.event.MulliganEvent;
import forge.game.event.PoisonCounterEvent;
import forge.game.event.ShuffleEvent;
import forge.game.phase.PhaseHandler;
@@ -1322,20 +1323,21 @@ public abstract class Player extends GameEntity implements Comparable