- Added Odds//Ends

This commit is contained in:
moomarc
2013-03-09 12:21:43 +00:00
parent d91545cfb3
commit 9046801f9e
4 changed files with 94 additions and 20 deletions

View File

@@ -4,6 +4,8 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.swing.JOptionPane;
import org.apache.commons.lang3.StringUtils;
import forge.Card;
@@ -24,10 +26,12 @@ import forge.game.GameActionUtil;
import forge.game.GameState;
import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCost;
import forge.game.event.FlipCoinEvent;
import forge.game.player.AIPlayer;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.util.Expressions;
import forge.util.MyRandom;
/**
* TODO: Write javadoc for this type.
@@ -1253,4 +1257,28 @@ public class AbilityUtils {
return CardFactoryUtil.xCount(c, s);
}
/**
* <p>
* flipACoin without call.
* </p>
*
* @param source
* a {@link forge.Card} object.
* @return a boolean.
*/
public static boolean flipCoin(final Card source) {
final boolean resultIsHeads = MyRandom.getRandom().nextBoolean();
Singletons.getModel().getGame().getEvents().post(new FlipCoinEvent());
final StringBuilder msgTitle = new StringBuilder();
msgTitle.append(source);
msgTitle.append(" Flip result:");
final StringBuilder result = new StringBuilder();
result.append("Flip comes up");
result.append(resultIsHeads ? " heads." : " tails.");
JOptionPane.showMessageDialog(null, result, msgTitle.toString(), JOptionPane.PLAIN_MESSAGE);
return resultIsHeads;
}
}

View File

@@ -37,7 +37,11 @@ public class FlipCoinEffect extends SpellAbilityEffect {
caller.add(player);
}
final boolean victory = GuiDialog.flipCoin(caller.get(0), sa.getSourceCard());
final boolean noCall = sa.hasParam("NoCall");
boolean victory = false;
if (!noCall) {
victory = GuiDialog.flipCoin(caller.get(0), sa.getSourceCard());
}
// Run triggers
// HashMap<String,Object> runParams = new HashMap<String,Object>();
@@ -46,30 +50,53 @@ public class FlipCoinEffect extends SpellAbilityEffect {
host.addRemembered(host);
}
if (victory) {
if (sa.getParam("RememberWinner") != null) {
host.addRemembered(host);
}
if (sa.hasParam("WinSubAbility")) {
final SpellAbility win = AbilityFactory.getAbility(host.getSVar(sa.getParam("WinSubAbility")), host);
win.setActivatingPlayer(player);
((AbilitySub) win).setParent(sa);
if (noCall) {
final boolean resultIsHeads = AbilityUtils.flipCoin(sa.getSourceCard());
AbilityUtils.resolve(win, false);
System.out.println("Flipped coin result:" + (resultIsHeads ? " Heads" : " Tails"));
if (resultIsHeads) {
if (sa.hasParam("HeadsSubAbility")) {
final SpellAbility heads = AbilityFactory.getAbility(host.getSVar(sa.getParam("HeadsSubAbility")), host);
heads.setActivatingPlayer(player);
((AbilitySub) heads).setParent(sa);
AbilityUtils.resolve(heads, false);
}
} else {
if (sa.hasParam("TailsSubAbility")) {
final SpellAbility tails = AbilityFactory.getAbility(host.getSVar(sa.getParam("TailsSubAbility")), host);
tails.setActivatingPlayer(player);
((AbilitySub) tails).setParent(sa);
AbilityUtils.resolve(tails, false);
}
}
// runParams.put("Won","True");
} else {
if (sa.getParam("RememberLoser") != null) {
host.addRemembered(host);
}
if (sa.hasParam("LoseSubAbility")) {
final SpellAbility lose = AbilityFactory.getAbility(host.getSVar(sa.getParam("LoseSubAbility")), host);
lose.setActivatingPlayer(player);
((AbilitySub) lose).setParent(sa);
if (victory) {
if (sa.getParam("RememberWinner") != null) {
host.addRemembered(host);
}
if (sa.hasParam("WinSubAbility")) {
final SpellAbility win = AbilityFactory.getAbility(host.getSVar(sa.getParam("WinSubAbility")), host);
win.setActivatingPlayer(player);
((AbilitySub) win).setParent(sa);
AbilityUtils.resolve(lose, false);
AbilityUtils.resolve(win, false);
}
// runParams.put("Won","True");
} else {
if (sa.getParam("RememberLoser") != null) {
host.addRemembered(host);
}
if (sa.hasParam("LoseSubAbility")) {
final SpellAbility lose = AbilityFactory.getAbility(host.getSVar(sa.getParam("LoseSubAbility")), host);
lose.setActivatingPlayer(player);
((AbilitySub) lose).setParent(sa);
AbilityUtils.resolve(lose, false);
}
// runParams.put("Won","False");
}
// runParams.put("Won","False");
}
// AllZone.getTriggerHandler().runTrigger("FlipsACoin",runParams);