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

View File

@@ -32,6 +32,7 @@ import forge.card.mana.ManaCostShard;
import forge.game.Game; import forge.game.Game;
import forge.game.GameEntity; import forge.game.GameEntity;
import forge.game.GameLogEntryType; import forge.game.GameLogEntryType;
import forge.game.GameView;
import forge.game.ability.AbilityFactory; import forge.game.ability.AbilityFactory;
import forge.game.ability.AbilityUtils; import forge.game.ability.AbilityUtils;
import forge.game.ability.ApiType; import forge.game.ability.ApiType;
@@ -42,6 +43,7 @@ import forge.game.cost.CostPayment;
import forge.game.event.GameEventCardStatsChanged; import forge.game.event.GameEventCardStatsChanged;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerView;
import forge.game.replacement.ReplacementEffect; import forge.game.replacement.ReplacementEffect;
import forge.game.replacement.ReplacementHandler; import forge.game.replacement.ReplacementHandler;
import forge.game.replacement.ReplacementLayer; import forge.game.replacement.ReplacementLayer;
@@ -1984,7 +1986,6 @@ public class CardFactoryUtil {
} }
public static void correctAbilityChainSourceCard(final SpellAbility sa, final Card card) { public static void correctAbilityChainSourceCard(final SpellAbility sa, final Card card) {
sa.setHostCard(card); sa.setHostCard(card);
if (sa.getSubAbility() != null) { 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"); 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(); StringBuilder sb = new StringBuilder();
for (Player p : originPlayer.getGame().getPlayers()) { for (PlayerView p : GameView.getCurrentGame().getPlayers()) {
final String text; final String text;
if (p.equals(originPlayer)) { if (p.equals(originPlayer)) {
text = "Commander Damage from own Commander: "; text = "Commander Damage from own Commander: ";

View File

@@ -521,7 +521,7 @@ public class CardView extends GameEntityView {
} }
if (isCommander()) { if (isCommander()) {
sb.append(getOwner()).append("'s Commander\r\n"); 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()); sb.append(state.getAbilityText());

View File

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

View File

@@ -28,6 +28,7 @@ import javax.swing.ScrollPaneConstants;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import forge.game.card.CardFactoryUtil;
import forge.game.card.CardView; import forge.game.card.CardView;
import forge.game.player.PlayerView; import forge.game.player.PlayerView;
import forge.gui.framework.DragCell; import forge.gui.framework.DragCell;
@@ -179,7 +180,7 @@ public enum VPlayers implements IVDoc<CPlayers> {
temp[6].setText(sb.toString()); temp[6].setText(sb.toString());
} }
if (isCommander) { if (isCommander) {
temp[7].setText(p0.getCommanderInfo()); temp[7].setText(CardFactoryUtil.getCommanderInfo(p0));
} }
} }
} }

View File

@@ -5,6 +5,7 @@ import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
import forge.Graphics; import forge.Graphics;
import forge.assets.FImage; import forge.assets.FImage;
import forge.assets.FSkinFont; import forge.assets.FSkinFont;
import forge.game.card.CardFactoryUtil;
import forge.game.card.CardView; import forge.game.card.CardView;
import forge.game.player.PlayerView; import forge.game.player.PlayerView;
import forge.match.MatchUtil; import forge.match.MatchUtil;
@@ -89,7 +90,7 @@ public class VPlayers extends FDropDown {
} }
} }
if (MatchUtil.getGameView().isCommander()) { if (MatchUtil.getGameView().isCommander()) {
builder.append(" | " + player.getCommanderInfo()); builder.append(" | " + CardFactoryUtil.getCommanderInfo(player));
} }
g.drawText(builder.toString(), FONT, FList.FORE_COLOR, x, y, getWidth() - PADDING - x, h, true, HAlignment.LEFT, true); g.drawText(builder.toString(), FONT, FList.FORE_COLOR, x, y, getWidth() - PADDING - x, h, true, HAlignment.LEFT, true);