From 66d3ad1b1580015e2d35965b8a7b216a5046ecbb Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Tue, 21 Dec 2010 23:25:54 -0500 Subject: [PATCH 1/2] updated poms with new version --- Mage.Client/manifest.mf | 2 +- Mage.Client/pom.xml | 2 +- Mage.Common/pom.xml | 2 +- Mage.Plugins/Mage.Card.Plugin/pom.xml | 2 +- Mage.Plugins/Mage.Counter.Plugin/pom.xml | 2 +- Mage.Plugins/Mage.Rating.Plugin/pom.xml | 2 +- Mage.Plugins/Mage.Theme.Plugin/pom.xml | 2 +- Mage.Plugins/pom.xml | 2 +- Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml | 2 +- Mage.Server.Plugins/Mage.Deck.Limited/pom.xml | 2 +- Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml | 2 +- Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml | 2 +- Mage.Server.Plugins/Mage.Player.AI/pom.xml | 2 +- Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml | 2 +- Mage.Server.Plugins/Mage.Player.Human/pom.xml | 2 +- Mage.Server.Plugins/pom.xml | 2 +- Mage.Server/pom.xml | 2 +- Mage.Server/src/main/java/mage/server/Main.java | 2 +- Mage.Sets/pom.xml | 2 +- Mage.Tests/pom.xml | 2 +- Mage/pom.xml | 2 +- pom.xml | 4 ++-- 22 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Mage.Client/manifest.mf b/Mage.Client/manifest.mf index 1574df4a2d..3ccfa98e1d 100644 --- a/Mage.Client/manifest.mf +++ b/Mage.Client/manifest.mf @@ -1,3 +1,3 @@ Manifest-Version: 1.0 X-COMMENT: Main-Class will be added automatically by build - +SplashScreen-Image: splash.jpg diff --git a/Mage.Client/pom.xml b/Mage.Client/pom.xml index f8bd7c6ac6..e8feb48e2f 100644 --- a/Mage.Client/pom.xml +++ b/Mage.Client/pom.xml @@ -6,7 +6,7 @@ org.mage mage-root - 0.5 + 0.5.1 org.mage diff --git a/Mage.Common/pom.xml b/Mage.Common/pom.xml index d4d436faea..6f7a950f33 100644 --- a/Mage.Common/pom.xml +++ b/Mage.Common/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 0.5 + 0.5.1 Mage-Common diff --git a/Mage.Plugins/Mage.Card.Plugin/pom.xml b/Mage.Plugins/Mage.Card.Plugin/pom.xml index 5e938fffb6..0ba9c9f7e4 100644 --- a/Mage.Plugins/Mage.Card.Plugin/pom.xml +++ b/Mage.Plugins/Mage.Card.Plugin/pom.xml @@ -7,7 +7,7 @@ org.mage Mage-Plugins - 0.5 + 0.5.1 Mage-Card-Plugin diff --git a/Mage.Plugins/Mage.Counter.Plugin/pom.xml b/Mage.Plugins/Mage.Counter.Plugin/pom.xml index 8f28a84f5a..05f31efa2b 100644 --- a/Mage.Plugins/Mage.Counter.Plugin/pom.xml +++ b/Mage.Plugins/Mage.Counter.Plugin/pom.xml @@ -7,7 +7,7 @@ org.mage Mage-Plugins - 0.5 + 0.5.1 Mage-Counter-Plugin diff --git a/Mage.Plugins/Mage.Rating.Plugin/pom.xml b/Mage.Plugins/Mage.Rating.Plugin/pom.xml index e55367efde..3bca74f435 100644 --- a/Mage.Plugins/Mage.Rating.Plugin/pom.xml +++ b/Mage.Plugins/Mage.Rating.Plugin/pom.xml @@ -6,7 +6,7 @@ org.mage Mage-Plugins - 0.5 + 0.5.1 org.mage diff --git a/Mage.Plugins/Mage.Theme.Plugin/pom.xml b/Mage.Plugins/Mage.Theme.Plugin/pom.xml index 2e33bec2ce..a61a57ce29 100644 --- a/Mage.Plugins/Mage.Theme.Plugin/pom.xml +++ b/Mage.Plugins/Mage.Theme.Plugin/pom.xml @@ -6,7 +6,7 @@ org.mage Mage-Plugins - 0.5 + 0.5.1 Mage-Theme-Plugin diff --git a/Mage.Plugins/pom.xml b/Mage.Plugins/pom.xml index db0f320819..44e37e2f9c 100644 --- a/Mage.Plugins/pom.xml +++ b/Mage.Plugins/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 0.5 + 0.5.1 Mage-Plugins diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml b/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml index 759c4c4bfb..97e5df49dd 100644 --- a/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml +++ b/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 0.5 + 0.5.1 Mage-Deck-Constructed diff --git a/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml b/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml index 042c478cec..d87b465798 100644 --- a/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml +++ b/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 0.5 + 0.5.1 Mage-Deck-Limited diff --git a/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml b/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml index 4a406fc8dd..f05b152adb 100644 --- a/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml +++ b/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 0.5 + 0.5.1 Mage-Game-FreeForAll diff --git a/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml index 78e603e6f6..71be696010 100644 --- a/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml +++ b/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 0.5 + 0.5.1 Mage-Game-TwoPlayerDuel diff --git a/Mage.Server.Plugins/Mage.Player.AI/pom.xml b/Mage.Server.Plugins/Mage.Player.AI/pom.xml index d8b79db707..70aecece7d 100644 --- a/Mage.Server.Plugins/Mage.Player.AI/pom.xml +++ b/Mage.Server.Plugins/Mage.Player.AI/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 0.5 + 0.5.1 Mage-Player-AI diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml b/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml index 22e0412e94..90ba36b87c 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml +++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 0.5 + 0.5.1 Mage-Player-AIMinimax diff --git a/Mage.Server.Plugins/Mage.Player.Human/pom.xml b/Mage.Server.Plugins/Mage.Player.Human/pom.xml index 54cd1ab947..79ceada586 100644 --- a/Mage.Server.Plugins/Mage.Player.Human/pom.xml +++ b/Mage.Server.Plugins/Mage.Player.Human/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 0.5 + 0.5.1 Mage-Player-Human diff --git a/Mage.Server.Plugins/pom.xml b/Mage.Server.Plugins/pom.xml index a49c2ab061..cdf3442c05 100644 --- a/Mage.Server.Plugins/pom.xml +++ b/Mage.Server.Plugins/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 0.5 + 0.5.1 Mage-Server-Plugins diff --git a/Mage.Server/pom.xml b/Mage.Server/pom.xml index 0146a43de4..bbc29bbfa2 100644 --- a/Mage.Server/pom.xml +++ b/Mage.Server/pom.xml @@ -6,7 +6,7 @@ org.mage mage-root - 0.5 + 0.5.1 Mage-Server diff --git a/Mage.Server/src/main/java/mage/server/Main.java b/Mage.Server/src/main/java/mage/server/Main.java index 05ee15e2a1..e8425dbc35 100644 --- a/Mage.Server/src/main/java/mage/server/Main.java +++ b/Mage.Server/src/main/java/mage/server/Main.java @@ -55,7 +55,7 @@ public class Main { private final static String testModeArg = "-testMode="; private final static String pluginFolder = "plugins"; - private final static String version = "0.5"; + private final static String version = "0.5.1"; public static PluginClassLoader classLoader = new PluginClassLoader(); public static ServerImpl server; diff --git a/Mage.Sets/pom.xml b/Mage.Sets/pom.xml index 75356a74b9..a90b49c357 100644 --- a/Mage.Sets/pom.xml +++ b/Mage.Sets/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 0.5 + 0.5.1 org.mage diff --git a/Mage.Tests/pom.xml b/Mage.Tests/pom.xml index f3d31fd2e6..f125160e51 100644 --- a/Mage.Tests/pom.xml +++ b/Mage.Tests/pom.xml @@ -6,7 +6,7 @@ org.mage mage-root - 0.5 + 0.5.1 Mage-Tests diff --git a/Mage/pom.xml b/Mage/pom.xml index 21379f7d4f..5bcce4f7fb 100644 --- a/Mage/pom.xml +++ b/Mage/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 0.5 + 0.5.1 Mage diff --git a/pom.xml b/pom.xml index e2e3a09f68..e1ad4c3e51 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.mage mage-root - 0.5 + 0.5.1 pom Mage Root Mage Root POM @@ -40,6 +40,6 @@ - 0.5 + 0.5.1 From 04ab3e11b648741551075d069677d52e4b0a30a6 Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Tue, 21 Dec 2010 23:26:51 -0500 Subject: [PATCH 2/2] fixes and new files --- .../src/mage/game/TwoPlayerDuel.java | 9 -- .../src/mage/player/ai/ComputerPlayer2.java | 8 +- Mage.Server/plugins/mage-player-aiminimax.jar | Bin 36458 -> 36468 bytes .../mage/sets/zendikar/JourneytoNowhere.java | 73 +++++++++++++++ .../src/mage/sets/zendikar/SpellPierce.java | 70 ++++++++++++++ Mage/src/mage/game/Match.java | 32 ++----- Mage/src/mage/game/MatchImpl.java | 88 ++++++++++++++++++ 7 files changed, 245 insertions(+), 35 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/zendikar/JourneytoNowhere.java create mode 100644 Mage.Sets/src/mage/sets/zendikar/SpellPierce.java create mode 100644 Mage/src/mage/game/MatchImpl.java diff --git a/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/src/mage/game/TwoPlayerDuel.java b/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/src/mage/game/TwoPlayerDuel.java index 2a71e6085b..fe3b9d76fe 100644 --- a/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/src/mage/game/TwoPlayerDuel.java +++ b/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/src/mage/game/TwoPlayerDuel.java @@ -61,15 +61,6 @@ public class TwoPlayerDuel extends GameImpl { return 20; } -// @Override -// public boolean playDrawStep(UUID activePlayerId) { -// //20091005 - 103.7a -// if (getTurnNum() != 1 || !activePlayerId.equals(startingPlayerId)) { -// return super.playDrawStep(activePlayerId); -// } -// return false; -// } - @Override public void init() { super.init(); diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java index 1ef23ff9fd..058a1f708e 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java +++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java @@ -620,9 +620,11 @@ public class ComputerPlayer2 extends ComputerPlayer implements logger.fine("selectBlockers"); if (combat != null && combat.getGroups().size() > 0) { List groups = game.getCombat().getGroups(); - for (int i = 0; i< groups.size(); i++) { - for (UUID blockerId: combat.getGroups().get(i).getBlockers()) { - this.declareBlocker(blockerId, groups.get(i).getAttackers().get(0), game); + for (int i = 0; i < groups.size(); i++) { + if (i < combat.getGroups().size()) { + for (UUID blockerId: combat.getGroups().get(i).getBlockers()) { + this.declareBlocker(blockerId, groups.get(i).getAttackers().get(0), game); + } } } } diff --git a/Mage.Server/plugins/mage-player-aiminimax.jar b/Mage.Server/plugins/mage-player-aiminimax.jar index 894e7fee89827266215c9786b7683c547e046ca3..d2f5a8333b1dd8f0b52ddee13c94fbdd6bbeb860 100644 GIT binary patch delta 11809 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%0AYt=v_&E(88@H8cH)zFIWySDl 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 diff --git a/Mage.Sets/src/mage/sets/zendikar/JourneytoNowhere.java b/Mage.Sets/src/mage/sets/zendikar/JourneytoNowhere.java new file mode 100644 index 0000000000..804555f9cb --- /dev/null +++ b/Mage.Sets/src/mage/sets/zendikar/JourneytoNowhere.java @@ -0,0 +1,73 @@ +/* +* Copyright 2010 maurer.it_at_googlemail.com. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without modification, are +* permitted provided that the following conditions are met: +* +* 1. Redistributions of source code must retain the above copyright notice, this list of +* conditions and the following disclaimer. +* +* 2. Redistributions in binary form must reproduce the above copyright notice, this list +* of conditions and the following disclaimer in the documentation and/or other materials +* provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED +* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR +* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* The views and conclusions contained in the software and documentation are those of the +* authors and should not be interpreted as representing official policies, either expressed +* or implied, of maurer.it_at_googlemail.com. +*/ + +package mage.sets.zendikar; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.LeavesBattlefieldTriggeredAbility; +import mage.abilities.effects.common.ExileTargetEffect; +import mage.abilities.effects.common.ReturnFromExileEffect; +import mage.cards.CardImpl; +import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; + +/** + * + * @author maurer.it_at_gmail.com + */ +public class JourneytoNowhere extends CardImpl { + + public JourneytoNowhere(UUID ownerId) { + super(ownerId, 14, "Journey to Nowhere", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}"); + this.expansionSetCode = "ZEN"; + this.color.setWhite(true); + FilterCreaturePermanent filter = new FilterCreaturePermanent(); + filter.setId(this.getId()); + filter.setNotId(true); + Ability ability1 = new EntersBattlefieldTriggeredAbility(new ExileTargetEffect(this.getId(), "Journey to Nowhere exile"), false); + ability1.addTarget(new TargetPermanent(filter)); + this.addAbility(ability1); + Ability ability2 = new LeavesBattlefieldTriggeredAbility(new ReturnFromExileEffect(this.getId(), Zone.BATTLEFIELD), false); + this.addAbility(ability2); + } + + public JourneytoNowhere(final JourneytoNowhere card) { + super(card); + } + + @Override + public JourneytoNowhere copy() { + return new JourneytoNowhere(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/zendikar/SpellPierce.java b/Mage.Sets/src/mage/sets/zendikar/SpellPierce.java new file mode 100644 index 0000000000..d90d0c80d7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/zendikar/SpellPierce.java @@ -0,0 +1,70 @@ +/* +* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without modification, are +* permitted provided that the following conditions are met: +* +* 1. Redistributions of source code must retain the above copyright notice, this list of +* conditions and the following disclaimer. +* +* 2. Redistributions in binary form must reproduce the above copyright notice, this list +* of conditions and the following disclaimer in the documentation and/or other materials +* provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED +* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR +* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* The views and conclusions contained in the software and documentation are those of the +* authors and should not be interpreted as representing official policies, either expressed +* or implied, of BetaSteward_at_googlemail.com. +*/ + +package mage.sets.zendikar; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.CounterUnlessPaysEffect; +import mage.cards.CardImpl; +import mage.filter.FilterSpell; +import mage.target.TargetSpell; + +/** + * + * @author maurer.it_at_gmail.com + */ +public class SpellPierce extends CardImpl { + + private static FilterSpell filter = new FilterSpell("noncreature spell"); + + static { + filter.getCardType().add(CardType.CREATURE); + filter.setNotCardType(true); + } + + public SpellPierce(UUID ownerId) { + super(ownerId, 67, "Spell Pierce", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{U}"); + this.expansionSetCode = "ZEN"; + this.color.setBlue(true); + this.getSpellAbility().addTarget(new TargetSpell(filter)); + this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(new GenericManaCost(2))); + } + + public SpellPierce(final SpellPierce card) { + super(card); + } + + @Override + public SpellPierce copy() { + return new SpellPierce(this); + } + +} diff --git a/Mage/src/mage/game/Match.java b/Mage/src/mage/game/Match.java index f7bc7d23b8..ad58ddd650 100644 --- a/Mage/src/mage/game/Match.java +++ b/Mage/src/mage/game/Match.java @@ -28,35 +28,21 @@ package mage.game; -import java.util.ArrayList; import java.util.List; +import mage.cards.decks.Deck; +import mage.players.Player; /** * * @author BetaSteward_at_googlemail.com */ -public class Match { +public interface Match { - protected List players = new ArrayList(); - protected List games = new ArrayList(); - protected int winsNeeded; + public boolean isMatchOver(); + public List getPlayers(); + public void addPlayer(Player player, Deck deck); + public int getMaxPlayers(); + public int getMinPlayers(); + public void startMatch(); - public Match(int winsNeeded) { - this.winsNeeded = winsNeeded; - } - - public void playDuel() { - - } - - public boolean isMatchOver() { - for (MatchPlayer player: players) { - if (player.getWins() >= winsNeeded) { - return true; - } - } - return false; - } - - } diff --git a/Mage/src/mage/game/MatchImpl.java b/Mage/src/mage/game/MatchImpl.java new file mode 100644 index 0000000000..96e6243d11 --- /dev/null +++ b/Mage/src/mage/game/MatchImpl.java @@ -0,0 +1,88 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.game; + +import java.util.ArrayList; +import java.util.List; +import mage.cards.decks.Deck; +import mage.players.Player; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class MatchImpl implements Match { + + protected List players = new ArrayList(); + protected List games = new ArrayList(); + protected int winsNeeded; + protected int maxPlayers; + protected int minPlayers; + + public MatchImpl(int winsNeeded) { + this.winsNeeded = winsNeeded; + } + + @Override + public List getPlayers() { + return players; + } + + @Override + public void addPlayer(Player player, Deck deck) { + MatchPlayer mPlayer = new MatchPlayer(player, deck); + players.add(mPlayer); + } + + @Override + public void startMatch() { + + } + + @Override + public boolean isMatchOver() { + for (MatchPlayer player: players) { + if (player.getWins() >= winsNeeded) { + return true; + } + } + return false; + } + + @Override + public int getMaxPlayers() { + return this.maxPlayers; + } + + @Override + public int getMinPlayers() { + return this.minPlayers; + } + +}