Flesh out VPhases

This commit is contained in:
drdev
2014-03-03 04:12:45 +00:00
parent ddae64716b
commit 61bb0cd8b6
2 changed files with 107 additions and 3 deletions

View File

@@ -1,16 +1,63 @@
package forge.screens.match.views; package forge.screens.match.views;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
import forge.Forge.Graphics; import forge.Forge.Graphics;
import forge.assets.FSkinColor;
import forge.assets.FSkinFont;
import forge.assets.FSkinColor.Colors;
import forge.game.phase.PhaseType;
import forge.toolbox.FContainer; import forge.toolbox.FContainer;
import forge.toolbox.FDisplayObject;
public class VPhases extends FContainer { public class VPhases extends FContainer {
private static final FSkinFont labelFont = FSkinFont.get(12);
private final Map<PhaseType, PhaseLabel> phaseLabels = new HashMap<PhaseType, PhaseLabel>();
public VPhases() {
addPhaseLabel("UP", PhaseType.UPKEEP);
addPhaseLabel("DR", PhaseType.DRAW);
addPhaseLabel("M1", PhaseType.MAIN1);
addPhaseLabel("BC", PhaseType.COMBAT_BEGIN);
addPhaseLabel("DA", PhaseType.COMBAT_DECLARE_ATTACKERS);
addPhaseLabel("DB", PhaseType.COMBAT_DECLARE_BLOCKERS);
addPhaseLabel("FS", PhaseType.COMBAT_FIRST_STRIKE_DAMAGE);
addPhaseLabel("CD", PhaseType.COMBAT_DAMAGE);
addPhaseLabel("EC", PhaseType.COMBAT_END);
addPhaseLabel("M2", PhaseType.MAIN2);
addPhaseLabel("ET", PhaseType.END_OF_TURN);
addPhaseLabel("CL", PhaseType.CLEANUP);
}
private void addPhaseLabel(String caption, PhaseType phaseType) {
phaseLabels.put(phaseType, add(new PhaseLabel(caption, phaseType)));
}
public void resetPhaseButtons() {
for (PhaseLabel lbl : phaseLabels.values()) {
lbl.setActive(false);
}
}
@Override @Override
protected void doLayout(float width, float height) { protected void doLayout(float width, float height) {
// TODO Auto-generated method stub float y = 0;
float labelHeight = height / phaseLabels.size();
for (FDisplayObject lbl : getChildren()) {
lbl.setBounds(0, y, width, labelHeight);
y += labelHeight;
}
} }
@Override @Override
@@ -19,4 +66,62 @@ public class VPhases extends FContainer {
float h = getHeight(); float h = getHeight();
g.fillRect(Color.CYAN, 0, 0, w, h); g.fillRect(Color.CYAN, 0, 0, w, h);
} }
private class PhaseLabel extends FDisplayObject {
private final String caption;
private final PhaseType phaseType;
private boolean stopAtPhase = false;
private boolean active = false;
public PhaseLabel(String caption0, PhaseType phaseType0) {
caption = caption0;
phaseType = phaseType0;
}
public boolean getActive() {
return active;
}
public void setActive(boolean active0) {
active = active0;
}
public boolean getStopAtPhase() {
return stopAtPhase;
}
public void setStopAtPhase(boolean stopAtPhase0) {
stopAtPhase = stopAtPhase0;
}
@Override
public boolean tap(float x, float y, int count) {
stopAtPhase = !stopAtPhase;
return true;
}
@Override
public void draw(final Graphics g) {
float w = getWidth();
float h = getHeight();
FSkinColor c;
// Set color according to skip or active state of label
if (active && stopAtPhase) {
c = FSkinColor.get(Colors.CLR_PHASE_ACTIVE_ENABLED);
}
else if (!active && stopAtPhase) {
c = FSkinColor.get(Colors.CLR_PHASE_INACTIVE_ENABLED);
}
else if (active && !stopAtPhase) {
c = FSkinColor.get(Colors.CLR_PHASE_ACTIVE_DISABLED);
}
else {
c = FSkinColor.get(Colors.CLR_PHASE_INACTIVE_DISABLED);
}
// Center vertically and horizontally. Show border if active.
//g.fillRoundRect(1, 1, w - 2, h - 2, 5, 5);
g.fillRect(c, 1, 1, w - 2, h - 2);
g.drawText(caption, labelFont, Color.BLACK, 0, 0, w, h, false, HAlignment.CENTER, true);
}
}
} }

View File

@@ -39,7 +39,6 @@ public class VPrompt extends FContainer {
float h = getHeight(); float h = getHeight();
g.fillRect(backColor, 0, 0, w, h); g.fillRect(backColor, 0, 0, w, h);
g.drawLine(foreColor, 0, 0, w, 0);
g.drawText(message, font, foreColor, BTN_WIDTH, 0, w - 2 * BTN_WIDTH, h, g.drawText(message, font, foreColor, BTN_WIDTH, 0, w - 2 * BTN_WIDTH, h,
true, HAlignment.CENTER, true); true, HAlignment.CENTER, true);
} }