mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 03:08:02 +00:00
Flesh out VPhases
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user