Modes are now sorted in the order they are added in the card. For rules text and when a player chooses a mode.

This commit is contained in:
LevelX2 2012-10-07 02:41:58 +02:00
parent 7de8b2860f
commit 76233a4252
2 changed files with 11 additions and 7 deletions

View file

@ -717,7 +717,7 @@ public class HumanPlayer extends PlayerImpl<HumanPlayer> {
updateGameStatePriority("chooseMode", game); updateGameStatePriority("chooseMode", game);
if (modes.size() > 1) { if (modes.size() > 1) {
MageObject obj = game.getObject(source.getSourceId()); MageObject obj = game.getObject(source.getSourceId());
Map<UUID, String> modeMap = new HashMap<UUID, String>(); Map<UUID, String> modeMap = new LinkedHashMap<UUID, String>();
for (Mode mode: modes.values()) { for (Mode mode: modes.values()) {
String modeText = mode.getEffects().getText(mode); String modeText = mode.getEffects().getText(mode);
if (obj != null) if (obj != null)

View file

@ -27,7 +27,7 @@
*/ */
package mage.abilities; package mage.abilities;
import java.util.HashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
import mage.game.Game; import mage.game.Game;
@ -37,7 +37,7 @@ import mage.players.Player;
* *
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
*/ */
public class Modes extends HashMap<UUID, Mode> { public class Modes extends LinkedHashMap<UUID, Mode> {
private UUID modeId; private UUID modeId;
@ -63,9 +63,10 @@ public class Modes extends HashMap<UUID, Mode> {
} }
public void setMode(Mode mode) { public void setMode(Mode mode) {
if (this.containsKey(mode.getId())) if (this.containsKey(mode.getId())) {
this.modeId = mode.getId(); this.modeId = mode.getId();
} }
}
public void addMode(Mode mode) { public void addMode(Mode mode) {
this.put(mode.getId(), mode); this.put(mode.getId(), mode);
@ -75,8 +76,9 @@ public class Modes extends HashMap<UUID, Mode> {
if (this.size() > 1) { if (this.size() > 1) {
Player player = game.getPlayer(source.getControllerId()); Player player = game.getPlayer(source.getControllerId());
Mode choice = player.chooseMode(this, source, game); Mode choice = player.chooseMode(this, source, game);
if (choice == null) if (choice == null) {
return false; return false;
}
setMode(choice); setMode(choice);
return true; return true;
} }
@ -86,8 +88,9 @@ public class Modes extends HashMap<UUID, Mode> {
public String getText() { public String getText() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
if (this.size() > 1) if (this.size() > 1) {
sb.append("Choose one - "); sb.append("Choose one - ");
}
for (Mode mode: this.values()) { for (Mode mode: this.values()) {
sb.append(mode.getEffects().getText(mode)).append("; or "); sb.append(mode.getEffects().getText(mode)).append("; or ");
} }
@ -97,8 +100,9 @@ public class Modes extends HashMap<UUID, Mode> {
public String getText(String sourceName) { public String getText(String sourceName) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
if (this.size() > 1) if (this.size() > 1) {
sb.append("Choose one - "); sb.append("Choose one - ");
}
for (Mode mode: this.values()) { for (Mode mode: this.values()) {
sb.append(mode.getEffects().getText(mode)).append("; or "); sb.append(mode.getEffects().getText(mode)).append("; or ");
} }