Fix crash when getting commander info

This commit is contained in:
drdev
2014-10-21 02:17:44 +00:00
parent c586c523e7
commit c3d9ff5fe2
6 changed files with 25 additions and 14 deletions

View File

@@ -22,6 +22,12 @@ import forge.trackable.TrackableProperty;
import forge.util.FCollectionView;
public class GameView extends TrackableObject {
private static GameView currentGame;
public static GameView getCurrentGame() {
return currentGame;
}
/*private final TrackableIndex<CardView> cards = new TrackableIndex<CardView>();
private final TrackableIndex<PlayerView> players = new TrackableIndex<PlayerView>();
private final TrackableIndex<SpellAbilityView> spellAbilities = new TrackableIndex<SpellAbilityView>();
@@ -32,6 +38,7 @@ public class GameView extends TrackableObject {
public GameView(Game game0) {
super(-1); //ID not needed
currentGame = this;
game = game0;
set(TrackableProperty.WinningTeam, -1);
@@ -110,6 +117,9 @@ public class GameView extends TrackableObject {
set(TrackableProperty.GameOver, game.isGameOver());
set(TrackableProperty.MatchOver, game.getMatch().isMatchOver());
set(TrackableProperty.WinningTeam, game.getOutcome() == null ? -1 : game.getOutcome().getWinningTeam());
if (game.isGameOver()) {
currentGame = null;
}
}
public GameLog getGameLog() {

View File

@@ -32,6 +32,7 @@ import forge.card.mana.ManaCostShard;
import forge.game.Game;
import forge.game.GameEntity;
import forge.game.GameLogEntryType;
import forge.game.GameView;
import forge.game.ability.AbilityFactory;
import forge.game.ability.AbilityUtils;
import forge.game.ability.ApiType;
@@ -42,6 +43,7 @@ import forge.game.cost.CostPayment;
import forge.game.event.GameEventCardStatsChanged;
import forge.game.phase.PhaseHandler;
import forge.game.player.Player;
import forge.game.player.PlayerView;
import forge.game.replacement.ReplacementEffect;
import forge.game.replacement.ReplacementHandler;
import forge.game.replacement.ReplacementLayer;
@@ -1984,7 +1986,6 @@ public class CardFactoryUtil {
}
public static void correctAbilityChainSourceCard(final SpellAbility sa, final Card card) {
sa.setHostCard(card);
if (sa.getSubAbility() != null) {
@@ -2027,9 +2028,10 @@ public class CardFactoryUtil {
cmd.addStaticAbility("Mode$ RaiseCost | Amount$ CommanderCostRaise | Type$ Spell | ValidCard$ Card.Self+wasCastFromCommand | EffectZone$ All | AffectedZone$ Stack");
}
*/
public static final String getCommanderInfo(final Player originPlayer) {
public static final String getCommanderInfo(final PlayerView originPlayer) {
StringBuilder sb = new StringBuilder();
for (Player p : originPlayer.getGame().getPlayers()) {
for (PlayerView p : GameView.getCurrentGame().getPlayers()) {
final String text;
if (p.equals(originPlayer)) {
text = "Commander Damage from own Commander: ";

View File

@@ -521,7 +521,7 @@ public class CardView extends GameEntityView {
}
if (isCommander()) {
sb.append(getOwner()).append("'s Commander\r\n");
sb.append(CardFactoryUtil.getCommanderInfo(Player.get(getOwner()))).append("\r\n");
sb.append(CardFactoryUtil.getCommanderInfo(getOwner())).append("\r\n");
}
sb.append(state.getAbilityText());

View File

@@ -4,8 +4,6 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.commons.lang3.NotImplementedException;
import com.google.common.collect.Maps;
import forge.LobbyPlayer;
@@ -118,8 +116,11 @@ public class PlayerView extends GameEntityView {
set(TrackableProperty.Commander, PlayerView.get(p.getCommander()));
}
public Map<Integer, Integer> getCommanderDamage() {
return get(TrackableProperty.CommanderDamage);
public int getCommanderDamage(CardView commander) {
Map<Integer, Integer> map = get(TrackableProperty.CommanderDamage);
if (map == null) { return 0; }
Integer damage = map.get(commander.getId());
return damage == null ? 0 : damage.intValue();
}
void updateCommanderDamage(Player p) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
@@ -129,10 +130,6 @@ public class PlayerView extends GameEntityView {
set(TrackableProperty.CommanderDamage, map);
}
public String getCommanderInfo() {
throw new NotImplementedException("Not implemented");
}
public PlayerView getMindSlaveMaster() {
return get(TrackableProperty.MindSlaveMaster);
}