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);
}

View File

@@ -28,6 +28,7 @@ import javax.swing.ScrollPaneConstants;
import com.google.common.collect.Lists;
import net.miginfocom.swing.MigLayout;
import forge.game.card.CardFactoryUtil;
import forge.game.card.CardView;
import forge.game.player.PlayerView;
import forge.gui.framework.DragCell;
@@ -179,7 +180,7 @@ public enum VPlayers implements IVDoc<CPlayers> {
temp[6].setText(sb.toString());
}
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.assets.FImage;
import forge.assets.FSkinFont;
import forge.game.card.CardFactoryUtil;
import forge.game.card.CardView;
import forge.game.player.PlayerView;
import forge.match.MatchUtil;
@@ -89,7 +90,7 @@ public class VPlayers extends FDropDown {
}
}
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);