Add Support for Upscaling Buttons on Mobile Forge

This commit is contained in:
Anthony Calosa
2020-02-23 19:10:11 +08:00
parent 645a11f9c3
commit 81c06f230a
7 changed files with 107 additions and 16 deletions

View File

@@ -66,6 +66,7 @@ public class Forge implements ApplicationListener {
public static boolean enableUIMask = false;
public static boolean enablePreloadExtendedArt = false;
public static String locale = "en-US";
public static boolean hdbuttons = false;
public static ApplicationListener getApp(Clipboard clipboard0, IDeviceAdapter deviceAdapter0, String assetDir0, boolean value) {
if (GuiBase.getInterface() == null) {

View File

@@ -190,6 +190,7 @@ public class FSkin {
final FileHandle f8 = getDefaultSkinFile(ForgeConstants.SPRITE_SLEEVES_FILE);
final FileHandle f9 = getDefaultSkinFile(ForgeConstants.SPRITE_SLEEVES2_FILE);
final FileHandle f10 = getDefaultSkinFile(ForgeConstants.SPRITE_BORDER_FILE);
final FileHandle f11 = getSkinFile(ForgeConstants.SPRITE_BUTTONS_FILE);
try {
textures.put(f1.path(), new Texture(f1));
@@ -207,7 +208,13 @@ public class FSkin {
t.setFilter(Texture.TextureFilter.MipMapLinearLinear, Texture.TextureFilter.Linear);
textures.put(f7.path(), t);
}
//hdbuttons
if (f11.exists()) {
Texture tf11 = new Texture(f11, true);
tf11.setFilter(Texture.TextureFilter.MipMapLinearLinear, Texture.TextureFilter.Linear);
textures.put(f11.path(), tf11);
Forge.hdbuttons = true;
} else { Forge.hdbuttons = false; } //how to refresh buttons when a theme don't have hd buttons?
//update colors
for (final FSkinColor.Colors c : FSkinColor.Colors.values()) {
c.setColor(new Color(preferredIcons.getPixel(c.getX(), c.getY())));

View File

@@ -228,6 +228,25 @@ public enum FSkinImage implements FImage {
BTN_DISABLED_LEFT (FSkinProp.IMG_BTN_DISABLED_LEFT, SourceFile.ICONS),
BTN_DISABLED_CENTER (FSkinProp.IMG_BTN_DISABLED_CENTER, SourceFile.ICONS),
BTN_DISABLED_RIGHT (FSkinProp.IMG_BTN_DISABLED_RIGHT, SourceFile.ICONS),
//Hdbuttons
HDBTN_UP_LEFT (FSkinProp.IMG_HDBTN_UP_LEFT, SourceFile.BUTTONS),
HDBTN_UP_CENTER (FSkinProp.IMG_HDBTN_UP_CENTER, SourceFile.BUTTONS),
HDBTN_UP_RIGHT (FSkinProp.IMG_HDBTN_UP_RIGHT, SourceFile.BUTTONS),
HDBTN_OVER_LEFT (FSkinProp.IMG_HDBTN_OVER_LEFT, SourceFile.BUTTONS),
HDBTN_OVER_CENTER (FSkinProp.IMG_HDBTN_OVER_CENTER, SourceFile.BUTTONS),
HDBTN_OVER_RIGHT (FSkinProp.IMG_HDBTN_OVER_RIGHT, SourceFile.BUTTONS),
HDBTN_DOWN_LEFT (FSkinProp.IMG_HDBTN_DOWN_LEFT, SourceFile.BUTTONS),
HDBTN_DOWN_CENTER (FSkinProp.IMG_HDBTN_DOWN_CENTER, SourceFile.BUTTONS),
HDBTN_DOWN_RIGHT (FSkinProp.IMG_HDBTN_DOWN_RIGHT, SourceFile.BUTTONS),
HDBTN_FOCUS_LEFT (FSkinProp.IMG_HDBTN_FOCUS_LEFT, SourceFile.BUTTONS),
HDBTN_FOCUS_CENTER (FSkinProp.IMG_HDBTN_FOCUS_CENTER, SourceFile.BUTTONS),
HDBTN_FOCUS_RIGHT (FSkinProp.IMG_HDBTN_FOCUS_RIGHT, SourceFile.BUTTONS),
HDBTN_TOGGLE_LEFT (FSkinProp.IMG_HDBTN_TOGGLE_LEFT, SourceFile.BUTTONS),
HDBTN_TOGGLE_CENTER (FSkinProp.IMG_HDBTN_TOGGLE_CENTER, SourceFile.BUTTONS),
HDBTN_TOGGLE_RIGHT (FSkinProp.IMG_HDBTN_TOGGLE_RIGHT, SourceFile.BUTTONS),
HDBTN_DISABLED_LEFT (FSkinProp.IMG_HDBTN_DISABLED_LEFT, SourceFile.BUTTONS),
HDBTN_DISABLED_CENTER (FSkinProp.IMG_HDBTN_DISABLED_CENTER, SourceFile.BUTTONS),
HDBTN_DISABLED_RIGHT (FSkinProp.IMG_HDBTN_DISABLED_RIGHT, SourceFile.BUTTONS),
//Foils
FOIL_01 (FSkinProp.FOIL_01, SourceFile.FOILS),
@@ -312,6 +331,7 @@ public enum FSkinImage implements FImage {
TROPHIES(ForgeConstants.SPRITE_TROPHIES_FILE),
ABILITIES(ForgeConstants.SPRITE_ABILITY_FILE),
BORDERS(ForgeConstants.SPRITE_BORDER_FILE),
BUTTONS(ForgeConstants.SPRITE_BUTTONS_FILE),
MANAICONS(ForgeConstants.SPRITE_MANAICONS_FILE),
PLANAR_CONQUEST(ForgeConstants.SPRITE_PLANAR_CONQUEST_FILE);

View File

@@ -1,5 +1,6 @@
package forge.toolbox;
import forge.Forge;
import org.apache.commons.lang3.StringUtils;
import com.badlogic.gdx.Input.Keys;
@@ -54,11 +55,22 @@ public class FButton extends FDisplayObject implements IButton {
resetImg();
}
private boolean hdbuttonskin(){
return Forge.hdbuttons;
}
private void resetImg() {
if (hdbuttonskin())
{
imgL = FSkinImage.HDBTN_UP_LEFT;
imgM = FSkinImage.HDBTN_UP_CENTER;
imgR = FSkinImage.HDBTN_UP_RIGHT;
} else {
imgL = FSkinImage.BTN_UP_LEFT;
imgM = FSkinImage.BTN_UP_CENTER;
imgR = FSkinImage.BTN_UP_RIGHT;
}
}
public String getText() {
return text;
@@ -83,11 +95,18 @@ public class FButton extends FDisplayObject implements IButton {
resetImg();
}
else {
if (hdbuttonskin())
{
imgL = FSkinImage.HDBTN_DISABLED_LEFT;
imgM = FSkinImage.HDBTN_DISABLED_CENTER;
imgR = FSkinImage.HDBTN_DISABLED_RIGHT;
} else {
imgL = FSkinImage.BTN_DISABLED_LEFT;
imgM = FSkinImage.BTN_DISABLED_CENTER;
imgR = FSkinImage.BTN_DISABLED_RIGHT;
}
}
}
/**
* Button toggle state, for a "permanently pressed" functionality, e.g. as a tab.
@@ -102,19 +121,33 @@ public class FButton extends FDisplayObject implements IButton {
toggled = b0;
if (toggled) {
if (hdbuttonskin())
{
imgL = FSkinImage.HDBTN_TOGGLE_LEFT;
imgM = FSkinImage.HDBTN_TOGGLE_CENTER;
imgR = FSkinImage.HDBTN_TOGGLE_RIGHT;
} else {
imgL = FSkinImage.BTN_TOGGLE_LEFT;
imgM = FSkinImage.BTN_TOGGLE_CENTER;
imgR = FSkinImage.BTN_TOGGLE_RIGHT;
}
}
else if (isEnabled()) {
resetImg();
}
else {
if (hdbuttonskin())
{
imgL = FSkinImage.HDBTN_DISABLED_LEFT;
imgM = FSkinImage.HDBTN_DISABLED_CENTER;
imgR = FSkinImage.HDBTN_DISABLED_RIGHT;
} else {
imgL = FSkinImage.BTN_DISABLED_LEFT;
imgM = FSkinImage.BTN_DISABLED_CENTER;
imgR = FSkinImage.BTN_DISABLED_RIGHT;
}
}
}
public Corner getCorner() {
return corner;
@@ -137,9 +170,18 @@ public class FButton extends FDisplayObject implements IButton {
@Override
public final boolean press(float x, float y) {
if (isToggled()) { return true; }
if (hdbuttonskin())
{
imgL = FSkinImage.HDBTN_DOWN_LEFT;
imgM = FSkinImage.HDBTN_DOWN_CENTER;
imgR = FSkinImage.HDBTN_DOWN_RIGHT;
} else {
imgL = FSkinImage.BTN_DOWN_LEFT;
imgM = FSkinImage.BTN_DOWN_CENTER;
imgR = FSkinImage.BTN_DOWN_RIGHT;
}
return true;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@@ -284,6 +284,25 @@ public enum FSkinProp {
IMG_BTN_DISABLED_LEFT (new int[] {80, 200, 40, 40}, PropType.ICON),
IMG_BTN_DISABLED_CENTER (new int[] {120, 200, 1, 40}, PropType.ICON),
IMG_BTN_DISABLED_RIGHT (new int[] {160, 200, 40, 40}, PropType.ICON),
//hd buttons
IMG_HDBTN_UP_LEFT (new int[] {2, 2, 160, 165}, PropType.BUTTONS),
IMG_HDBTN_UP_CENTER (new int[] {162, 2, 1, 165}, PropType.BUTTONS),
IMG_HDBTN_UP_RIGHT (new int[] {322, 2, 160, 165}, PropType.BUTTONS),
IMG_HDBTN_OVER_LEFT (new int[] {2, 169, 160, 165}, PropType.BUTTONS),
IMG_HDBTN_OVER_CENTER (new int[] {162, 169, 1, 165}, PropType.BUTTONS),
IMG_HDBTN_OVER_RIGHT (new int[] {322, 169, 160, 165}, PropType.BUTTONS),
IMG_HDBTN_DOWN_LEFT (new int[] {2, 336, 160, 165}, PropType.BUTTONS),
IMG_HDBTN_DOWN_CENTER (new int[] {162, 336, 1, 165}, PropType.BUTTONS),
IMG_HDBTN_DOWN_RIGHT (new int[] {322, 336, 160, 165}, PropType.BUTTONS),
IMG_HDBTN_FOCUS_LEFT (new int[] {2, 503, 160, 165}, PropType.BUTTONS),
IMG_HDBTN_FOCUS_CENTER (new int[] {162, 503, 1, 165}, PropType.BUTTONS),
IMG_HDBTN_FOCUS_RIGHT (new int[] {322, 503, 160, 165}, PropType.BUTTONS),
IMG_HDBTN_TOGGLE_LEFT (new int[] {2, 670, 160, 165}, PropType.BUTTONS),
IMG_HDBTN_TOGGLE_CENTER (new int[] {162, 670, 1, 165}, PropType.BUTTONS),
IMG_HDBTN_TOGGLE_RIGHT (new int[] {322, 670, 160, 165}, PropType.BUTTONS),
IMG_HDBTN_DISABLED_LEFT (new int[] {2, 837, 160, 165}, PropType.BUTTONS),
IMG_HDBTN_DISABLED_CENTER (new int[] {162, 837, 1, 165}, PropType.BUTTONS),
IMG_HDBTN_DISABLED_RIGHT (new int[] {322, 837, 160, 165}, PropType.BUTTONS),
IMG_FAV1 (new int[] {0, 0, 100, 100}, PropType.FAVICON),
IMG_FAV2 (new int[] {100, 0, 100, 100}, PropType.FAVICON),
@@ -378,6 +397,7 @@ public enum FSkinProp {
TROPHY,
ABILITY,
BORDERS,
BUTTONS,
MANAICONS,
PLANAR_CONQUEST,
FAVICON

View File

@@ -95,6 +95,7 @@ public final class ForgeConstants {
public static final String SPRITE_TROPHIES_FILE = "sprite_trophies.png";
public static final String SPRITE_ABILITY_FILE = "sprite_ability.png";
public static final String SPRITE_BORDER_FILE = "sprite_border.png";
public static final String SPRITE_BUTTONS_FILE = "sprite_buttons.png";
public static final String SPRITE_MANAICONS_FILE = "sprite_manaicons.png";
public static final String SPRITE_AVATARS_FILE = "sprite_avatars.png";
public static final String SPRITE_SLEEVES_FILE = "sprite_sleeves.png";