- Fixed the Phasing icon not appearing immediately when the card phases in/out.

- Added support for an additional sound effect that is played when a card phases in/out (phasing.wav is played if available).
- Added the "CHEAT_WITH_MANA_ON_SHUFFLE" option to the stock AI profiles (not used yet, to be implemented soon).
- Organized the AI profile config files a little bit by sorting the options.
This commit is contained in:
Agetian
2013-12-29 06:13:42 +00:00
parent 40bfde20fa
commit 55aa4350b9
9 changed files with 100 additions and 49 deletions

1
.gitattributes vendored
View File

@@ -15275,6 +15275,7 @@ forge-gui/src/main/java/forge/gui/events/IUiEventVisitor.java -text
forge-gui/src/main/java/forge/gui/events/UiEvent.java -text forge-gui/src/main/java/forge/gui/events/UiEvent.java -text
forge-gui/src/main/java/forge/gui/events/UiEventAttackerDeclared.java -text forge-gui/src/main/java/forge/gui/events/UiEventAttackerDeclared.java -text
forge-gui/src/main/java/forge/gui/events/UiEventBlockerAssigned.java -text forge-gui/src/main/java/forge/gui/events/UiEventBlockerAssigned.java -text
forge-gui/src/main/java/forge/gui/events/UiEventCardPhased.java -text
forge-gui/src/main/java/forge/gui/framework/CEmptyDoc.java -text forge-gui/src/main/java/forge/gui/framework/CEmptyDoc.java -text
forge-gui/src/main/java/forge/gui/framework/DragCell.java -text forge-gui/src/main/java/forge/gui/framework/DragCell.java -text
forge-gui/src/main/java/forge/gui/framework/DragTab.java -text forge-gui/src/main/java/forge/gui/framework/DragTab.java -text

View File

@@ -1,5 +1,6 @@
DEFAULT_MAX_PLANAR_DIE_ROLLS_PER_TURN=1 DEFAULT_MAX_PLANAR_DIE_ROLLS_PER_TURN=1
DEFAULT_MIN_TURN_TO_ROLL_PLANAR_DIE=3 DEFAULT_MIN_TURN_TO_ROLL_PLANAR_DIE=3
DEFAULT_PLANAR_DIE_ROLL_CHANCE=50 DEFAULT_PLANAR_DIE_ROLL_CHANCE=50
MULLIGAN_THRESHOLD=5
PLANAR_DIE_ROLL_HESITATION_CHANCE=10 PLANAR_DIE_ROLL_HESITATION_CHANCE=10
MULLIGAN_THRESHOLD=5
CHEAT_WITH_MANA_ON_SHUFFLE=False

View File

@@ -1,5 +1,6 @@
DEFAULT_MAX_PLANAR_DIE_ROLLS_PER_TURN=1 DEFAULT_MAX_PLANAR_DIE_ROLLS_PER_TURN=1
DEFAULT_MIN_TURN_TO_ROLL_PLANAR_DIE=1 DEFAULT_MIN_TURN_TO_ROLL_PLANAR_DIE=1
DEFAULT_PLANAR_DIE_ROLL_CHANCE=100 DEFAULT_PLANAR_DIE_ROLL_CHANCE=100
MULLIGAN_THRESHOLD=2
PLANAR_DIE_ROLL_HESITATION_CHANCE=0 PLANAR_DIE_ROLL_HESITATION_CHANCE=0
MULLIGAN_THRESHOLD=2
CHEAT_WITH_MANA_ON_SHUFFLE=False

View File

