moved Combat & CombatUtil to package forge.card.combat Sol has created.

removed EndOfCombat and Cleanup classes as they don't add anything specific to base class. Base class Phase is no longer abstract, also it does not need reference to game instance any longer
This commit is contained in:
Maxmtg
2013-06-24 10:54:46 +00:00
parent dfc630aa23
commit 6ff8ba6682
50 changed files with 110 additions and 179 deletions

6
.gitattributes vendored
View File

@@ -14475,6 +14475,8 @@ src/main/java/forge/game/ai/ComputerUtilCombat.java -text
src/main/java/forge/game/ai/ComputerUtilCost.java -text src/main/java/forge/game/ai/ComputerUtilCost.java -text
src/main/java/forge/game/ai/ComputerUtilMana.java -text src/main/java/forge/game/ai/ComputerUtilMana.java -text
src/main/java/forge/game/combat/AttackingBand.java -text src/main/java/forge/game/combat/AttackingBand.java -text
src/main/java/forge/game/combat/Combat.java svneol=native#text/plain
src/main/java/forge/game/combat/CombatUtil.java svneol=native#text/plain
src/main/java/forge/game/event/GameEvent.java -text src/main/java/forge/game/event/GameEvent.java -text
src/main/java/forge/game/event/GameEventAnteCardsSelected.java -text src/main/java/forge/game/event/GameEventAnteCardsSelected.java -text
src/main/java/forge/game/event/GameEventAttackersDeclared.java -text src/main/java/forge/game/event/GameEventAttackersDeclared.java -text
@@ -14528,10 +14530,6 @@ src/main/java/forge/game/limited/SealedCardPoolGenerator.java svneol=native#text
src/main/java/forge/game/limited/SealedDeckBuilder.java svneol=native#text/plain src/main/java/forge/game/limited/SealedDeckBuilder.java svneol=native#text/plain
src/main/java/forge/game/limited/package-info.java svneol=native#text/plain src/main/java/forge/game/limited/package-info.java svneol=native#text/plain
src/main/java/forge/game/package-info.java -text src/main/java/forge/game/package-info.java -text
src/main/java/forge/game/phase/Cleanup.java -text
src/main/java/forge/game/phase/Combat.java svneol=native#text/plain
src/main/java/forge/game/phase/CombatUtil.java svneol=native#text/plain
src/main/java/forge/game/phase/EndOfCombat.java svneol=native#text/plain
src/main/java/forge/game/phase/EndOfTurn.java svneol=native#text/plain src/main/java/forge/game/phase/EndOfTurn.java svneol=native#text/plain
src/main/java/forge/game/phase/ExtraTurn.java -text src/main/java/forge/game/phase/ExtraTurn.java -text
src/main/java/forge/game/phase/Phase.java svneol=native#text/plain src/main/java/forge/game/phase/Phase.java svneol=native#text/plain

View File

@@ -70,13 +70,13 @@ import forge.game.Game;
import forge.game.GameActionUtil; import forge.game.GameActionUtil;
import forge.game.GlobalRuleChange; import forge.game.GlobalRuleChange;
import forge.game.combat.AttackingBand; import forge.game.combat.AttackingBand;
import forge.game.combat.Combat;
import forge.game.event.GameEventCardDamaged; import forge.game.event.GameEventCardDamaged;
import forge.game.event.GameEventCardDamaged.DamageType; import forge.game.event.GameEventCardDamaged.DamageType;
import forge.game.event.GameEventCardEquipped; import forge.game.event.GameEventCardEquipped;
import forge.game.event.GameEventCounterAdded; import forge.game.event.GameEventCounterAdded;
import forge.game.event.GameEventCounterRemoved; import forge.game.event.GameEventCounterRemoved;
import forge.game.event.GameEventCardTapped; import forge.game.event.GameEventCardTapped;
import forge.game.phase.Combat;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.Zone; import forge.game.zone.Zone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;

View File

