mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
Improve corner button appearance
This commit is contained in:
@@ -10,14 +10,14 @@ import forge.assets.FSkinFont;
|
|||||||
import forge.assets.FSkinColor.Colors;
|
import forge.assets.FSkinColor.Colors;
|
||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.screens.match.FControl;
|
import forge.screens.match.FControl;
|
||||||
import forge.screens.match.input.ButtonUtil;
|
|
||||||
import forge.toolbox.FButton;
|
import forge.toolbox.FButton;
|
||||||
|
import forge.toolbox.FButton.Corner;
|
||||||
import forge.toolbox.FContainer;
|
import forge.toolbox.FContainer;
|
||||||
import forge.utils.Utils;
|
import forge.utils.Utils;
|
||||||
|
|
||||||
public class VPrompt extends FContainer {
|
public class VPrompt extends FContainer {
|
||||||
public static final float BTN_WIDTH = Utils.AVG_FINGER_WIDTH;
|
|
||||||
public static final float HEIGHT = Utils.AVG_FINGER_HEIGHT;
|
public static final float HEIGHT = Utils.AVG_FINGER_HEIGHT;
|
||||||
|
public static final float BTN_WIDTH = HEIGHT * 1.5f;
|
||||||
|
|
||||||
private static final FSkinColor backColor = FSkinColor.get(Colors.CLR_THEME2);
|
private static final FSkinColor backColor = FSkinColor.get(Colors.CLR_THEME2);
|
||||||
private static final FSkinColor foreColor = FSkinColor.get(Colors.CLR_TEXT);
|
private static final FSkinColor foreColor = FSkinColor.get(Colors.CLR_TEXT);
|
||||||
@@ -41,6 +41,8 @@ public class VPrompt extends FContainer {
|
|||||||
}));
|
}));
|
||||||
btnOk.setSize(BTN_WIDTH, HEIGHT);
|
btnOk.setSize(BTN_WIDTH, HEIGHT);
|
||||||
btnCancel.setSize(BTN_WIDTH, HEIGHT);
|
btnCancel.setSize(BTN_WIDTH, HEIGHT);
|
||||||
|
btnOk.setCorner(Corner.BottomLeft);
|
||||||
|
btnCancel.setCorner(Corner.BottomRight);
|
||||||
}
|
}
|
||||||
|
|
||||||
public FButton getBtnOk() {
|
public FButton getBtnOk() {
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import forge.assets.FSkinFont;
|
|||||||
import forge.assets.FSkinImage;
|
import forge.assets.FSkinImage;
|
||||||
|
|
||||||
public class FButton extends FDisplayObject {
|
public class FButton extends FDisplayObject {
|
||||||
private static final int insetX = 25;
|
|
||||||
private static final FSkinColor FORE_COLOR = FSkinColor.get(Colors.CLR_TEXT);
|
private static final FSkinColor FORE_COLOR = FSkinColor.get(Colors.CLR_TEXT);
|
||||||
private static final Color DISABLED_COMPOSITE = new Color(1, 1, 1, 0.25f);
|
private static final Color DISABLED_COMPOSITE = new Color(1, 1, 1, 0.25f);
|
||||||
private static final FSkinColor DISABLED_FORE_COLOR = FORE_COLOR.alphaColor(DISABLED_COMPOSITE.a);
|
private static final FSkinColor DISABLED_FORE_COLOR = FORE_COLOR.alphaColor(DISABLED_COMPOSITE.a);
|
||||||
@@ -23,6 +22,13 @@ public class FButton extends FDisplayObject {
|
|||||||
private boolean toggled = false;
|
private boolean toggled = false;
|
||||||
private Runnable command;
|
private Runnable command;
|
||||||
|
|
||||||
|
public enum Corner {
|
||||||
|
None,
|
||||||
|
BottomLeft,
|
||||||
|
BottomRight
|
||||||
|
}
|
||||||
|
private Corner corner = Corner.None;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new FButton.
|
* Instantiates a new FButton.
|
||||||
*/
|
*/
|
||||||
@@ -96,6 +102,13 @@ public class FButton extends FDisplayObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Corner getCorner() {
|
||||||
|
return corner;
|
||||||
|
}
|
||||||
|
public void setCorner(Corner corner0) {
|
||||||
|
corner = corner0;
|
||||||
|
}
|
||||||
|
|
||||||
public void setCommand(Runnable command0) {
|
public void setCommand(Runnable command0) {
|
||||||
command = command0;
|
command = command0;
|
||||||
}
|
}
|
||||||
@@ -129,6 +142,11 @@ public class FButton extends FDisplayObject {
|
|||||||
float w = getWidth();
|
float w = getWidth();
|
||||||
float h = getHeight();
|
float h = getHeight();
|
||||||
|
|
||||||
|
float cornerButtonWidth = w / 2;
|
||||||
|
float cornerButtonHeight = h * 1.5f;
|
||||||
|
float cornerTextOffsetX = cornerButtonWidth / 2;
|
||||||
|
float cornerTextOffsetY = (cornerButtonHeight - h) / 2;
|
||||||
|
|
||||||
FSkinColor foreColor = FORE_COLOR;
|
FSkinColor foreColor = FORE_COLOR;
|
||||||
boolean disabled = !isEnabled();
|
boolean disabled = !isEnabled();
|
||||||
if (disabled) {
|
if (disabled) {
|
||||||
@@ -136,15 +154,31 @@ public class FButton extends FDisplayObject {
|
|||||||
foreColor = DISABLED_FORE_COLOR;
|
foreColor = DISABLED_FORE_COLOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//determine images to draw and text alignment based on which corner button is in (if any)
|
||||||
|
switch (corner) {
|
||||||
|
case None:
|
||||||
if (w > 2 * h) {
|
if (w > 2 * h) {
|
||||||
g.drawImage(imgL, 0, 0, h, h);
|
g.drawImage(imgL, 0, 0, h, h);
|
||||||
g.drawImage(imgM, h, 0, w - (2 * h), h);
|
g.drawImage(imgM, h, 0, w - (2 * h), h);
|
||||||
g.drawImage(imgR, w - h, 0, h, h);
|
g.drawImage(imgR, w - h, 0, h, h);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
float buttonWidth = w / 2;
|
g.drawImage(imgL, 0, 0, cornerButtonWidth, h);
|
||||||
g.drawImage(imgL, 0, 0, buttonWidth, h);
|
g.drawImage(imgR, cornerButtonWidth, 0, w - cornerButtonWidth, h);
|
||||||
g.drawImage(imgR, buttonWidth, 0, w - buttonWidth, h);
|
}
|
||||||
|
break;
|
||||||
|
case BottomLeft:
|
||||||
|
g.drawImage(imgM, 0, 0, cornerButtonWidth, cornerButtonHeight);
|
||||||
|
g.drawImage(imgR, cornerButtonWidth, 0, cornerButtonWidth, cornerButtonHeight);
|
||||||
|
w -= cornerTextOffsetX;
|
||||||
|
h += cornerTextOffsetY;
|
||||||
|
break;
|
||||||
|
case BottomRight:
|
||||||
|
g.drawImage(imgL, 0, 0, cornerButtonWidth, cornerButtonHeight);
|
||||||
|
g.drawImage(imgM, cornerButtonWidth, 0, cornerButtonWidth, cornerButtonHeight);
|
||||||
|
w += cornerTextOffsetX;
|
||||||
|
h += cornerTextOffsetY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (disabled) {
|
if (disabled) {
|
||||||
@@ -152,7 +186,7 @@ public class FButton extends FDisplayObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!StringUtils.isEmpty(text)) {
|
if (!StringUtils.isEmpty(text)) {
|
||||||
g.drawText(text, font, foreColor, insetX, 0, w - 2 * insetX, h, false, HAlignment.CENTER, true);
|
g.drawText(text, font, foreColor, 0, 0, w, h, false, HAlignment.CENTER, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user