diff --git a/forge-gui-mobile/src/forge/screens/match/TargetingOverlay.java b/forge-gui-mobile/src/forge/screens/match/TargetingOverlay.java index f68d25182a2..e500d5c8510 100644 --- a/forge-gui-mobile/src/forge/screens/match/TargetingOverlay.java +++ b/forge-gui-mobile/src/forge/screens/match/TargetingOverlay.java @@ -45,7 +45,7 @@ public class TargetingOverlay { // TODO - this is called every repaint, regardless if card // positions have changed or not. Could perform better if // it checked for a state change. - private void assembleArcs(Combat combat) { + private void assembleArcs() { //List fields = VMatchUI.SINGLETON_INSTANCE.getFieldViews(); arcsCombat.clear(); arcsOther.clear(); @@ -53,7 +53,7 @@ public class TargetingOverlay { for (VPlayerPanel pnl : FControl.getView().getPlayerPanels().values()) { for (CardAreaPanel cardPanel : pnl.getField().getCardPanels()) { - cardPanels.add(cardPanel); + cardPanel.buildCardPanelList(cardPanels); } } @@ -67,6 +67,8 @@ public class TargetingOverlay { cardScreenPos.y + c.getHeight() / 2)); } + final Combat combat = FControl.getGame().getCombat(); + // Work with all card panels currently visible List visualized = new ArrayList(); for (FCardPanel c : cardPanels) { @@ -254,10 +256,7 @@ public class TargetingOverlay { } public void draw(final Graphics g) { - final Combat combat = FControl.getGame().getCombat(); - - // Arc drawing - assembleArcs(combat); + assembleArcs(); if (arcsCombat.isEmpty() && arcsOther.isEmpty()) { return; } diff --git a/forge-gui-mobile/src/forge/screens/match/views/VCardDisplayArea.java b/forge-gui-mobile/src/forge/screens/match/views/VCardDisplayArea.java index 670075ac7be..7cfa7380241 100644 --- a/forge-gui-mobile/src/forge/screens/match/views/VCardDisplayArea.java +++ b/forge-gui-mobile/src/forge/screens/match/views/VCardDisplayArea.java @@ -260,5 +260,19 @@ public abstract class VCardDisplayArea extends VDisplayArea { } return false; } + + public void buildCardPanelList(List list) { + if (!attachedPanels.isEmpty()) { + for (int i = attachedPanels.size() - 1; i >= 0; i--) { + attachedPanels.get(i).buildCardPanelList(list); + } + } + + list.add(this); + + if (nextPanelInStack != null) { + nextPanelInStack.buildCardPanelList(list); + } + } } }