Improve handling of targeting arrows for cards that leave the battlefield or are in a non-visible zone

This commit is contained in:
drdev
2014-07-20 22:47:12 +00:00
parent 558d24c431
commit 2d0c0a05f7
3 changed files with 33 additions and 26 deletions

View File

@@ -5,6 +5,8 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.badlogic.gdx.math.Vector2;
import forge.FThreads; import forge.FThreads;
import forge.Graphics; import forge.Graphics;
import forge.card.CardZoom; import forge.card.CardZoom;
@@ -278,5 +280,32 @@ public abstract class VCardDisplayArea extends VDisplayArea {
nextPanelInStack.buildCardPanelList(list); 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;
}
} }
} }

View File

@@ -83,6 +83,10 @@ public class VPlayerPanel extends FContainer {
return selectedTab; return selectedTab;
} }
public InfoTab getZoneTab(ZoneType zoneType) {
return zoneTabs.get(zoneType);
}
public void setSelectedZone(ZoneType zoneType) { public void setSelectedZone(ZoneType zoneType) {
setSelectedTab(zoneTabs.get(zoneType)); setSelectedTab(zoneTabs.get(zoneType));
} }

View File

@@ -1,7 +1,5 @@
package forge.toolbox; package forge.toolbox;
import com.badlogic.gdx.math.Vector2;
import forge.Graphics; import forge.Graphics;
import forge.card.CardRenderer; import forge.card.CardRenderer;
import forge.game.card.Card; import forge.game.card.Card;
@@ -77,30 +75,6 @@ public class FCardPanel extends FDisplayObject {
return PADDING; 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 @Override
public void draw(Graphics g) { public void draw(Graphics g) {
if (card == null) { return; } if (card == null) { return; }