From 2d0c0a05f773971a43c130cb80a7cffe5f904d69 Mon Sep 17 00:00:00 2001 From: drdev Date: Sun, 20 Jul 2014 22:47:12 +0000 Subject: [PATCH] Improve handling of targeting arrows for cards that leave the battlefield or are in a non-visible zone --- .../screens/match/views/VCardDisplayArea.java | 29 +++++++++++++++++++ .../screens/match/views/VPlayerPanel.java | 4 +++ .../src/forge/toolbox/FCardPanel.java | 26 ----------------- 3 files changed, 33 insertions(+), 26 deletions(-) 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 d2d5dd09b61..60720d0fe5e 100644 --- a/forge-gui-mobile/src/forge/screens/match/views/VCardDisplayArea.java +++ b/forge-gui-mobile/src/forge/screens/match/views/VCardDisplayArea.java @@ -5,6 +5,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import com.badlogic.gdx.math.Vector2; + import forge.FThreads; import forge.Graphics; import forge.card.CardZoom; @@ -278,5 +280,32 @@ public abstract class VCardDisplayArea extends VDisplayArea { nextPanelInStack.buildCardPanelList(list); } } + + public Vector2 getTargetingArrowOrigin() { + //don't show targeting arrow unless in display area that's visible + if (displayArea == null || !displayArea.isVisible()) { return null; } + + Vector2 origin = new Vector2(getScreenPosition()); + + float left = PADDING; + float top = PADDING; + float w = getWidth() - 2 * PADDING; + float h = getHeight() - 2 * PADDING; + if (w == h) { //adjust width if needed to make room for tapping + w = h / ASPECT_RATIO; + } + + if (isTapped()) { //rotate box if tapped + top += h - w; + float temp = w; + w = h; + h = temp; + } + + origin.x += left + w * TARGET_ORIGIN_FACTOR_X; + origin.y += top + h * TARGET_ORIGIN_FACTOR_Y; + + return origin; + } } } 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 997fcd04672..92c3563a362 100644 --- a/forge-gui-mobile/src/forge/screens/match/views/VPlayerPanel.java +++ b/forge-gui-mobile/src/forge/screens/match/views/VPlayerPanel.java @@ -83,6 +83,10 @@ public class VPlayerPanel extends FContainer { return selectedTab; } + public InfoTab getZoneTab(ZoneType zoneType) { + return zoneTabs.get(zoneType); + } + public void setSelectedZone(ZoneType zoneType) { setSelectedTab(zoneTabs.get(zoneType)); } diff --git a/forge-gui-mobile/src/forge/toolbox/FCardPanel.java b/forge-gui-mobile/src/forge/toolbox/FCardPanel.java index 8916359bb94..aa30b8fdbf0 100644 --- a/forge-gui-mobile/src/forge/toolbox/FCardPanel.java +++ b/forge-gui-mobile/src/forge/toolbox/FCardPanel.java @@ -1,7 +1,5 @@ package forge.toolbox; -import com.badlogic.gdx.math.Vector2; - import forge.Graphics; import forge.card.CardRenderer; import forge.game.card.Card; @@ -77,30 +75,6 @@ public class FCardPanel extends FDisplayObject { return PADDING; } - public Vector2 getTargetingArrowOrigin() { - Vector2 origin = new Vector2(getScreenPosition()); - - float left = PADDING; - float top = PADDING; - float w = getWidth() - 2 * PADDING; - float h = getHeight() - 2 * PADDING; - if (w == h) { //adjust width if needed to make room for tapping - w = h / ASPECT_RATIO; - } - - if (tapped) { //rotate box if tapped - top += h - w; - float temp = w; - w = h; - h = temp; - } - - origin.x += left + w * TARGET_ORIGIN_FACTOR_X; - origin.y += top + h * TARGET_ORIGIN_FACTOR_Y; - - return origin; - } - @Override public void draw(Graphics g) { if (card == null) { return; }