@@ -24,7 +24,7 @@ import com.google.common.base.Predicate;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.util.PredicateString; import forge.util.PredicateString;

View File

@@ -27,7 +27,7 @@ import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCost; import forge.game.ai.ComputerUtilCost;
import forge.game.ai.ComputerUtilMana; import forge.game.ai.ComputerUtilMana;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;

View File

@@ -37,7 +37,7 @@ import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat; import forge.game.ai.ComputerUtilCombat;
import forge.game.ai.ComputerUtilCost; import forge.game.ai.ComputerUtilCost;
import forge.game.ai.ComputerUtilMana; import forge.game.ai.ComputerUtilMana;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerActionConfirmMode; import forge.game.player.PlayerActionConfirmMode;

View File

@@ -13,7 +13,7 @@ import forge.card.spellability.TargetRestrictions;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat; import forge.game.ai.ComputerUtilCombat;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;

View File

@@ -16,7 +16,7 @@ import forge.card.spellability.TargetRestrictions;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtilCombat; import forge.game.ai.ComputerUtilCombat;
import forge.game.ai.ComputerUtilCost; import forge.game.ai.ComputerUtilCost;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;

View File

@@ -31,7 +31,7 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.TargetRestrictions; import forge.card.spellability.TargetRestrictions;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;

View File

@@ -17,7 +17,7 @@ import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat; import forge.game.ai.ComputerUtilCombat;
import forge.game.ai.ComputerUtilCost; import forge.game.ai.ComputerUtilCost;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;

View File

@@ -19,7 +19,7 @@ import forge.card.spellability.TargetRestrictions;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCost; import forge.game.ai.ComputerUtilCost;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;

View File

@@ -9,7 +9,7 @@ import forge.Card;
import forge.CardLists; import forge.CardLists;
import forge.card.ability.SpellAbilityAi; import forge.card.ability.SpellAbilityAi;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;

View File

@@ -13,7 +13,7 @@ import forge.card.spellability.TargetRestrictions;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat; import forge.game.ai.ComputerUtilCombat;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;

View File

@@ -26,7 +26,7 @@ import forge.CardLists;
import forge.card.ability.SpellAbilityAi; import forge.card.ability.SpellAbilityAi;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerActionConfirmMode; import forge.game.player.PlayerActionConfirmMode;

View File

@@ -13,7 +13,7 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.TargetRestrictions; import forge.card.spellability.TargetRestrictions;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat; import forge.game.ai.ComputerUtilCombat;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;

View File

@@ -18,7 +18,7 @@ import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat; import forge.game.ai.ComputerUtilCombat;
import forge.game.ai.ComputerUtilCost; import forge.game.ai.ComputerUtilCost;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;

View File

@@ -17,8 +17,8 @@ import forge.game.Game;
import forge.game.ai.ComputerUtil; import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat; import forge.game.ai.ComputerUtilCombat;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.phase.Untap; import forge.game.phase.Untap;

View File

@@ -15,8 +15,8 @@ import forge.game.Game;
import forge.game.ai.ComputerUtil; import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat; import forge.game.ai.ComputerUtilCombat;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;

View File

@@ -34,7 +34,7 @@ import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat; import forge.game.ai.ComputerUtilCombat;
import forge.game.ai.ComputerUtilCost; import forge.game.ai.ComputerUtilCost;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;

View File

@@ -13,7 +13,7 @@ import forge.game.Game;
import forge.game.ai.ComputerUtil; import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCombat; import forge.game.ai.ComputerUtilCombat;
import forge.game.ai.ComputerUtilCost; import forge.game.ai.ComputerUtilCost;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;

View File

@@ -15,7 +15,7 @@ import forge.card.spellability.TargetRestrictions;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtil; import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;

View File

@@ -13,7 +13,7 @@ import forge.card.ability.SpellAbilityAi;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.card.spellability.TargetRestrictions; import forge.card.spellability.TargetRestrictions;
import forge.game.Game; import forge.game.Game;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;

View File

