mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
Start working on header for match screen
This commit is contained in:
6
.gitattributes
vendored
6
.gitattributes
vendored
@@ -16119,14 +16119,18 @@ forge-m-base/src/forge/screens/match/input/InputSyncronizedBase.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VAssignDamage.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VAvatar.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VCardDisplayArea.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VCombat.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VDev.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VDisplayArea.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VField.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VFlashbackZone.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VGameDetails.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VHeader.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VLog.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VManaPool.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VMenu.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VPhaseIndicator.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VPlayerPanel.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VPlayers.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VPrompt.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VStack.java -text
|
||||
forge-m-base/src/forge/screens/match/views/VZoneDisplay.java -text
|
||||
|
||||
@@ -14,18 +14,18 @@ import forge.toolbox.FLabel;
|
||||
import forge.utils.Utils;
|
||||
|
||||
public abstract class FScreen extends FContainer {
|
||||
public static final float HEADER_HEIGHT = Math.round(Utils.AVG_FINGER_HEIGHT * 0.8f);
|
||||
public static final FSkinColor TEXTURE_OVERLAY_COLOR = FSkinColor.get(Colors.CLR_THEME);
|
||||
public static final FSkinColor HEADER_BTN_PRESSED_COLOR = TEXTURE_OVERLAY_COLOR.stepColor(0);
|
||||
public static final FSkinColor HEADER_LINE_COLOR = HEADER_BTN_PRESSED_COLOR.stepColor(-40);
|
||||
public static final FSkinColor HEADER_BACK_COLOR = HEADER_BTN_PRESSED_COLOR.stepColor(-80);
|
||||
|
||||
private static final FSkinColor clrTheme = FSkinColor.get(Colors.CLR_THEME);
|
||||
private static final FSkinColor clr = clrTheme.stepColor(0);
|
||||
private static final FSkinColor d40 = clr.stepColor(-40);
|
||||
private static final FSkinColor d80 = clr.stepColor(-80);
|
||||
public static final float HEADER_HEIGHT = Math.round(Utils.AVG_FINGER_HEIGHT * 0.8f);
|
||||
|
||||
private final FLabel btnBack, lblHeader, btnMenu;
|
||||
|
||||
protected FScreen(boolean showBackButton, String headerCaption, boolean showMenuButton) {
|
||||
if (showBackButton) {
|
||||
btnBack = add(new FLabel.Builder().icon(new BackIcon()).pressedColor(clr).align(HAlignment.CENTER).command(new Runnable() {
|
||||
btnBack = add(new FLabel.Builder().icon(new BackIcon()).pressedColor(HEADER_BTN_PRESSED_COLOR).align(HAlignment.CENTER).command(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Forge.back();
|
||||
@@ -42,7 +42,7 @@ public abstract class FScreen extends FContainer {
|
||||
lblHeader = null;
|
||||
}
|
||||
if (showMenuButton) {
|
||||
btnMenu = add(new FLabel.Builder().icon(FSkinImage.FAVICON).pressedColor(clr).align(HAlignment.CENTER).command(new Runnable() {
|
||||
btnMenu = add(new FLabel.Builder().icon(FSkinImage.FAVICON).pressedColor(HEADER_BTN_PRESSED_COLOR).align(HAlignment.CENTER).command(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
showMenu();
|
||||
@@ -102,11 +102,11 @@ public abstract class FScreen extends FContainer {
|
||||
float w = getWidth();
|
||||
float h = getHeight();
|
||||
g.drawImage(FSkinTexture.BG_TEXTURE, 0, 0, w, h);
|
||||
g.fillRect(clrTheme, 0, 0, w, h);
|
||||
g.fillRect(TEXTURE_OVERLAY_COLOR, 0, 0, w, h);
|
||||
|
||||
if (lblHeader != null) { //draw custom background behind header label
|
||||
g.fillRect(d80, 0, 0, w, HEADER_HEIGHT);
|
||||
g.drawLine(1, d40, 0, HEADER_HEIGHT, w, HEADER_HEIGHT);
|
||||
g.fillRect(HEADER_BACK_COLOR, 0, 0, w, HEADER_HEIGHT);
|
||||
g.drawLine(1, HEADER_LINE_COLOR, 0, HEADER_HEIGHT, w, HEADER_HEIGHT);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -172,8 +172,6 @@ public class FControl {
|
||||
super.onActivate();
|
||||
}
|
||||
};
|
||||
|
||||
view.getGameDetails().init(players);
|
||||
}
|
||||
|
||||
private static List<Player> shiftPlayersPlaceLocalFirst(final List<Player> players, LobbyPlayer localPlayer) {
|
||||
@@ -230,6 +228,10 @@ public class FControl {
|
||||
}
|
||||
}
|
||||
|
||||
public static Iterable<Player> getSortedPlayers() {
|
||||
return sortedPlayers;
|
||||
}
|
||||
|
||||
public static Player getCurrentPlayer() {
|
||||
// try current priority
|
||||
Player currentPriority = game.getPhaseHandler().getPriorityPlayer();
|
||||
|
||||
@@ -148,7 +148,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
|
||||
@Override
|
||||
public void run() {
|
||||
stackUpdPlanned.set(false);
|
||||
FControl.getView().getStack().update();
|
||||
FControl.getView().updateStack();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -7,11 +7,9 @@ import java.util.Map;
|
||||
import forge.model.FModel;
|
||||
import forge.screens.FScreen;
|
||||
import forge.screens.match.views.VAvatar;
|
||||
import forge.screens.match.views.VGameDetails;
|
||||
import forge.screens.match.views.VLog;
|
||||
import forge.screens.match.views.VHeader;
|
||||
import forge.screens.match.views.VPlayerPanel;
|
||||
import forge.screens.match.views.VPrompt;
|
||||
import forge.screens.match.views.VStack;
|
||||
import forge.toolbox.VCardZoom;
|
||||
import forge.Forge.Graphics;
|
||||
import forge.assets.FSkinColor;
|
||||
@@ -24,16 +22,14 @@ public class MatchScreen extends FScreen {
|
||||
public static FSkinColor BORDER_COLOR = FSkinColor.get(Colors.CLR_BORDERS);
|
||||
|
||||
private final Map<Player, VPlayerPanel> playerPanels = new HashMap<Player, VPlayerPanel>();
|
||||
private final VLog log;
|
||||
private final VStack stack;
|
||||
private final VHeader header;
|
||||
private final VPrompt prompt;
|
||||
private final VGameDetails gameDetails;
|
||||
private final VCardZoom cardZoom;
|
||||
|
||||
private VPlayerPanel bottomPlayerPanel, topPlayerPanel;
|
||||
|
||||
public MatchScreen(List<VPlayerPanel> playerPanels0) {
|
||||
super(true, "Game", true);
|
||||
super(false, null, false); //match screen has custom header
|
||||
|
||||
for (VPlayerPanel playerPanel : playerPanels0) {
|
||||
playerPanels.put(playerPanel.getPlayer(), add(playerPanel));
|
||||
@@ -43,6 +39,8 @@ public class MatchScreen extends FScreen {
|
||||
topPlayerPanel.setFlipped(true);
|
||||
bottomPlayerPanel.setSelectedZone(ZoneType.Hand);
|
||||
|
||||
header = add(new VHeader());
|
||||
|
||||
prompt = add(new VPrompt("", "",
|
||||
new Runnable() {
|
||||
@Override
|
||||
@@ -57,13 +55,22 @@ public class MatchScreen extends FScreen {
|
||||
}
|
||||
}));
|
||||
cardZoom = add(new VCardZoom());
|
||||
}
|
||||
|
||||
log = add(new VLog());
|
||||
stack = add(new VStack());
|
||||
gameDetails = add(new VGameDetails());
|
||||
log.setVisible(false);
|
||||
stack.setVisible(false);
|
||||
gameDetails.setVisible(false);
|
||||
public void updatePlayers() {
|
||||
header.getTabPlayers().update();
|
||||
}
|
||||
|
||||
public void updateLog() {
|
||||
header.getTabLog().update();
|
||||
}
|
||||
|
||||
public void updateCombat() {
|
||||
header.getTabCombat().update();
|
||||
}
|
||||
|
||||
public void updateStack() {
|
||||
header.getTabStack().update();
|
||||
}
|
||||
|
||||
public VPrompt getPrompt() {
|
||||
@@ -74,18 +81,6 @@ public class MatchScreen extends FScreen {
|
||||
return cardZoom;
|
||||
}
|
||||
|
||||
public VStack getStack() {
|
||||
return stack;
|
||||
}
|
||||
|
||||
public VLog getLog() {
|
||||
return log;
|
||||
}
|
||||
|
||||
public VGameDetails getGameDetails() {
|
||||
return gameDetails;
|
||||
}
|
||||
|
||||
public VPlayerPanel getTopPlayerPanel() {
|
||||
return topPlayerPanel;
|
||||
}
|
||||
@@ -127,6 +122,9 @@ public class MatchScreen extends FScreen {
|
||||
|
||||
@Override
|
||||
protected void doLayout(float startY, float width, float height) {
|
||||
header.setBounds(0, 0, width, VHeader.HEIGHT);
|
||||
startY = FScreen.HEADER_HEIGHT;
|
||||
|
||||
//determine player panel heights based on visibility of zone displays
|
||||
float topPlayerPanelHeight, bottomPlayerPanelHeight;
|
||||
float cardRowsHeight = height - startY - VPrompt.HEIGHT - 2 * VAvatar.HEIGHT;
|
||||
@@ -151,9 +149,7 @@ public class MatchScreen extends FScreen {
|
||||
topPlayerPanelHeight += VAvatar.HEIGHT;
|
||||
bottomPlayerPanelHeight += VAvatar.HEIGHT;
|
||||
|
||||
//log.setBounds(0, startY, width - FScreen.HEADER_HEIGHT, VLog.HEIGHT);
|
||||
topPlayerPanel.setBounds(0, startY, width, topPlayerPanelHeight);
|
||||
stack.setBounds(0, startY + topPlayerPanelHeight - VStack.HEIGHT / 2, VStack.WIDTH, VStack.HEIGHT);
|
||||
bottomPlayerPanel.setBounds(0, height - VPrompt.HEIGHT - bottomPlayerPanelHeight, width, bottomPlayerPanelHeight);
|
||||
prompt.setBounds(0, height - VPrompt.HEIGHT, width, VPrompt.HEIGHT);
|
||||
cardZoom.setBounds(0, 0, width, height);
|
||||
|
||||
20
forge-m-base/src/forge/screens/match/views/VCombat.java
Normal file
20
forge-m-base/src/forge/screens/match/views/VCombat.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package forge.screens.match.views;
|
||||
|
||||
public class VCombat extends VDisplayArea {
|
||||
@Override
|
||||
protected void doLayout(float width, float height) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
}
|
||||
20
forge-m-base/src/forge/screens/match/views/VDev.java
Normal file
20
forge-m-base/src/forge/screens/match/views/VDev.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package forge.screens.match.views;
|
||||
|
||||
public class VDev extends VDisplayArea {
|
||||
@Override
|
||||
protected void doLayout(float width, float height) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,9 @@ package forge.screens.match.views;
|
||||
import forge.toolbox.FScrollPane;
|
||||
|
||||
public abstract class VDisplayArea extends FScrollPane {
|
||||
public VDisplayArea() {
|
||||
setVisible(false); //hide by default
|
||||
}
|
||||
public abstract int getCount();
|
||||
public abstract void update();
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ public class VField extends VZoneDisplay {
|
||||
|
||||
public VField(Player player0) {
|
||||
super(player0, ZoneType.Battlefield);
|
||||
setVisible(true); //unlike other display areas, show by default
|
||||
}
|
||||
|
||||
public boolean isFlipped() {
|
||||
|
||||
197
forge-m-base/src/forge/screens/match/views/VHeader.java
Normal file
197
forge-m-base/src/forge/screens/match/views/VHeader.java
Normal file
@@ -0,0 +1,197 @@
|
||||
package forge.screens.match.views;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
|
||||
|
||||
import forge.Forge.Graphics;
|
||||
import forge.assets.FSkinColor;
|
||||
import forge.assets.FSkinFont;
|
||||
import forge.assets.FSkinImage;
|
||||
import forge.assets.FSkinColor.Colors;
|
||||
import forge.model.FModel;
|
||||
import forge.screens.FScreen;
|
||||
import forge.screens.match.FControl;
|
||||
import forge.toolbox.FContainer;
|
||||
import forge.toolbox.FDisplayObject;
|
||||
import forge.toolbox.FLabel;
|
||||
import forge.utils.ForgePreferences.FPref;
|
||||
|
||||
public class VHeader extends FContainer {
|
||||
public static final float HEIGHT = VAvatar.HEIGHT - VPhaseIndicator.HEIGHT;
|
||||
|
||||
private static final FSkinFont TAB_FONT = FSkinFont.get(12);
|
||||
private static final FSkinColor TAB_FORE_COLOR = FSkinColor.get(Colors.CLR_TEXT);
|
||||
private static final FSkinColor DISPLAY_AREA_BACK_COLOR = FSkinColor.get(Colors.CLR_INACTIVE).alphaColor(0.5f);
|
||||
private static final float TAB_PADDING_X = 6f;
|
||||
|
||||
private final HeaderTab tabPlayers;
|
||||
private final HeaderTab tabLog;
|
||||
private final HeaderTab tabCombat;
|
||||
private final HeaderTab tabDev;
|
||||
private final HeaderTab tabStack;
|
||||
private final FLabel btnMenu;
|
||||
private HeaderTab selectedTab;
|
||||
|
||||
public VHeader() {
|
||||
tabPlayers = add(new HeaderTab("Players", new VPlayers()));
|
||||
tabLog = add(new HeaderTab("Log", new VLog()));
|
||||
tabCombat = add(new HeaderTab("Combat", new VCombat()));
|
||||
tabDev = add(new HeaderTab("Dev", new VDev()));
|
||||
tabStack = add(new HeaderTab("Stack", new VStack()));
|
||||
|
||||
btnMenu = add(new FLabel.Builder().icon(FSkinImage.FAVICON).pressedColor(FScreen.HEADER_BTN_PRESSED_COLOR).align(HAlignment.CENTER).command(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
FControl.getView().showMenu();
|
||||
}
|
||||
}).build());
|
||||
}
|
||||
|
||||
public HeaderTab getTabPlayers() {
|
||||
return tabPlayers;
|
||||
}
|
||||
|
||||
public HeaderTab getTabLog() {
|
||||
return tabLog;
|
||||
}
|
||||
|
||||
public HeaderTab getTabCombat() {
|
||||
return tabCombat;
|
||||
}
|
||||
|
||||
public HeaderTab getTabDev() {
|
||||
return tabDev;
|
||||
}
|
||||
|
||||
public HeaderTab getTabStack() {
|
||||
return tabStack;
|
||||
}
|
||||
|
||||
public HeaderTab getSelectedTab() {
|
||||
return selectedTab;
|
||||
}
|
||||
|
||||
private void setSelectedTab(HeaderTab selectedTab0) {
|
||||
if (selectedTab == selectedTab0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (selectedTab != null) {
|
||||
selectedTab.displayArea.setVisible(false);
|
||||
}
|
||||
|
||||
selectedTab = selectedTab0;
|
||||
|
||||
if (selectedTab != null) {
|
||||
selectedTab.displayArea.setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doLayout(float width, float height) {
|
||||
float x = 0;
|
||||
x = tabPlayers.layout(x);
|
||||
x = tabLog.layout(x);
|
||||
x = tabCombat.layout(x);
|
||||
if (FModel.getPreferences().getPrefBoolean(FPref.DEV_MODE_ENABLED)) {
|
||||
x = tabDev.layout(x);
|
||||
tabDev.setVisible(true);
|
||||
}
|
||||
else {
|
||||
tabDev.setVisible(false);
|
||||
}
|
||||
x = tabStack.layout(x);
|
||||
|
||||
btnMenu.setBounds(width - height, 0, height, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawBackground(Graphics g) {
|
||||
float w = getWidth();
|
||||
float h = getHeight();
|
||||
g.fillRect(FScreen.HEADER_BACK_COLOR, 0, 0, w, h);
|
||||
|
||||
if (selectedTab == null) {
|
||||
g.drawLine(1, FScreen.HEADER_LINE_COLOR, 0, h, w, h);
|
||||
}
|
||||
else { //draw background and border for selected zone if needed
|
||||
VDisplayArea selectedDisplayArea = selectedTab.displayArea;
|
||||
g.fillRect(DISPLAY_AREA_BACK_COLOR, 0, selectedDisplayArea.getTop(), w, selectedDisplayArea.getHeight());
|
||||
|
||||
//leave gap at selected zone tab
|
||||
g.drawLine(1, FScreen.HEADER_LINE_COLOR, 0, h, selectedTab.getLeft(), h);
|
||||
g.drawLine(1, FScreen.HEADER_LINE_COLOR, selectedTab.getRight(), h, w, h);
|
||||
}
|
||||
}
|
||||
|
||||
public class HeaderTab extends FDisplayObject {
|
||||
private String text;
|
||||
private String caption;
|
||||
private final VDisplayArea displayArea;
|
||||
|
||||
private HeaderTab(String text0, VDisplayArea displayArea0) {
|
||||
text = text0;
|
||||
displayArea = displayArea0;
|
||||
setHeight(HEIGHT);
|
||||
update();
|
||||
}
|
||||
|
||||
private float layout(float x) {
|
||||
setLeft(x);
|
||||
return x + getWidth();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tap(float x, float y, int count) {
|
||||
if (selectedTab == this) {
|
||||
setSelectedTab(null);
|
||||
}
|
||||
else {
|
||||
setSelectedTab(this);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void update() {
|
||||
displayArea.update();
|
||||
int count = displayArea.getCount();
|
||||
if (count >= 0) {
|
||||
caption = text + " (" + String.valueOf(count) + ")";
|
||||
}
|
||||
else { //if getCount() returns -1, don't include count in caption
|
||||
caption = text;
|
||||
}
|
||||
setWidth(TAB_FONT.getFont().getBounds(caption).width + TAB_PADDING_X);
|
||||
VHeader.this.revalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Graphics g) {
|
||||
float x, y, w, h;
|
||||
float paddingX = 2;
|
||||
float paddingY = 2;
|
||||
|
||||
if (selectedTab == this) {
|
||||
y = 0;
|
||||
w = getWidth();
|
||||
h = getHeight();
|
||||
float yAcross;
|
||||
y += paddingY;
|
||||
yAcross = y;
|
||||
y--;
|
||||
h++;
|
||||
g.fillRect(DISPLAY_AREA_BACK_COLOR, 0, paddingY, w, getHeight() - paddingY);
|
||||
g.startClip(-1, y, w + 2, h); //use clip to ensure all corners connect
|
||||
g.drawLine(1, FScreen.HEADER_LINE_COLOR, 0, yAcross, w, yAcross);
|
||||
g.drawLine(1, FScreen.HEADER_LINE_COLOR, 0, y, 0, h);
|
||||
g.drawLine(1, FScreen.HEADER_LINE_COLOR, w, y, w, h);
|
||||
g.endClip();
|
||||
}
|
||||
|
||||
x = paddingX;
|
||||
y = paddingY;
|
||||
w = getWidth() - 2 * paddingX;
|
||||
h = getHeight() - 2 * paddingY;
|
||||
g.drawText(caption, TAB_FONT, TAB_FORE_COLOR, x, y, w, h, false, HAlignment.CENTER, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,20 @@
|
||||
package forge.screens.match.views;
|
||||
|
||||
import forge.toolbox.FContainer;
|
||||
|
||||
public class VLog extends FContainer {
|
||||
public class VLog extends VDisplayArea {
|
||||
@Override
|
||||
protected void doLayout(float width, float height) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
21
forge-m-base/src/forge/screens/match/views/VMenu.java
Normal file
21
forge-m-base/src/forge/screens/match/views/VMenu.java
Normal file
@@ -0,0 +1,21 @@
|
||||
package forge.screens.match.views;
|
||||
|
||||
public class VMenu extends VDisplayArea {
|
||||
@Override
|
||||
protected void doLayout(float width, float height) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@ public class VPlayerPanel extends FContainer {
|
||||
private static final FSkinFont LIFE_FONT = FSkinFont.get(18);
|
||||
private static final FSkinFont INFO_FONT = FSkinFont.get(12);
|
||||
private static final FSkinColor INFO_FORE_COLOR = FSkinColor.get(Colors.CLR_TEXT);
|
||||
private static final FSkinColor ZONE_BACK_COLOR = FSkinColor.get(Colors.CLR_INACTIVE).alphaColor(0.5f);
|
||||
private static final FSkinColor DISPLAY_AREA_BACK_COLOR = FSkinColor.get(Colors.CLR_INACTIVE).alphaColor(0.5f);
|
||||
|
||||
private final Player player;
|
||||
private final VPhaseIndicator phaseIndicator;
|
||||
@@ -47,12 +47,10 @@ public class VPlayerPanel extends FContainer {
|
||||
addZoneDisplay(ZoneType.Library, FSkinImage.LIBRARY);
|
||||
|
||||
VFlashbackZone flashbackZone = add(new VFlashbackZone(player0));
|
||||
flashbackZone.setVisible(false);
|
||||
tabFlashbackZone = add(new InfoTab(FSkinImage.FLASHBACK, flashbackZone));
|
||||
tabs.add(tabFlashbackZone);
|
||||
|
||||
VManaPool manaPool = add(new VManaPool(player));
|
||||
manaPool.setVisible(false);
|
||||
tabManaPool = add(new InfoTab(FSkinImage.MANA_X, manaPool));
|
||||
tabs.add(tabManaPool);
|
||||
|
||||
@@ -66,7 +64,6 @@ public class VPlayerPanel extends FContainer {
|
||||
|
||||
public void addZoneDisplay(ZoneType zoneType, FSkinImage tabIcon) {
|
||||
VZoneDisplay zoneDisplay = add(new VZoneDisplay(player, zoneType));
|
||||
zoneDisplay.setVisible(false);
|
||||
InfoTab zoneTab = add(new InfoTab(tabIcon, zoneDisplay));
|
||||
zoneTabs.put(zoneType, zoneTab);
|
||||
tabs.add(zoneTab);
|
||||
@@ -180,7 +177,7 @@ public class VPlayerPanel extends FContainer {
|
||||
if (selectedTab != null) { //draw background and border for selected zone if needed
|
||||
float w = getWidth();
|
||||
VDisplayArea selectedDisplayArea = selectedTab.displayArea;
|
||||
g.fillRect(ZONE_BACK_COLOR, 0, selectedDisplayArea.getTop(), w, selectedDisplayArea.getHeight());
|
||||
g.fillRect(DISPLAY_AREA_BACK_COLOR, 0, selectedDisplayArea.getTop(), w, selectedDisplayArea.getHeight());
|
||||
|
||||
float y = isFlipped() ? selectedDisplayArea.getTop() + 1 : selectedDisplayArea.getBottom();
|
||||
//leave gap at selected zone tab
|
||||
@@ -254,7 +251,7 @@ public class VPlayerPanel extends FContainer {
|
||||
y--;
|
||||
h += 2;
|
||||
}
|
||||
g.fillRect(ZONE_BACK_COLOR, 0, isFlipped() ? paddingY : 0, w, getHeight() - paddingY);
|
||||
g.fillRect(DISPLAY_AREA_BACK_COLOR, 0, isFlipped() ? paddingY : 0, w, getHeight() - paddingY);
|
||||
g.startClip(-1, y, w + 2, h); //use clip to ensure all corners connect
|
||||
g.drawLine(1, MatchScreen.BORDER_COLOR, 0, yAcross, w, yAcross);
|
||||
g.drawLine(1, MatchScreen.BORDER_COLOR, 0, y, 0, h);
|
||||
|
||||
@@ -5,25 +5,23 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import forge.game.Game;
|
||||
import forge.game.GameType;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardFactoryUtil;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.model.FModel;
|
||||
import forge.toolbox.FContainer;
|
||||
import forge.screens.match.FControl;
|
||||
import forge.toolbox.FLabel;
|
||||
import forge.utils.ForgePreferences.FPref;
|
||||
|
||||
public class VGameDetails extends FContainer {
|
||||
public class VPlayers extends VDisplayArea {
|
||||
private Map<Player, InfoLabel[]> infoLabels;
|
||||
private InfoLabel stormLabel;
|
||||
|
||||
public void init(final Iterable<Player> players) {
|
||||
clear();
|
||||
public VPlayers() {
|
||||
infoLabels = new HashMap<Player, InfoLabel[]>();
|
||||
for (final Player p : players) {
|
||||
for (final Player p : FControl.getSortedPlayers()) {
|
||||
// Create and store labels detailing various non-critical player info.
|
||||
final InfoLabel name = add(new InfoLabel());
|
||||
final InfoLabel life = add(new InfoLabel());
|
||||
@@ -41,9 +39,8 @@ public class VGameDetails extends FContainer {
|
||||
stormLabel = add(new InfoLabel());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
if (!isVisible()) { return; } //No need to update if this panel isn't showing
|
||||
|
||||
for (Entry<Player, InfoLabel[]> rr : infoLabels.entrySet()) {
|
||||
Player p0 = rr.getKey();
|
||||
final InfoLabel[] temp = rr.getValue();
|
||||
@@ -74,14 +71,7 @@ public class VGameDetails extends FContainer {
|
||||
temp[7].setText(CardFactoryUtil.getCommanderInfo(p0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param game */
|
||||
public void updateStormLabel(Game game) {
|
||||
if (!isVisible()) { return; } //No need to update if this panel isn't showing
|
||||
|
||||
stormLabel.setText("Storm count: " + game.getStack().getCardsCastThisTurn().size());
|
||||
stormLabel.setText("Storm count: " + FControl.getGame().getStack().getCardsCastThisTurn().size());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -95,4 +85,9 @@ public class VGameDetails extends FContainer {
|
||||
super(new FLabel.Builder());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return infoLabels.size();
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,9 @@ package forge.screens.match.views;
|
||||
|
||||
import forge.Forge.Graphics;
|
||||
import forge.toolbox.FCardPanel;
|
||||
import forge.toolbox.FContainer;
|
||||
import forge.utils.Utils;
|
||||
|
||||
public class VStack extends FContainer {
|
||||
public class VStack extends VDisplayArea {
|
||||
public static final float WIDTH = Utils.AVG_FINGER_WIDTH;
|
||||
public static final float HEIGHT = WIDTH * FCardPanel.ASPECT_RATIO;
|
||||
|
||||
@@ -13,8 +12,16 @@ public class VStack extends FContainer {
|
||||
setSize(WIDTH, HEIGHT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
//TODO
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -59,7 +59,10 @@ public abstract class FContainer extends FDisplayObject {
|
||||
}
|
||||
|
||||
public void revalidate() {
|
||||
doLayout(getWidth(), getHeight());
|
||||
float w = getWidth();
|
||||
float h = getHeight();
|
||||
if (w == 0 || h == 0) { return; } //don't revalidate if size not set yet
|
||||
doLayout(w, h);
|
||||
}
|
||||
|
||||
protected abstract void doLayout(float width, float height);
|
||||
|
||||
Reference in New Issue
Block a user