diff --git a/.gitattributes b/.gitattributes index cd4e1987e70..e89b57db06d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7873,34 +7873,6 @@ src/com/cloudgarden/layout/AnchorConstraint.java -text svneol=native#text/plain src/com/cloudgarden/layout/AnchorLayout.java -text svneol=native#text/plain src/com/esotericsoftware/minlog/Log.java svneol=native#text/plain src/forge/AIPlayer.java -text svneol=native#text/plain -src/forge/Ability.java svneol=native#text/plain -src/forge/AbilityFactory.java -text svneol=native#text/plain -src/forge/AbilityFactory_AlterLife.java -text svneol=native#text/plain -src/forge/AbilityFactory_Animate.java -text svneol=native#text/plain -src/forge/AbilityFactory_Bounce.java -text svneol=native#text/plain -src/forge/AbilityFactory_ChangeZone.java -text svneol=native#text/plain -src/forge/AbilityFactory_Clash.java -text svneol=native#text/plain -src/forge/AbilityFactory_Combat.java -text svneol=native#text/plain -src/forge/AbilityFactory_CounterMagic.java -text svneol=native#text/plain -src/forge/AbilityFactory_Counters.java -text svneol=native#text/plain -src/forge/AbilityFactory_DealDamage.java -text svneol=native#text/plain -src/forge/AbilityFactory_Destroy.java -text svneol=native#text/plain -src/forge/AbilityFactory_Fetch.java -text svneol=native#text/plain -src/forge/AbilityFactory_GainControl.java -text svneol=native#text/plain -src/forge/AbilityFactory_Mana.java -text svneol=native#text/plain -src/forge/AbilityFactory_PermanentState.java -text svneol=native#text/plain -src/forge/AbilityFactory_Pump.java -text svneol=native#text/plain -src/forge/AbilityFactory_Regenerate.java -text svneol=native#text/plain -src/forge/AbilityFactory_Sacrifice.java -text svneol=native#text/plain -src/forge/AbilityFactory_Token.java -text svneol=native#text/plain -src/forge/AbilityFactory_Turns.java -text svneol=native#text/plain -src/forge/AbilityFactory_ZoneAffecting.java -text svneol=native#text/plain -src/forge/Ability_Activated.java svneol=native#text/plain -src/forge/Ability_Cost.java -text svneol=native#text/plain -src/forge/Ability_Mana.java -text svneol=native#text/plain -src/forge/Ability_Static.java -text svneol=native#text/plain -src/forge/Ability_Sub.java -text svneol=native#text/plain -src/forge/Ability_Triggered.java svneol=native#text/plain src/forge/AllZone.java svneol=native#text/plain src/forge/AllZoneUtil.java -text svneol=native#text/plain src/forge/BackgroundPanel.java -text svneol=native#text/plain @@ -7911,15 +7883,6 @@ src/forge/BoosterPack.java svneol=native#text/plain src/forge/ButtonUtil.java svneol=native#text/plain src/forge/Card.java -text svneol=native#text/plain src/forge/CardContainer.java svneol=native#text/plain -src/forge/CardFactory.java -text svneol=native#text/plain -src/forge/CardFactoryUtil.java -text svneol=native#text/plain -src/forge/CardFactory_Auras.java -text svneol=native#text/plain -src/forge/CardFactory_Creatures.java -text svneol=native#text/plain -src/forge/CardFactory_Equipment.java -text svneol=native#text/plain -src/forge/CardFactory_Instants.java -text svneol=native#text/plain -src/forge/CardFactory_Lands.java -text svneol=native#text/plain -src/forge/CardFactory_Planeswalkers.java -text svneol=native#text/plain -src/forge/CardFactory_Sorceries.java -text svneol=native#text/plain src/forge/CardFilter.java -text svneol=native#text/plain src/forge/CardList.java -text svneol=native#text/plain src/forge/CardListFilter.java svneol=native#text/plain @@ -7944,7 +7907,6 @@ src/forge/ComputerUtil_Block2.java svneol=native#text/plain src/forge/Computer_Race.java svneol=native#text/plain src/forge/Constant.java svneol=native#text/plain src/forge/CopyFiles.java -text svneol=native#text/plain -src/forge/Cost_Payment.java -text svneol=native#text/plain src/forge/Counters.java svneol=native#text/plain src/forge/Deck.java svneol=native#text/plain src/forge/DeckIO.java svneol=native#text/plain @@ -7963,13 +7925,6 @@ src/forge/GUI_Quest_Filter.java -text svneol=native#text/plain src/forge/GameAction.java svneol=native#text/plain src/forge/GameActionUtil.java -text svneol=native#text/plain src/forge/GameInfo.java -text svneol=native#text/plain -src/forge/Generate2ColorDeck.java -text svneol=native#text/plain -src/forge/Generate3ColorDeck.java -text svneol=native#text/plain -src/forge/GenerateConstructedDeck.java -text svneol=native#text/plain -src/forge/GenerateConstructedMultiColorDeck.java -text svneol=native#text/plain -src/forge/GenerateDraftDeck.java svneol=native#text/plain -src/forge/GenerateSealedDeck.java svneol=native#text/plain -src/forge/GenerateThemeDeck.java -text svneol=native#text/plain src/forge/GuiDisplay.java svneol=native#text/plain src/forge/GuiDisplay2.java svneol=native#text/plain src/forge/GuiDisplay3.java svneol=native#text/plain @@ -8000,29 +7955,10 @@ src/forge/HumanPlayer.java -text svneol=native#text/plain src/forge/IO.java svneol=native#text/plain src/forge/ImageCache.java svneol=native#text/plain src/forge/ImagePreviewPanel.java -text svneol=native#text/plain -src/forge/Input.java svneol=native#text/plain -src/forge/InputControl.java svneol=native#text/plain -src/forge/Input_Attack.java svneol=native#text/plain -src/forge/Input_Block.java svneol=native#text/plain -src/forge/Input_Cleanup.java svneol=native#text/plain -src/forge/Input_Mulligan.java svneol=native#text/plain -src/forge/Input_PassPriority.java -text svneol=native#text/plain -src/forge/Input_PayManaCost.java svneol=native#text/plain -src/forge/Input_PayManaCostUtil.java svneol=native#text/plain -src/forge/Input_PayManaCost_Ability.java svneol=native#text/plain src/forge/KeyListenerTest.java -text svneol=native#text/plain src/forge/ListProperties.java -text svneol=native#text/plain src/forge/MP3Player.java -text svneol=native#text/plain src/forge/MagicStack.java svneol=native#text/plain -src/forge/Mana.java -text svneol=native#text/plain -src/forge/ManaCost.java -text svneol=native#text/plain -src/forge/ManaPool.java svneol=native#text/plain -src/forge/Mana_Part.java svneol=native#text/plain -src/forge/Mana_PartColor.java svneol=native#text/plain -src/forge/Mana_PartColorless.java svneol=native#text/plain -src/forge/Mana_PartSnow.java svneol=native#text/plain -src/forge/Mana_PartSplit.java svneol=native#text/plain -src/forge/Mana_PartTest.java svneol=native#text/plain src/forge/MenuItem_HowToPlay.java svneol=native#text/plain src/forge/Move.java svneol=native#text/plain src/forge/MoveAttack.java svneol=native#text/plain @@ -8059,52 +7995,106 @@ src/forge/RunTest.java svneol=native#text/plain src/forge/SetInfo.java -text svneol=native#text/plain src/forge/SetInfoUtil.java -text svneol=native#text/plain src/forge/SimpleCombat.java svneol=native#text/plain -src/forge/Spell.java svneol=native#text/plain -src/forge/SpellAbility.java -text svneol=native#text/plain -src/forge/SpellAbilityList.java svneol=native#text/plain -src/forge/SpellAbilityUtil.java svneol=native#text/plain -src/forge/SpellAbility_Requirements.java -text svneol=native#text/plain -src/forge/SpellAbility_Restriction.java -text svneol=native#text/plain -src/forge/Spell_Evoke.java svneol=native#text/plain -src/forge/Spell_Permanent.java svneol=native#text/plain src/forge/StaticEffect.java -text svneol=native#text/plain src/forge/StaticEffects.java -text svneol=native#text/plain src/forge/TableModel.java -text svneol=native#text/plain src/forge/TableSorter.java svneol=native#text/plain -src/forge/Target.java -text svneol=native#text/plain -src/forge/Target_Selection.java -text svneol=native#text/plain src/forge/TempRun.java svneol=native#text/plain src/forge/Test.java svneol=native#text/plain src/forge/TestMove.java svneol=native#text/plain src/forge/TestPanel.java svneol=native#text/plain src/forge/Time.java svneol=native#text/plain -src/forge/Trigger.java -text svneol=native#text/plain -src/forge/TriggerHandler.java -text svneol=native#text/plain -src/forge/Trigger_AttackerBlocked.java -text svneol=native#text/plain -src/forge/Trigger_AttackerUnblocked.java -text svneol=native#text/plain -src/forge/Trigger_Attacks.java -text svneol=native#text/plain -src/forge/Trigger_Blocks.java -text svneol=native#text/plain -src/forge/Trigger_ChangesZone.java -text svneol=native#text/plain -src/forge/Trigger_CounterAdded.java -text svneol=native#text/plain -src/forge/Trigger_Cycled.java -text svneol=native#text/plain -src/forge/Trigger_DamageDone.java -text svneol=native#text/plain -src/forge/Trigger_Discarded.java -text svneol=native#text/plain -src/forge/Trigger_Drawn.java -text svneol=native#text/plain -src/forge/Trigger_LandPlayed.java -text svneol=native#text/plain -src/forge/Trigger_LifeGained.java -text svneol=native#text/plain -src/forge/Trigger_LifeLost.java -text svneol=native#text/plain -src/forge/Trigger_Phase.java -text svneol=native#text/plain -src/forge/Trigger_Sacrificed.java -text svneol=native#text/plain -src/forge/Trigger_Shuffled.java -text svneol=native#text/plain -src/forge/Trigger_SpellAbilityCast.java -text svneol=native#text/plain -src/forge/Trigger_Taps.java -text svneol=native#text/plain -src/forge/Trigger_TurnFaceUp.java -text svneol=native#text/plain -src/forge/Trigger_Unequip.java -text svneol=native#text/plain -src/forge/Trigger_Untaps.java -text svneol=native#text/plain src/forge/UndoCommand.java svneol=native#text/plain src/forge/Wait.java svneol=native#text/plain src/forge/WinLose.java svneol=native#text/plain src/forge/ZCTrigger.java svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_AlterLife.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_Animate.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_Bounce.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_ChangeZone.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_Clash.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_Combat.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_CounterMagic.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_Counters.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_DealDamage.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_Destroy.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_Fetch.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_GainControl.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_Mana.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_PermanentState.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_Pump.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_Regenerate.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_Sacrifice.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_Token.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_Turns.java -text svneol=native#text/plain +src/forge/card/abilityFactory/AbilityFactory_ZoneAffecting.java -text svneol=native#text/plain +src/forge/card/cardFactory/CardFactory.java -text svneol=native#text/plain +src/forge/card/cardFactory/CardFactoryUtil.java -text svneol=native#text/plain +src/forge/card/cardFactory/CardFactory_Auras.java -text svneol=native#text/plain +src/forge/card/cardFactory/CardFactory_Creatures.java -text svneol=native#text/plain +src/forge/card/cardFactory/CardFactory_Equipment.java -text svneol=native#text/plain +src/forge/card/cardFactory/CardFactory_Instants.java -text svneol=native#text/plain +src/forge/card/cardFactory/CardFactory_Lands.java -text svneol=native#text/plain +src/forge/card/cardFactory/CardFactory_Planeswalkers.java -text svneol=native#text/plain +src/forge/card/cardFactory/CardFactory_Sorceries.java -text svneol=native#text/plain +src/forge/card/mana/Mana.java -text svneol=native#text/plain +src/forge/card/mana/ManaCost.java -text svneol=native#text/plain +src/forge/card/mana/ManaPool.java svneol=native#text/plain +src/forge/card/mana/Mana_Part.java svneol=native#text/plain +src/forge/card/mana/Mana_PartColor.java svneol=native#text/plain +src/forge/card/mana/Mana_PartColorless.java svneol=native#text/plain +src/forge/card/mana/Mana_PartSnow.java svneol=native#text/plain +src/forge/card/mana/Mana_PartSplit.java svneol=native#text/plain +src/forge/card/mana/Mana_PartTest.java svneol=native#text/plain +src/forge/card/spellability/Ability.java svneol=native#text/plain +src/forge/card/spellability/Ability_Activated.java svneol=native#text/plain +src/forge/card/spellability/Ability_Mana.java -text svneol=native#text/plain +src/forge/card/spellability/Ability_Static.java -text svneol=native#text/plain +src/forge/card/spellability/Ability_Sub.java -text svneol=native#text/plain +src/forge/card/spellability/Ability_Triggered.java svneol=native#text/plain +src/forge/card/spellability/Cost.java -text svneol=native#text/plain +src/forge/card/spellability/Cost_Payment.java -text svneol=native#text/plain +src/forge/card/spellability/Spell.java svneol=native#text/plain +src/forge/card/spellability/SpellAbility.java -text svneol=native#text/plain +src/forge/card/spellability/SpellAbilityList.java svneol=native#text/plain +src/forge/card/spellability/SpellAbilityUtil.java svneol=native#text/plain +src/forge/card/spellability/SpellAbility_Requirements.java -text svneol=native#text/plain +src/forge/card/spellability/SpellAbility_Restriction.java -text svneol=native#text/plain +src/forge/card/spellability/Spell_Evoke.java svneol=native#text/plain +src/forge/card/spellability/Spell_Permanent.java svneol=native#text/plain +src/forge/card/spellability/Target.java -text svneol=native#text/plain +src/forge/card/spellability/Target_Selection.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger.java -text svneol=native#text/plain +src/forge/card/trigger/TriggerHandler.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_AttackerBlocked.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_AttackerUnblocked.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_Attacks.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_Blocks.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_ChangesZone.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_CounterAdded.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_Cycled.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_DamageDone.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_Discarded.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_Drawn.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_LandPlayed.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_LifeGained.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_LifeLost.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_Phase.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_Sacrificed.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_Shuffled.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_SpellAbilityCast.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_Taps.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_TurnFaceUp.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_Unequip.java -text svneol=native#text/plain +src/forge/card/trigger/Trigger_Untaps.java -text svneol=native#text/plain +src/forge/deck/generate/Generate2ColorDeck.java -text svneol=native#text/plain +src/forge/deck/generate/Generate3ColorDeck.java -text svneol=native#text/plain +src/forge/deck/generate/GenerateConstructedDeck.java -text svneol=native#text/plain +src/forge/deck/generate/GenerateConstructedMultiColorDeck.java -text svneol=native#text/plain +src/forge/deck/generate/GenerateDraftDeck.java svneol=native#text/plain +src/forge/deck/generate/GenerateSealedDeck.java svneol=native#text/plain +src/forge/deck/generate/GenerateThemeDeck.java -text svneol=native#text/plain src/forge/error/ErrorViewer.java svneol=native#text/plain src/forge/error/ExceptionHandler.java -text svneol=native#text/plain src/forge/gui/ForgeAction.java svneol=native#text/plain @@ -8115,6 +8105,16 @@ src/forge/gui/MultiLineLabelUI.java svneol=native#text/plain src/forge/gui/game/CardDetailPanel.java svneol=native#text/plain src/forge/gui/game/CardPanel.java svneol=native#text/plain src/forge/gui/game/CardPicturePanel.java svneol=native#text/plain +src/forge/gui/input/Input.java svneol=native#text/plain +src/forge/gui/input/InputControl.java svneol=native#text/plain +src/forge/gui/input/Input_Attack.java svneol=native#text/plain +src/forge/gui/input/Input_Block.java svneol=native#text/plain +src/forge/gui/input/Input_Cleanup.java svneol=native#text/plain +src/forge/gui/input/Input_Mulligan.java svneol=native#text/plain +src/forge/gui/input/Input_PassPriority.java -text svneol=native#text/plain +src/forge/gui/input/Input_PayManaCost.java svneol=native#text/plain +src/forge/gui/input/Input_PayManaCostUtil.java svneol=native#text/plain +src/forge/gui/input/Input_PayManaCost_Ability.java svneol=native#text/plain src/forge/properties/ForgePreferences.java svneol=native#text/plain src/forge/properties/ForgeProps.java svneol=native#text/plain src/forge/properties/NewConstants.java svneol=native#text/plain diff --git a/src/forge/AIPlayer.java b/src/forge/AIPlayer.java index 7b29c530dc7..b04f3a2f423 100644 --- a/src/forge/AIPlayer.java +++ b/src/forge/AIPlayer.java @@ -3,6 +3,9 @@ package forge; import java.util.Random; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.SpellAbility; + public class AIPlayer extends Player{ diff --git a/src/forge/AllZone.java b/src/forge/AllZone.java index e304d1ef223..4e1d3010b48 100644 --- a/src/forge/AllZone.java +++ b/src/forge/AllZone.java @@ -1,6 +1,10 @@ package forge; +import forge.card.cardFactory.CardFactory; +import forge.card.mana.ManaPool; +import forge.card.trigger.TriggerHandler; +import forge.gui.input.InputControl; import forge.properties.ForgeProps; import forge.properties.NewConstants; diff --git a/src/forge/AllZoneUtil.java b/src/forge/AllZoneUtil.java index 981f0d19e99..088604bf12b 100644 --- a/src/forge/AllZoneUtil.java +++ b/src/forge/AllZoneUtil.java @@ -4,6 +4,7 @@ package forge; import java.util.ArrayList; +import forge.card.cardFactory.CardFactoryUtil; import forge.gui.GuiUtils; /** diff --git a/src/forge/Card.java b/src/forge/Card.java index 8ea274c912f..dc380f3885e 100644 --- a/src/forge/Card.java +++ b/src/forge/Card.java @@ -12,6 +12,15 @@ import java.util.Map.Entry; import com.esotericsoftware.minlog.Log; +import forge.card.cardFactory.CardFactory; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.mana.ManaCost; +import forge.card.spellability.Ability_Mana; +import forge.card.spellability.Ability_Triggered; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Spell_Permanent; +import forge.card.trigger.Trigger; + public class Card extends MyObservable { private static int nextUniqueNumber; private int uniqueNumber = nextUniqueNumber++; diff --git a/src/forge/CardList.java b/src/forge/CardList.java index ce52f47bad7..aec5e86ac6b 100644 --- a/src/forge/CardList.java +++ b/src/forge/CardList.java @@ -7,6 +7,8 @@ import java.util.Collections; import java.util.Comparator; import java.util.Iterator; +import forge.card.cardFactory.CardFactoryUtil; + public class CardList implements Iterable { diff --git a/src/forge/CardListUtil.java b/src/forge/CardListUtil.java index 60466753e09..2fa1d74e0d3 100644 --- a/src/forge/CardListUtil.java +++ b/src/forge/CardListUtil.java @@ -4,6 +4,8 @@ import java.util.Comparator; import com.esotericsoftware.minlog.Log; +import forge.card.cardFactory.CardFactoryUtil; + public class CardListUtil { public static CardList filterToughness(CardList in, int atLeastToughness) diff --git a/src/forge/CardUtil.java b/src/forge/CardUtil.java index 0dc5abc6993..4fdc14a523d 100644 --- a/src/forge/CardUtil.java +++ b/src/forge/CardUtil.java @@ -9,6 +9,9 @@ import java.util.Map; import java.util.Random; import java.util.Set; +import forge.card.mana.ManaCost; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.SpellAbilityList; import forge.properties.ForgeProps; import forge.properties.NewConstants; diff --git a/src/forge/Card_Color.java b/src/forge/Card_Color.java index 51cc94373bc..9a2c3d4ea80 100644 --- a/src/forge/Card_Color.java +++ b/src/forge/Card_Color.java @@ -3,6 +3,8 @@ package forge; import java.util.ArrayList; import java.util.EnumSet; +import forge.card.mana.ManaCost; + public class Card_Color { // takes care of individual card color, for global color change effects use AllZone.GameInfo.getColorChanges() private EnumSet col; diff --git a/src/forge/Color.java b/src/forge/Color.java index 426f213ef78..bfa8c1c55a6 100644 --- a/src/forge/Color.java +++ b/src/forge/Color.java @@ -2,6 +2,8 @@ package forge; import java.util.EnumSet; +import forge.card.mana.ManaCost; + public enum Color { Colorless(0), White(1), diff --git a/src/forge/CombatUtil.java b/src/forge/CombatUtil.java index 743b1c5ec2a..97a59c22ce4 100644 --- a/src/forge/CombatUtil.java +++ b/src/forge/CombatUtil.java @@ -9,11 +9,16 @@ import java.util.regex.Pattern; import com.esotericsoftware.minlog.Log; +import forge.card.abilityFactory.AbilityFactory; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability; +import forge.card.trigger.Trigger; import forge.gui.GuiUtils; +import forge.gui.input.Input_PayManaCost_Ability; public class CombatUtil { - static boolean Lorthos_Cancelled; + private static boolean Lorthos_Cancelled; //can the creature block given the combat state? @@ -1781,7 +1786,7 @@ public class CombatUtil { CardList Silence = AllZoneUtil.getPlayerCardsInPlay(c.getController().getOpponent()); Silence = Silence.getName("Linvala, Keeper of Silence"); if(Silence.size() == 0) { - Lorthos_Cancelled = false; + setLorthosCancelled(false); if(c.getController().equals(AllZone.HumanPlayer)) { AllZone.InputControl.setInput(new Input_PayManaCost_Ability("Activate " + c.getName() + "'s ability: " + "\r\n", ability.getManaCost(), paidCommand, unpaidCommand)); @@ -2403,5 +2408,15 @@ public class CombatUtil { AllZone.Stack.add(ability); } } + + + public static void setLorthosCancelled(boolean lorthos_Cancelled) { + Lorthos_Cancelled = lorthos_Cancelled; + } + + + public static boolean isLorthosCancelled() { + return Lorthos_Cancelled; + } }//Class CombatUtil diff --git a/src/forge/ComputerAI_General.java b/src/forge/ComputerAI_General.java index 206f4bc1865..4a93652b39d 100644 --- a/src/forge/ComputerAI_General.java +++ b/src/forge/ComputerAI_General.java @@ -5,6 +5,9 @@ import java.util.ArrayList; import com.esotericsoftware.minlog.Log; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.SpellAbility; + public class ComputerAI_General implements Computer { diff --git a/src/forge/ComputerAI_Input.java b/src/forge/ComputerAI_Input.java index c141d60013b..089a8f41403 100644 --- a/src/forge/ComputerAI_Input.java +++ b/src/forge/ComputerAI_Input.java @@ -3,6 +3,8 @@ package forge; import com.esotericsoftware.minlog.Log; +import forge.gui.input.Input; + public class ComputerAI_Input extends Input { private static final long serialVersionUID = -3091338639571662216L; diff --git a/src/forge/ComputerAI_counterSpells2.java b/src/forge/ComputerAI_counterSpells2.java index 6ff1b5ced85..04f7b46fea1 100644 --- a/src/forge/ComputerAI_counterSpells2.java +++ b/src/forge/ComputerAI_counterSpells2.java @@ -2,6 +2,9 @@ package forge; import java.util.ArrayList; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.SpellAbility; + public class ComputerAI_counterSpells2 { public static ArrayList KeywordedCounterspells = new ArrayList(); diff --git a/src/forge/ComputerUtil.java b/src/forge/ComputerUtil.java index bf8ba1feeef..0dc6e308408 100644 --- a/src/forge/ComputerUtil.java +++ b/src/forge/ComputerUtil.java @@ -3,6 +3,16 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; +import forge.card.abilityFactory.AbilityFactory; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.mana.ManaCost; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Mana; +import forge.card.spellability.Cost; +import forge.card.spellability.Cost_Payment; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; + public class ComputerUtil { @@ -30,7 +40,7 @@ public class ComputerUtil if(sa.isSpell() && !source.isCopiedSpell()) AllZone.GameAction.moveToStack(source); - Ability_Cost cost = sa.getPayCosts(); + Cost cost = sa.getPayCosts(); Target tgt = sa.getTarget(); if (cost == null){ @@ -187,12 +197,12 @@ public class ComputerUtil ManaCost cost = new ManaCost(mana); // Tack xMana Payments into mana here if X is a set value - if (sa.getPayCosts() != null && cost.xcounter > 0){ + if (sa.getPayCosts() != null && cost.getXcounter() > 0){ String xSvar = card.getSVar("X").equals("Count$xPaid") ? "PayX" : "X"; // For Count$xPaid set PayX in the AFs then use that here // Else calculate it as appropriate. if (!card.getSVar(xSvar).equals("")){ - int manaToAdd = AbilityFactory.calculateAmount(card, xSvar, sa) * cost.xcounter; + int manaToAdd = AbilityFactory.calculateAmount(card, xSvar, sa) * cost.getXcounter(); cost.increaseColorlessMana(manaToAdd); } } @@ -272,7 +282,7 @@ public class ComputerUtil static public boolean canPayAdditionalCosts(SpellAbility sa) { // Add additional cost checks here before attempting to activate abilities - Ability_Cost cost = sa.getPayCosts(); + Cost cost = sa.getPayCosts(); if (cost == null) return true; Card card = sa.getSourceCard(); @@ -480,7 +490,7 @@ public class ComputerUtil Card card = sa.getSourceCard(); // Tack xMana Payments into mana here if X is a set value - if (sa.getPayCosts() != null && cost.xcounter > 0){ + if (sa.getPayCosts() != null && cost.getXcounter() > 0){ String xSvar = card.getSVar("X").equals("Count$xPaid") ? "PayX" : "X"; // For Count$xPaid set PayX in the AFs then use that here // Else calculate it as appropriate. @@ -489,7 +499,7 @@ public class ComputerUtil manaToAdd = Integer.parseInt(card.getSVar(xSvar)); } else{ - manaToAdd = AbilityFactory.calculateAmount(card, xSvar, sa) * cost.xcounter; + manaToAdd = AbilityFactory.calculateAmount(card, xSvar, sa) * cost.getXcounter(); } cost.increaseColorlessMana(manaToAdd); @@ -833,7 +843,7 @@ public class ComputerUtil Arrays.sort(sa, c); }//sortSpellAbilityByCost() - static void sacrificePermanents(int amount, CardList list) { + static public void sacrificePermanents(int amount, CardList list) { // used in Annihilator and AF_Sacrifice int max = list.size(); if (max > amount) diff --git a/src/forge/ComputerUtil_Attack2.java b/src/forge/ComputerUtil_Attack2.java index a9d0eac76d4..a23647347df 100644 --- a/src/forge/ComputerUtil_Attack2.java +++ b/src/forge/ComputerUtil_Attack2.java @@ -3,6 +3,8 @@ package forge; import java.util.ArrayList; import java.util.Random; +import forge.card.cardFactory.CardFactoryUtil; + //doesHumanAttackAndWin() uses the global variable AllZone.ComputerPlayer public class ComputerUtil_Attack2 { diff --git a/src/forge/ComputerUtil_Block2.java b/src/forge/ComputerUtil_Block2.java index fc834cfdc5e..03ce078c0b5 100644 --- a/src/forge/ComputerUtil_Block2.java +++ b/src/forge/ComputerUtil_Block2.java @@ -3,6 +3,8 @@ package forge; import java.util.ArrayList; +import forge.card.cardFactory.CardFactoryUtil; + public class ComputerUtil_Block2 { diff --git a/src/forge/EndOfTurn.java b/src/forge/EndOfTurn.java index 31038fb2be4..8b24700a3c6 100644 --- a/src/forge/EndOfTurn.java +++ b/src/forge/EndOfTurn.java @@ -1,5 +1,8 @@ package forge; +import forge.card.spellability.Ability; +import forge.card.spellability.SpellAbility; + //handles "until end of turn" and "at end of turn" commands from cards public class EndOfTurn implements java.io.Serializable { diff --git a/src/forge/GameAction.java b/src/forge/GameAction.java index 0f624a0d1eb..4e581698732 100644 --- a/src/forge/GameAction.java +++ b/src/forge/GameAction.java @@ -2,7 +2,24 @@ package forge; +import forge.card.cardFactory.CardFactory; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.mana.ManaCost; +import forge.card.mana.ManaPool; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Static; +import forge.card.spellability.Cost; +import forge.card.spellability.Cost_Payment; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.SpellAbility_Requirements; +import forge.card.spellability.Target_Selection; +import forge.card.trigger.Trigger; +import forge.deck.generate.GenerateConstructedDeck; import forge.gui.GuiUtils; +import forge.gui.input.Input_Mulligan; +import forge.gui.input.Input_PayManaCost; +import forge.gui.input.Input_PayManaCost_Ability; import forge.properties.ForgeProps; import forge.properties.NewConstants.LANG.GameAction.GAMEACTION_TEXT; @@ -201,7 +218,7 @@ public class GameAction { }; String recoverCost = recoverable.getKeyword().get(recoverable.getKeywordPosition("Recover")).split(":")[1]; - Ability_Cost abCost = new Ability_Cost(recoverCost,recoverable.getName(),false); + Cost abCost = new Cost(recoverCost,recoverable.getName(),false); abRecover.setPayCosts(abCost); StringBuilder question = new StringBuilder("Recover "); @@ -735,7 +752,7 @@ public class GameAction { } } - static boolean MultiTarget_Cancelled = false; + private static boolean MultiTarget_Cancelled = false; public void runWheneverKeyword(Card c, String Event, Object[] Custom_Parameters) { /** * Custom_Parameters Info: @@ -1041,7 +1058,7 @@ public class GameAction { private static final long serialVersionUID = -83034517601871955L; public void execute() { - MultiTarget_Cancelled = false; + setMultiTargetCancelled(false); for(int i = 0; i < F_Multiple_Targets; i++) { AllZone.InputControl.setInput(CardFactoryUtil.input_MultitargetCreatureOrPlayer(F_SpellAbility , i , F_Amount[0]*F_Multiple_Targets,new Command() { @@ -2228,7 +2245,7 @@ public class GameAction { Constant.Quest.fantasyQuest[0] = true; } - boolean Start_Cut = false; + private boolean Start_Cut = false; boolean StaticEffectKeywordReset = true; public void newGame(Deck humanDeck, Deck computerDeck) { // AllZone.Computer = new ComputerAI_Input(new ComputerAI_General()); @@ -2405,7 +2422,7 @@ public class GameAction { if (Constant.Runtime.matchState.countWinLose() == 0) { // New code to determine who goes first. Delete this if it doesn't work properly - if(Start_Cut) + if(isStartCut()) seeWhoPlaysFirst(); else seeWhoPlaysFirst_CoinToss(); @@ -2424,7 +2441,7 @@ public class GameAction { AllZone.Human_Battlefield.add(mp); AllZone.InputControl.setInput(new Input_Mulligan()); - Phase.GameBegins = 1; + Phase.setGameBegins(1); }//newGame() //this is where the computer cheats @@ -2586,8 +2603,8 @@ public class GameAction { } }//seeWhoPlaysFirst_CoinToss() - Card HumanCut = null; - Card ComputerCut = null; + private Card HumanCut = null; + private Card ComputerCut = null; public void seeWhoPlaysFirst() { @@ -2611,7 +2628,7 @@ public class GameAction { if(Starter_Determined == true) break; if(HLibrary.size() > 0) - HumanCut = HLibrary.get(MyRandom.random.nextInt(HLibrary.size())); + setHumanCut(HLibrary.get(MyRandom.random.nextInt(HLibrary.size()))); else { computerStartsGame(); JOptionPane.showMessageDialog(null, ForgeProps.getLocalized(GAMEACTION_TEXT.HUMAN_MANA_COST) + "\r\n" + ForgeProps.getLocalized(GAMEACTION_TEXT.COMPUTER_STARTS), "", JOptionPane.INFORMATION_MESSAGE); @@ -2619,26 +2636,26 @@ public class GameAction { } if(CLibrary.size() > 0) - ComputerCut = CLibrary.get(MyRandom.random.nextInt(CLibrary.size())); + setComputerCut(CLibrary.get(MyRandom.random.nextInt(CLibrary.size()))); else { JOptionPane.showMessageDialog(null, ForgeProps.getLocalized(GAMEACTION_TEXT.COMPUTER_MANA_COST) + "\r\n" + ForgeProps.getLocalized(GAMEACTION_TEXT.HUMAN_STARTS), "", JOptionPane.INFORMATION_MESSAGE); return; } Cut_Count = Cut_Count + 1; - AllZone.GameAction.moveTo(AllZone.getZone(Constant.Zone.Library, AllZone.HumanPlayer),AllZone.GameAction.HumanCut); - AllZone.GameAction.moveTo(AllZone.getZone(Constant.Zone.Library, AllZone.ComputerPlayer),AllZone.GameAction.ComputerCut); + AllZone.GameAction.moveTo(AllZone.getZone(Constant.Zone.Library, AllZone.HumanPlayer),AllZone.GameAction.getHumanCut()); + AllZone.GameAction.moveTo(AllZone.getZone(Constant.Zone.Library, AllZone.ComputerPlayer),AllZone.GameAction.getComputerCut()); StringBuilder sb = new StringBuilder(); - sb.append(ForgeProps.getLocalized(GAMEACTION_TEXT.HUMAN_CUT) + HumanCut.getName() + " (" + HumanCut.getManaCost() + ")" + "\r\n"); - sb.append(ForgeProps.getLocalized(GAMEACTION_TEXT.COMPUTER_CUT) + ComputerCut.getName() + " (" + ComputerCut.getManaCost() + ")" + "\r\n"); + sb.append(ForgeProps.getLocalized(GAMEACTION_TEXT.HUMAN_CUT) + getHumanCut().getName() + " (" + getHumanCut().getManaCost() + ")" + "\r\n"); + sb.append(ForgeProps.getLocalized(GAMEACTION_TEXT.COMPUTER_CUT) + getComputerCut().getName() + " (" + getComputerCut().getManaCost() + ")" + "\r\n"); sb.append("\r\n" + "Number of times the deck has been cut: " + Cut_Count + "\r\n"); - if(CardUtil.getConvertedManaCost(ComputerCut.getManaCost()) > CardUtil.getConvertedManaCost(HumanCut.getManaCost())){ + if(CardUtil.getConvertedManaCost(getComputerCut().getManaCost()) > CardUtil.getConvertedManaCost(getHumanCut().getManaCost())){ computerStartsGame(); JOptionPane.showMessageDialog(null, sb + ForgeProps.getLocalized(GAMEACTION_TEXT.COMPUTER_STARTS), "", JOptionPane.INFORMATION_MESSAGE); return; } - else if(CardUtil.getConvertedManaCost(ComputerCut.getManaCost()) < CardUtil.getConvertedManaCost(HumanCut.getManaCost())) { + else if(CardUtil.getConvertedManaCost(getComputerCut().getManaCost()) < CardUtil.getConvertedManaCost(getHumanCut().getManaCost())) { JOptionPane.showMessageDialog(null, sb + ForgeProps.getLocalized(GAMEACTION_TEXT.HUMAN_STARTS), "", JOptionPane.INFORMATION_MESSAGE); return; } @@ -2856,7 +2873,7 @@ public class GameAction { } // isSpell // Get Cost Reduction - if(Phase.GameBegins == 1) { // Remove GameBegins from Phase and into The starting game code + if(Phase.getGameBegins() == 1) { // Remove GameBegins from Phase and into The starting game code CardList Cards_In_Play = new CardList(); Cards_In_Play.addAll(AllZone.getZone(Constant.Zone.Battlefield, AllZone.HumanPlayer).getCards()); Cards_In_Play.addAll(AllZone.getZone(Constant.Zone.Battlefield, AllZone.ComputerPlayer).getCards()); @@ -3218,7 +3235,7 @@ public class GameAction { Cost_Payment payment = null; if(sa.getPayCosts() == null) { - payment = new Cost_Payment(new Ability_Cost("0",sa.getSourceCard().getName(),sa.isAbility()), sa); + payment = new Cost_Payment(new Cost("0",sa.getSourceCard().getName(),sa.isAbility()), sa); } else { @@ -3480,4 +3497,36 @@ public class GameAction { } }//for } + + public static void setMultiTargetCancelled(boolean multiTarget_Cancelled) { + MultiTarget_Cancelled = multiTarget_Cancelled; + } + + public static boolean isMultiTargetCancelled() { + return MultiTarget_Cancelled; + } + + public void setComputerCut(Card computerCut) { + ComputerCut = computerCut; + } + + public Card getComputerCut() { + return ComputerCut; + } + + public void setStartCut(boolean start_Cut) { + Start_Cut = start_Cut; + } + + public boolean isStartCut() { + return Start_Cut; + } + + public void setHumanCut(Card humanCut) { + HumanCut = humanCut; + } + + public Card getHumanCut() { + return HumanCut; + } } diff --git a/src/forge/GameActionUtil.java b/src/forge/GameActionUtil.java index 5d534ff0623..3caac1fd322 100644 --- a/src/forge/GameActionUtil.java +++ b/src/forge/GameActionUtil.java @@ -7,7 +7,21 @@ import java.util.HashMap; import javax.swing.JOptionPane; +import forge.card.abilityFactory.AbilityFactory; +import forge.card.cardFactory.CardFactory; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Mana; +import forge.card.spellability.Ability_Static; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; import forge.gui.GuiUtils; +import forge.gui.input.Input; +import forge.gui.input.Input_PayManaCostUtil; +import forge.gui.input.Input_PayManaCost_Ability; public class GameActionUtil { @@ -390,7 +404,7 @@ public class GameActionUtil { Card source = sa.getSourceCard(); if(!source.isCopiedSpell() && source.getKeyword().contains("Storm")) { - int StormNumber = Phase.StormCount - 1; + int StormNumber = Phase.getStormCount() - 1; for(int i = 0; i < StormNumber; i++) AllZone.CardFactory.copySpellontoStack(source, source, sa, true); } @@ -5962,7 +5976,7 @@ public class GameActionUtil { } if(!hasAbility) { - Ability_Cost abCost = new Ability_Cost("T", c.getName(), true); + Cost abCost = new Cost("T", c.getName(), true); Target target = new Target(c,"TgtCP"); final Ability_Activated ability = new Ability_Activated(c, abCost, target) { @@ -6705,7 +6719,7 @@ public class GameActionUtil { PlayerZone opponentPlayZone = AllZone.getZone(Constant.Zone.Battlefield,AllZone.ComputerPlayer); CardList opponentCreatureList = new CardList(opponentPlayZone.getCards()); opponentCreatureList = opponentCreatureList.getType("Creature"); - if(Phase.Sac_Dauntless_Escort == true) { + if(Phase.isSacDauntlessEscort() == true) { if(PlayerCreatureList.size() != 0) { for(int i = 0; i < PlayerCreatureList.size(); i++) { Card c = PlayerCreatureList.get(i); @@ -6738,7 +6752,7 @@ public class GameActionUtil { opponentPlayZone = AllZone.getZone(Constant.Zone.Battlefield,AllZone.HumanPlayer); opponentCreatureList = new CardList(opponentPlayZone.getCards()); opponentCreatureList = opponentCreatureList.getType("Creature"); - if(Phase.Sac_Dauntless_Escort_Comp == true) { + if(Phase.isSacDauntlessEscortAI() == true) { if(PlayerCreatureList.size() != 0) { for(int i = 0; i < PlayerCreatureList.size(); i++) { Card c = PlayerCreatureList.get(i); @@ -7180,7 +7194,7 @@ public class GameActionUtil { CardList next = new CardList(); public void execute() { - if(Phase.GameBegins == 1) { + if(Phase.getGameBegins() == 1) { // reset creatures removeSwampwalk(old); @@ -7247,7 +7261,7 @@ public class GameActionUtil { CardList next = new CardList(); public void execute() { - if(Phase.GameBegins == 1) { + if(Phase.getGameBegins() == 1) { // reset creatures removeFirstStrike(old); @@ -7314,7 +7328,7 @@ public class GameActionUtil { CardList next = new CardList(); public void execute() { - if(Phase.GameBegins == 1) { + if(Phase.getGameBegins() == 1) { // reset creatures removeHaste(old); @@ -7381,7 +7395,7 @@ public class GameActionUtil { CardList next = new CardList(); public void execute() { - if(Phase.GameBegins == 1) { + if(Phase.getGameBegins() == 1) { // reset creatures removeFlying(old); @@ -7448,7 +7462,7 @@ public class GameActionUtil { CardList next = new CardList(); public void execute() { - if(Phase.GameBegins == 1) { + if(Phase.getGameBegins() == 1) { // reset creatures removeTrample(old); diff --git a/src/forge/GameInfo.java b/src/forge/GameInfo.java index ae750effc6d..66baf27809a 100644 --- a/src/forge/GameInfo.java +++ b/src/forge/GameInfo.java @@ -2,6 +2,8 @@ package forge; import java.util.ArrayList; +import forge.card.mana.ManaCost; + public class GameInfo { private boolean computerStartedThisGame = false; diff --git a/src/forge/GuiDisplay3.java b/src/forge/GuiDisplay3.java index 59afe767cf0..a7815d57222 100644 --- a/src/forge/GuiDisplay3.java +++ b/src/forge/GuiDisplay3.java @@ -2,12 +2,18 @@ package forge; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.SpellAbility; import forge.error.ErrorViewer; import forge.gui.ForgeAction; import forge.gui.GuiUtils; import forge.gui.game.CardDetailPanel; import forge.gui.game.CardPanel; import forge.gui.game.CardPicturePanel; +import forge.gui.input.Input_Attack; +import forge.gui.input.Input_Block; +import forge.gui.input.Input_PayManaCost; +import forge.gui.input.Input_PayManaCost_Ability; import forge.properties.ForgePreferences; import forge.properties.ForgeProps; import forge.properties.NewConstants; diff --git a/src/forge/GuiDisplay4.java b/src/forge/GuiDisplay4.java index 42986ef7e8d..4e078c51366 100644 --- a/src/forge/GuiDisplay4.java +++ b/src/forge/GuiDisplay4.java @@ -5,11 +5,17 @@ import arcane.ui.HandArea; import arcane.ui.PlayArea; import arcane.ui.ViewPanel; import arcane.ui.util.Animation; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.SpellAbility; import forge.error.ErrorViewer; import forge.gui.ForgeAction; import forge.gui.GuiUtils; import forge.gui.game.CardDetailPanel; import forge.gui.game.CardPanel; +import forge.gui.input.Input_Attack; +import forge.gui.input.Input_Block; +import forge.gui.input.Input_PayManaCost; +import forge.gui.input.Input_PayManaCost_Ability; import forge.properties.ForgePreferences; import forge.properties.ForgeProps; import forge.properties.NewConstants; diff --git a/src/forge/GuiDisplayUtil.java b/src/forge/GuiDisplayUtil.java index cb84450f091..794ed567074 100644 --- a/src/forge/GuiDisplayUtil.java +++ b/src/forge/GuiDisplayUtil.java @@ -21,6 +21,9 @@ import javax.swing.event.MouseInputAdapter; import arcane.ui.PlayArea; import arcane.ui.util.Animation; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.mana.ManaPool; +import forge.card.spellability.Ability_Mana; import forge.gui.game.CardPanel; import forge.properties.NewConstants; @@ -913,7 +916,7 @@ public class GuiDisplayUtil implements NewConstants { p.repaint(); } - static void updateGUI() { + public static void updateGUI() { AllZone.Computer_Battlefield.updateObservers(); AllZone.Human_Battlefield.updateObservers(); AllZone.Human_Hand.updateObservers(); diff --git a/src/forge/GuiInput.java b/src/forge/GuiInput.java index 7a5da9b52fc..f2ea02de5c9 100644 --- a/src/forge/GuiInput.java +++ b/src/forge/GuiInput.java @@ -5,6 +5,8 @@ package forge; import java.util.Observable; import java.util.Observer; +import forge.gui.input.Input; + public class GuiInput extends MyObservable implements Observer { Input input; diff --git a/src/forge/Gui_DeckEditor_Menu.java b/src/forge/Gui_DeckEditor_Menu.java index 6be770d5f14..17f9a811d91 100644 --- a/src/forge/Gui_DeckEditor_Menu.java +++ b/src/forge/Gui_DeckEditor_Menu.java @@ -30,6 +30,7 @@ import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import javax.swing.filechooser.FileFilter; +import forge.deck.generate.GenerateConstructedDeck; import forge.error.ErrorViewer; import forge.gui.GuiUtils; import forge.properties.ForgeProps; diff --git a/src/forge/Gui_DownloadSetPictures_LQ.java b/src/forge/Gui_DownloadSetPictures_LQ.java index b9290c284cd..fbcb9e79df9 100644 --- a/src/forge/Gui_DownloadSetPictures_LQ.java +++ b/src/forge/Gui_DownloadSetPictures_LQ.java @@ -266,7 +266,7 @@ public class Gui_DownloadSetPictures_LQ extends DefaultBoundedRangeModel impleme // pause try { - Thread.sleep(2442); + Thread.sleep(150); } catch (InterruptedException e) { diff --git a/src/forge/Gui_NewGame.java b/src/forge/Gui_NewGame.java index 364c4c13fc3..cc5c06e487f 100644 --- a/src/forge/Gui_NewGame.java +++ b/src/forge/Gui_NewGame.java @@ -3,6 +3,13 @@ package forge; import arcane.ui.util.ManaSymbols; import arcane.util.MultiplexOutputStream; import com.esotericsoftware.minlog.Log; + +import forge.deck.generate.Generate2ColorDeck; +import forge.deck.generate.Generate3ColorDeck; +import forge.deck.generate.GenerateConstructedDeck; +import forge.deck.generate.GenerateConstructedMultiColorDeck; +import forge.deck.generate.GenerateSealedDeck; +import forge.deck.generate.GenerateThemeDeck; import forge.error.ErrorViewer; import forge.error.ExceptionHandler; import forge.gui.GuiUtils; diff --git a/src/forge/Gui_WinLose.java b/src/forge/Gui_WinLose.java index 443cb45745c..eb3d12ea169 100644 --- a/src/forge/Gui_WinLose.java +++ b/src/forge/Gui_WinLose.java @@ -117,7 +117,7 @@ public class Gui_WinLose extends JFrame implements NewConstants { private void setup() { AllZone.GameInfo.clearColorChanges(); QuestMatchState winLose = Constant.Runtime.matchState; - Phase.GameBegins = 0; + Phase.setGameBegins(0); //3 is the match length, 3 is the number of games //disable buttons if match is up, or human player won 2 or lost 2 games already if((winLose.countWinLose() == 3) || (winLose.getWin() == 2) || (winLose.getLose() == 2)) { diff --git a/src/forge/HumanPlayer.java b/src/forge/HumanPlayer.java index 838e225317d..b9605642814 100644 --- a/src/forge/HumanPlayer.java +++ b/src/forge/HumanPlayer.java @@ -1,7 +1,10 @@ package forge; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.SpellAbility; import forge.gui.GuiUtils; +import forge.gui.input.Input; public class HumanPlayer extends Player{ diff --git a/src/forge/MagicStack.java b/src/forge/MagicStack.java index e20bd54a1ff..92ecb46b5c1 100644 --- a/src/forge/MagicStack.java +++ b/src/forge/MagicStack.java @@ -6,6 +6,19 @@ import java.util.Iterator; import com.esotericsoftware.minlog.Log; +import forge.card.abilityFactory.AbilityFactory; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.mana.ManaCost; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Mana; +import forge.card.spellability.Ability_Static; +import forge.card.spellability.Ability_Triggered; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Spell_Permanent; +import forge.card.spellability.Target; +import forge.gui.input.Input; +import forge.gui.input.Input_PayManaCost_Ability; + public class MagicStack extends MyObservable { private ArrayList stack = new ArrayList(); private ArrayList frozenStack = new ArrayList(); @@ -253,7 +266,7 @@ public class MagicStack extends MyObservable { push(sp); } - else if (sp.payCosts != null){ + else if (sp.getPayCosts() != null){ push(sp); } @@ -602,7 +615,7 @@ public class MagicStack extends MyObservable { this.updateObservers(); if (sp.isSpell() && !sp.getSourceCard().isCopiedSpell()) { - Phase.StormCount = Phase.StormCount + 1; + Phase.setStormCount(Phase.getStormCount() + 1); if (sp.getSourceCard().getController() == AllZone.HumanPlayer) { Phase.PlayerSpellCount = Phase.PlayerSpellCount + 1; if (sp.getSourceCard().isCreature()) { diff --git a/src/forge/NameChanger.java b/src/forge/NameChanger.java index cd7a5f5cdcd..52e3bcee649 100644 --- a/src/forge/NameChanger.java +++ b/src/forge/NameChanger.java @@ -6,6 +6,7 @@ import java.util.Map; import java.util.StringTokenizer; import java.util.Map.Entry; +import forge.card.spellability.SpellAbility; import forge.error.ErrorViewer; import forge.properties.ForgeProps; import forge.properties.NewConstants; diff --git a/src/forge/Phase.java b/src/forge/Phase.java index 0bbcbd43470..2f26f64696d 100644 --- a/src/forge/Phase.java +++ b/src/forge/Phase.java @@ -12,21 +12,21 @@ public class Phase extends MyObservable private int phaseIndex; private int turn; - static int GameBegins = 0; - static int StormCount; - static CardList HighTides = new CardList(); + private static int GameBegins = 0; + private static int StormCount; + private static CardList HighTides = new CardList(); static int PlayerSpellCount; static int PlayerCreatureSpellCount; static int ComputerSpellCount; static int ComputerCreatureSpellCount; - static boolean Sac_Dauntless_Escort; - static boolean Sac_Dauntless_Escort_Comp; + private static boolean Sac_Dauntless_Escort; + private static boolean Sac_Dauntless_Escort_Comp; //Not sure these should be here but I can't think of a better place - static ArrayList ManaDrain_BonusMana_Human = new ArrayList(); - static ArrayList ManaDrain_BonusMana_AI = new ArrayList(); - static CardList ManaDrain_Source_Human = new CardList(); - static CardList ManaDrain_Source_AI = new CardList(); + private static ArrayList ManaDrain_BonusMana_Human = new ArrayList(); + private static ArrayList ManaDrain_BonusMana_AI = new ArrayList(); + private static CardList ManaDrain_Source_Human = new CardList(); + private static CardList ManaDrain_Source_AI = new CardList(); private Stack extraTurns = new Stack(); @@ -136,7 +136,7 @@ public class Phase extends MyObservable resetPriority(); bPhaseEffects = true; needToNextPhase = false; - GameBegins = 0; + setGameBegins(0); phaseIndex = 0; extraTurns.clear(); nCombatsThisTurn = 0; @@ -147,8 +147,8 @@ public class Phase extends MyObservable } public void turnReset(){ - StormCount = 0; - HighTides.clear(); + setStormCount(0); + getHighTides().clear(); PlayerSpellCount = 0; PlayerCreatureSpellCount = 0; ComputerSpellCount = 0; @@ -178,22 +178,22 @@ public class Phase extends MyObservable // TODO: Move the function to Player class, and use gainManaDrainMana() instead // turn.gainManaDrainMana(); - if (turn.isHuman() && Phase.ManaDrain_BonusMana_Human.size() != 0){ - for(int i=0;i manaDrain_BonusMana_Human) { + ManaDrain_BonusMana_Human = manaDrain_BonusMana_Human; + } + + public static ArrayList getManaDrain_BonusMana_Human() { + return ManaDrain_BonusMana_Human; + } + + public static void setManaDrain_Source_Human(CardList manaDrain_Source_Human) { + ManaDrain_Source_Human = manaDrain_Source_Human; + } + + public static CardList getManaDrain_Source_Human() { + return ManaDrain_Source_Human; + } + + public static void setManaDrain_BonusMana_AI( + ArrayList manaDrain_BonusMana_AI) { + ManaDrain_BonusMana_AI = manaDrain_BonusMana_AI; + } + + public static ArrayList getManaDrain_BonusMana_AI() { + return ManaDrain_BonusMana_AI; + } + + public static void setManaDrain_Source_AI(CardList manaDrain_Source_AI) { + ManaDrain_Source_AI = manaDrain_Source_AI; + } + + public static CardList getManaDrain_Source_AI() { + return ManaDrain_Source_AI; + } + + public static void setGameBegins(int gameBegins) { + GameBegins = gameBegins; + } + + public static int getGameBegins() { + return GameBegins; + } } diff --git a/src/forge/PhaseUtil.java b/src/forge/PhaseUtil.java index 849cdc17a73..0cf7e230fc4 100644 --- a/src/forge/PhaseUtil.java +++ b/src/forge/PhaseUtil.java @@ -2,6 +2,9 @@ package forge; import java.util.ArrayList; +import forge.card.cardFactory.CardFactoryUtil; +import forge.gui.input.Input; + public class PhaseUtil { // ******* UNTAP PHASE ***** private static boolean skipUntap(Player p) { diff --git a/src/forge/Player.java b/src/forge/Player.java index c7bd355e2d3..47de39a45e1 100644 --- a/src/forge/Player.java +++ b/src/forge/Player.java @@ -9,6 +9,10 @@ import java.util.Random; import javax.swing.JOptionPane; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability; +import forge.card.spellability.SpellAbility; + public abstract class Player extends MyObservable{ protected String name; diff --git a/src/forge/PlayerZone_ComesIntoPlay.java b/src/forge/PlayerZone_ComesIntoPlay.java index 0630a628561..031a612143c 100644 --- a/src/forge/PlayerZone_ComesIntoPlay.java +++ b/src/forge/PlayerZone_ComesIntoPlay.java @@ -1,12 +1,16 @@ package forge; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability; +import forge.card.spellability.SpellAbility; + public class PlayerZone_ComesIntoPlay extends DefaultPlayerZone { private static final long serialVersionUID = 5750837078903423978L; private boolean trigger = true; private boolean leavesTrigger = true; - static boolean SimultaneousEntry = false; // For Cards with Multiple Token Entry. Only Affects Allies at the moment. + private static boolean SimultaneousEntry = false; // For Cards with Multiple Token Entry. Only Affects Allies at the moment. static int SimultaneousEntryCounter = 1; // For Cards with Multiple Token Entry. Only Affects Allies at the moment. public PlayerZone_ComesIntoPlay(String zone, Player player) { @@ -322,4 +326,12 @@ public class PlayerZone_ComesIntoPlay extends DefaultPlayerZone { trigger = b; leavesTrigger = b; } + + public static void setSimultaneousEntry(boolean simultaneousEntry) { + SimultaneousEntry = simultaneousEntry; + } + + public static boolean isSimultaneousEntry() { + return SimultaneousEntry; + } } diff --git a/src/forge/QuestUtil.java b/src/forge/QuestUtil.java index d5071142fc1..b99e7dedbba 100644 --- a/src/forge/QuestUtil.java +++ b/src/forge/QuestUtil.java @@ -2,6 +2,10 @@ package forge; import java.util.ArrayList; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Cost; +import forge.card.spellability.SpellAbility; + @Deprecated @SuppressWarnings("deprecation") public class QuestUtil { @@ -146,7 +150,7 @@ public class QuestUtil { if (level == 6) { final Card crd = c; - Ability_Cost abCost = new Ability_Cost("T", crd.getName(), true); + Cost abCost = new Cost("T", crd.getName(), true); final SpellAbility ability = new Ability_Activated(crd, abCost, null){ private static final long serialVersionUID = 7546242087593613719L; diff --git a/src/forge/ReadCard.java b/src/forge/ReadCard.java index 1544ba9940a..55f555c849a 100644 --- a/src/forge/ReadCard.java +++ b/src/forge/ReadCard.java @@ -10,6 +10,7 @@ import java.util.StringTokenizer; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; +import forge.card.trigger.TriggerHandler; import forge.error.ErrorViewer; import forge.properties.ForgeProps; import forge.properties.NewConstants; diff --git a/src/forge/RunTest.java b/src/forge/RunTest.java index ec33806d55d..badd506b4ca 100644 --- a/src/forge/RunTest.java +++ b/src/forge/RunTest.java @@ -3,6 +3,10 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.Set; +import forge.card.cardFactory.CardFactory; +import forge.card.mana.ManaCost; +import forge.gui.input.Input_PayManaCostUtil; + public class RunTest { //@SuppressWarnings("unchecked") // HashSet needs diff --git a/src/forge/StaticEffects.java b/src/forge/StaticEffects.java index d558432df27..84baaac2105 100644 --- a/src/forge/StaticEffects.java +++ b/src/forge/StaticEffects.java @@ -3,6 +3,8 @@ import java.util.HashMap; import com.esotericsoftware.minlog.Log; +import forge.card.cardFactory.CardFactoryUtil; + public class StaticEffects { diff --git a/src/forge/UndoCommand.java b/src/forge/UndoCommand.java index f62ea23f408..2fa9bc05746 100644 --- a/src/forge/UndoCommand.java +++ b/src/forge/UndoCommand.java @@ -1,5 +1,5 @@ package forge; -interface UndoCommand extends Command +public interface UndoCommand extends Command { public void execute(); public void undo(); diff --git a/src/forge/AbilityFactory.java b/src/forge/card/abilityFactory/AbilityFactory.java similarity index 94% rename from src/forge/AbilityFactory.java rename to src/forge/card/abilityFactory/AbilityFactory.java index 287daec9d9a..b1e6327174a 100644 --- a/src/forge/AbilityFactory.java +++ b/src/forge/card/abilityFactory/AbilityFactory.java @@ -1,8 +1,22 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.ComputerAI_counterSpells2; +import forge.Constant; +import forge.Player; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Cost; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.SpellAbility_Restriction; +import forge.card.spellability.Target; + public class AbilityFactory { private Card hostC = null; @@ -37,9 +51,9 @@ public class AbilityFactory { return isDb; } - private Ability_Cost abCost = null; + private Cost abCost = null; - public Ability_Cost getAbCost() + public Cost getAbCost() { return abCost; } @@ -148,7 +162,7 @@ public class AbilityFactory { if (!isDb){ if (!mapParams.containsKey("Cost")) throw new RuntimeException("AbilityFactory : getAbility -- no Cost in " + hostCard.getName()); - abCost = new Ability_Cost(mapParams.get("Cost"), hostCard.getName(), isAb); + abCost = new Cost(mapParams.get("Cost"), hostCard.getName(), isAb); } if (mapParams.containsKey("ValidTgts")) diff --git a/src/forge/AbilityFactory_AlterLife.java b/src/forge/card/abilityFactory/AbilityFactory_AlterLife.java similarity index 95% rename from src/forge/AbilityFactory_AlterLife.java rename to src/forge/card/abilityFactory/AbilityFactory_AlterLife.java index 8ad2e37261a..e0b0096a020 100644 --- a/src/forge/AbilityFactory_AlterLife.java +++ b/src/forge/card/abilityFactory/AbilityFactory_AlterLife.java @@ -1,9 +1,23 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; import java.util.Random; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.ComputerUtil; +import forge.Counters; +import forge.Player; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; + public class AbilityFactory_AlterLife { // An AbilityFactory subclass for Gaining, Losing, or Setting Life totals. @@ -144,7 +158,7 @@ public class AbilityFactory_AlterLife { public static boolean gainLifeCanPlayAI(final AbilityFactory af, final SpellAbility sa){ Random r = new Random(); HashMap params = af.getMapParams(); - Ability_Cost abCost = sa.getPayCosts(); + Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); int life = AllZone.ComputerPlayer.getLife(); int lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); @@ -397,7 +411,7 @@ public class AbilityFactory_AlterLife { public static boolean loseLifeCanPlayAI(final AbilityFactory af, final SpellAbility sa){ Random r = new Random(); - Ability_Cost abCost = sa.getPayCosts(); + Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); int humanLife = AllZone.HumanPlayer.getLife(); int aiLife = AllZone.ComputerPlayer.getLife(); @@ -717,7 +731,7 @@ public class AbilityFactory_AlterLife { } private static boolean poisonCanPlayAI(final AbilityFactory af, final SpellAbility sa, final String amountStr){ - Ability_Cost abCost = sa.getPayCosts(); + Cost abCost = sa.getPayCosts(); //int humanPoison = AllZone.HumanPlayer.getPoisonCounters(); int humanLife = AllZone.HumanPlayer.getLife(); //int aiPoison = AllZone.ComputerPlayer.getPoisonCounters(); diff --git a/src/forge/AbilityFactory_Animate.java b/src/forge/card/abilityFactory/AbilityFactory_Animate.java similarity index 92% rename from src/forge/AbilityFactory_Animate.java rename to src/forge/card/abilityFactory/AbilityFactory_Animate.java index 02e0ae39a02..dcf19c33e95 100644 --- a/src/forge/AbilityFactory_Animate.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Animate.java @@ -1,10 +1,24 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; import java.util.Hashtable; import java.util.Arrays; +import forge.AllZone; +import forge.Card; +import forge.Command; +import forge.ComputerUtil; +import forge.Constant; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; +import forge.card.trigger.Trigger; +import forge.card.trigger.TriggerHandler; + public class AbilityFactory_Animate { //************************************************************** @@ -132,6 +146,7 @@ public class AbilityFactory_Animate { if(tgts.size() == 1) sb.append("s a"); //if power is -1, we'll assume it's not just setting toughness if(power != -1) sb.append(" ").append(power).append("/").append(toughness); + if(colors.size() > 0) sb.append(" "); for(int i = 0; i < colors.size(); i++) { sb.append(colors.get(i)); @@ -365,8 +380,8 @@ public class AbilityFactory_Animate { } private static long doAnimate(Card c, AbilityFactory af, int power, int toughness, ArrayList types, String colors, ArrayList keywords) { - if(power != -1) c.setBaseAttack(power); - if(toughness != -1) c.setBaseDefense(toughness); + if (power != -1) c.setBaseAttack(power); + if (toughness != -1) c.setBaseDefense(toughness); if(null != af && af.getMapParams().containsKey("OverwriteTypes")) c.clearAllTypes(); for(String r : types) { diff --git a/src/forge/AbilityFactory_Bounce.java b/src/forge/card/abilityFactory/AbilityFactory_Bounce.java similarity index 96% rename from src/forge/AbilityFactory_Bounce.java rename to src/forge/card/abilityFactory/AbilityFactory_Bounce.java index e1728744317..e484d10c86c 100644 --- a/src/forge/AbilityFactory_Bounce.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Bounce.java @@ -1,4 +1,4 @@ -package forge; +package forge.card.abilityFactory; public class AbilityFactory_Bounce { // An AbilityFactory subclass for bouncing and exiling permanents diff --git a/src/forge/AbilityFactory_ChangeZone.java b/src/forge/card/abilityFactory/AbilityFactory_ChangeZone.java similarity index 95% rename from src/forge/AbilityFactory_ChangeZone.java rename to src/forge/card/abilityFactory/AbilityFactory_ChangeZone.java index 3a9ced8f134..58e78f65425 100644 --- a/src/forge/AbilityFactory_ChangeZone.java +++ b/src/forge/card/abilityFactory/AbilityFactory_ChangeZone.java @@ -1,9 +1,25 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; import java.util.Random; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.ComputerUtil; +import forge.Constant; +import forge.GameActionUtil; +import forge.Player; +import forge.PlayerZone; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; import forge.gui.GuiUtils; public class AbilityFactory_ChangeZone { @@ -185,7 +201,7 @@ public class AbilityFactory_ChangeZone { private static boolean changeHiddenOriginCanPlayAI(AbilityFactory af, SpellAbility sa){ // Fetching should occur fairly often as it helps cast more spells, and have access to more mana - Ability_Cost abCost = af.getAbCost(); + Cost abCost = af.getAbCost(); Card source = af.getHostCard(); HashMap params = af.getMapParams(); //String destination = params.get("Destination"); @@ -705,7 +721,7 @@ public class AbilityFactory_ChangeZone { private static boolean changeKnownOriginCanPlayAI(AbilityFactory af, SpellAbility sa){ // Retrieve either this card, or target Cards in Graveyard - Ability_Cost abCost = af.getAbCost(); + Cost abCost = af.getAbCost(); final Card source = af.getHostCard(); HashMap params = af.getMapParams(); @@ -1236,7 +1252,7 @@ public class AbilityFactory_ChangeZone { private static boolean changeZoneAllCanPlayAI(AbilityFactory af, SpellAbility sa){ // Change Zone All, can be any type moving from one zone to another - Ability_Cost abCost = af.getAbCost(); + Cost abCost = af.getAbCost(); Card source = af.getHostCard(); HashMap params = af.getMapParams(); String destination = params.get("Destination"); diff --git a/src/forge/AbilityFactory_Clash.java b/src/forge/card/abilityFactory/AbilityFactory_Clash.java similarity index 86% rename from src/forge/AbilityFactory_Clash.java rename to src/forge/card/abilityFactory/AbilityFactory_Clash.java index 1b9483e1a35..ab8399d815a 100644 --- a/src/forge/AbilityFactory_Clash.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Clash.java @@ -1,14 +1,18 @@ -package forge; +package forge.card.abilityFactory; -import java.util.Random; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; public class AbilityFactory_Clash { public static SpellAbility getAbility(final AbilityFactory AF) { final SpellAbility abClash = new Ability_Activated(AF.getHostCard(),AF.getAbCost(),AF.getAbTgt()) { + private static final long serialVersionUID = -8019637116128196248L; - @Override + @Override public boolean canPlayAI() { return true; @@ -45,8 +49,9 @@ public class AbilityFactory_Clash { public static SpellAbility getSpell(final AbilityFactory AF) { final SpellAbility spClash = new Spell(AF.getHostCard(),AF.getAbCost(),AF.getAbTgt()) { + private static final long serialVersionUID = -4991665176268317172L; - @Override + @Override public boolean canPlayAI() { return true; @@ -83,8 +88,9 @@ public class AbilityFactory_Clash { public static SpellAbility getDrawback(final AbilityFactory AF) { final SpellAbility dbClash = new Ability_Sub(AF.getHostCard(),AF.getAbTgt()) { + private static final long serialVersionUID = -3850086157052881360L; - @Override + @Override public boolean canPlayAI() { return true; diff --git a/src/forge/AbilityFactory_Combat.java b/src/forge/card/abilityFactory/AbilityFactory_Combat.java similarity index 90% rename from src/forge/AbilityFactory_Combat.java rename to src/forge/card/abilityFactory/AbilityFactory_Combat.java index 489ae7e90b5..fb1d44213ca 100644 --- a/src/forge/AbilityFactory_Combat.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Combat.java @@ -1,7 +1,18 @@ -package forge; +package forge.card.abilityFactory; import java.util.HashMap; +import forge.AllZone; +import forge.Card; +import forge.CombatUtil; +import forge.ComputerUtil; +import forge.Constant; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; + public class AbilityFactory_Combat { //************************************************************** // ****************************** FOG ************************** diff --git a/src/forge/AbilityFactory_CounterMagic.java b/src/forge/card/abilityFactory/AbilityFactory_CounterMagic.java similarity index 94% rename from src/forge/AbilityFactory_CounterMagic.java rename to src/forge/card/abilityFactory/AbilityFactory_CounterMagic.java index de4e870e353..549172471d0 100644 --- a/src/forge/AbilityFactory_CounterMagic.java +++ b/src/forge/card/abilityFactory/AbilityFactory_CounterMagic.java @@ -1,9 +1,26 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.Command; +import forge.ComputerUtil; +import forge.Constant; +import forge.GameActionUtil; +import forge.Player; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; import forge.gui.GuiUtils; +import forge.gui.input.Input; //Type - Spell or Ability or SpellOrAbility //CounterValid - a "valid" expression for types to counter diff --git a/src/forge/AbilityFactory_Counters.java b/src/forge/card/abilityFactory/AbilityFactory_Counters.java similarity index 94% rename from src/forge/AbilityFactory_Counters.java rename to src/forge/card/abilityFactory/AbilityFactory_Counters.java index d050296bf29..e98aa711a7b 100644 --- a/src/forge/AbilityFactory_Counters.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Counters.java @@ -1,10 +1,29 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; import java.util.Random; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.ComputerUtil; +import forge.Constant; +import forge.Counters; +import forge.Player; +import forge.PlayerZone; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; import forge.gui.GuiUtils; +import forge.gui.input.Input; public class AbilityFactory_Counters { // An AbilityFactory subclass for Putting or Removing Counters on Cards. @@ -138,7 +157,7 @@ public class AbilityFactory_Counters { public static boolean putCanPlayAI(final AbilityFactory af, final SpellAbility sa){ // AI needs to be expanded, since this function can be pretty complex based on what the expected targets could be Random r = new Random(); - Ability_Cost abCost = sa.getPayCosts(); + Cost abCost = sa.getPayCosts(); Target abTgt = sa.getTarget(); final Card source = sa.getSourceCard(); CardList list; @@ -610,7 +629,7 @@ public class AbilityFactory_Counters { public static boolean removeCanPlayAI(final AbilityFactory af, final SpellAbility sa){ // AI needs to be expanded, since this function can be pretty complex based on what the expected targets could be Random r = new Random(); - Ability_Cost abCost = sa.getPayCosts(); + Cost abCost = sa.getPayCosts(); //Target abTgt = sa.getTarget(); final Card source = sa.getSourceCard(); //CardList list; @@ -1145,7 +1164,7 @@ public class AbilityFactory_Counters { // AI needs to be expanded, since this function can be pretty complex based on what the expected targets could be Random r = new Random(); HashMap params = af.getMapParams(); - Ability_Cost abCost = sa.getPayCosts(); + Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); CardList hList; CardList cList; diff --git a/src/forge/AbilityFactory_DealDamage.java b/src/forge/card/abilityFactory/AbilityFactory_DealDamage.java similarity index 94% rename from src/forge/AbilityFactory_DealDamage.java rename to src/forge/card/abilityFactory/AbilityFactory_DealDamage.java index f49f0afd5fd..27076d6eb0e 100644 --- a/src/forge/AbilityFactory_DealDamage.java +++ b/src/forge/card/abilityFactory/AbilityFactory_DealDamage.java @@ -1,10 +1,27 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; import java.util.Random; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.ComputerUtil; +import forge.Constant; +import forge.Counters; +import forge.Player; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; + public class AbilityFactory_DealDamage { private AbilityFactory AF = null; @@ -665,7 +682,7 @@ public class AbilityFactory_DealDamage { private boolean damageAllCanPlayAI(final AbilityFactory af, final SpellAbility sa){ // AI needs to be expanded, since this function can be pretty complex based on what the expected targets could be Random r = new Random(); - Ability_Cost abCost = sa.getPayCosts(); + Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); final HashMap params = af.getMapParams(); diff --git a/src/forge/AbilityFactory_Destroy.java b/src/forge/card/abilityFactory/AbilityFactory_Destroy.java similarity index 93% rename from src/forge/AbilityFactory_Destroy.java rename to src/forge/card/abilityFactory/AbilityFactory_Destroy.java index e0e686f1087..41a9fabb94a 100644 --- a/src/forge/AbilityFactory_Destroy.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Destroy.java @@ -1,9 +1,23 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; import java.util.Random; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.ComputerUtil; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; + public class AbilityFactory_Destroy { // An AbilityFactory subclass for destroying permanents // ********************************************************************************* @@ -96,7 +110,7 @@ public class AbilityFactory_Destroy { public static boolean destroyCanPlayAI(final AbilityFactory af, final SpellAbility sa){ // AI needs to be expanded, since this function can be pretty complex based on what the expected targets could be Random r = new Random(); - Ability_Cost abCost = sa.getPayCosts(); + Cost abCost = sa.getPayCosts(); Target abTgt = sa.getTarget(); final Card source = sa.getSourceCard(); final boolean noRegen = af.getMapParams().containsKey("NoRegen"); @@ -501,7 +515,7 @@ public class AbilityFactory_Destroy { public static boolean destroyAllCanPlayAI(final AbilityFactory af, final SpellAbility sa, final boolean noRegen){ // AI needs to be expanded, since this function can be pretty complex based on what the expected targets could be Random r = new Random(); - Ability_Cost abCost = sa.getPayCosts(); + Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); final HashMap params = af.getMapParams(); String Valid = ""; diff --git a/src/forge/AbilityFactory_Fetch.java b/src/forge/card/abilityFactory/AbilityFactory_Fetch.java similarity index 97% rename from src/forge/AbilityFactory_Fetch.java rename to src/forge/card/abilityFactory/AbilityFactory_Fetch.java index 1fc41ee97ae..bb2ff815241 100644 --- a/src/forge/AbilityFactory_Fetch.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Fetch.java @@ -1,4 +1,4 @@ -package forge; +package forge.card.abilityFactory; public class AbilityFactory_Fetch { // An AbilityFactory subclass for Fetching Cards from Places diff --git a/src/forge/AbilityFactory_GainControl.java b/src/forge/card/abilityFactory/AbilityFactory_GainControl.java similarity index 92% rename from src/forge/AbilityFactory_GainControl.java rename to src/forge/card/abilityFactory/AbilityFactory_GainControl.java index 10fc2a81b8a..f30ff5f939d 100644 --- a/src/forge/AbilityFactory_GainControl.java +++ b/src/forge/card/abilityFactory/AbilityFactory_GainControl.java @@ -1,10 +1,25 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Hashtable; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.Command; +import forge.Constant; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; + //AB:GainControl|ValidTgts$Creature|TgtPrompt$Select target legendary creature|LoseControl$Untap,LoseControl|SpellDescription$Gain control of target xxxxxxx //GainControl specific params: diff --git a/src/forge/AbilityFactory_Mana.java b/src/forge/card/abilityFactory/AbilityFactory_Mana.java similarity index 90% rename from src/forge/AbilityFactory_Mana.java rename to src/forge/card/abilityFactory/AbilityFactory_Mana.java index bfdfb7db862..68bd75fa7e8 100644 --- a/src/forge/AbilityFactory_Mana.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Mana.java @@ -1,9 +1,23 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.Constant; +import forge.Counters; +import forge.Player; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Mana; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; import forge.gui.GuiUtils; +import forge.gui.input.Input_PayManaCostUtil; public class AbilityFactory_Mana { // ****************************** MANA ************************ @@ -39,7 +53,7 @@ public class AbilityFactory_Mana { final AbilityFactory af = AF; // To get the mana to resolve properly, we need the spell to contain an Ability_Mana - Ability_Cost tmp = new Ability_Cost("0", AF.getHostCard().getName(), false); + Cost tmp = new Cost("0", AF.getHostCard().getName(), false); Ability_Mana tmpMana = new Ability_Mana(AF.getHostCard(), tmp, produced){ private static final long serialVersionUID = 1454043766057140491L; @@ -78,7 +92,7 @@ public class AbilityFactory_Mana { final AbilityFactory af = AF; // To get the mana to resolve properly, we need the spell to contain an Ability_Mana - Ability_Cost tmp = new Ability_Cost("0", AF.getHostCard().getName(), false); + Cost tmp = new Cost("0", AF.getHostCard().getName(), false); Ability_Mana tmpMana = new Ability_Mana(AF.getHostCard(), tmp, produced){ private static final long serialVersionUID = 1454043766057140491L; @@ -140,7 +154,7 @@ public class AbilityFactory_Mana { public static void manaResolve(Ability_Mana abMana, AbilityFactory af, SpellAbility sa){ // Spells are not undoable - abMana.undoable = af.isAbility() && abMana.isUndoable(); + abMana.setUndoable(af.isAbility() && abMana.isUndoable()); HashMap params = af.getMapParams(); Card card = af.getHostCard(); @@ -149,7 +163,7 @@ public class AbilityFactory_Mana { // convert these to SubAbilities when appropriate if (params.containsKey("Stuck")){ - abMana.undoable = false; + abMana.setUndoable(false); card.addExtrinsicKeyword("This card doesn't untap during your next untap step."); } @@ -157,7 +171,7 @@ public class AbilityFactory_Mana { if (deplete != null){ int num = card.getCounters(Counters.getType(deplete)); if (num == 0){ - abMana.undoable = false; + abMana.setUndoable(false); AllZone.GameAction.sacrifice(card); } } @@ -186,10 +200,10 @@ public class AbilityFactory_Mana { try{ if (params.get("Amount") != null && amount != Integer.parseInt(params.get("Amount"))) - abMana.undoable = false; + abMana.setUndoable(false); } catch(NumberFormatException n){ - abMana.undoable = false; + abMana.setUndoable(false); } StringBuilder sb = new StringBuilder(); @@ -247,7 +261,7 @@ public class AbilityFactory_Mana { final AbilityFactory af = AF; // To get the mana to resolve properly, we need the spell to contain an Ability_Mana - Ability_Cost tmp = new Ability_Cost("0", AF.getHostCard().getName(), false); + Cost tmp = new Cost("0", AF.getHostCard().getName(), false); Ability_Mana tmpMana = new Ability_Mana(AF.getHostCard(), tmp, produced){ private static final long serialVersionUID = 1454043766057140491L; @@ -282,7 +296,7 @@ public class AbilityFactory_Mana { public static void manaReflectedResolve(Ability_Mana abMana, AbilityFactory af){ // Spells are not undoable - abMana.undoable = af.isAbility() && abMana.isUndoable(); + abMana.setUndoable(af.isAbility() && abMana.isUndoable()); Card card = af.getHostCard(); @@ -458,7 +472,7 @@ public class AbilityFactory_Mana { // if mana production has any type of SubAbility, undoable=false if (af.hasSubAbility()){ - abMana.undoable = false; + abMana.setUndoable(false); Ability_Sub abSub = abMana.getSubAbility(); if (abSub != null){ abSub.resolve(); diff --git a/src/forge/AbilityFactory_PermanentState.java b/src/forge/card/abilityFactory/AbilityFactory_PermanentState.java similarity index 95% rename from src/forge/AbilityFactory_PermanentState.java rename to src/forge/card/abilityFactory/AbilityFactory_PermanentState.java index 5773dea60be..899922d6578 100644 --- a/src/forge/AbilityFactory_PermanentState.java +++ b/src/forge/card/abilityFactory/AbilityFactory_PermanentState.java @@ -1,9 +1,21 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; import java.util.Random; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.ComputerUtil; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; import forge.gui.GuiUtils; public class AbilityFactory_PermanentState { diff --git a/src/forge/AbilityFactory_Pump.java b/src/forge/card/abilityFactory/AbilityFactory_Pump.java similarity index 94% rename from src/forge/AbilityFactory_Pump.java rename to src/forge/card/abilityFactory/AbilityFactory_Pump.java index ac0e5c69d87..1680d42e6c0 100644 --- a/src/forge/AbilityFactory_Pump.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Pump.java @@ -1,9 +1,26 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; import java.util.Random; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.Command; +import forge.ComputerUtil; +import forge.Constant; +import forge.Counters; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.SpellAbility_Restriction; +import forge.card.spellability.Target; + public class AbilityFactory_Pump { private final ArrayList Keywords = new ArrayList(); diff --git a/src/forge/AbilityFactory_Regenerate.java b/src/forge/card/abilityFactory/AbilityFactory_Regenerate.java similarity index 90% rename from src/forge/AbilityFactory_Regenerate.java rename to src/forge/card/abilityFactory/AbilityFactory_Regenerate.java index d3ca586c582..d83db8ef2c9 100644 --- a/src/forge/AbilityFactory_Regenerate.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Regenerate.java @@ -1,9 +1,25 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.CardListUtil; +import forge.CombatUtil; +import forge.Command; +import forge.ComputerUtil; +import forge.Constant; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; + public class AbilityFactory_Regenerate { // Ex: A:SP$Regenerate | Cost$W | Tgt$TgtC | SpellDescription$Regenerate target creature. diff --git a/src/forge/AbilityFactory_Sacrifice.java b/src/forge/card/abilityFactory/AbilityFactory_Sacrifice.java similarity index 92% rename from src/forge/AbilityFactory_Sacrifice.java rename to src/forge/card/abilityFactory/AbilityFactory_Sacrifice.java index 3b57af9a9b2..4d0247d681e 100644 --- a/src/forge/AbilityFactory_Sacrifice.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Sacrifice.java @@ -1,8 +1,22 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.ComputerUtil; +import forge.Constant; +import forge.Player; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; + public class AbilityFactory_Sacrifice { //************************************************************** // *************************** Sacrifice *********************** diff --git a/src/forge/AbilityFactory_Token.java b/src/forge/card/abilityFactory/AbilityFactory_Token.java similarity index 90% rename from src/forge/AbilityFactory_Token.java rename to src/forge/card/abilityFactory/AbilityFactory_Token.java index f45e5fe2499..d4f9763c956 100644 --- a/src/forge/AbilityFactory_Token.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Token.java @@ -1,8 +1,25 @@ -package forge; +package forge.card.abilityFactory; import java.util.HashMap; import java.util.Random; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.Command; +import forge.ComputerUtil; +import forge.Player; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; +import forge.card.trigger.Trigger; +import forge.card.trigger.TriggerHandler; + public class AbilityFactory_Token extends AbilityFactory { private AbilityFactory AF = null; @@ -184,7 +201,7 @@ public class AbilityFactory_Token extends AbilityFactory { } private boolean tokenCanPlayAI(SpellAbility sa){ - Ability_Cost cost = sa.getPayCosts(); + Cost cost = sa.getPayCosts(); if (!ComputerUtil.canPayCost(sa)) // If there is a cost payment it's usually not mandatory return false; diff --git a/src/forge/AbilityFactory_Turns.java b/src/forge/card/abilityFactory/AbilityFactory_Turns.java similarity index 90% rename from src/forge/AbilityFactory_Turns.java rename to src/forge/card/abilityFactory/AbilityFactory_Turns.java index 0aa4886e8fb..570c742327f 100644 --- a/src/forge/AbilityFactory_Turns.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Turns.java @@ -1,8 +1,19 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; +import forge.AllZone; +import forge.Card; +import forge.ComputerUtil; +import forge.Player; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; + public class AbilityFactory_Turns { // ************************************************************************* // ************************* ADD TURN ************************************** diff --git a/src/forge/AbilityFactory_ZoneAffecting.java b/src/forge/card/abilityFactory/AbilityFactory_ZoneAffecting.java similarity index 95% rename from src/forge/AbilityFactory_ZoneAffecting.java rename to src/forge/card/abilityFactory/AbilityFactory_ZoneAffecting.java index 3c711fa9a59..51f972c5f92 100644 --- a/src/forge/AbilityFactory_ZoneAffecting.java +++ b/src/forge/card/abilityFactory/AbilityFactory_ZoneAffecting.java @@ -1,9 +1,28 @@ -package forge; +package forge.card.abilityFactory; import java.util.ArrayList; import java.util.HashMap; import java.util.Random; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.CardListUtil; +import forge.CardUtil; +import forge.ComputerUtil; +import forge.Constant; +import forge.Counters; +import forge.GameActionUtil; +import forge.Player; +import forge.PlayerZone; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; import forge.gui.GuiUtils; public class AbilityFactory_ZoneAffecting { @@ -144,7 +163,7 @@ public class AbilityFactory_ZoneAffecting { Target tgt = af.getAbTgt(); Card source = sa.getSourceCard(); - Ability_Cost abCost = af.getAbCost(); + Cost abCost = af.getAbCost(); if (abCost != null){ // AI currently disabled for these costs @@ -498,7 +517,7 @@ public class AbilityFactory_ZoneAffecting { return false; Card source = sa.getSourceCard(); - Ability_Cost abCost = af.getAbCost(); + Cost abCost = af.getAbCost(); if (abCost != null){ // AI currently disabled for these costs @@ -929,7 +948,7 @@ public class AbilityFactory_ZoneAffecting { Target tgt = af.getAbTgt(); Card source = sa.getSourceCard(); - Ability_Cost abCost = af.getAbCost(); + Cost abCost = af.getAbCost(); if (abCost != null){ // AI currently disabled for these costs diff --git a/src/forge/CardFactory.java b/src/forge/card/cardFactory/CardFactory.java similarity index 96% rename from src/forge/CardFactory.java rename to src/forge/card/cardFactory/CardFactory.java index d357cf89295..959974224a5 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/card/cardFactory/CardFactory.java @@ -1,4 +1,4 @@ -package forge; +package forge.card.cardFactory; import java.io.File; @@ -13,8 +13,40 @@ import javax.swing.JOptionPane; import com.esotericsoftware.minlog.Log; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.CardListUtil; +import forge.CardUtil; +import forge.Command; +import forge.ComputerAI_counterSpells2; +import forge.ComputerUtil; +import forge.Constant; +import forge.Counters; +import forge.FileUtil; +import forge.GameActionUtil; +import forge.HandSizeOp; +import forge.Player; +import forge.PlayerZone; +import forge.ReadCard; +import forge.card.abilityFactory.AbilityFactory; +import forge.card.mana.ManaCost; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Mana; +import forge.card.spellability.Ability_Static; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Spell_Permanent; +import forge.card.spellability.Target; import forge.error.ErrorViewer; import forge.gui.GuiUtils; +import forge.gui.input.Input; +import forge.gui.input.Input_PayManaCostUtil; import forge.properties.ForgeProps; import forge.properties.NewConstants; @@ -188,7 +220,7 @@ public class CardFactory implements NewConstants { } - final void copySpellontoStack(Card source, Card original, SpellAbility sa, boolean bCopyDetails) { + public final void copySpellontoStack(Card source, Card original, SpellAbility sa, boolean bCopyDetails) { if (sa.getPayCosts() == null){ copySpellontoStack(source, source, bCopyDetails); return; @@ -227,7 +259,7 @@ public class CardFactory implements NewConstants { } - final void copySpellontoStack(Card source, Card original, boolean bCopyDetails) { + public final void copySpellontoStack(Card source, Card original, boolean bCopyDetails) { SpellAbility[] sas = original.getSpellAbility(); SpellAbility sa = null; for(int i = 0; i < sas.length; i++) { @@ -313,7 +345,7 @@ public class CardFactory implements NewConstants { return getCard2(cardName, owner); } - final static int hasKeyword(Card c, String k) { + public final static int hasKeyword(Card c, String k) { ArrayList a = c.getKeyword(); for(int i = 0; i < a.size(); i++) if(a.get(i).toString().startsWith(k)) return i; @@ -4686,8 +4718,8 @@ public class CardFactory implements NewConstants { { SpellAbility bbSA = sa.copy(); String newCost = CardUtil.addManaCosts(card.getManaCost(), bbCost); - if (bbSA.payCosts != null) - bbSA.payCosts = new Ability_Cost(newCost, sa.getSourceCard().getName(), false); // create new abCost + if (bbSA.getPayCosts() != null) + bbSA.setPayCosts(new Cost(newCost, sa.getSourceCard().getName(), false)); // create new abCost StringBuilder sb = new StringBuilder(); sb.append("Buyback ").append(bbCost).append(" (You may pay an additional ").append(bbCost); sb.append(" as you cast this spell. If you do, put this card into your hand as it resolves.)"); @@ -4852,7 +4884,7 @@ public class CardFactory implements NewConstants { final String col = color; //card.setChosenType(input[0]); - Ability_Cost a1Cost = new Ability_Cost("3 T", cardName, true); + Cost a1Cost = new Cost("3 T", cardName, true); final Ability_Activated a1 = new Ability_Activated(card, a1Cost, null) { private static final long serialVersionUID = -2114111483117171609L; @@ -4972,7 +5004,7 @@ public class CardFactory implements NewConstants { //*************** START *********** START ************************** else if(cardName.equals("That Which Was Taken")) { - Ability_Cost abCost = new Ability_Cost("4 T", cardName, true); + Cost abCost = new Cost("4 T", cardName, true); Target target = new Target(card,"Select target permanent other than "+cardName, new String[] {"Permanent.Other"}); final Ability_Activated ability = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = -8996435083734446340L; @@ -5373,7 +5405,7 @@ public class CardFactory implements NewConstants { //*************** START *********** START ************************** else if(cardName.equals("Volrath's Dungeon")) { - Ability_Cost dungeonCost = new Ability_Cost("Discard<1/Card>", cardName, true); + Cost dungeonCost = new Cost("Discard<1/Card>", cardName, true); Target dungeonTgt = new Target(card,"Volrath's Dungeon - Target player" , "player".split(",")); final SpellAbility dungeon = new Ability_Activated(card, dungeonCost, dungeonTgt){ @@ -5410,7 +5442,7 @@ public class CardFactory implements NewConstants { };//SpellAbility dungeon - Ability_Cost bailCost = new Ability_Cost("PayLife<5>", cardName, true); + Cost bailCost = new Cost("PayLife<5>", cardName, true); final SpellAbility bail = new Ability_Activated(card, bailCost, null){ private static final long serialVersionUID = -8990402917139817175L; @@ -5547,7 +5579,7 @@ public class CardFactory implements NewConstants { else if(cardName.equals("Ashnod's Transmogrant")) { final String[] Tgts = { "Creature.nonArtifact" }; - Ability_Cost abCost = new Ability_Cost("T Sac<1/CARDNAME>", cardName, true); + Cost abCost = new Cost("T Sac<1/CARDNAME>", cardName, true); Target abTgt = new Target(card,"Select target nonartifact creature to Transmogrify", Tgts); final Ability_Activated ability = new Ability_Activated(card, abCost, abTgt){ @@ -5592,7 +5624,7 @@ public class CardFactory implements NewConstants { //*************** START *********** START ************************** else if(cardName.equals("Door to Nothingness")) { Target target = new Target(card,"Select target player", new String[] {"Player"}); - Ability_Cost abCost = new Ability_Cost("G G R R B B U U W W T Sac<1/CARDNAME>", cardName, true); + Cost abCost = new Cost("G G R R B B U U W W T Sac<1/CARDNAME>", cardName, true); Ability_Activated ab1 = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = 6665327569823149191L; @@ -5653,7 +5685,7 @@ public class CardFactory implements NewConstants { //*************** START *********** START ************************** else if(cardName.equals("Goblin Charbelcher")) { - Ability_Cost abCost = new Ability_Cost("3 T", cardName, true); + Cost abCost = new Cost("3 T", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, new Target(card,"TgtCP")) { private static final long serialVersionUID = -840041589720758423L; @@ -5757,7 +5789,7 @@ public class CardFactory implements NewConstants { //*************** START *********** START ************************** else if(cardName.equals("Isochron Scepter")) { - Ability_Cost abCost = new Ability_Cost("2 T", cardName, true); + Cost abCost = new Cost("2 T", cardName, true); final Ability_Activated freeCast = new Ability_Activated(card, abCost, null) { @@ -5906,7 +5938,7 @@ public class CardFactory implements NewConstants { * put a 5/5 colorless Djinn artifact creature token with flying * onto the battlefield. */ - Ability_Cost abCost = new Ability_Cost("1 Sac<1/CARDNAME>", cardName, true); + Cost abCost = new Cost("1 Sac<1/CARDNAME>", cardName, true); final SpellAbility ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = -5741302550353410000L; @@ -5948,7 +5980,7 @@ public class CardFactory implements NewConstants { * turn's upkeep. */ - Ability_Cost abCost = new Ability_Cost("1 T Sac<1/CARDNAME>", cardName, true); + Cost abCost = new Cost("1 T Sac<1/CARDNAME>", cardName, true); Target target = new Target(card,"Select target player", new String[]{"Player"}); final Ability_Activated ability = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = -6711849408085138636L; @@ -6015,7 +6047,7 @@ public class CardFactory implements NewConstants { //*************** START *********** START ************************** else if(cardName.equals("Grindstone")) { Target target = new Target(card,"Select target player", new String[] {"Player"}); - Ability_Cost abCost = new Ability_Cost("3 T", cardName, true); + Cost abCost = new Cost("3 T", cardName, true); Ability_Activated ab1 = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = -6281219446216L; @@ -6071,7 +6103,7 @@ public class CardFactory implements NewConstants { * cards in that player's graveyard. */ Target target = new Target(card,"Select target player", new String[] {"Player"}); - Ability_Cost abCost = new Ability_Cost("5 T", cardName, true); + Cost abCost = new Cost("5 T", cardName, true); Ability_Activated ab1 = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = -6282104343089446216L; @@ -6102,7 +6134,7 @@ public class CardFactory implements NewConstants { //*************** START *********** START ************************** else if(cardName.equals("Glasses of Urza")) { Target target = new Target(card,"Select target player", new String[] {"Player"}); - Ability_Cost abCost = new Ability_Cost("T", cardName, true); + Cost abCost = new Cost("T", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = -3857979945891501990L; @@ -6235,7 +6267,7 @@ public class CardFactory implements NewConstants { * Tap, Sacrifice Tormod's Crypt: Exile all cards from target player's graveyard. */ Target target = new Target(card,"Select target player", new String[] {"Player"}); - Ability_Cost abCost = new Ability_Cost("T Sac<1/CARDNAME>", cardName, true); + Cost abCost = new Cost("T Sac<1/CARDNAME>", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = -8877371657709894494L; @@ -6274,7 +6306,7 @@ public class CardFactory implements NewConstants { * Tap, Sacrifice Mirror Universe: Exchange life totals with * target opponent. Activate this ability only during your upkeep. */ - Ability_Cost abCost = new Ability_Cost("T Sac<1/CARDNAME>", cardName, true); + Cost abCost = new Cost("T Sac<1/CARDNAME>", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = -1409850598108909739L; @@ -6358,7 +6390,7 @@ public class CardFactory implements NewConstants { final String Tgts[] = {"Creature"}; Target target= new Target(card,"Select target creature.", Tgts, "1", "1"); - final Ability_Cost cost = new Ability_Cost("3", card.getName(), true); + final Cost cost = new Cost("3", card.getName(), true); final SpellAbility ability = new Ability_Activated(card, cost, target) { private static final long serialVersionUID = 8941566961041310961L; @@ -6418,7 +6450,7 @@ public class CardFactory implements NewConstants { return false; } }; - abMana.undoable = false; + abMana.setUndoable(false); final Ability addMana = new Ability(card, "0", desc.toString()) { private static final long serialVersionUID = -5356224416791741957L; @@ -6480,7 +6512,7 @@ public class CardFactory implements NewConstants { * 2, Tap: Flip a coin. If you win the flip, sacrifice Sorcerer's * Strongbox and draw three cards. */ - Ability_Cost abCost = new Ability_Cost("2 T", cardName, true); + Cost abCost = new Cost("2 T", cardName, true); final SpellAbility ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = 5152381570537520053L; @@ -6515,7 +6547,7 @@ public class CardFactory implements NewConstants { * to the number of time counters on it to each creature and * each player. */ - Ability_Cost abCost = new Ability_Cost("1 T Sac<1/CARDNAME>", cardName, true); + Cost abCost = new Cost("1 T Sac<1/CARDNAME>", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = 7550743617522146304L; @@ -6683,7 +6715,7 @@ public class CardFactory implements NewConstants { //*************** START *********** START ************************** else if(cardName.equals("Scroll Rack")) { - Ability_Cost abCost = new Ability_Cost("1 T", cardName, true); + Cost abCost = new Cost("1 T", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = -5588587187720068547L; @@ -6759,7 +6791,7 @@ public class CardFactory implements NewConstants { * 3, Tap: Name a card. Reveal a card at random from your hand. If it's the named card, * Cursed Scroll deals 2 damage to target creature or player. */ - Ability_Cost abCost = new Ability_Cost("3 T", cardName, true); + Cost abCost = new Cost("3 T", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, new Target(card,"TgtCP")) { private static final long serialVersionUID = 7550743617522146304L; @@ -6862,7 +6894,7 @@ public class CardFactory implements NewConstants { freeCast.setDescription("Play the previously revealed top card of your library for free."); freeCast.setStackDescription(cardName+" - play card without paying its mana cost."); - Ability_Cost abCost = new Ability_Cost("5 T", cardName, true); + Cost abCost = new Cost("5 T", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = -7328518969488588777L; @@ -7366,8 +7398,8 @@ public class CardFactory implements NewConstants { { SpellAbility altCostSA = sa.copy(); - Ability_Cost abCost = new Ability_Cost(altCost, card.getName(), altCostSA.isAbility()); - altCostSA.payCosts = abCost; + Cost abCost = new Cost(altCost, card.getName(), altCostSA.isAbility()); + altCostSA.setPayCosts(abCost); StringBuilder sb = new StringBuilder(); diff --git a/src/forge/CardFactoryUtil.java b/src/forge/card/cardFactory/CardFactoryUtil.java similarity index 96% rename from src/forge/CardFactoryUtil.java rename to src/forge/card/cardFactory/CardFactoryUtil.java index 8fd5fd2a55b..cf8c546f540 100644 --- a/src/forge/CardFactoryUtil.java +++ b/src/forge/card/cardFactory/CardFactoryUtil.java @@ -1,4 +1,4 @@ -package forge; +package forge.card.cardFactory; import java.util.ArrayList; @@ -11,7 +11,39 @@ import java.util.Map.Entry; import com.esotericsoftware.minlog.Log; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.CardListUtil; +import forge.CardUtil; +import forge.Card_Color; +import forge.Combat; +import forge.CombatUtil; +import forge.Command; +import forge.CommandArgs; +import forge.ComputerUtil; +import forge.Constant; +import forge.Counters; +import forge.GameAction; +import forge.GameActionUtil; +import forge.Phase; +import forge.Player; +import forge.PlayerZone; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Mana; +import forge.card.spellability.Ability_Static; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.SpellAbility_Restriction; +import forge.card.spellability.Target; import forge.gui.GuiUtils; +import forge.gui.input.Input; +import forge.gui.input.Input_PayManaCost; public class CardFactoryUtil { @@ -825,7 +857,7 @@ public class CardFactoryUtil { public static SpellAbility ability_Untap(final Card sourceCard, String cost) { - Ability_Cost abCost = new Ability_Cost(cost, sourceCard.getName(), true); + Cost abCost = new Cost(cost, sourceCard.getName(), true); final SpellAbility a1 = new Ability_Activated(sourceCard, abCost, null) { private static final long serialVersionUID = -8604400186962948654L; @@ -851,7 +883,7 @@ public class CardFactoryUtil { } public static SpellAbility ability_Flashback(final Card sourceCard, String cost) { - Ability_Cost fbCost = new Ability_Cost(cost,sourceCard.getName(),true); + Cost fbCost = new Cost(cost,sourceCard.getName(),true); final SpellAbility flashback = new Spell(sourceCard) { private static final long serialVersionUID = -4196027546564209412L; @@ -884,7 +916,7 @@ public class CardFactoryUtil { }; - flashback.payCosts = fbCost; + flashback.setPayCosts(fbCost); String costString = fbCost.toString().replace(":", "."); @@ -903,7 +935,7 @@ public class CardFactoryUtil { public static Ability_Activated ability_Unearth(final Card sourceCard, String manaCost) { - Ability_Cost cost = new Ability_Cost(manaCost, sourceCard.getName(), true); + Cost cost = new Cost(manaCost, sourceCard.getName(), true); final Ability_Activated unearth = new Ability_Activated(sourceCard, cost, null) { private static final long serialVersionUID = -5633945565395478009L; @@ -1054,7 +1086,7 @@ public class CardFactoryUtil { public static SpellAbility ability_Merc_Search(final Card sourceCard, String cost) { final int intCost = Integer.parseInt(cost); - final Ability_Cost abCost = new Ability_Cost("T", sourceCard.getName(), true); + final Cost abCost = new Cost("T", sourceCard.getName(), true); abCost.setMana(cost); final SpellAbility ability = new Ability_Activated(sourceCard, abCost, null){ private static final long serialVersionUID = 4988299801575232348L; @@ -1143,7 +1175,7 @@ public class CardFactoryUtil { public static SpellAbility ability_Rebel_Search(final Card sourceCard, String cost) { final int converted = Integer.parseInt(cost) - 1; - final Ability_Cost abCost = new Ability_Cost("T", sourceCard.getName(), true); + final Cost abCost = new Cost("T", sourceCard.getName(), true); abCost.setMana(cost); final SpellAbility ability = new Ability_Activated(sourceCard, abCost, null){ private static final long serialVersionUID = 7219065355049285681L; @@ -1197,7 +1229,6 @@ public class CardFactoryUtil { CardList rebels = new CardList(); CardList list = new CardList(lib.getCards()); list = list.getType("Rebel"); - list = list.getPermanents(); if(list.size() == 0) return; @@ -1254,7 +1285,7 @@ public class CardFactoryUtil { public static SpellAbility ability_cycle(final Card sourceCard, String cycleCost) { cycleCost += " Discard<1/CARDNAME>"; - Ability_Cost abCost = new Ability_Cost(cycleCost, sourceCard.getName(), true); + Cost abCost = new Cost(cycleCost, sourceCard.getName(), true); final SpellAbility cycle = new Ability_Activated(sourceCard, abCost, null) { private static final long serialVersionUID = -4960704261761785512L; @@ -1343,7 +1374,7 @@ public class CardFactoryUtil { public static SpellAbility ability_typecycle(final Card sourceCard, String cycleCost, final String type) { String description; cycleCost += " Discard<1/CARDNAME>"; - Ability_Cost abCost = new Ability_Cost(cycleCost, sourceCard.getName(), true); + Cost abCost = new Cost(cycleCost, sourceCard.getName(), true); final SpellAbility cycle = new Ability_Activated(sourceCard, abCost, null) { private static final long serialVersionUID = -4960704261761785512L; @@ -1421,7 +1452,7 @@ public class CardFactoryUtil { public static SpellAbility ability_transmute(final Card sourceCard, String transmuteCost) { transmuteCost += " Discard<1/CARDNAME>"; - Ability_Cost abCost = new Ability_Cost(transmuteCost, sourceCard.getName(), true); + Cost abCost = new Cost(transmuteCost, sourceCard.getName(), true); final SpellAbility transmute = new Ability_Activated(sourceCard, abCost, null) { private static final long serialVersionUID = -4960704261761785512L; @@ -1523,7 +1554,7 @@ public class CardFactoryUtil { return suspend; }//ability_suspend() - public static SpellAbility eqPump_Equip(final Card sourceCard, final int Power, final int Tough, final String[] extrinsicKeywords, final Ability_Cost abCost) { + public static SpellAbility eqPump_Equip(final Card sourceCard, final int Power, final int Tough, final String[] extrinsicKeywords, final Cost abCost) { Target target = new Target(sourceCard, "Select target creature you control", "Creature.YouCtrl".split(",")); final SpellAbility equip = new Ability_Activated(sourceCard, abCost, target) { private static final long serialVersionUID = -4960704261761785512L; @@ -1631,7 +1662,7 @@ public class CardFactoryUtil { return equip; }//eqPump_Equip() ( was vanila_equip() ) - public static Command eqPump_onEquip(final Card sourceCard, final int Power, final int Tough, final String[] extrinsicKeywords, final Ability_Cost abCost) { + public static Command eqPump_onEquip(final Card sourceCard, final int Power, final int Tough, final String[] extrinsicKeywords, final Cost abCost) { Command onEquip = new Command() { @@ -1657,7 +1688,7 @@ public class CardFactoryUtil { return onEquip; }//eqPump_onEquip ( was vanila_onequip() ) - public static Command eqPump_unEquip(final Card sourceCard, final int Power, final int Tough, final String[] extrinsicKeywords, final Ability_Cost abCost) { + public static Command eqPump_unEquip(final Card sourceCard, final int Power, final int Tough, final String[] extrinsicKeywords, final Cost abCost) { Command onUnEquip = new Command() { @@ -1984,7 +2015,7 @@ public class CardFactoryUtil { public static Ability_Mana getEldraziSpawnAbility(final Card c) { - Ability_Cost cost = new Ability_Cost("Sac<1/CARDNAME>", c.getName(), true); + Cost cost = new Cost("Sac<1/CARDNAME>", c.getName(), true); Ability_Mana mana = new Ability_Mana(c, cost, "1"){ private static final long serialVersionUID = -2478676548112738019L; }; @@ -2495,14 +2526,14 @@ public class CardFactoryUtil { @Override public void showMessage() { - if(GameAction.MultiTarget_Cancelled == true) stop(); + if(GameAction.isMultiTargetCancelled() == true) stop(); if(i == 0) AllZone.Display.showMessage("Select target creature or player: " + (i_max) + " more damage to deal"); else AllZone.Display.showMessage("Select target creature or player: " + (i) + " more damage to deal"); } @Override public void selectButtonCancel() { - GameAction.MultiTarget_Cancelled = true; + GameAction.setMultiTargetCancelled(true); stop(); } @@ -2534,14 +2565,14 @@ public class CardFactoryUtil { @Override public void showMessage() { - if(CombatUtil.Lorthos_Cancelled == true) stop(); + if(CombatUtil.isLorthosCancelled() == true) stop(); AllZone.Display.showMessage("Select target Permanents for Lorthos: " + (i + 1) + " more to pick"); ButtonUtil.enableOnlyCancel(); } @Override public void selectButtonCancel() { - CombatUtil.Lorthos_Cancelled = true; + CombatUtil.setLorthosCancelled(true); stop(); } diff --git a/src/forge/CardFactory_Auras.java b/src/forge/card/cardFactory/CardFactory_Auras.java similarity index 96% rename from src/forge/CardFactory_Auras.java rename to src/forge/card/cardFactory/CardFactory_Auras.java index c6a5a61e368..5b2b0db0a9f 100644 --- a/src/forge/CardFactory_Auras.java +++ b/src/forge/card/cardFactory/CardFactory_Auras.java @@ -1,5 +1,5 @@ -package forge; +package forge.card.cardFactory; import java.util.ArrayList; @@ -8,7 +8,28 @@ import java.util.StringTokenizer; import com.esotericsoftware.minlog.Log; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.CardListUtil; +import forge.CardUtil; +import forge.Command; +import forge.Constant; +import forge.Player; +import forge.PlayerZone; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Mana; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Spell_Permanent; +import forge.card.spellability.Target; import forge.gui.GuiUtils; +import forge.gui.input.Input; class CardFactory_Auras { @@ -112,7 +133,7 @@ class CardFactory_Auras { card.clearSpellAbility(); card.addSpellAbility(spell); - Ability_Cost abCost = new Ability_Cost("W W T", spell.getTargetCard() != null ? spell.getTargetCard().getName(): "", true); + Cost abCost = new Cost("W W T", spell.getTargetCard() != null ? spell.getTargetCard().getName(): "", true); final Ability_Activated produceCaribou = new Ability_Activated(spell.getTargetCard(), abCost, null) { private static final long serialVersionUID = 1358032097310954750L; @@ -304,7 +325,7 @@ class CardFactory_Auras { card.clearSpellAbility(); card.addSpellAbility(spell); - Ability_Cost abCost = new Ability_Cost("G U T", spell.getTargetCard() != null ? spell.getTargetCard().getName(): "", true); + Cost abCost = new Cost("G U T", spell.getTargetCard() != null ? spell.getTargetCard().getName(): "", true); final Ability_Activated produceDrakes = new Ability_Activated(spell.getTargetCard(), abCost, null) { private static final long serialVersionUID = -3849765771560556442L; @@ -1435,7 +1456,7 @@ class CardFactory_Auras { tgt.setZone(Constant.Zone.Graveyard); animate.setTarget(tgt); - Ability_Cost cost = new Ability_Cost("1 B", cardName, false); + Cost cost = new Cost("1 B", cardName, false); animate.setPayCosts(cost); animate.getRestrictions().setActivateZone(Constant.Zone.Hand); @@ -1533,7 +1554,7 @@ class CardFactory_Auras { costString = "5 U U"; else if(cardName.equals("Confiscate")) costString = "4 U U"; - Ability_Cost cost = new Ability_Cost(costString, cardName, false); + Cost cost = new Cost(costString, cardName, false); Target tgt = new Target(card,"Select target Permanent", "Permanent".split(",")); final SpellAbility spell = new Spell(card, cost, tgt) { diff --git a/src/forge/CardFactory_Creatures.java b/src/forge/card/cardFactory/CardFactory_Creatures.java similarity index 96% rename from src/forge/CardFactory_Creatures.java rename to src/forge/card/cardFactory/CardFactory_Creatures.java index 275b3c3e33b..a336c43c42b 100644 --- a/src/forge/CardFactory_Creatures.java +++ b/src/forge/card/cardFactory/CardFactory_Creatures.java @@ -1,5 +1,5 @@ -package forge; +package forge.card.cardFactory; import java.util.ArrayList; @@ -13,7 +13,42 @@ import javax.swing.JOptionPane; import com.esotericsoftware.minlog.Log; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.CardListUtil; +import forge.CardUtil; +import forge.Combat; +import forge.Command; +import forge.CommandReturn; +import forge.ComputerUtil; +import forge.Constant; +import forge.Counters; +import forge.GameActionUtil; +import forge.MyRandom; +import forge.Player; +import forge.PlayerZone; +import forge.PlayerZone_ComesIntoPlay; +import forge.Phase; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Mana; +import forge.card.spellability.Ability_Static; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Spell_Permanent; +import forge.card.spellability.Target; +import forge.card.trigger.Trigger; +import forge.card.trigger.TriggerHandler; import forge.gui.GuiUtils; +import forge.gui.input.Input; +import forge.gui.input.Input_PayManaCost; +import forge.gui.input.Input_PayManaCost_Ability; public class CardFactory_Creatures { @@ -63,7 +98,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** if(cardName.equals("Lurking Informant")) { Target target = new Target(card,"Select target player", new String[] {"Player"}); - Ability_Cost abCost = new Ability_Cost("2 T", cardName, true); + Cost abCost = new Cost("2 T", cardName, true); final SpellAbility a1 = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = 1446529067071763245L; @@ -176,7 +211,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Kiki-Jiki, Mirror Breaker")) { final CardFactory cfact = cf; - Ability_Cost abCost = new Ability_Cost("T", cardName, true); + Cost abCost = new Cost("T", cardName, true); Target target = new Target(card,"Select target nonlegendary creature you control.", new String[] {"Creature.nonLegendary+YouCtrl"}); final Ability_Activated ability = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = -943706942500499644L; @@ -318,7 +353,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Loxodon Hierarch")) { - Ability_Cost abCost = new Ability_Cost("G W Sac<1/CARDNAME>", cardName, true); + Cost abCost = new Cost("G W Sac<1/CARDNAME>", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = 6606519504236074186L; @@ -356,7 +391,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Gilder Bairn")) { - Ability_Cost abCost = new Ability_Cost("2 GU Untap", cardName, true); + Cost abCost = new Cost("2 GU Untap", cardName, true); Target tgt = new Target(card,"Select target permanent.", new String[]{"Permanent"}); final Ability_Activated a1 = new Ability_Activated(card, abCost, tgt) { private static final long serialVersionUID = -1847685865277129366L; @@ -1872,7 +1907,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if (cardName.equals("Disciple of Kangee")) { - Ability_Cost abCost = new Ability_Cost("U T", cardName, true); + Cost abCost = new Cost("U T", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, new Target(card,"TgtC")) { private static final long serialVersionUID = -5169389637917649036L; @@ -2090,7 +2125,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Hermit Druid")) { - Ability_Cost abCost = new Ability_Cost("G T", cardName, true); + Cost abCost = new Cost("G T", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = 5884624727757154056L; @@ -2142,7 +2177,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Sorceress Queen") || cardName.equals("Serendib Sorcerer")) { - Ability_Cost abCost = new Ability_Cost("T", cardName, true); + Cost abCost = new Cost("T", cardName, true); Target target = new Target(card,"Select target creature other than "+cardName, new String[] {"Creature.Other"}); final Ability_Activated ability = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = -6853184726011448677L; @@ -2304,7 +2339,7 @@ public class CardFactory_Creatures { PlayerZone opponentPlayZone = AllZone.getZone(Constant.Zone.Battlefield, AllZone.HumanPlayer); CardList opponentCreatureList = new CardList(opponentPlayZone.getCards()); opponentCreatureList = opponentCreatureList.getType("Creature"); - return ((PlayerCreatureList.size() + 1 > 2* opponentCreatureList.size() + 1) && (Phase.Sac_Dauntless_Escort_Comp == false) && (AllZone.Phase.getPhase().equals(Constant.Phase.Main1))) ; + return ((PlayerCreatureList.size() + 1 > 2* opponentCreatureList.size() + 1) && (Phase.isSacDauntlessEscortAI() == false) && (AllZone.Phase.getPhase().equals(Constant.Phase.Main1))) ; } final Command untilEOT = new Command() { @@ -2312,9 +2347,9 @@ public class CardFactory_Creatures { public void execute() { if(card.getController() == AllZone.HumanPlayer) { - Phase.Sac_Dauntless_Escort = false; + Phase.setSacDauntlessEscort(false); } else { - Phase.Sac_Dauntless_Escort_Comp = false; + Phase.setSacDauntlessEscortAI(false); } PlayerZone PlayerPlayZone = AllZone.getZone(Constant.Zone.Battlefield, card.getController()); CardList PlayerCreatureList = new CardList(PlayerPlayZone.getCards()); @@ -2331,9 +2366,9 @@ public class CardFactory_Creatures { public void resolve() { AllZone.GameAction.sacrifice(card); if(card.getController() == AllZone.HumanPlayer) { - Phase.Sac_Dauntless_Escort = true; + Phase.setSacDauntlessEscort(true); } - else Phase.Sac_Dauntless_Escort_Comp = true; + else Phase.setSacDauntlessEscortAI(true); AllZone.EndOfTurn.addUntil(untilEOT); } @@ -2345,7 +2380,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Wojek Embermage")) { - Ability_Cost abCost = new Ability_Cost("T", cardName, true); + Cost abCost = new Cost("T", cardName, true); Target tgt = new Target(card,"TgtC"); final Ability_Activated ability = new Ability_Activated(card, abCost, tgt) { private static final long serialVersionUID = -1208482961653326721L; @@ -2434,7 +2469,7 @@ public class CardFactory_Creatures { } }; - Ability_Cost abCost = new Ability_Cost("T", cardName, true); + Cost abCost = new Cost("T", cardName, true); Target tgt = new Target(card,"Target creature other than "+cardName, "Creature.Other".split(",")); final Ability_Activated ability = new Ability_Activated(card, abCost, tgt){ private static final long serialVersionUID = -8454685126878522607L; @@ -2468,7 +2503,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Mayael the Anima")) { - Ability_Cost abCost = new Ability_Cost("3 R G W T", cardName, true); + Cost abCost = new Cost("3 R G W T", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = -9076784333448226913L; @@ -2564,7 +2599,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Helldozer")) { - Ability_Cost abCost = new Ability_Cost("B B B T", cardName, true); + Cost abCost = new Cost("B B B T", cardName, true); Target target = new Target(card,"Select target land.", new String[]{"Land"}); final Ability_Activated ability = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = 6426884086364885861L; @@ -2670,7 +2705,7 @@ public class CardFactory_Creatures { final String[] color = new String[1]; final long[] timeStamp = new long[1]; - final Ability_Cost abCost = new Ability_Cost("Discard<1/Card>", cardName, true); + final Cost abCost = new Cost("Discard<1/Card>", cardName, true); //mana tap ability final SpellAbility ability = new Ability_Activated(card, abCost, null) { @@ -2758,7 +2793,7 @@ public class CardFactory_Creatures { final long[] timeStamp = new long[1]; //color change ability - Ability_Cost abCost = new Ability_Cost("G", cardName, true); + Cost abCost = new Cost("G", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = -5362934962417382279L; @@ -3149,7 +3184,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Goldmeadow Lookout")) { - final Ability_Cost lookCost = new Ability_Cost("W T Discard<1/Card>", card.getName(), true); + final Cost lookCost = new Cost("W T Discard<1/Card>", card.getName(), true); final SpellAbility ability = new Ability_Activated(card, lookCost, null){ private static final long serialVersionUID = -8413409735529340094L; @@ -3163,7 +3198,7 @@ public class CardFactory_Creatures { card.getController(), "W", new String[] {"Creature", "Kithkin", "Soldier"}, 1, 1, new String[] {""}); for(final Card c:cl) { - final Ability_Cost abCost = new Ability_Cost("W T", c.getName(), true); + final Cost abCost = new Cost("W T", c.getName(), true); final Target tgt = new Target(card,"TgtC"); final SpellAbility tokenAbility = new Ability_Activated(card, abCost, tgt){ private static final long serialVersionUID = -7327585136675896817L; @@ -3288,7 +3323,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Rhys the Redeemed")) { - Ability_Cost abCost = new Ability_Cost("4 GW GW T", card.getName(), true); + Cost abCost = new Cost("4 GW GW T", card.getName(), true); final Ability_Activated copyTokens1 = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = 6297992502069547478L; @@ -3635,7 +3670,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Master of the Wild Hunt")) { - final Ability_Cost abCost = new Ability_Cost("T", cardName, true); + final Cost abCost = new Cost("T", cardName, true); final Target abTgt = new Target(card,"Target a creature to Hunt", "Creature".split(",")); final Ability_Activated ability = new Ability_Activated(card, abCost, abTgt) { private static final long serialVersionUID = 35050145102566898L; @@ -3781,7 +3816,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Scarblade Elite")) { - Ability_Cost abCost = new Ability_Cost("T", cardName, true); + Cost abCost = new Cost("T", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, new Target(card,"TgtC")) { private static final long serialVersionUID = 3505019464802566898L; @@ -3864,7 +3899,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Gilt-Leaf Archdruid")) { - Ability_Cost abCost = new Ability_Cost("tapXType<7/Druid>", cardName, true); + Cost abCost = new Cost("tapXType<7/Druid>", cardName, true); Target tgt = new Target(card,"Select a player to gain lands from", "Player".split(",")); final SpellAbility stealLands = new Ability_Activated(card, abCost, tgt){ private static final long serialVersionUID = 636594487143500891L; @@ -4247,7 +4282,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Molten Hydra")) { Target target = new Target(card,"TgtCP"); - Ability_Cost abCost = new Ability_Cost("T", cardName, true); + Cost abCost = new Cost("T", cardName, true); final Ability_Activated ability2 = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = 2626619319289064289L; @@ -4891,11 +4926,11 @@ public class CardFactory_Creatures { PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, getSourceCard().getController()); CardList DoublingSeasons = new CardList(play.getCards()); DoublingSeasons = DoublingSeasons.getName("Doubling Season"); - PlayerZone_ComesIntoPlay.SimultaneousEntry = true; + PlayerZone_ComesIntoPlay.setSimultaneousEntry(true); double Count = DoublingSeasons.size(); Count = Math.pow(2,Count); for(int i = 0; i < Count; i++) { - if(i + 1 == Count) PlayerZone_ComesIntoPlay.SimultaneousEntry = false; + if(i + 1 == Count) PlayerZone_ComesIntoPlay.setSimultaneousEntry(false); Card Copy = AllZone.CardFactory.copyCardintoNew(getSourceCard()); Copy.setToken(true); Copy.setController(getSourceCard().getController()); @@ -4936,7 +4971,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Thoughtcutter Agent")) { Target target = new Target(card,"Select target player", new String[] {"Player"}); - Ability_Cost abCost = new Ability_Cost("U B T", cardName, true); + Cost abCost = new Cost("U B T", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = -3880035465617987801L; @@ -5020,7 +5055,7 @@ public class CardFactory_Creatures { } }; - Ability_Cost abCost = new Ability_Cost("0", cardName, true); + Cost abCost = new Cost("0", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = -8345060615720565828L; @@ -5407,11 +5442,11 @@ public class CardFactory_Creatures { public boolean canPlayAI() { CardList human = AllZoneUtil.getCreaturesInPlay(AllZone.HumanPlayer); CardListUtil.sortAttack(human); - return (human.get(0).getNetAttack() < Phase.StormCount && Phase.StormCount > 1); + return (human.get(0).getNetAttack() < Phase.getStormCount() && Phase.getStormCount() > 1); } @Override public void resolve() { - for(int i = 0; i < Phase.StormCount - 1; i++) { + for(int i = 0; i < Phase.getStormCount() - 1; i++) { card.addCounter(Counters.P1P1, 1); } } @@ -5570,7 +5605,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if (cardName.equals("Kargan Dragonlord")) { - Ability_Cost abCost = new Ability_Cost("R", cardName, true); + Cost abCost = new Cost("R", cardName, true); final SpellAbility ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = -2252408767635375616L; @@ -5705,7 +5740,7 @@ public class CardFactory_Creatures { final String Tgts[] = {"Creature.attacking"}; Target target = new Target(card,"Select target attacking creature.", Tgts); - final Ability_Cost cost = new Ability_Cost("T", card.getName(), true); + final Cost cost = new Cost("T", card.getName(), true); final SpellAbility ability = new Ability_Activated(card, cost, target) { private static final long serialVersionUID = 3750045284339229395L; @@ -5837,7 +5872,7 @@ public class CardFactory_Creatures { * player, and half X damage, rounded up, to you. */ - Ability_Cost abCost = new Ability_Cost("X T", cardName, true); + Cost abCost = new Cost("X T", cardName, true); Target tgt = new Target(card,"TgtCP"); final Ability_Activated ability = new Ability_Activated(card, abCost, tgt) { @@ -5901,7 +5936,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Metalworker")) { - final Ability_Cost abCost = new Ability_Cost("T", card.getName(), true); + final Cost abCost = new Cost("T", card.getName(), true); final SpellAbility ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = 6661308920885136284L; @@ -5953,7 +5988,7 @@ public class CardFactory_Creatures { Ability_Mana abMana = new Ability_Mana(card, "0", "1", 2*revealed.size()) { private static final long serialVersionUID = -2182129023960978132L; }; - abMana.undoable = false; + abMana.setUndoable(false); abMana.produceMana(); stop(); @@ -6085,7 +6120,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Phyrexian Scuta")) { - Ability_Cost abCost = new Ability_Cost("3 B PayLife<3>", cardName, false); + Cost abCost = new Cost("3 B PayLife<3>", cardName, false); final SpellAbility kicker = new Spell(card, abCost, null) { private static final long serialVersionUID = -6420757044982294960L; @@ -6401,7 +6436,7 @@ public class CardFactory_Creatures { * Then that player discards all cards with that name revealed this way. * Activate this ability only during your turn. */ - Ability_Cost abCost = new Ability_Cost("X T", cardName, true); + Cost abCost = new Cost("X T", cardName, true); Target target = new Target(card,"Select target opponent", "Opponent".split(",")); Ability_Activated discard = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = 4839778470534392198L; @@ -6475,7 +6510,7 @@ public class CardFactory_Creatures { } }; - final Ability_Cost abCost = new Ability_Cost("Discard<2/Card>", cardName, true); + final Cost abCost = new Cost("Discard<2/Card>", cardName, true); final Ability_Activated toExile = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = 7850843970664800204L; @@ -6581,7 +6616,7 @@ public class CardFactory_Creatures { } }; - Ability_Cost abCost = new Ability_Cost("T", cardName, true); + Cost abCost = new Cost("T", cardName, true); Target t1 = new Target(card, "Select target equipment you control", "Equipment.YouCtrl".split(",")); final Ability_Activated ability = new Ability_Activated(card, abCost, t1) { private static final long serialVersionUID = 3818559481920103914L; @@ -6604,7 +6639,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Gore Vassal")) { - Ability_Cost abCost = new Ability_Cost("Sac<1/CARDNAME>", cardName, true); + Cost abCost = new Cost("Sac<1/CARDNAME>", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, new Target(card, "TgtC")) { private static final long serialVersionUID = 3689290210743241201L; @@ -6644,7 +6679,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if (cardName.equals("Orcish Captain")) { - Ability_Cost abCost = new Ability_Cost("1", cardName, true); + Cost abCost = new Cost("1", cardName, true); Target target = new Target(card, "Select target Orc creature", "Creature.Orc".split(",")); final Ability_Activated ability = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = 6724781940648179318L; @@ -6695,7 +6730,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Orcish Spy")) { Target target = new Target(card,"Select target player", new String[] {"Player"}); - Ability_Cost abCost = new Ability_Cost("T", cardName, true); + Cost abCost = new Cost("T", cardName, true); final Ability_Activated ability = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = -7781215422160018196L; diff --git a/src/forge/CardFactory_Equipment.java b/src/forge/card/cardFactory/CardFactory_Equipment.java similarity index 93% rename from src/forge/CardFactory_Equipment.java rename to src/forge/card/cardFactory/CardFactory_Equipment.java index 579c6d67c94..1077d3237c1 100644 --- a/src/forge/CardFactory_Equipment.java +++ b/src/forge/card/cardFactory/CardFactory_Equipment.java @@ -1,9 +1,26 @@ -package forge; +package forge.card.cardFactory; import java.util.ArrayList; +import forge.AllZone; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.CardUtil; +import forge.Command; +import forge.Constant; +import forge.Counters; +import forge.Phase; +import forge.Player; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Cost; +import forge.card.spellability.Target; +import forge.card.trigger.Trigger; +import forge.card.trigger.TriggerHandler; + class CardFactory_Equipment { @@ -22,7 +39,7 @@ class CardFactory_Equipment { //*************** START *********** START ************************** if (cardName.equals("Umbral Mantle")) { - Ability_Cost abCost = new Ability_Cost("0", cardName, true); + Cost abCost = new Cost("0", cardName, true); Target target = new Target(card, "Select target creature you control", "Creature.YouCtrl".split(",")); final Ability_Activated equip = new Ability_Activated(card, abCost, target) { private static final long serialVersionUID = -6122939616068165612L; @@ -360,7 +377,7 @@ class CardFactory_Equipment { String extrinsicKeywords[] = {"none"}; // for equips with no keywords to add //final String manaCost = tmpCost.trim(); - final Ability_Cost abCost = new Ability_Cost(tmpCost.trim(), card.getName(), true); + final Cost abCost = new Cost(tmpCost.trim(), card.getName(), true); int Power = 0; int Tough = 0; diff --git a/src/forge/CardFactory_Instants.java b/src/forge/card/cardFactory/CardFactory_Instants.java similarity index 96% rename from src/forge/CardFactory_Instants.java rename to src/forge/card/cardFactory/CardFactory_Instants.java index 35e54138480..dba5adccfad 100644 --- a/src/forge/CardFactory_Instants.java +++ b/src/forge/card/cardFactory/CardFactory_Instants.java @@ -1,10 +1,35 @@ -package forge; +package forge.card.cardFactory; import java.util.ArrayList; import javax.swing.JOptionPane; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.CardListUtil; +import forge.CardUtil; +import forge.Combat; +import forge.Command; +import forge.ComputerUtil; +import forge.Constant; +import forge.GameActionUtil; +import forge.MyRandom; +import forge.PhaseUtil; +import forge.Player; +import forge.PlayerZone; +import forge.Phase; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; import forge.gui.GuiUtils; +import forge.gui.input.Input; +import forge.gui.input.Input_PayManaCost; public class CardFactory_Instants { @@ -925,7 +950,7 @@ public class CardFactory_Instants { @Override public void resolve() { final Card creature = getTargetCard(); - Ability_Cost abCost = new Ability_Cost("T", creature.getName(), true); + Cost abCost = new Cost("T", creature.getName(), true); Target tgt = new Target(card,"Select target nonland permanent", new String[] {"Permanent.nonLand"}); final Ability_Activated tBanish = new Ability_Activated(creature, abCost, tgt) { private static final long serialVersionUID = -1008113001678623984L; @@ -1087,7 +1112,7 @@ public class CardFactory_Instants { @Override public void resolve() { - Phase.HighTides.add(this.getSourceCard()); + Phase.getHighTides().add(this.getSourceCard()); }//resolve() };//SpellAbility card.clearSpellAbility(); @@ -1459,13 +1484,13 @@ public class CardFactory_Instants { if(card.getController().equals(AllZone.HumanPlayer)) { - Phase.ManaDrain_BonusMana_Human.add(CardUtil.getConvertedManaCost(sa.getSourceCard())); - Phase.ManaDrain_Source_Human.add(card); + Phase.getManaDrain_BonusMana_Human().add(CardUtil.getConvertedManaCost(sa.getSourceCard())); + Phase.getManaDrain_Source_Human().add(card); } else if(card.getController().equals(AllZone.ComputerPlayer)) { - Phase.ManaDrain_BonusMana_AI.add(CardUtil.getConvertedManaCost(sa.getSourceCard())); - Phase.ManaDrain_Source_AI.add(card); + Phase.getManaDrain_BonusMana_AI().add(CardUtil.getConvertedManaCost(sa.getSourceCard())); + Phase.getManaDrain_Source_AI().add(card); } } @@ -2116,7 +2141,7 @@ public class CardFactory_Instants { * creature has infect, Burn the Impure deals 3 damage to that * creature's controller. */ - Ability_Cost abCost = new Ability_Cost("1 R", cardName, false); + Cost abCost = new Cost("1 R", cardName, false); final SpellAbility spell = new Spell(card, abCost, new Target(card, "TgtC")) { private static final long serialVersionUID = -3069135027502686218L; int damage = 3; @@ -2182,7 +2207,7 @@ public class CardFactory_Instants { * type target player controls, or untap all tapped permanents of that type that * player controls. */ - Ability_Cost abCost = new Ability_Cost("2 U U", cardName, false); + Cost abCost = new Cost("2 U U", cardName, false); Target target = new Target(card, "Select target player", "Player".split(",")); final SpellAbility spell = new Spell(card, abCost, target) { private static final long serialVersionUID = -2175586347805121896L; diff --git a/src/forge/CardFactory_Lands.java b/src/forge/card/cardFactory/CardFactory_Lands.java similarity index 95% rename from src/forge/CardFactory_Lands.java rename to src/forge/card/cardFactory/CardFactory_Lands.java index 8841854566f..e7a22396008 100644 --- a/src/forge/CardFactory_Lands.java +++ b/src/forge/card/cardFactory/CardFactory_Lands.java @@ -1,11 +1,32 @@ -package forge; +package forge.card.cardFactory; import java.util.HashMap; import javax.swing.JOptionPane; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.CardUtil; +import forge.Command; +import forge.Constant; +import forge.Counters; +import forge.GameActionUtil; +import forge.MyRandom; +import forge.Player; +import forge.PlayerZone; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Mana; +import forge.card.spellability.Cost; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; import forge.gui.GuiUtils; +import forge.gui.input.Input; class CardFactory_Lands { @@ -27,7 +48,7 @@ class CardFactory_Lands { } }; - Ability_Cost abCost = new Ability_Cost("T", card.getName(), true); + Cost abCost = new Cost("T", card.getName(), true); final SpellAbility ability = new Ability_Activated(card, abCost, null){ private static final long serialVersionUID = 1416258136308898492L; @@ -313,7 +334,7 @@ class CardFactory_Lands { } }; - Ability_Cost abCost = new Ability_Cost("G U T", cardName, true); + Cost abCost = new Cost("G U T", cardName, true); Ability_Activated ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = 1416258136308898492L; @@ -548,7 +569,7 @@ class CardFactory_Lands { /* * Tap: The power of target creature with flying becomes 0 until end of turn. */ - Ability_Cost abCost = new Ability_Cost("T", cardName, true); + Cost abCost = new Cost("T", cardName, true); final String Tgts[] = {"Creature.withFlying"}; Target target = new Target(card,"Select target creature with flying.", Tgts); final Ability_Activated ability = new Ability_Activated(card, abCost, target) { @@ -633,7 +654,7 @@ class CardFactory_Lands { return false; } }; - abMana.undoable = false; + abMana.setUndoable(false); final Ability addMana = new Ability(card, "0", desc.toString()) { private static final long serialVersionUID = -7805885635696245285L; @@ -793,7 +814,7 @@ class CardFactory_Lands { return false; } }; - abMana.undoable = false; + abMana.setUndoable(false); final Ability addMana = new Ability(card, "1", description.toString()) { private static final long serialVersionUID = 7177960799748450242L; @@ -818,7 +839,7 @@ class CardFactory_Lands { @Override public void resolve() { - abMana.undoable = false; + abMana.setUndoable(false); abMana.produceMana(mana()); } }; diff --git a/src/forge/CardFactory_Planeswalkers.java b/src/forge/card/cardFactory/CardFactory_Planeswalkers.java similarity index 96% rename from src/forge/CardFactory_Planeswalkers.java rename to src/forge/card/cardFactory/CardFactory_Planeswalkers.java index eec0303f0d0..d96a8cbc100 100644 --- a/src/forge/CardFactory_Planeswalkers.java +++ b/src/forge/card/cardFactory/CardFactory_Planeswalkers.java @@ -1,12 +1,35 @@ -package forge; +package forge.card.cardFactory; import java.util.HashMap; import com.esotericsoftware.minlog.Log; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.CardListUtil; +import forge.CardUtil; +import forge.CombatUtil; +import forge.Command; +import forge.Constant; +import forge.Counters; +import forge.GameActionUtil; +import forge.Player; +import forge.PlayerZone; +import forge.Phase; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Mana; +import forge.card.spellability.Cost; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; import forge.gui.GuiUtils; +import forge.gui.input.Input; class CardFactory_Planeswalkers { @@ -678,7 +701,7 @@ class CardFactory_Planeswalkers { else if(cardName.equals("Ajani Vengeant")) { //ability3 - Ability_Cost cost = new Ability_Cost("SubCounter<7/LOYALTY>", cardName, true); + Cost cost = new Cost("SubCounter<7/LOYALTY>", cardName, true); final SpellAbility ability3 = new Ability_Activated(card, cost, new Target(card,"P")){ private static final long serialVersionUID = -1200172251117224702L; @@ -1367,7 +1390,7 @@ class CardFactory_Planeswalkers { Ability_Mana abMana = new Ability_Mana(card, "0", "R", list.size()) { private static final long serialVersionUID = -2182129023960978132L; }; - abMana.undoable = false; + abMana.setUndoable(false); abMana.produceMana(); }//resolve() @@ -1827,7 +1850,7 @@ class CardFactory_Planeswalkers { * from among them and put it into your hand. Put the rest on the bottom of your * library in any order. */ - Ability_Cost abCost1 = new Ability_Cost("AddCounter<1/LOYALTY>", cardName, true); + Cost abCost1 = new Cost("AddCounter<1/LOYALTY>", cardName, true); final SpellAbility ability1 = new Ability_Activated(card, abCost1, null) { private static final long serialVersionUID = 3817068914199871827L; @@ -1905,7 +1928,7 @@ class CardFactory_Planeswalkers { /* * -1: Target artifact becomes a 5/5 artifact creature. */ - Ability_Cost abCost2 = new Ability_Cost("SubCounter<1/LOYALTY>", cardName, true); + Cost abCost2 = new Cost("SubCounter<1/LOYALTY>", cardName, true); Target target = new Target(card, "Select target artifact", "Artifact".split(",")); final SpellAbility ability2 = new Ability_Activated(card, abCost2, target) { private static final long serialVersionUID = -669957056327870077L; @@ -1942,7 +1965,7 @@ class CardFactory_Planeswalkers { /* * Target player loses X life and you gain X life, where X is twice the number of artifacts you control. */ - Ability_Cost abCost3 = new Ability_Cost("SubCounter<4/LOYALTY>", cardName, true); + Cost abCost3 = new Cost("SubCounter<4/LOYALTY>", cardName, true); Target target2 = new Target(card, "Select target player", "Player".split(",")); final SpellAbility ability3 = new Ability_Activated(card, abCost3, target2) { private static final long serialVersionUID = 4407137815355315502L; diff --git a/src/forge/CardFactory_Sorceries.java b/src/forge/card/cardFactory/CardFactory_Sorceries.java similarity index 97% rename from src/forge/CardFactory_Sorceries.java rename to src/forge/card/cardFactory/CardFactory_Sorceries.java index f21ddedeca0..7c5dbd1c3bd 100644 --- a/src/forge/CardFactory_Sorceries.java +++ b/src/forge/card/cardFactory/CardFactory_Sorceries.java @@ -1,4 +1,4 @@ -package forge; +package forge.card.cardFactory; import java.util.ArrayList; import java.util.Arrays; @@ -11,7 +11,35 @@ import javax.swing.JOptionPane; import com.esotericsoftware.minlog.Log; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.CardListUtil; +import forge.CardUtil; +import forge.Command; +import forge.ComputerUtil; +import forge.Constant; +import forge.Counters; +import forge.GameActionUtil; +import forge.HandSizeOp; +import forge.Player; +import forge.PlayerZone; +import forge.PlayerZone_ComesIntoPlay; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Ability_Mana; +import forge.card.spellability.Cost; +import forge.card.spellability.Spell; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Spell_Permanent; +import forge.card.spellability.Target; +import forge.card.trigger.Trigger; import forge.gui.GuiUtils; +import forge.gui.input.Input; +import forge.gui.input.Input_PayManaCost; public class CardFactory_Sorceries { @@ -359,7 +387,7 @@ public class CardFactory_Sorceries { //*************** START *********** START ************************** else if(cardName.equals("Cruel Ultimatum")) { - Ability_Cost abCost = new Ability_Cost("U U B B B R R", cardName, false); + Cost abCost = new Cost("U U B B B R R", cardName, false); Target tgt = new Target(card,"Select target opponent", "Opponent".split(",")); final SpellAbility spell = new Spell(card,abCost, tgt) { @@ -2144,10 +2172,10 @@ public class CardFactory_Sorceries { if(AllZone.GameAction.isCardInPlay(getTargetCard()) && CardFactoryUtil.canTarget(card, getTargetCard())) { - PlayerZone_ComesIntoPlay.SimultaneousEntry = true; + PlayerZone_ComesIntoPlay.setSimultaneousEntry(true); double Count = AllZoneUtil.getDoublingSeasonMagnitude(card.getController()); for(int i = 0; i < Count; i++) { - if(i + 1 == Count) PlayerZone_ComesIntoPlay.SimultaneousEntry = false; + if(i + 1 == Count) PlayerZone_ComesIntoPlay.setSimultaneousEntry(false); final Card Copy = AllZone.CardFactory.copyCardintoNew(getTargetCard()); //Slight hack for copying stuff that has triggered abilities @@ -2233,10 +2261,10 @@ public class CardFactory_Sorceries { card.setKicked(true); if(AllZone.GameAction.isCardInPlay(getTargetCard()) && CardFactoryUtil.canTarget(card, getTargetCard())) { - PlayerZone_ComesIntoPlay.SimultaneousEntry = true; + PlayerZone_ComesIntoPlay.setSimultaneousEntry(true); int Count = 5 * AllZoneUtil.getDoublingSeasonMagnitude(card.getController()); for(int i = 0; i < Count; i++) { - if(i + 1 == Count) PlayerZone_ComesIntoPlay.SimultaneousEntry = false; + if(i + 1 == Count) PlayerZone_ComesIntoPlay.setSimultaneousEntry(false); final Card Copy = AllZone.CardFactory.copyCardintoNew(getTargetCard()); //Slight hack for copying stuff that has triggered abilities @@ -3461,7 +3489,7 @@ public class CardFactory_Sorceries { * Tap target untapped creature you control. If you do, add X to * your mana pool, where X is that creature's converted mana cost. */ - Ability_Cost cost = new Ability_Cost("U", cardName, false); + Cost cost = new Cost("U", cardName, false); Target tgt = new Target(card,"Select an untapped creature you control", "Creature.untapped+YouCtrl".split(",")); final SpellAbility spell = new Spell(card, cost, tgt) { @@ -4172,7 +4200,7 @@ public class CardFactory_Sorceries { //*************** START *********** START ************************** else if(cardName.equals("Choking Sands")) { - Ability_Cost abCost = new Ability_Cost("1 B B", cardName, false); + Cost abCost = new Cost("1 B B", cardName, false); Target target = new Target(card,"Select target non-Swamp land.", new String[]{"Land.nonSwamp"}); final SpellAbility spell = new Spell(card, abCost, target) { private static final long serialVersionUID = 6499378648382900112L; @@ -4228,7 +4256,7 @@ public class CardFactory_Sorceries { * When you cycle Decree of Justice, you may pay X. If you do, put X 1/1 * white Soldier creature tokens onto the battlefield. */ - Ability_Cost abCost = new Ability_Cost("X", cardName, false); + Cost abCost = new Cost("X", cardName, false); final SpellAbility ability = new Ability_Activated(card, abCost, null) { private static final long serialVersionUID = -7995897172138409120L; diff --git a/src/forge/Mana.java b/src/forge/card/mana/Mana.java similarity index 91% rename from src/forge/Mana.java rename to src/forge/card/mana/Mana.java index bd432a669ea..c65f09e7408 100644 --- a/src/forge/Mana.java +++ b/src/forge/card/mana/Mana.java @@ -1,4 +1,8 @@ -package forge; +package forge.card.mana; + +import forge.Card; +import forge.Constant; +import forge.gui.input.Input_PayManaCostUtil; public class Mana { private String color; diff --git a/src/forge/ManaCost.java b/src/forge/card/mana/ManaCost.java similarity index 92% rename from src/forge/ManaCost.java rename to src/forge/card/mana/ManaCost.java index bfcafac97a9..ddc15572f84 100644 --- a/src/forge/ManaCost.java +++ b/src/forge/card/mana/ManaCost.java @@ -1,16 +1,19 @@ -package forge; +package forge.card.mana; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.StringTokenizer; +import forge.Constant; +import forge.gui.input.Input_PayManaCostUtil; + public class ManaCost { //holds Mana_Part objects //ManaPartColor is stored before ManaPartColorless private ArrayList manaPart; private HashMap sunburstMap = new HashMap(); - int xcounter = 0; + private int xcounter = 0; //manaCost can be like "0", "3", "G", "GW", "10", "3 GW", "10 GW" //or "split hybrid mana" like "2/G 2/G", "2/B 2/B 2/B" @@ -25,7 +28,7 @@ public class ManaCost { manaCost = "0"; else manaCost = manaCost.substring(2); - xcounter++; + setXcounter(getXcounter() + 1); } manaPart = split(manaCost); } @@ -203,7 +206,7 @@ public class ManaCost { //need to reverse everything since the colored mana is stored first Collections.reverse(list); - for(int i = 0; i < xcounter; i++) + for(int i = 0; i < getXcounter(); i++) sb.append(" ").append("X"); for(int i = 0; i < list.size(); i++) { @@ -239,7 +242,7 @@ public class ManaCost { } } - cmc += 0.00001* xcounter; + cmc += 0.00001* getXcounter(); return cmc; } @@ -290,4 +293,12 @@ public class ManaCost { return new Mana_PartColor(partCost); } } + + public void setXcounter(int xcounter) { + this.xcounter = xcounter; + } + + public int getXcounter() { + return xcounter; + } } diff --git a/src/forge/ManaPool.java b/src/forge/card/mana/ManaPool.java similarity index 98% rename from src/forge/ManaPool.java rename to src/forge/card/mana/ManaPool.java index 8348ab6a927..1df52ba6e05 100644 --- a/src/forge/ManaPool.java +++ b/src/forge/card/mana/ManaPool.java @@ -1,11 +1,19 @@ -package forge; +package forge.card.mana; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardUtil; +import forge.Constant; +import forge.Player; +import forge.card.spellability.Ability_Mana; +import forge.card.spellability.SpellAbility; import forge.gui.GuiUtils; +import forge.gui.input.Input_PayManaCostUtil; public class ManaPool extends Card { @@ -118,7 +126,6 @@ public class ManaPool extends Card { for(Mana m : manaList){ addManaToPool(floatingMana, m); } - AllZone.GameAction.checkStateEffects(); } public static ArrayList convertStringToMana(String manaStr, Card card){ diff --git a/src/forge/Mana_Part.java b/src/forge/card/mana/Mana_Part.java similarity index 97% rename from src/forge/Mana_Part.java rename to src/forge/card/mana/Mana_Part.java index e7073238865..255a89be72d 100644 --- a/src/forge/Mana_Part.java +++ b/src/forge/card/mana/Mana_Part.java @@ -1,5 +1,5 @@ -package forge; +package forge.card.mana; public abstract class Mana_Part { diff --git a/src/forge/Mana_PartColor.java b/src/forge/card/mana/Mana_PartColor.java similarity index 97% rename from src/forge/Mana_PartColor.java rename to src/forge/card/mana/Mana_PartColor.java index 2b97f4426cc..4317c64106f 100644 --- a/src/forge/Mana_PartColor.java +++ b/src/forge/card/mana/Mana_PartColor.java @@ -1,5 +1,7 @@ -package forge; +package forge.card.mana; + +import forge.gui.input.Input_PayManaCostUtil; public class Mana_PartColor extends Mana_Part { diff --git a/src/forge/Mana_PartColorless.java b/src/forge/card/mana/Mana_PartColorless.java similarity index 99% rename from src/forge/Mana_PartColorless.java rename to src/forge/card/mana/Mana_PartColorless.java index 19ca9d8db09..11f6afc7750 100644 --- a/src/forge/Mana_PartColorless.java +++ b/src/forge/card/mana/Mana_PartColorless.java @@ -1,4 +1,4 @@ -package forge; +package forge.card.mana; import forge.error.ErrorViewer; diff --git a/src/forge/Mana_PartSnow.java b/src/forge/card/mana/Mana_PartSnow.java similarity index 98% rename from src/forge/Mana_PartSnow.java rename to src/forge/card/mana/Mana_PartSnow.java index 62988856512..756efad5c21 100644 --- a/src/forge/Mana_PartSnow.java +++ b/src/forge/card/mana/Mana_PartSnow.java @@ -1,4 +1,4 @@ -package forge; +package forge.card.mana; public class Mana_PartSnow extends Mana_Part { private boolean isPaid = false; diff --git a/src/forge/Mana_PartSplit.java b/src/forge/card/mana/Mana_PartSplit.java similarity index 97% rename from src/forge/Mana_PartSplit.java rename to src/forge/card/mana/Mana_PartSplit.java index 65f43d8d090..dc1256c587b 100644 --- a/src/forge/Mana_PartSplit.java +++ b/src/forge/card/mana/Mana_PartSplit.java @@ -1,5 +1,7 @@ -package forge; +package forge.card.mana; + +import forge.gui.input.Input_PayManaCostUtil; //handles mana costs like 2/R or 2/B diff --git a/src/forge/Mana_PartTest.java b/src/forge/card/mana/Mana_PartTest.java similarity index 99% rename from src/forge/Mana_PartTest.java rename to src/forge/card/mana/Mana_PartTest.java index 179b9e30d8c..410cdd45cae 100644 --- a/src/forge/Mana_PartTest.java +++ b/src/forge/card/mana/Mana_PartTest.java @@ -1,4 +1,8 @@ -package forge; +package forge.card.mana; + +import forge.Card; +import forge.Constant; + public class Mana_PartTest { static void testPayManaCost() diff --git a/src/forge/Ability.java b/src/forge/card/spellability/Ability.java similarity index 92% rename from src/forge/Ability.java rename to src/forge/card/spellability/Ability.java index 6284314674e..bf76ecad5a1 100644 --- a/src/forge/Ability.java +++ b/src/forge/card/spellability/Ability.java @@ -1,8 +1,14 @@ -package forge; +package forge.card.spellability; import com.esotericsoftware.minlog.Log; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; + abstract public class Ability extends SpellAbility { //Slight hack for Pithing Needle diff --git a/src/forge/Ability_Activated.java b/src/forge/card/spellability/Ability_Activated.java similarity index 86% rename from src/forge/Ability_Activated.java rename to src/forge/card/spellability/Ability_Activated.java index 6acc4ac7841..784ce50886e 100644 --- a/src/forge/Ability_Activated.java +++ b/src/forge/card/spellability/Ability_Activated.java @@ -1,11 +1,18 @@ -package forge; +package forge.card.spellability; + +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.Constant; abstract public class Ability_Activated extends SpellAbility implements java.io.Serializable { private static final long serialVersionUID = 1L; - public Ability_Activated(Card sourceCard, Ability_Cost abCost, Target tgt) { + public Ability_Activated(Card sourceCard, Cost abCost, Target tgt) { super(SpellAbility.Ability, sourceCard); setManaCost(abCost.getTotalMana()); setPayCosts(abCost); diff --git a/src/forge/Ability_Mana.java b/src/forge/card/spellability/Ability_Mana.java similarity index 89% rename from src/forge/Ability_Mana.java rename to src/forge/card/spellability/Ability_Mana.java index c4ff508e175..5d711912274 100644 --- a/src/forge/Ability_Mana.java +++ b/src/forge/card/spellability/Ability_Mana.java @@ -1,7 +1,13 @@ -package forge; +package forge.card.spellability; import java.util.ArrayList; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.Phase; +import forge.card.cardFactory.CardFactoryUtil; import forge.gui.GuiUtils; abstract public class Ability_Mana extends Ability_Activated implements java.io.Serializable { @@ -18,14 +24,14 @@ abstract public class Ability_Mana extends Ability_Activated implements java.io. } public Ability_Mana(Card sourceCard, String parse, String produced, int num) { - this(sourceCard, new Ability_Cost(parse, sourceCard.getName(), true), produced, num); + this(sourceCard, new Cost(parse, sourceCard.getName(), true), produced, num); } - public Ability_Mana(Card sourceCard, Ability_Cost cost, String produced) { + public Ability_Mana(Card sourceCard, Cost cost, String produced) { this(sourceCard, cost, produced, 1); } - public Ability_Mana(Card sourceCard, Ability_Cost cost, String produced, int num) { + public Ability_Mana(Card sourceCard, Cost cost, String produced, int num) { super(sourceCard, cost, null); origProduced = produced; @@ -84,10 +90,10 @@ abstract public class Ability_Mana extends Ability_Activated implements java.io. if (source.getType().contains("Island")){ // If High Tide triggers, make mana undoable - int size = Phase.HighTides.size(); + int size = Phase.getHighTides().size(); for(int i = 0; i < size; i++){ this.undoable = false; - AllZone.ManaPool.addManaToFloating("U", Phase.HighTides.get(i)); + AllZone.ManaPool.addManaToFloating("U", Phase.getHighTides().get(i)); } } diff --git a/src/forge/Ability_Static.java b/src/forge/card/spellability/Ability_Static.java similarity index 86% rename from src/forge/Ability_Static.java rename to src/forge/card/spellability/Ability_Static.java index 59e2fc54403..172224954b1 100644 --- a/src/forge/Ability_Static.java +++ b/src/forge/card/spellability/Ability_Static.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.spellability; import com.esotericsoftware.minlog.Log; +import forge.Card; + abstract public class Ability_Static extends Ability { public Ability_Static(Card sourceCard, String manaCost) { super(sourceCard, manaCost); diff --git a/src/forge/Ability_Sub.java b/src/forge/card/spellability/Ability_Sub.java similarity index 88% rename from src/forge/Ability_Sub.java rename to src/forge/card/spellability/Ability_Sub.java index fe649a1ded7..bb10ec885e7 100644 --- a/src/forge/Ability_Sub.java +++ b/src/forge/card/spellability/Ability_Sub.java @@ -1,4 +1,6 @@ -package forge; +package forge.card.spellability; + +import forge.Card; abstract public class Ability_Sub extends SpellAbility implements java.io.Serializable { private static final long serialVersionUID = 4650634415821733134L; diff --git a/src/forge/Ability_Triggered.java b/src/forge/card/spellability/Ability_Triggered.java similarity index 94% rename from src/forge/Ability_Triggered.java rename to src/forge/card/spellability/Ability_Triggered.java index fa89c05d109..8043fdf1574 100644 --- a/src/forge/Ability_Triggered.java +++ b/src/forge/card/spellability/Ability_Triggered.java @@ -1,9 +1,14 @@ -package forge; +package forge.card.spellability; import java.util.Arrays; +import forge.Card; +import forge.CardList; +import forge.Command; +import forge.ZCTrigger; + public class Ability_Triggered extends Ability implements Command { diff --git a/src/forge/Ability_Cost.java b/src/forge/card/spellability/Cost.java similarity index 95% rename from src/forge/Ability_Cost.java rename to src/forge/card/spellability/Cost.java index c6ec4df0b16..75bbf981732 100644 --- a/src/forge/Ability_Cost.java +++ b/src/forge/card/spellability/Cost.java @@ -1,8 +1,13 @@ -package forge; +package forge.card.spellability; import java.util.regex.Pattern; -public class Ability_Cost { +import forge.AllZone; +import forge.Card; +import forge.Counters; +import forge.card.mana.ManaCost; + +public class Cost { private boolean isAbility = true; private boolean sacCost = false; @@ -116,7 +121,7 @@ public class Ability_Cost { private String name; - public Ability_Cost(String parse, String cardName, boolean bAbility) + public Cost(String parse, String cardName, boolean bAbility) { isAbility = bAbility; // when adding new costs for cost string, place them here diff --git a/src/forge/Cost_Payment.java b/src/forge/card/spellability/Cost_Payment.java similarity index 95% rename from src/forge/Cost_Payment.java rename to src/forge/card/spellability/Cost_Payment.java index d5c816d69d2..4367a14703b 100644 --- a/src/forge/Cost_Payment.java +++ b/src/forge/card/spellability/Cost_Payment.java @@ -1,16 +1,31 @@ -package forge; +package forge.card.spellability; import javax.swing.JOptionPane; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.ComputerUtil; +import forge.Constant; +import forge.Counters; +import forge.Phase; +import forge.PlayerZone; +import forge.card.abilityFactory.AbilityFactory; +import forge.card.mana.ManaCost; import forge.gui.GuiUtils; +import forge.gui.input.Input; +import forge.gui.input.Input_PayManaCostUtil; public class Cost_Payment { - private Ability_Cost cost = null; + private Cost cost = null; private SpellAbility ability = null; private Card card = null; private SpellAbility_Requirements req = null; - public Ability_Cost getCost() { return cost; } + public Cost getCost() { return cost; } public SpellAbility getAbility() { return ability; } public Card getCard() { return card; } @@ -53,7 +68,7 @@ public class Cost_Payment { public void setPayTapXType(boolean bTapX) { payTapXType = bTapX; } public void setPayReturn(boolean bReturn){ payReturn = bReturn; } - public Cost_Payment(Ability_Cost cost, SpellAbility abil){ + public Cost_Payment(Cost cost, SpellAbility abil){ this.cost = cost; this.ability = abil; card = this.ability.getSourceCard(); @@ -73,7 +88,7 @@ public class Cost_Payment { payReturn = !cost.getReturnCost(); } - public static boolean canPayAdditionalCosts(Ability_Cost cost, SpellAbility ability){ + public static boolean canPayAdditionalCosts(Cost cost, SpellAbility ability){ if (cost == null) return true; @@ -500,7 +515,7 @@ public class Cost_Payment { if (cost.getExileFromHandThis()) exileFromHandCard.add(card); else - exileFromHandCard = ComputerUtil.chooseExileFromHandType(cost.getExileFromHandType(), card, ability.getTargetCard(), cost.getExileFromHandAmount()); + exileFromHandCard = ComputerUtil.chooseExileType(cost.getExileFromHandType(), card, ability.getTargetCard(), cost.getExileFromHandAmount()); if (exileFromHandCard.size() != cost.getExileFromHandAmount()){ System.out.println("Couldn't find a valid card to exile for: "+card.getName()); @@ -648,7 +663,7 @@ public class Cost_Payment { public static Input input_payMana(final SpellAbility sa, final Cost_Payment payment, int manaToAdd){ final ManaCost manaCost; - if(Phase.GameBegins == 1) { + if(Phase.getGameBegins() == 1) { if(sa.getSourceCard().isCopiedSpell() && sa.isSpell()) { manaCost = new ManaCost("0"); } else { diff --git a/src/forge/Spell.java b/src/forge/card/spellability/Spell.java similarity index 90% rename from src/forge/Spell.java rename to src/forge/card/spellability/Spell.java index 083a4e25b27..c6fd4a53eca 100644 --- a/src/forge/Spell.java +++ b/src/forge/card/spellability/Spell.java @@ -1,4 +1,8 @@ -package forge; +package forge.card.spellability; +import forge.AllZone; +import forge.Card; +import forge.Constant; +import forge.Phase; import forge.error.ErrorViewer; @@ -14,7 +18,7 @@ abstract public class Spell extends SpellAbility implements java.io.Serializable getRestrictions().setActivateZone(Constant.Zone.Hand); } - public Spell(Card sourceCard, Ability_Cost abCost, Target abTgt) { + public Spell(Card sourceCard, Cost abCost, Target abTgt) { super(SpellAbility.Spell, sourceCard); setManaCost(sourceCard.getManaCost()); diff --git a/src/forge/SpellAbility.java b/src/forge/card/spellability/SpellAbility.java similarity index 94% rename from src/forge/SpellAbility.java rename to src/forge/card/spellability/SpellAbility.java index 3537d76d1d8..190c0d5d366 100644 --- a/src/forge/SpellAbility.java +++ b/src/forge/card/spellability/SpellAbility.java @@ -1,8 +1,17 @@ -package forge; +package forge.card.spellability; import java.util.ArrayList; +import forge.Card; +import forge.CardList; +import forge.Command; +import forge.CommandArgs; +import forge.Player; +import forge.card.abilityFactory.AbilityFactory; +import forge.card.mana.Mana; +import forge.gui.input.Input; + //only SpellAbility can go on the stack //override any methods as needed @@ -47,7 +56,7 @@ public abstract class SpellAbility { private Input afterResolve; private Input afterPayMana; - protected Ability_Cost payCosts = null; + protected Cost payCosts = null; protected Target chosenTarget = null; private SpellAbility_Restriction restrictions = new SpellAbility_Restriction(); @@ -258,11 +267,11 @@ public abstract class SpellAbility { afterPayMana = in; } - public Ability_Cost getPayCosts() { + public Cost getPayCosts() { return payCosts; } - public void setPayCosts(Ability_Cost abCost) { + public void setPayCosts(Cost abCost) { payCosts = abCost; } diff --git a/src/forge/SpellAbilityList.java b/src/forge/card/spellability/SpellAbilityList.java similarity index 96% rename from src/forge/SpellAbilityList.java rename to src/forge/card/spellability/SpellAbilityList.java index 08f86971911..2408082b0f0 100644 --- a/src/forge/SpellAbilityList.java +++ b/src/forge/card/spellability/SpellAbilityList.java @@ -1,9 +1,11 @@ -package forge; +package forge.card.spellability; import java.util.ArrayList; +import forge.ComputerUtil; + public class SpellAbilityList { private ArrayList list = new ArrayList(); diff --git a/src/forge/SpellAbilityUtil.java b/src/forge/card/spellability/SpellAbilityUtil.java similarity index 87% rename from src/forge/SpellAbilityUtil.java rename to src/forge/card/spellability/SpellAbilityUtil.java index 28fda7c55f9..316be8f57e6 100644 --- a/src/forge/SpellAbilityUtil.java +++ b/src/forge/card/spellability/SpellAbilityUtil.java @@ -1,6 +1,14 @@ -package forge; +package forge.card.spellability; import java.util.ArrayList; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.CardUtil; +import forge.Player; +import forge.UndoCommand; + public class SpellAbilityUtil { //only works for MONO-COLORED spells diff --git a/src/forge/SpellAbility_Requirements.java b/src/forge/card/spellability/SpellAbility_Requirements.java similarity index 93% rename from src/forge/SpellAbility_Requirements.java rename to src/forge/card/spellability/SpellAbility_Requirements.java index b33457b8514..7b760448fc8 100644 --- a/src/forge/SpellAbility_Requirements.java +++ b/src/forge/card/spellability/SpellAbility_Requirements.java @@ -1,7 +1,11 @@ -package forge; +package forge.card.spellability; import java.util.ArrayList; +import forge.AllZone; +import forge.Card; +import forge.PlayerZone; + public class SpellAbility_Requirements { private SpellAbility ability = null; private Target_Selection select = null; diff --git a/src/forge/SpellAbility_Restriction.java b/src/forge/card/spellability/SpellAbility_Restriction.java similarity index 91% rename from src/forge/SpellAbility_Restriction.java rename to src/forge/card/spellability/SpellAbility_Restriction.java index cdd3092f5da..d740fcf85b0 100644 --- a/src/forge/SpellAbility_Restriction.java +++ b/src/forge/card/spellability/SpellAbility_Restriction.java @@ -1,7 +1,16 @@ -package forge; +package forge.card.spellability; import java.util.ArrayList; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.Constant; +import forge.Phase; +import forge.Player; +import forge.card.cardFactory.CardFactoryUtil; + public class SpellAbility_Restriction { // A class for handling SpellAbility Restrictions. These restrictions include: // Zone, Phase, OwnTurn, Speed (instant/sorcery), Amount per Turn, Player, @@ -128,7 +137,7 @@ public class SpellAbility_Restriction { int levelMax = 0; */ - SpellAbility_Restriction(){ } + public SpellAbility_Restriction(){ } public boolean canPlay(Card c, SpellAbility sa){ if (!AllZone.getZone(c).getZoneName().equals(activateZone)) diff --git a/src/forge/Spell_Evoke.java b/src/forge/card/spellability/Spell_Evoke.java similarity index 93% rename from src/forge/Spell_Evoke.java rename to src/forge/card/spellability/Spell_Evoke.java index 6121102b712..2105a331247 100644 --- a/src/forge/Spell_Evoke.java +++ b/src/forge/card/spellability/Spell_Evoke.java @@ -1,5 +1,8 @@ -package forge; +package forge.card.spellability; + +import forge.AllZone; +import forge.Card; public class Spell_Evoke extends Spell_Permanent { diff --git a/src/forge/Spell_Permanent.java b/src/forge/card/spellability/Spell_Permanent.java similarity index 95% rename from src/forge/Spell_Permanent.java rename to src/forge/card/spellability/Spell_Permanent.java index 05c39cab97a..231b5e9271e 100644 --- a/src/forge/Spell_Permanent.java +++ b/src/forge/card/spellability/Spell_Permanent.java @@ -1,5 +1,18 @@ -package forge; +package forge.card.spellability; + +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.Command; +import forge.CommandReturn; +import forge.Constant; +import forge.Player; +import forge.card.cardFactory.CardFactory; +import forge.card.cardFactory.CardFactoryUtil; +import forge.gui.input.Input; public class Spell_Permanent extends Spell { diff --git a/src/forge/Target.java b/src/forge/card/spellability/Target.java similarity index 92% rename from src/forge/Target.java rename to src/forge/card/spellability/Target.java index 25717b8cf9c..77536279ef2 100644 --- a/src/forge/Target.java +++ b/src/forge/card/spellability/Target.java @@ -1,7 +1,14 @@ -package forge; +package forge.card.spellability; import java.util.ArrayList; +import forge.AllZone; +import forge.Card; +import forge.Constant; +import forge.Player; +import forge.card.abilityFactory.AbilityFactory; +import forge.card.cardFactory.CardFactoryUtil; + public class Target { private boolean bMandatory = false; private Card srcCard; diff --git a/src/forge/Target_Selection.java b/src/forge/card/spellability/Target_Selection.java similarity index 93% rename from src/forge/Target_Selection.java rename to src/forge/card/spellability/Target_Selection.java index d539a500389..b2719c6dbfd 100644 --- a/src/forge/Target_Selection.java +++ b/src/forge/card/spellability/Target_Selection.java @@ -1,8 +1,18 @@ -package forge; +package forge.card.spellability; import java.util.ArrayList; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.Constant; +import forge.Player; +import forge.PlayerZone; +import forge.card.cardFactory.CardFactoryUtil; import forge.gui.GuiUtils; +import forge.gui.input.Input; public class Target_Selection { private Target target = null; diff --git a/src/forge/Trigger.java b/src/forge/card/trigger/Trigger.java similarity index 90% rename from src/forge/Trigger.java rename to src/forge/card/trigger/Trigger.java index c157e20401f..d4ed640711f 100644 --- a/src/forge/Trigger.java +++ b/src/forge/card/trigger/Trigger.java @@ -1,8 +1,16 @@ -package forge; +package forge.card.trigger; import java.util.ArrayList; import java.util.HashMap; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.Player; +import forge.card.cardFactory.CardFactoryUtil; +import forge.card.spellability.SpellAbility; + public abstract class Trigger { protected String name; @@ -167,7 +175,7 @@ public abstract class Trigger { { return false; } - else if(mapParams.get("PlayersPoisoned").equals("Each") && !(hostCard.getController().poisonCounters != 0 && hostCard.getController().getPoisonCounters() != 0 )) + else if(mapParams.get("PlayersPoisoned").equals("Each") && !(hostCard.getController().getPoisonCounters() != 0 && hostCard.getController().getPoisonCounters() != 0 )) { return false; } @@ -222,7 +230,7 @@ public abstract class Trigger { return true; } - protected boolean matchesValid(Object o,String[] valids,Card srcCard) + public boolean matchesValid(Object o,String[] valids,Card srcCard) { if(o instanceof Card) { diff --git a/src/forge/TriggerHandler.java b/src/forge/card/trigger/TriggerHandler.java similarity index 92% rename from src/forge/TriggerHandler.java rename to src/forge/card/trigger/TriggerHandler.java index 6d5121e9e8d..1ebc0593b86 100644 --- a/src/forge/TriggerHandler.java +++ b/src/forge/card/trigger/TriggerHandler.java @@ -1,8 +1,26 @@ -package forge; +package forge.card.trigger; import java.util.ArrayList; import java.util.HashMap; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.Card; +import forge.CardList; +import forge.Command; +import forge.CommandArgs; +import forge.ComputerUtil; +import forge.GameActionUtil; +import forge.Player; +import forge.card.abilityFactory.AbilityFactory; +import forge.card.spellability.Ability; +import forge.card.spellability.Ability_Sub; +import forge.card.spellability.Cost; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.SpellAbility_Restriction; +import forge.card.spellability.Target; +import forge.gui.input.Input; + public class TriggerHandler { private ArrayList registeredTriggers = new ArrayList(); @@ -750,7 +768,7 @@ public class TriggerHandler { } @Override - public void setPayCosts(Ability_Cost abCost) + public void setPayCosts(Cost abCost) { sa[0].setPayCosts(abCost); } diff --git a/src/forge/Trigger_AttackerBlocked.java b/src/forge/card/trigger/Trigger_AttackerBlocked.java similarity index 91% rename from src/forge/Trigger_AttackerBlocked.java rename to src/forge/card/trigger/Trigger_AttackerBlocked.java index 75bae9082f3..b1bfb6de20e 100644 --- a/src/forge/Trigger_AttackerBlocked.java +++ b/src/forge/card/trigger/Trigger_AttackerBlocked.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_AttackerBlocked extends Trigger { public Trigger_AttackerBlocked(HashMap params, Card host) { diff --git a/src/forge/Trigger_AttackerUnblocked.java b/src/forge/card/trigger/Trigger_AttackerUnblocked.java similarity index 90% rename from src/forge/Trigger_AttackerUnblocked.java rename to src/forge/card/trigger/Trigger_AttackerUnblocked.java index cb2e514da38..2c0c0e3923c 100644 --- a/src/forge/Trigger_AttackerUnblocked.java +++ b/src/forge/card/trigger/Trigger_AttackerUnblocked.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_AttackerUnblocked extends Trigger { public Trigger_AttackerUnblocked(HashMap params, Card host) { diff --git a/src/forge/Trigger_Attacks.java b/src/forge/card/trigger/Trigger_Attacks.java similarity index 89% rename from src/forge/Trigger_Attacks.java rename to src/forge/card/trigger/Trigger_Attacks.java index ea71ab99f0a..ae0d9f9ca07 100644 --- a/src/forge/Trigger_Attacks.java +++ b/src/forge/card/trigger/Trigger_Attacks.java @@ -1,7 +1,10 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; +import forge.CardList; + public class Trigger_Attacks extends Trigger { public Trigger_Attacks(HashMap params, Card host) { diff --git a/src/forge/Trigger_Blocks.java b/src/forge/card/trigger/Trigger_Blocks.java similarity index 91% rename from src/forge/Trigger_Blocks.java rename to src/forge/card/trigger/Trigger_Blocks.java index 4a33aa4c05d..c18848f2e73 100644 --- a/src/forge/Trigger_Blocks.java +++ b/src/forge/card/trigger/Trigger_Blocks.java @@ -1,6 +1,8 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_Blocks extends Trigger { diff --git a/src/forge/Trigger_ChangesZone.java b/src/forge/card/trigger/Trigger_ChangesZone.java similarity index 91% rename from src/forge/Trigger_ChangesZone.java rename to src/forge/card/trigger/Trigger_ChangesZone.java index 968ec127cf6..970b9953eec 100644 --- a/src/forge/Trigger_ChangesZone.java +++ b/src/forge/card/trigger/Trigger_ChangesZone.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_ChangesZone extends Trigger { public Trigger_ChangesZone(HashMap params, Card host) { diff --git a/src/forge/Trigger_CounterAdded.java b/src/forge/card/trigger/Trigger_CounterAdded.java similarity index 89% rename from src/forge/Trigger_CounterAdded.java rename to src/forge/card/trigger/Trigger_CounterAdded.java index a8deb141f4a..a5268c8c970 100644 --- a/src/forge/Trigger_CounterAdded.java +++ b/src/forge/card/trigger/Trigger_CounterAdded.java @@ -1,7 +1,10 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; +import forge.Counters; + public class Trigger_CounterAdded extends Trigger { public Trigger_CounterAdded(HashMap params, Card host) { diff --git a/src/forge/Trigger_Cycled.java b/src/forge/card/trigger/Trigger_Cycled.java similarity index 89% rename from src/forge/Trigger_Cycled.java rename to src/forge/card/trigger/Trigger_Cycled.java index 47f120ba752..3bb8f7a1179 100644 --- a/src/forge/Trigger_Cycled.java +++ b/src/forge/card/trigger/Trigger_Cycled.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_Cycled extends Trigger { public Trigger_Cycled(HashMap params, Card host) { diff --git a/src/forge/Trigger_DamageDone.java b/src/forge/card/trigger/Trigger_DamageDone.java similarity index 92% rename from src/forge/Trigger_DamageDone.java rename to src/forge/card/trigger/Trigger_DamageDone.java index 01613ae9716..625e468da18 100644 --- a/src/forge/Trigger_DamageDone.java +++ b/src/forge/card/trigger/Trigger_DamageDone.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_DamageDone extends Trigger { public Trigger_DamageDone(HashMap params, Card host) { diff --git a/src/forge/Trigger_Discarded.java b/src/forge/card/trigger/Trigger_Discarded.java similarity index 91% rename from src/forge/Trigger_Discarded.java rename to src/forge/card/trigger/Trigger_Discarded.java index 88d74d67fe6..646611c14fb 100644 --- a/src/forge/Trigger_Discarded.java +++ b/src/forge/card/trigger/Trigger_Discarded.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_Discarded extends Trigger { public Trigger_Discarded(HashMap params, Card host) { diff --git a/src/forge/Trigger_Drawn.java b/src/forge/card/trigger/Trigger_Drawn.java similarity index 90% rename from src/forge/Trigger_Drawn.java rename to src/forge/card/trigger/Trigger_Drawn.java index 0a3bfd1dfed..c6ebfbd55b0 100644 --- a/src/forge/Trigger_Drawn.java +++ b/src/forge/card/trigger/Trigger_Drawn.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_Drawn extends Trigger { public Trigger_Drawn(HashMap params, Card host) { diff --git a/src/forge/Trigger_LandPlayed.java b/src/forge/card/trigger/Trigger_LandPlayed.java similarity index 90% rename from src/forge/Trigger_LandPlayed.java rename to src/forge/card/trigger/Trigger_LandPlayed.java index 476a6ef54ec..a86370dda70 100644 --- a/src/forge/Trigger_LandPlayed.java +++ b/src/forge/card/trigger/Trigger_LandPlayed.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_LandPlayed extends Trigger { public Trigger_LandPlayed(String n, HashMap params, Card host) { diff --git a/src/forge/Trigger_LifeGained.java b/src/forge/card/trigger/Trigger_LifeGained.java similarity index 90% rename from src/forge/Trigger_LifeGained.java rename to src/forge/card/trigger/Trigger_LifeGained.java index 7878613340f..ed02b70b669 100644 --- a/src/forge/Trigger_LifeGained.java +++ b/src/forge/card/trigger/Trigger_LifeGained.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_LifeGained extends Trigger { public Trigger_LifeGained(HashMap params, Card host) { diff --git a/src/forge/Trigger_LifeLost.java b/src/forge/card/trigger/Trigger_LifeLost.java similarity index 90% rename from src/forge/Trigger_LifeLost.java rename to src/forge/card/trigger/Trigger_LifeLost.java index b7f6de64718..9138986b9ce 100644 --- a/src/forge/Trigger_LifeLost.java +++ b/src/forge/card/trigger/Trigger_LifeLost.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_LifeLost extends Trigger { public Trigger_LifeLost(HashMap params, Card host) { diff --git a/src/forge/Trigger_Phase.java b/src/forge/card/trigger/Trigger_Phase.java similarity index 90% rename from src/forge/Trigger_Phase.java rename to src/forge/card/trigger/Trigger_Phase.java index e726adec4ac..edb02bd2d36 100644 --- a/src/forge/Trigger_Phase.java +++ b/src/forge/card/trigger/Trigger_Phase.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_Phase extends Trigger { public Trigger_Phase(HashMap params, Card host) { diff --git a/src/forge/Trigger_Sacrificed.java b/src/forge/card/trigger/Trigger_Sacrificed.java similarity index 91% rename from src/forge/Trigger_Sacrificed.java rename to src/forge/card/trigger/Trigger_Sacrificed.java index b4230ac2f60..cd8436715f6 100644 --- a/src/forge/Trigger_Sacrificed.java +++ b/src/forge/card/trigger/Trigger_Sacrificed.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_Sacrificed extends Trigger { public Trigger_Sacrificed(HashMap params, Card host) { diff --git a/src/forge/Trigger_Shuffled.java b/src/forge/card/trigger/Trigger_Shuffled.java similarity index 90% rename from src/forge/Trigger_Shuffled.java rename to src/forge/card/trigger/Trigger_Shuffled.java index 722a832b75e..9b40b47aa74 100644 --- a/src/forge/Trigger_Shuffled.java +++ b/src/forge/card/trigger/Trigger_Shuffled.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_Shuffled extends Trigger{ public Trigger_Shuffled(HashMap params, Card host) { diff --git a/src/forge/Trigger_SpellAbilityCast.java b/src/forge/card/trigger/Trigger_SpellAbilityCast.java similarity index 92% rename from src/forge/Trigger_SpellAbilityCast.java rename to src/forge/card/trigger/Trigger_SpellAbilityCast.java index d9cca2d7f5c..1d7dc466ab3 100644 --- a/src/forge/Trigger_SpellAbilityCast.java +++ b/src/forge/card/trigger/Trigger_SpellAbilityCast.java @@ -1,7 +1,11 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; +import forge.Player; +import forge.card.spellability.SpellAbility; + public class Trigger_SpellAbilityCast extends Trigger { public Trigger_SpellAbilityCast(HashMap params, Card host) { diff --git a/src/forge/Trigger_Taps.java b/src/forge/card/trigger/Trigger_Taps.java similarity index 89% rename from src/forge/Trigger_Taps.java rename to src/forge/card/trigger/Trigger_Taps.java index c161687b564..d6f4bdeb226 100644 --- a/src/forge/Trigger_Taps.java +++ b/src/forge/card/trigger/Trigger_Taps.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_Taps extends Trigger { public Trigger_Taps(HashMap params, Card host) { diff --git a/src/forge/Trigger_TurnFaceUp.java b/src/forge/card/trigger/Trigger_TurnFaceUp.java similarity index 89% rename from src/forge/Trigger_TurnFaceUp.java rename to src/forge/card/trigger/Trigger_TurnFaceUp.java index 6881f6c504b..299be657e01 100644 --- a/src/forge/Trigger_TurnFaceUp.java +++ b/src/forge/card/trigger/Trigger_TurnFaceUp.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_TurnFaceUp extends Trigger { public Trigger_TurnFaceUp(HashMap params, Card host) { diff --git a/src/forge/Trigger_Unequip.java b/src/forge/card/trigger/Trigger_Unequip.java similarity index 92% rename from src/forge/Trigger_Unequip.java rename to src/forge/card/trigger/Trigger_Unequip.java index 1bb04ae18ac..22c686d9a6a 100644 --- a/src/forge/Trigger_Unequip.java +++ b/src/forge/card/trigger/Trigger_Unequip.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_Unequip extends Trigger { public Trigger_Unequip(HashMap params, Card host) { diff --git a/src/forge/Trigger_Untaps.java b/src/forge/card/trigger/Trigger_Untaps.java similarity index 89% rename from src/forge/Trigger_Untaps.java rename to src/forge/card/trigger/Trigger_Untaps.java index 9a3199bc90c..aedf45ad995 100644 --- a/src/forge/Trigger_Untaps.java +++ b/src/forge/card/trigger/Trigger_Untaps.java @@ -1,7 +1,9 @@ -package forge; +package forge.card.trigger; import java.util.HashMap; +import forge.Card; + public class Trigger_Untaps extends Trigger { public Trigger_Untaps(HashMap params, Card host) { diff --git a/src/forge/Generate2ColorDeck.java b/src/forge/deck/generate/Generate2ColorDeck.java similarity index 95% rename from src/forge/Generate2ColorDeck.java rename to src/forge/deck/generate/Generate2ColorDeck.java index 5b7bbd8a959..e8ca8281704 100644 --- a/src/forge/Generate2ColorDeck.java +++ b/src/forge/deck/generate/Generate2ColorDeck.java @@ -1,10 +1,14 @@ -package forge; +package forge.deck.generate; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Random; +import forge.AllZone; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; import forge.error.ErrorViewer; import forge.properties.ForgeProps; diff --git a/src/forge/Generate3ColorDeck.java b/src/forge/deck/generate/Generate3ColorDeck.java similarity index 95% rename from src/forge/Generate3ColorDeck.java rename to src/forge/deck/generate/Generate3ColorDeck.java index f28b6a6c70d..5dfc85b107f 100644 --- a/src/forge/Generate3ColorDeck.java +++ b/src/forge/deck/generate/Generate3ColorDeck.java @@ -1,10 +1,14 @@ -package forge; +package forge.deck.generate; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Random; +import forge.AllZone; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; import forge.error.ErrorViewer; import forge.properties.ForgeProps; diff --git a/src/forge/GenerateConstructedDeck.java b/src/forge/deck/generate/GenerateConstructedDeck.java similarity index 91% rename from src/forge/GenerateConstructedDeck.java rename to src/forge/deck/generate/GenerateConstructedDeck.java index 4dedc0097d4..7624ffebf7b 100644 --- a/src/forge/GenerateConstructedDeck.java +++ b/src/forge/deck/generate/GenerateConstructedDeck.java @@ -1,8 +1,17 @@ -package forge; +package forge.deck.generate; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import forge.AllZone; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.CardListUtil; +import forge.CardUtil; +import forge.Constant; +import forge.Gui_NewGame; + public class GenerateConstructedDeck { private String color1; diff --git a/src/forge/GenerateConstructedMultiColorDeck.java b/src/forge/deck/generate/GenerateConstructedMultiColorDeck.java similarity index 95% rename from src/forge/GenerateConstructedMultiColorDeck.java rename to src/forge/deck/generate/GenerateConstructedMultiColorDeck.java index 62612290047..487018bf25f 100644 --- a/src/forge/GenerateConstructedMultiColorDeck.java +++ b/src/forge/deck/generate/GenerateConstructedMultiColorDeck.java @@ -1,8 +1,17 @@ -package forge; +package forge.deck.generate; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import forge.AllZone; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.CardListUtil; +import forge.CardUtil; +import forge.Constant; +import forge.Gui_NewGame; + public class GenerateConstructedMultiColorDeck { private String color1; diff --git a/src/forge/GenerateDraftDeck.java b/src/forge/deck/generate/GenerateDraftDeck.java similarity index 95% rename from src/forge/GenerateDraftDeck.java rename to src/forge/deck/generate/GenerateDraftDeck.java index 06531eb7cd0..fb235fc3f1b 100644 --- a/src/forge/GenerateDraftDeck.java +++ b/src/forge/deck/generate/GenerateDraftDeck.java @@ -1,8 +1,18 @@ -package forge; +package forge.deck.generate; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import forge.AllZone; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.CardListUtil; +import forge.CardUtil; +import forge.Constant; +import forge.Deck; +import forge.ReadBoosterPack; + public class GenerateDraftDeck { private static Map map = new HashMap(); diff --git a/src/forge/GenerateSealedDeck.java b/src/forge/deck/generate/GenerateSealedDeck.java similarity index 94% rename from src/forge/GenerateSealedDeck.java rename to src/forge/deck/generate/GenerateSealedDeck.java index 78e0848c577..caf948c6d18 100644 --- a/src/forge/GenerateSealedDeck.java +++ b/src/forge/deck/generate/GenerateSealedDeck.java @@ -1,8 +1,18 @@ -package forge; +package forge.deck.generate; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import forge.AllZone; +import forge.Card; +import forge.CardList; +import forge.CardListFilter; +import forge.CardListUtil; +import forge.CardUtil; +import forge.Constant; +import forge.Gui_NewGame; +import forge.ReadBoosterPack; + public class GenerateSealedDeck { private String color1; diff --git a/src/forge/GenerateThemeDeck.java b/src/forge/deck/generate/GenerateThemeDeck.java similarity index 95% rename from src/forge/GenerateThemeDeck.java rename to src/forge/deck/generate/GenerateThemeDeck.java index d272637fea5..9a0df9203d5 100644 --- a/src/forge/GenerateThemeDeck.java +++ b/src/forge/deck/generate/GenerateThemeDeck.java @@ -1,4 +1,4 @@ -package forge; +package forge.deck.generate; import java.io.BufferedReader; import java.io.File; @@ -9,6 +9,9 @@ import java.util.HashMap; import java.util.Map; import java.util.Random; +import forge.AllZone; +import forge.Card; +import forge.CardList; import forge.error.ErrorViewer; public class GenerateThemeDeck diff --git a/src/forge/Input.java b/src/forge/gui/input/Input.java similarity index 91% rename from src/forge/Input.java rename to src/forge/gui/input/Input.java index 720555b4274..5dd99867666 100644 --- a/src/forge/Input.java +++ b/src/forge/gui/input/Input.java @@ -1,5 +1,12 @@ -package forge; +package forge.gui.input; + +import forge.AllZone; +import forge.Card; +import forge.GameActionUtil; +import forge.Player; +import forge.PlayerZone; +import forge.card.spellability.Ability_Mana; public abstract class Input implements java.io.Serializable { diff --git a/src/forge/InputControl.java b/src/forge/gui/input/InputControl.java similarity index 95% rename from src/forge/InputControl.java rename to src/forge/gui/input/InputControl.java index e07321f300b..4ad71f490eb 100644 --- a/src/forge/InputControl.java +++ b/src/forge/gui/input/InputControl.java @@ -1,8 +1,14 @@ -package forge; +package forge.gui.input; import java.util.LinkedList; import java.util.Stack; +import forge.AllZone; +import forge.Constant; +import forge.MyObservable; +import forge.Phase; +import forge.Player; + public class InputControl extends MyObservable implements java.io.Serializable { private static final long serialVersionUID = 3955194449319994301L; @@ -86,7 +92,7 @@ public class InputControl extends MyObservable implements java.io.Serializable { return input; } - if (Phase.GameBegins != 0 && AllZone.Phase.doPhaseEffects()){ + if (Phase.getGameBegins() != 0 && AllZone.Phase.doPhaseEffects()){ // Handle begin phase stuff, then start back from the top AllZone.Phase.handleBeginPhase(); return updateInput(); diff --git a/src/forge/Input_Attack.java b/src/forge/gui/input/Input_Attack.java similarity index 91% rename from src/forge/Input_Attack.java rename to src/forge/gui/input/Input_Attack.java index 683bcc9e215..41ea111f0b5 100644 --- a/src/forge/Input_Attack.java +++ b/src/forge/gui/input/Input_Attack.java @@ -1,5 +1,16 @@ -package forge; +package forge.gui.input; + +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.CombatUtil; +import forge.Command; +import forge.Constant; +import forge.GameActionUtil; +import forge.PlayerZone; public class Input_Attack extends Input { diff --git a/src/forge/Input_Block.java b/src/forge/gui/input/Input_Block.java similarity index 90% rename from src/forge/Input_Block.java rename to src/forge/gui/input/Input_Block.java index 67429bde0ac..04f8b556e40 100644 --- a/src/forge/Input_Block.java +++ b/src/forge/gui/input/Input_Block.java @@ -1,9 +1,21 @@ -package forge; +package forge.gui.input; import java.util.ArrayList; +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.CardUtil; +import forge.CombatUtil; +import forge.Command; +import forge.Constant; +import forge.GameActionUtil; +import forge.PlayerZone; + public class Input_Block extends Input { private static final long serialVersionUID = 6120743598368928128L; diff --git a/src/forge/Input_Cleanup.java b/src/forge/gui/input/Input_Cleanup.java similarity index 91% rename from src/forge/Input_Cleanup.java rename to src/forge/gui/input/Input_Cleanup.java index f7f15d563e8..256e065a200 100644 --- a/src/forge/Input_Cleanup.java +++ b/src/forge/gui/input/Input_Cleanup.java @@ -1,5 +1,12 @@ -package forge; +package forge.gui.input; + +import forge.AllZone; +import forge.ButtonUtil; +import forge.Card; +import forge.CombatUtil; +import forge.Constant; +import forge.PlayerZone; public class Input_Cleanup extends Input { private static final long serialVersionUID = -4164275418971547948L; diff --git a/src/forge/Input_Mulligan.java b/src/forge/gui/input/Input_Mulligan.java similarity index 84% rename from src/forge/Input_Mulligan.java rename to src/forge/gui/input/Input_Mulligan.java index 2f98d25a94f..d8d708bf565 100644 --- a/src/forge/Input_Mulligan.java +++ b/src/forge/gui/input/Input_Mulligan.java @@ -1,5 +1,14 @@ -package forge; +package forge.gui.input; + +import forge.AllZone; +import forge.AllZoneUtil; +import forge.ButtonUtil; +import forge.Card; +import forge.CardList; +import forge.Constant; +import forge.GameActionUtil; +import forge.Phase; public class Input_Mulligan extends Input { private static final long serialVersionUID = -8112954303001155622L; @@ -86,13 +95,13 @@ public class Input_Mulligan extends Input { } } - if(AllZone.GameAction.Start_Cut && !(HHandList.contains(AllZone.GameAction.HumanCut) - || CHandList.contains(AllZone.GameAction.ComputerCut))) { - AllZone.GameAction.moveTo(AllZone.getZone(Constant.Zone.Library, AllZone.HumanPlayer),AllZone.GameAction.HumanCut); - AllZone.GameAction.moveTo(AllZone.getZone(Constant.Zone.Library, AllZone.ComputerPlayer),AllZone.GameAction.ComputerCut); + if(AllZone.GameAction.isStartCut() && !(HHandList.contains(AllZone.GameAction.getHumanCut()) + || CHandList.contains(AllZone.GameAction.getComputerCut()))) { + AllZone.GameAction.moveTo(AllZone.getZone(Constant.Zone.Library, AllZone.HumanPlayer),AllZone.GameAction.getHumanCut()); + AllZone.GameAction.moveTo(AllZone.getZone(Constant.Zone.Library, AllZone.ComputerPlayer),AllZone.GameAction.getComputerCut()); } AllZone.GameAction.checkStateEffects(); - Phase.GameBegins = 1; + Phase.setGameBegins(1); AllZone.Phase.setNeedToNextPhase(false); stop(); } diff --git a/src/forge/Input_PassPriority.java b/src/forge/gui/input/Input_PassPriority.java similarity index 87% rename from src/forge/Input_PassPriority.java rename to src/forge/gui/input/Input_PassPriority.java index a3d8666f602..8934c2414c0 100644 --- a/src/forge/Input_PassPriority.java +++ b/src/forge/gui/input/Input_PassPriority.java @@ -1,4 +1,11 @@ -package forge; +package forge.gui.input; + +import forge.AllZone; +import forge.ButtonUtil; +import forge.Card; +import forge.GuiDisplayUtil; +import forge.Player; +import forge.PlayerZone; public class Input_PassPriority extends Input implements java.io.Serializable { private static final long serialVersionUID = -581477682214137181L; diff --git a/src/forge/Input_PayManaCost.java b/src/forge/gui/input/Input_PayManaCost.java similarity index 93% rename from src/forge/Input_PayManaCost.java rename to src/forge/gui/input/Input_PayManaCost.java index 7f5ce08f9cf..954e301ef9f 100644 --- a/src/forge/Input_PayManaCost.java +++ b/src/forge/gui/input/Input_PayManaCost.java @@ -1,5 +1,13 @@ -package forge; +package forge.gui.input; + +import forge.AllZone; +import forge.ButtonUtil; +import forge.Card; +import forge.Phase; +import forge.PlayerZone; +import forge.card.mana.ManaCost; +import forge.card.spellability.SpellAbility; //pays the cost of a card played from the player's hand //the card is removed from the players hand if the cost is paid @@ -24,7 +32,7 @@ public class Input_PayManaCost extends Input { spell = sa; - if(Phase.GameBegins == 1) { + if(Phase.getGameBegins() == 1) { if(sa.getSourceCard().isCopiedSpell() && sa.isSpell()) { if(spell.getAfterPayMana() != null) stopSetNext(spell.getAfterPayMana()); else { @@ -47,7 +55,7 @@ public class Input_PayManaCost extends Input { spell = sa; - if(Phase.GameBegins == 1) { + if(Phase.getGameBegins() == 1) { if(sa.getSourceCard().isCopiedSpell() && sa.isSpell()) { if(spell.getAfterPayMana() != null) stopSetNext(spell.getAfterPayMana()); else { diff --git a/src/forge/Input_PayManaCostUtil.java b/src/forge/gui/input/Input_PayManaCostUtil.java similarity index 94% rename from src/forge/Input_PayManaCostUtil.java rename to src/forge/gui/input/Input_PayManaCostUtil.java index 07b4267f16c..6365c870345 100644 --- a/src/forge/Input_PayManaCostUtil.java +++ b/src/forge/gui/input/Input_PayManaCostUtil.java @@ -1,9 +1,16 @@ -package forge; +package forge.gui.input; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import forge.AllZone; +import forge.Card; +import forge.Constant; +import forge.card.mana.ManaCost; +import forge.card.mana.ManaPool; +import forge.card.spellability.Ability_Mana; +import forge.card.spellability.SpellAbility; import forge.gui.GuiUtils; public class Input_PayManaCostUtil diff --git a/src/forge/Input_PayManaCost_Ability.java b/src/forge/gui/input/Input_PayManaCost_Ability.java similarity index 92% rename from src/forge/Input_PayManaCost_Ability.java rename to src/forge/gui/input/Input_PayManaCost_Ability.java index 2514b4ad205..3d35df4f396 100644 --- a/src/forge/Input_PayManaCost_Ability.java +++ b/src/forge/gui/input/Input_PayManaCost_Ability.java @@ -1,5 +1,13 @@ -package forge; +package forge.gui.input; + +import forge.AllZone; +import forge.ButtonUtil; +import forge.Card; +import forge.Command; +import forge.PlayerZone; +import forge.card.mana.ManaCost; +import forge.card.spellability.SpellAbility; //if cost is paid, Command.execute() is called public class Input_PayManaCost_Ability extends Input { diff --git a/src/forge/quest/data/pet/QuestPetPlant.java b/src/forge/quest/data/pet/QuestPetPlant.java index 10471871471..f0013714d29 100644 --- a/src/forge/quest/data/pet/QuestPetPlant.java +++ b/src/forge/quest/data/pet/QuestPetPlant.java @@ -1,6 +1,9 @@ package forge.quest.data.pet; import forge.*; +import forge.card.spellability.Ability_Activated; +import forge.card.spellability.Cost; +import forge.card.spellability.SpellAbility; import forge.quest.data.bazaar.QuestStallManager; public class QuestPetPlant extends QuestPetAbstract { @@ -56,7 +59,7 @@ public class QuestPetPlant extends QuestPetAbstract { petCard.addIntrinsicKeyword("Deathtouch"); - Ability_Cost abCost = new Ability_Cost("T", petCard.getName(), true); + Cost abCost = new Cost("T", petCard.getName(), true); final SpellAbility ability = new Ability_Activated(petCard, abCost, null){ private static final long serialVersionUID = 7546242087593613719L;