@@ -23,7 +23,7 @@ import forge.card.spellability.SpellAbilityStackInstance;
import forge.card.spellability.TargetRestrictions; import forge.card.spellability.TargetRestrictions;
import forge.card.trigger.TriggerType; import forge.card.trigger.TriggerType;
import forge.game.Game; import forge.game.Game;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.Zone; import forge.game.zone.Zone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;

View File

@@ -18,7 +18,7 @@ import forge.card.spellability.TargetRestrictions;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat; import forge.game.ai.ComputerUtilCombat;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;

View File

@@ -31,8 +31,8 @@ import forge.card.spellability.SpellAbility;
import forge.card.trigger.Trigger; import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerHandler;
import forge.game.Game; import forge.game.Game;
import forge.game.combat.Combat;
import forge.game.event.GameEventTokenCreated; import forge.game.event.GameEventTokenCreated;
import forge.game.phase.Combat;
import forge.game.player.Player; import forge.game.player.Player;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.item.PaperToken; import forge.item.PaperToken;

View File

@@ -35,13 +35,13 @@ import forge.card.replacement.ReplacementHandler;
import forge.card.spellability.SpellAbilityStackInstance; import forge.card.spellability.SpellAbilityStackInstance;
import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerHandler;
import forge.card.trigger.TriggerType; import forge.card.trigger.TriggerType;
import forge.game.combat.Combat;
import forge.game.event.GameEvent; import forge.game.event.GameEvent;
import forge.game.event.GameEventGameOutcome; import forge.game.event.GameEventGameOutcome;
import forge.game.phase.Cleanup;
import forge.game.phase.Combat;
import forge.game.phase.EndOfCombat;
import forge.game.phase.EndOfTurn; import forge.game.phase.EndOfTurn;
import forge.game.phase.Phase;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType;
import forge.game.phase.Untap; import forge.game.phase.Untap;
import forge.game.phase.Upkeep; import forge.game.phase.Upkeep;
import forge.game.player.Player; import forge.game.player.Player;
@@ -61,9 +61,9 @@ public class Game {
private List<Card> activePlanes = null; private List<Card> activePlanes = null;
public final Cleanup cleanup; public final Phase cleanup;
public final EndOfTurn endOfTurn; public final EndOfTurn endOfTurn;
public final EndOfCombat endOfCombat; public final Phase endOfCombat;
public final Untap untap; public final Untap untap;
public final Upkeep upkeep; public final Upkeep upkeep;
private final PhaseHandler phaseHandler; private final PhaseHandler phaseHandler;
@@ -114,9 +114,9 @@ public class Game {
untap = new Untap(this); untap = new Untap(this);
upkeep = new Upkeep(this); upkeep = new Upkeep(this);
cleanup = new Cleanup(this); cleanup = new Phase(PhaseType.CLEANUP);
endOfTurn = new EndOfTurn(this); endOfTurn = new EndOfTurn(this);
endOfCombat = new EndOfCombat(this); endOfCombat = new Phase(PhaseType.COMBAT_END);
subscribeToEvents(gameLog.getEventVisitor()); subscribeToEvents(gameLog.getEventVisitor());
} }
@@ -145,7 +145,7 @@ public class Game {
* *
* @return the cleanup step * @return the cleanup step
*/ */
public final Cleanup getCleanup() { public final Phase getCleanup() {
return this.cleanup; return this.cleanup;
} }
@@ -163,7 +163,7 @@ public class Game {
* *
* @return the endOfCombat * @return the endOfCombat
*/ */
public final EndOfCombat getEndOfCombat() { public final Phase getEndOfCombat() {
return this.endOfCombat; return this.endOfCombat;
} }

View File

@@ -30,8 +30,8 @@ import forge.CounterType;
import forge.GameEntity; import forge.GameEntity;
import forge.card.trigger.Trigger; import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerType; import forge.card.trigger.TriggerType;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
@@ -130,7 +130,7 @@ public class AiAttackController {
* @param attacker * @param attacker
* a {@link forge.Card} object. * a {@link forge.Card} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a boolean. * @return a boolean.
*/ */
public final boolean isEffectiveAttacker(final Player ai, final Card attacker, final Combat combat) { public final boolean isEffectiveAttacker(final Player ai, final Card attacker, final Combat combat) {
@@ -220,7 +220,7 @@ public class AiAttackController {
* @param attackers * @param attackers
* a {@link forge.CardList} object. * a {@link forge.CardList} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a {@link forge.CardList} object. * @return a {@link forge.CardList} object.
*/ */
public final List<Card> notNeededAsBlockers(final Player ai, final List<Card> attackers) { public final List<Card> notNeededAsBlockers(final Player ai, final List<Card> attackers) {
@@ -438,7 +438,7 @@ public class AiAttackController {
* </p> * </p>
* *
* @param c * @param c
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @param bAssault * @param bAssault
* a boolean. * a boolean.
*/ */
@@ -491,7 +491,7 @@ public class AiAttackController {
* Getter for the field <code>attackers</code>. * Getter for the field <code>attackers</code>.
* </p> * </p>
* *
* @return a {@link forge.game.phase.Combat} object. * @return a {@link forge.game.combat.Combat} object.
*/ */
public final void declareAttackers(final Combat combat) { public final void declareAttackers(final Combat combat) {
// if this method is called multiple times during a turn, // if this method is called multiple times during a turn,
@@ -872,7 +872,7 @@ public class AiAttackController {
* @param defenders * @param defenders
* a {@link forge.CardList} object. * a {@link forge.CardList} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a boolean. * @return a boolean.
*/ */
public final boolean shouldAttack(final Player ai, final Card attacker, final List<Card> defenders, final Combat combat) { public final boolean shouldAttack(final Player ai, final Card attacker, final List<Card> defenders, final Combat combat) {

View File

@@ -28,8 +28,8 @@ import forge.CardLists;
import forge.CardPredicates; import forge.CardPredicates;
import forge.CounterType; import forge.CounterType;
import forge.GameEntity; import forge.GameEntity;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.player.Player; import forge.game.player.Player;
@@ -239,8 +239,8 @@ public class AiBlockController {
* </p> * </p>
* *
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a {@link forge.game.phase.Combat} object. * @return a {@link forge.game.combat.Combat} object.
*/ */
static final Predicate<Card> rampagesOrNeedsManyToBlock = Predicates.or(CardPredicates.containsKeyword("Rampage"), CardPredicates.containsKeyword("CantBeBlockedByAmount GT")); static final Predicate<Card> rampagesOrNeedsManyToBlock = Predicates.or(CardPredicates.containsKeyword("Rampage"), CardPredicates.containsKeyword("CantBeBlockedByAmount GT"));
@@ -362,8 +362,8 @@ public class AiBlockController {
* </p> * </p>
* *
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a {@link forge.game.phase.Combat} object. * @return a {@link forge.game.combat.Combat} object.
*/ */
private void makeTradeBlocks(final Combat combat) { private void makeTradeBlocks(final Combat combat) {

View File

@@ -45,7 +45,7 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellPermanent; import forge.card.spellability.SpellPermanent;
import forge.game.GameActionUtil; import forge.game.GameActionUtil;
import forge.game.Game; import forge.game.Game;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerActionConfirmMode; import forge.game.player.PlayerActionConfirmMode;

View File

@@ -54,8 +54,8 @@ import forge.card.spellability.TargetRestrictions;
import forge.card.staticability.StaticAbility; import forge.card.staticability.StaticAbility;
import forge.error.BugReporter; import forge.error.BugReporter;
import forge.game.Game; import forge.game.Game;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;

View File

@@ -28,7 +28,7 @@ import forge.card.spellability.SpellAbility;
import forge.deck.CardPool; import forge.deck.CardPool;
import forge.deck.Deck; import forge.deck.Deck;
import forge.deck.DeckSection; import forge.deck.DeckSection;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.player.Player; import forge.game.player.Player;
import forge.item.PaperCard; import forge.item.PaperCard;
import forge.util.Aggregates; import forge.util.Aggregates;

View File

@@ -42,8 +42,8 @@ import forge.card.trigger.TriggerHandler;
import forge.card.trigger.TriggerType; import forge.card.trigger.TriggerType;
import forge.game.Game; import forge.game.Game;
import forge.game.GlobalRuleChange; import forge.game.GlobalRuleChange;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
@@ -116,7 +116,7 @@ public class ComputerUtilCombat {
* @param attacked * @param attacked
* a {@link forge.game.player.Player} object. * a {@link forge.game.player.Player} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a int. * @return a int.
*/ */
public static int damageIfUnblocked(final Card attacker, final Player attacked, final Combat combat) { public static int damageIfUnblocked(final Card attacker, final Player attacked, final Combat combat) {
@@ -146,7 +146,7 @@ public class ComputerUtilCombat {
* @param attacked * @param attacked
* a {@link forge.game.player.Player} object. * a {@link forge.game.player.Player} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a int. * @return a int.
*/ */
public static int poisonIfUnblocked(final Card attacker, final Player attacked) { public static int poisonIfUnblocked(final Card attacker, final Player attacked) {
@@ -212,7 +212,7 @@ public class ComputerUtilCombat {
* </p> * </p>
* *
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a int. * @return a int.
*/ */
public static int lifeThatWouldRemain(final Player ai, final Combat combat) { public static int lifeThatWouldRemain(final Player ai, final Combat combat) {
@@ -254,7 +254,7 @@ public class ComputerUtilCombat {
* </p> * </p>
* *
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a int. * @return a int.
*/ */
public static int resultingPoison(final Player ai, final Combat combat) { public static int resultingPoison(final Player ai, final Combat combat) {
@@ -295,7 +295,7 @@ public class ComputerUtilCombat {
* </p> * </p>
* *
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a boolean. * @return a boolean.
*/ */
public static boolean lifeInDanger(final Player ai, final Combat combat) { public static boolean lifeInDanger(final Player ai, final Combat combat) {
@@ -333,7 +333,7 @@ public class ComputerUtilCombat {
* </p> * </p>
* *
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a boolean. * @return a boolean.
*/ */
public static boolean wouldLoseLife(final Player ai, final Combat combat) { public static boolean wouldLoseLife(final Player ai, final Combat combat) {
@@ -348,7 +348,7 @@ public class ComputerUtilCombat {
* </p> * </p>
* *
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a boolean. * @return a boolean.
*/ */
public static boolean lifeInSeriousDanger(final Player ai, final Combat combat) { public static boolean lifeInSeriousDanger(final Player ai, final Combat combat) {
@@ -575,7 +575,7 @@ public class ComputerUtilCombat {
* @param trigger * @param trigger
* a {@link forge.card.trigger.Trigger} object. * a {@link forge.card.trigger.Trigger} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a boolean. * @return a boolean.
*/ */
public static boolean combatTriggerWillTrigger(final Card attacker, final Card defender, final Trigger trigger, public static boolean combatTriggerWillTrigger(final Card attacker, final Card defender, final Trigger trigger,
@@ -937,7 +937,7 @@ public class ComputerUtilCombat {
* @param defender * @param defender
* a {@link forge.Card} object. * a {@link forge.Card} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a int. * @return a int.
*/ */
public static int predictPowerBonusOfAttacker(final Card attacker, final Card defender, final Combat combat public static int predictPowerBonusOfAttacker(final Card attacker, final Card defender, final Combat combat
@@ -1098,7 +1098,7 @@ public class ComputerUtilCombat {
* @param defender * @param defender
* a {@link forge.Card} object. * a {@link forge.Card} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a int. * @return a int.
*/ */
public static int predictToughnessBonusOfAttacker(final Card attacker, final Card defender, final Combat combat public static int predictToughnessBonusOfAttacker(final Card attacker, final Card defender, final Combat combat
@@ -1377,7 +1377,7 @@ public class ComputerUtilCombat {
* @param defender * @param defender
* a {@link forge.Card} object. * a {@link forge.Card} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @param withoutAbilities * @param withoutAbilities
* a boolean. * a boolean.
* @return a boolean. * @return a boolean.
@@ -1534,7 +1534,7 @@ public class ComputerUtilCombat {
* @param attacker * @param attacker
* a {@link forge.Card} object. * a {@link forge.Card} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @param withoutAbilities * @param withoutAbilities
* a boolean. * a boolean.
* @return a boolean. * @return a boolean.

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package forge.game.phase; package forge.game.combat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@@ -33,7 +33,6 @@ import forge.CardLists;
import forge.CardPredicates; import forge.CardPredicates;
import forge.GameEntity; import forge.GameEntity;
import forge.card.trigger.TriggerType; import forge.card.trigger.TriggerType;
import forge.game.combat.AttackingBand;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.util.maps.CollectionSuppliers; import forge.util.maps.CollectionSuppliers;

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package forge.game.phase; package forge.game.combat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@@ -47,7 +47,8 @@ import forge.card.staticability.StaticAbility;
import forge.card.trigger.TriggerType; import forge.card.trigger.TriggerType;
import forge.game.Game; import forge.game.Game;
import forge.game.GlobalRuleChange; import forge.game.GlobalRuleChange;
import forge.game.combat.AttackingBand; import forge.game.phase.PhaseType;
import forge.game.phase.Untap;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerController.ManaPaymentPurpose; import forge.game.player.PlayerController.ManaPaymentPurpose;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
@@ -74,7 +75,7 @@ public class CombatUtil {
* @param blocker * @param blocker
* a {@link forge.Card} object. * a {@link forge.Card} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a boolean. * @return a boolean.
*/ */
public static boolean canBlock(final Card blocker, final Combat combat) { public static boolean canBlock(final Card blocker, final Combat combat) {
@@ -173,7 +174,7 @@ public class CombatUtil {
* @param attacker * @param attacker
* a {@link forge.Card} object. * a {@link forge.Card} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a boolean. * @return a boolean.
*/ */
public static boolean canBeBlocked(final Card attacker, final Combat combat, Player defendingPlayer) { public static boolean canBeBlocked(final Card attacker, final Combat combat, Player defendingPlayer) {
@@ -355,7 +356,7 @@ public class CombatUtil {
* </p> * </p>
* *
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a boolean. * @return a boolean.
*/ */
public static String validateBlocks(final Combat combat, final Player defending) { public static String validateBlocks(final Combat combat, final Player defending) {
@@ -410,7 +411,7 @@ public class CombatUtil {
* @param blocker * @param blocker
* a {@link forge.Card} object. * a {@link forge.Card} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a boolean. * @return a boolean.
*/ */
public static boolean mustBlockAnAttacker(final Card blocker, final Combat combat) { public static boolean mustBlockAnAttacker(final Card blocker, final Combat combat) {
@@ -484,7 +485,7 @@ public class CombatUtil {
* @param blocker * @param blocker
* a {@link forge.Card} object. * a {@link forge.Card} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a boolean. * @return a boolean.
*/ */
public static boolean canBlock(final Card attacker, final Card blocker, final Combat combat) { public static boolean canBlock(final Card attacker, final Card blocker, final Combat combat) {
@@ -655,7 +656,7 @@ public class CombatUtil {
* @param c * @param c
* a {@link forge.Card} object. * a {@link forge.Card} object.
* @param combat * @param combat
* a {@link forge.game.phase.Combat} object. * a {@link forge.game.combat.Combat} object.
* @return a boolean. * @return a boolean.
*/ */
public static boolean canAttack(final Card c, final GameEntity def, final Combat combat) { public static boolean canAttack(final Card c, final GameEntity def, final Combat combat) {

View File

@@ -1,37 +0,0 @@
/*
* Forge: Play Magic: the Gathering.
* Copyright (C) 2011 Forge Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.game.phase;
import forge.game.Game;
/**
* <p>
* Handles "until your next turn" effects and Cleanup hardcoded triggers.
* </p>
*
* @author Forge
*/
public class Cleanup extends Phase {
/** Constant <code>serialVersionUID=-6993476643509826990L</code>. */
private static final long serialVersionUID = -6993476643509826990L;
public Cleanup(final Game game) { super(game); }
} // end class Cleanup

View File

@@ -1,37 +0,0 @@
/*
* Forge: Play Magic: the Gathering.
* Copyright (C) 2011 Forge Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.game.phase;
import forge.game.Game;
/**
* <p>
* Handles "until end of combat" effects and "at end of combat" hardcoded triggers.
* </p>
*
* @author Forge
* @version $Id$
*/
public class EndOfCombat extends Phase {
/** Constant <code>serialVersionUID=3035250030566186842L</code>. */
private static final long serialVersionUID = 3035250030566186842L;
public EndOfCombat(final Game game) { super(game); }
} // end class EndOfCombat

View File

@@ -39,7 +39,11 @@ public class EndOfTurn extends Phase {
/** Constant <code>serialVersionUID=-3656715295379727275L</code>. */ /** Constant <code>serialVersionUID=-3656715295379727275L</code>. */
private static final long serialVersionUID = -3656715295379727275L; private static final long serialVersionUID = -3656715295379727275L;
public EndOfTurn(final Game game) { super(game); } protected final Game game;
public EndOfTurn(final Game game) {
super(PhaseType.END_OF_TURN);
this.game = game;
}
/** /**
* <p> * <p>
* Handles all the hardcoded events that happen "at end of turn". * Handles all the hardcoded events that happen "at end of turn".

View File

@@ -24,7 +24,6 @@ import java.util.List;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import forge.Command; import forge.Command;
import forge.game.Game;
import forge.game.player.Player; import forge.game.player.Player;
@@ -36,14 +35,14 @@ import forge.game.player.Player;
* @author Forge * @author Forge
* @version $Id$ * @version $Id$
*/ */
public abstract class Phase implements java.io.Serializable { public class Phase implements java.io.Serializable {
private static final long serialVersionUID = 4665309652476851977L; private static final long serialVersionUID = 4665309652476851977L;
protected final Game game; protected final PhaseType type; // mostly decorative field - it's never used
public Phase(final Game game0) { public Phase(PhaseType type) {
game = game0; this.type = type;
} }
/** The at. */ /** The at. */
@@ -102,10 +101,6 @@ public abstract class Phase implements java.io.Serializable {
* Use cleanup phase to terminate an effect with "until <Player's> next turn" * Use cleanup phase to terminate an effect with "until <Player's> next turn"
*/ */
public final void addUntil(Player p, final Command c) { public final void addUntil(Player p, final Command c) {
if (null == p) {
p = game.getPhaseHandler().getPlayerTurn();
}
if (this.untilMap.containsKey(p)) { if (this.untilMap.containsKey(p)) {
this.untilMap.get(p).add(0, c); this.untilMap.get(p).add(0, c);
} else { } else {

View File

@@ -39,6 +39,8 @@ import forge.card.trigger.TriggerType;
import forge.game.GameAge; import forge.game.GameAge;
import forge.game.Game; import forge.game.Game;
import forge.game.GameType; import forge.game.GameType;
import forge.game.combat.Combat;
import forge.game.combat.CombatUtil;
import forge.game.event.GameEventAttackersDeclared; import forge.game.event.GameEventAttackersDeclared;
import forge.game.event.GameEventBlockerAssigned; import forge.game.event.GameEventBlockerAssigned;
import forge.game.event.GameEventBlockersDeclared; import forge.game.event.GameEventBlockersDeclared;

View File

@@ -50,9 +50,11 @@ import forge.gui.input.InputSelectCardsFromList;
*/ */
public class Untap extends Phase { public class Untap extends Phase {
private static final long serialVersionUID = 4515266331266259123L; private static final long serialVersionUID = 4515266331266259123L;
protected final Game game;
public Untap(final Game game0) { public Untap(final Game game0) {
super(game0); super(PhaseType.UNTAP);
game = game0;
} }
/** /**

View File

@@ -68,7 +68,11 @@ import forge.gui.input.InputSelectCardsFromList;
public class Upkeep extends Phase { public class Upkeep extends Phase {
private static final long serialVersionUID = 6906459482978819354L; private static final long serialVersionUID = 6906459482978819354L;
public Upkeep(final Game game) { super(game); } protected final Game game;
public Upkeep(final Game game) {
super(PhaseType.UPKEEP);
this.game = game;
}
/** /**
* <p> * <p>

View File

@@ -20,7 +20,7 @@ import forge.card.spellability.TargetChoices;
import forge.deck.Deck; import forge.deck.Deck;
import forge.game.Game; import forge.game.Game;
import forge.game.GameType; import forge.game.GameType;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;

View File

@@ -35,7 +35,7 @@ import forge.game.ai.ComputerUtil;
import forge.game.ai.AiBlockController; import forge.game.ai.AiBlockController;
import forge.game.ai.ComputerUtilCombat; import forge.game.ai.ComputerUtilCombat;
import forge.game.ai.ComputerUtilCost; import forge.game.ai.ComputerUtilCost;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.util.Aggregates; import forge.util.Aggregates;
import forge.util.MyRandom; import forge.util.MyRandom;

View File

@@ -33,7 +33,7 @@ import forge.deck.Deck;
import forge.deck.DeckSection; import forge.deck.DeckSection;
import forge.game.Game; import forge.game.Game;
import forge.game.GameType; import forge.game.GameType;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;

View File

@@ -27,8 +27,8 @@ import forge.Card;
import forge.CardPredicates; import forge.CardPredicates;
import forge.GameEntity; import forge.GameEntity;
import forge.game.combat.AttackingBand; import forge.game.combat.AttackingBand;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.match.CMatchUI; import forge.gui.match.CMatchUI;

View File

@@ -19,8 +19,8 @@ package forge.gui.input;
import forge.Card; import forge.Card;
import forge.Singletons; import forge.Singletons;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;

View File

@@ -36,7 +36,7 @@ import javax.swing.JPanel;
import forge.Card; import forge.Card;
import forge.Singletons; import forge.Singletons;
import forge.control.FControl; import forge.control.FControl;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.gui.match.controllers.CDock; import forge.gui.match.controllers.CDock;
import forge.gui.match.nonsingleton.VField; import forge.gui.match.nonsingleton.VField;
import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin;

View File

@@ -7,7 +7,7 @@ import forge.Command;
import forge.GameEntity; import forge.GameEntity;
import forge.game.Game; import forge.game.Game;
import forge.game.combat.AttackingBand; import forge.game.combat.AttackingBand;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.player.Player; import forge.game.player.Player;
import forge.gui.framework.ICDoc; import forge.gui.framework.ICDoc;

View File

@@ -35,8 +35,8 @@ import forge.CardPredicates.Presets;
import forge.Command; import forge.Command;
import forge.deck.Deck; import forge.deck.Deck;
import forge.game.Game; import forge.game.Game;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayer;

View File

@@ -42,7 +42,7 @@ import forge.ImageCache;
import forge.Singletons; import forge.Singletons;
import forge.card.CardEdition; import forge.card.CardEdition;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
import forge.game.phase.Combat; import forge.game.combat.Combat;
import forge.gui.CardContainer; import forge.gui.CardContainer;
import forge.gui.toolbox.CardFaceSymbols; import forge.gui.toolbox.CardFaceSymbols;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;

View File

@@ -2,7 +2,7 @@ package forge;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import forge.game.phase.CombatUtil; import forge.game.combat.CombatUtil;
/** /**
* <p> * <p>