mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
Support showing zones on right side
This commit is contained in:
@@ -153,6 +153,9 @@ public abstract class VCardDisplayArea extends VDisplayArea implements ActivateH
|
|||||||
protected float getCardWidth(float cardHeight) {
|
protected float getCardWidth(float cardHeight) {
|
||||||
return (cardHeight - 2 * FCardPanel.PADDING) / FCardPanel.ASPECT_RATIO + 2 * FCardPanel.PADDING; //ensure aspect ratio maintained after padding applied
|
return (cardHeight - 2 * FCardPanel.PADDING) / FCardPanel.ASPECT_RATIO + 2 * FCardPanel.PADDING; //ensure aspect ratio maintained after padding applied
|
||||||
}
|
}
|
||||||
|
protected float getCardHeight(float cardWidth) {
|
||||||
|
return (cardWidth - 2 * FCardPanel.PADDING) * FCardPanel.ASPECT_RATIO + 2 * FCardPanel.PADDING; //ensure aspect ratio maintained after padding applied
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ScrollBounds layoutAndGetScrollBounds(float visibleWidth, float visibleHeight) {
|
protected ScrollBounds layoutAndGetScrollBounds(float visibleWidth, float visibleHeight) {
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import forge.model.FModel;
|
|||||||
import forge.properties.ForgePreferences.FPref;
|
import forge.properties.ForgePreferences.FPref;
|
||||||
import forge.screens.match.MatchController;
|
import forge.screens.match.MatchController;
|
||||||
import forge.screens.match.MatchScreen;
|
import forge.screens.match.MatchScreen;
|
||||||
|
import forge.toolbox.FCardPanel;
|
||||||
import forge.toolbox.FContainer;
|
import forge.toolbox.FContainer;
|
||||||
import forge.toolbox.FDisplayObject;
|
import forge.toolbox.FDisplayObject;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
@@ -267,18 +268,12 @@ public class VPlayerPanel extends FContainer {
|
|||||||
phaseIndicator.resetFont();
|
phaseIndicator.resetFont();
|
||||||
phaseIndicator.setBounds(x, 0, avatar.getWidth() * 0.6f, height);
|
phaseIndicator.setBounds(x, 0, avatar.getWidth() * 0.6f, height);
|
||||||
x += phaseIndicator.getWidth();
|
x += phaseIndicator.getWidth();
|
||||||
width -= x;
|
field.setBounds(x, 0, width - x, height);
|
||||||
field.setBounds(x, 0, width, height);
|
|
||||||
|
|
||||||
float displayAreaHeight = getHeight() / 3;
|
float displayAreaWidth = height / FCardPanel.ASPECT_RATIO;
|
||||||
if (isFlipped()) {
|
x = width - displayAreaWidth;
|
||||||
y = 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
y = height - displayAreaHeight;
|
|
||||||
}
|
|
||||||
for (InfoTab tab : tabs) {
|
for (InfoTab tab : tabs) {
|
||||||
tab.displayArea.setBounds(x, y, width, displayAreaHeight);
|
tab.displayArea.setBounds(x, 0, displayAreaWidth, height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package forge.screens.match.views;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import forge.Forge;
|
||||||
import forge.game.player.PlayerView;
|
import forge.game.player.PlayerView;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.toolbox.FCardPanel;
|
import forge.toolbox.FCardPanel;
|
||||||
@@ -101,6 +102,10 @@ public class VZoneDisplay extends VCardDisplayArea {
|
|||||||
|
|
||||||
orderedCards.clear();
|
orderedCards.clear();
|
||||||
|
|
||||||
|
if (Forge.isLandscapeMode()) {
|
||||||
|
return layoutAndGetScrollBoundsLandscape(visibleWidth, visibleHeight);
|
||||||
|
}
|
||||||
|
|
||||||
float x = 0;
|
float x = 0;
|
||||||
float y = 0;
|
float y = 0;
|
||||||
float cardHeight = visibleHeight;
|
float cardHeight = visibleHeight;
|
||||||
@@ -129,4 +134,41 @@ public class VZoneDisplay extends VCardDisplayArea {
|
|||||||
|
|
||||||
return new ScrollBounds(x, visibleHeight);
|
return new ScrollBounds(x, visibleHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ScrollBounds layoutAndGetScrollBoundsLandscape(float visibleWidth, float visibleHeight) {
|
||||||
|
float x = 0;
|
||||||
|
float y = 0;
|
||||||
|
float cardWidth = visibleWidth / 2;
|
||||||
|
float cardHeight = getCardHeight(cardWidth);
|
||||||
|
float dy = cardHeight;
|
||||||
|
|
||||||
|
int rowCount = (int)Math.ceil((float)cardPanels.size() / 2f);
|
||||||
|
float totalHeight = cardHeight * rowCount;
|
||||||
|
if (totalHeight > visibleHeight && totalHeight <= visibleHeight * 3) {
|
||||||
|
//allow overlapping cards up to one third of the card,
|
||||||
|
//otherwise don't overlap and allow scrolling vertically
|
||||||
|
dy *= (visibleHeight - cardHeight) / (totalHeight - cardHeight);
|
||||||
|
dy += FCardPanel.PADDING / rowCount; //make final card go right up to right edge of screen
|
||||||
|
if (revealedPanel == null) {
|
||||||
|
revealedPanel = cardPanels.get(cardPanels.size() - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
revealedPanel = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (CardAreaPanel cardPanel : cardPanels) {
|
||||||
|
orderedCards.add(cardPanel.getCard());
|
||||||
|
cardPanel.setBounds(x, y, cardWidth, cardHeight);
|
||||||
|
if (orderedCards.size() % 2 == 0) {
|
||||||
|
x = 0;
|
||||||
|
y += dy;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
x += cardWidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ScrollBounds(visibleWidth, cardHeight + (rowCount - 1) * dy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user