diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 6757d7401c9..53d12e04026 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -2195,6 +2195,7 @@ public class Player extends GameEntity implements Comparable { controllerCreator = ctrlr; controller = ctrlr; view.updateAvatarIndex(this); + view.updateAvatarCardImageKey(this); view.updateIsAI(this); view.updateLobbyPlayerName(this); } 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 f455e04bb66..a7ab02a67c1 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerView.java +++ b/forge-game/src/main/java/forge/game/player/PlayerView.java @@ -65,6 +65,13 @@ public class PlayerView extends GameEntityView { set(TrackableProperty.AvatarIndex, p.getLobbyPlayer().getAvatarIndex()); } + public String getAvatarCardImageKey() { + return get(TrackableProperty.AvatarCardImageKey); + } + void updateAvatarCardImageKey(Player p) { + set(TrackableProperty.AvatarCardImageKey, p.getLobbyPlayer().getAvatarCardImageKey()); + } + public FCollectionView getOpponents() { return get(TrackableProperty.Opponents); } diff --git a/forge-game/src/main/java/forge/trackable/TrackableProperty.java b/forge-game/src/main/java/forge/trackable/TrackableProperty.java index 469024a7b63..d0dc915f5a0 100644 --- a/forge-game/src/main/java/forge/trackable/TrackableProperty.java +++ b/forge-game/src/main/java/forge/trackable/TrackableProperty.java @@ -88,6 +88,7 @@ public enum TrackableProperty { IsAI(TrackableTypes.BooleanType), LobbyPlayerName(TrackableTypes.StringType), AvatarIndex(TrackableTypes.IntegerType), + AvatarCardImageKey(TrackableTypes.StringType), Opponents(TrackableTypes.PlayerViewCollectionType), Life(TrackableTypes.IntegerType), PoisonCounters(TrackableTypes.IntegerType), diff --git a/forge-gui-mobile/src/forge/screens/match/MatchController.java b/forge-gui-mobile/src/forge/screens/match/MatchController.java index e0d6bd734bb..28533e29725 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchController.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchController.java @@ -49,7 +49,7 @@ public class MatchController implements IMatchController { private MatchController() { } public static final MatchController instance = new MatchController(); - private static final Map avatarImages = new HashMap(); + private static final Map avatarImages = new HashMap(); private static MatchScreen view; @@ -58,21 +58,21 @@ public class MatchController implements IMatchController { } public static FImage getPlayerAvatar(final PlayerView p) { - LobbyPlayer lp = p.getLobbyPlayer(); + String lp = p.getLobbyPlayerName(); FImage avatar = avatarImages.get(lp); if (avatar == null) { - if (lp.getAvatarCardImageKey() == null) { - avatar = new FTextureRegionImage(FSkin.getAvatars().get(lp.getAvatarIndex())); + if (p.getAvatarCardImageKey() == null) { + avatar = new FTextureRegionImage(FSkin.getAvatars().get(p.getAvatarIndex())); } else { //handle lobby players with art from cards - avatar = CardRenderer.getCardArt(lp.getAvatarCardImageKey(), false); + avatar = CardRenderer.getCardArt(p.getAvatarCardImageKey(), false); } } return avatar; } public static void setPlayerAvatar(final LobbyPlayer lp, final FImage avatarImage) { - avatarImages.put(lp, avatarImage); + avatarImages.put(lp.getName(), avatarImage); } public void refreshCardDetails(Iterable cards) { @@ -176,7 +176,7 @@ public class MatchController implements IMatchController { public void updatePlayerControl() { //show/hide hand for top player based on whether the opponent is controlled if (MatchUtil.getHumanCount() == 1) { - Player player = Player.get(view.getTopPlayerPanel().getPlayer()); + PlayerView player = view.getTopPlayerPanel().getPlayer(); if (player.getMindSlaveMaster() != null) { view.getTopPlayerPanel().setSelectedZone(ZoneType.Hand); } diff --git a/forge-gui-mobile/src/forge/screens/match/MatchScreen.java b/forge-gui-mobile/src/forge/screens/match/MatchScreen.java index e16997a82e9..bedc60781ad 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchScreen.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchScreen.java @@ -24,7 +24,6 @@ import forge.game.GameView; import forge.game.card.CardView; import forge.game.combat.CombatView; import forge.game.phase.PhaseType; -import forge.game.player.Player; import forge.game.player.PlayerView; import forge.game.zone.ZoneType; import forge.match.MatchUtil; @@ -231,7 +230,7 @@ public class MatchScreen extends FScreen { } public boolean isTopHumanPlayerActive() { - return topPlayerPrompt != null && Player.get(topPlayerPanel.getPlayer()) == MatchUtil.getCurrentPlayer(); + return topPlayerPrompt != null && topPlayerPanel.getPlayer() == MatchUtil.getCurrentPlayer().getView(); } public VPrompt getActivePrompt() { diff --git a/forge-gui-mobile/src/forge/screens/match/views/VManaPool.java b/forge-gui-mobile/src/forge/screens/match/views/VManaPool.java index 5d7090b6f04..0f0b3d081e3 100644 --- a/forge-gui-mobile/src/forge/screens/match/views/VManaPool.java +++ b/forge-gui-mobile/src/forge/screens/match/views/VManaPool.java @@ -81,7 +81,7 @@ public class VManaPool extends VDisplayArea { @Override public boolean tap(float x, float y, int count) { - if (player.getLobbyPlayer() == GamePlayerUtil.getGuiPlayer()) { + if (player.isLobbyPlayer(GamePlayerUtil.getGuiPlayer())) { MatchUtil.getHumanController().useMana(colorCode); } return true; @@ -89,7 +89,7 @@ public class VManaPool extends VDisplayArea { @Override public boolean flick(float x, float y) { - if (player.getLobbyPlayer() == GamePlayerUtil.getGuiPlayer()) { + if (player.isLobbyPlayer(GamePlayerUtil.getGuiPlayer())) { //on two finger tap, keep using mana until it runs out or no longer can be put towards the cost while (MatchUtil.getHumanController().useMana(colorCode)) {} } diff --git a/forge-gui-mobile/src/forge/screens/match/views/VPlayerPanel.java b/forge-gui-mobile/src/forge/screens/match/views/VPlayerPanel.java index f4460c00564..86f1e9d7c77 100644 --- a/forge-gui-mobile/src/forge/screens/match/views/VPlayerPanel.java +++ b/forge-gui-mobile/src/forge/screens/match/views/VPlayerPanel.java @@ -299,7 +299,7 @@ public class VPlayerPanel extends FContainer { } //when gui player loses life, vibrate device for a length of time based on amount of life lost - if (vibrateDuration > 0 && player.getLobbyPlayer() == MatchUtil.getGuiPlayer() && + if (vibrateDuration > 0 && player.isLobbyPlayer(MatchUtil.getGuiPlayer()) && FModel.getPreferences().getPrefBoolean(FPref.UI_VIBRATE_ON_LIFE_LOSS)) { //never vibrate more than two seconds regardless of life lost or poison counters gained Gdx.input.vibrate(Math.min(vibrateDuration, 2000));