diff --git a/forge-game/src/main/java/forge/game/GameView.java b/forge-game/src/main/java/forge/game/GameView.java index 76720442b77..bd60785ba66 100644 --- a/forge-game/src/main/java/forge/game/GameView.java +++ b/forge-game/src/main/java/forge/game/GameView.java @@ -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 cards = new TrackableIndex(); private final TrackableIndex players = new TrackableIndex(); private final TrackableIndex spellAbilities = new TrackableIndex(); @@ -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() { diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 2493f3fd037..7eabacd203b 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -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: "; diff --git a/forge-game/src/main/java/forge/game/card/CardView.java b/forge-game/src/main/java/forge/game/card/CardView.java index c3d0440e7aa..5567b7283dd 100644 --- a/forge-game/src/main/java/forge/game/card/CardView.java +++ b/forge-game/src/main/java/forge/game/card/CardView.java @@ -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()); diff --git a/forge-game/src/main/java/forge/game/player/PlayerView.java b/forge-game/src/main/java/forge/game/player/PlayerView.java index a002ba47da5..6ff22e17f19 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerView.java +++ b/forge-game/src/main/java/forge/game/player/PlayerView.java @@ -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 getCommanderDamage() { - return get(TrackableProperty.CommanderDamage); + public int getCommanderDamage(CardView commander) { + Map 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 map = new HashMap(); @@ -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); } diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/views/VPlayers.java b/forge-gui-desktop/src/main/java/forge/screens/match/views/VPlayers.java index bdd45684607..87c84850ea6 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/views/VPlayers.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/views/VPlayers.java @@ -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 { temp[6].setText(sb.toString()); } if (isCommander) { - temp[7].setText(p0.getCommanderInfo()); + temp[7].setText(CardFactoryUtil.getCommanderInfo(p0)); } } } diff --git a/forge-gui-mobile/src/forge/screens/match/views/VPlayers.java b/forge-gui-mobile/src/forge/screens/match/views/VPlayers.java index fbc79da72f3..6602a6df273 100644 --- a/forge-gui-mobile/src/forge/screens/match/views/VPlayers.java +++ b/forge-gui-mobile/src/forge/screens/match/views/VPlayers.java @@ -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);