@@ -86,6 +86,8 @@ import forge.game.trigger.TriggerType;
import forge.game.trigger.ZCTrigger; import forge.game.trigger.ZCTrigger;
import forge.game.zone.Zone; import forge.game.zone.Zone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.events.UiEventCardPhased;
import forge.gui.match.CMatchUI;
import forge.item.IPaperCard; import forge.item.IPaperCard;
import forge.item.PaperCard; import forge.item.PaperCard;
import forge.util.Expressions; import forge.util.Expressions;
@@ -4912,6 +4914,8 @@ public class Card extends GameEntity implements Comparable<Card> {
aura.phase(false); aura.phase(false);
} }
} }
CMatchUI.SINGLETON_INSTANCE.fireEvent(new UiEventCardPhased(this, this.isPhasedOut()));
} }
private boolean switchPhaseState() { private boolean switchPhaseState() {

View File

@@ -3,5 +3,5 @@ package forge.gui.events;
public interface IUiEventVisitor<T> { public interface IUiEventVisitor<T> {
T visit(UiEventBlockerAssigned event); T visit(UiEventBlockerAssigned event);
T visit(UiEventAttackerDeclared event); T visit(UiEventAttackerDeclared event);
T visit(UiEventCardPhased event);
} }

View File

@@ -0,0 +1,32 @@
package forge.gui.events;
import forge.game.card.Card;
/**
* TODO: Write javadoc for this type.
*
*/
public class UiEventCardPhased extends UiEvent {
public final Card phasingCard;
public final boolean phaseState;
public UiEventCardPhased(Card card, boolean state) {
phasingCard = card;
phaseState = state;
}
@Override
public <T> T visit(IUiEventVisitor<T> visitor) {
return visitor.visit(this);
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return phasingCard != null ? phasingCard.toString() : "(unknown)" + " changed its phased-out state to " + phaseState;
}
}

View File

@@ -49,6 +49,7 @@ import forge.gui.events.IUiEventVisitor;
import forge.gui.events.UiEvent; import forge.gui.events.UiEvent;
import forge.gui.events.UiEventAttackerDeclared; import forge.gui.events.UiEventAttackerDeclared;
import forge.gui.events.UiEventBlockerAssigned; import forge.gui.events.UiEventBlockerAssigned;
import forge.gui.events.UiEventCardPhased;
import forge.gui.framework.EDocID; import forge.gui.framework.EDocID;
import forge.gui.framework.FScreen; import forge.gui.framework.FScreen;
import forge.gui.framework.ICDoc; import forge.gui.framework.ICDoc;
@@ -420,6 +421,12 @@ public enum CMatchUI implements ICDoc, IMenuProvider {
return null; return null;
} }
@Override
public Void visit(UiEventCardPhased event) {
updateSingleCard(event.phasingCard);
return null;
}
@Subscribe @Subscribe
public void receiveEvent(UiEvent evt) { public void receiveEvent(UiEvent evt) {
evt.visit(this); evt.visit(this);

View File

@@ -28,6 +28,7 @@ import forge.game.zone.ZoneType;
import forge.gui.events.IUiEventVisitor; import forge.gui.events.IUiEventVisitor;
import forge.gui.events.UiEventAttackerDeclared; import forge.gui.events.UiEventAttackerDeclared;
import forge.gui.events.UiEventBlockerAssigned; import forge.gui.events.UiEventBlockerAssigned;
import forge.gui.events.UiEventCardPhased;
import forge.net.FServer; import forge.net.FServer;
import forge.util.maps.MapOfLists; import forge.util.maps.MapOfLists;
@@ -207,4 +208,8 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
public SoundEffectType visit(UiEventAttackerDeclared event) { public SoundEffectType visit(UiEventAttackerDeclared event) {
return null; return null;
} }
@Override
public SoundEffectType visit(UiEventCardPhased event) {
return SoundEffectType.Phasing;
}
} }

View File

@@ -59,6 +59,7 @@ public enum SoundEffectType {
LoseDuel("lose_duel.wav", false), LoseDuel("lose_duel.wav", false),
ManaBurn("mana_burn.wav", false), ManaBurn("mana_burn.wav", false),
OtherLand("other_land.wav", false), OtherLand("other_land.wav", false),
Phasing("phasing.wav", true),
Planeswalker("planeswalker.wav", false), Planeswalker("planeswalker.wav", false),
Poison("poison.wav", true), Poison("poison.wav", true),
RedLand("red_land.wav", false), RedLand("red_land.wav", false),
@@ -74,7 +75,6 @@ public enum SoundEffectType {
WhiteLand("white_land.wav", false), WhiteLand("white_land.wav", false),
WinDuel("win_duel.wav", false); WinDuel("win_duel.wav", false);
private final String resourceFileName; private final String resourceFileName;
private final boolean isSync; private final boolean isSync;