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 enableUIMask = false;
public static boolean enablePreloadExtendedArt = false; public static boolean enablePreloadExtendedArt = false;
public static String locale = "en-US"; public static String locale = "en-US";
public static boolean hdbuttons = false;
public static ApplicationListener getApp(Clipboard clipboard0, IDeviceAdapter deviceAdapter0, String assetDir0, boolean value) { public static ApplicationListener getApp(Clipboard clipboard0, IDeviceAdapter deviceAdapter0, String assetDir0, boolean value) {
if (GuiBase.getInterface() == null) { if (GuiBase.getInterface() == null) {

View File

@@ -190,6 +190,7 @@ public class FSkin {
final FileHandle f8 = getDefaultSkinFile(ForgeConstants.SPRITE_SLEEVES_FILE); final FileHandle f8 = getDefaultSkinFile(ForgeConstants.SPRITE_SLEEVES_FILE);
final FileHandle f9 = getDefaultSkinFile(ForgeConstants.SPRITE_SLEEVES2_FILE); final FileHandle f9 = getDefaultSkinFile(ForgeConstants.SPRITE_SLEEVES2_FILE);
final FileHandle f10 = getDefaultSkinFile(ForgeConstants.SPRITE_BORDER_FILE); final FileHandle f10 = getDefaultSkinFile(ForgeConstants.SPRITE_BORDER_FILE);
final FileHandle f11 = getSkinFile(ForgeConstants.SPRITE_BUTTONS_FILE);
try { try {
textures.put(f1.path(), new Texture(f1)); textures.put(f1.path(), new Texture(f1));
@@ -207,7 +208,13 @@ public class FSkin {
t.setFilter(Texture.TextureFilter.MipMapLinearLinear, Texture.TextureFilter.Linear); t.setFilter(Texture.TextureFilter.MipMapLinearLinear, Texture.TextureFilter.Linear);
textures.put(f7.path(), t); 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 //update colors
for (final FSkinColor.Colors c : FSkinColor.Colors.values()) { for (final FSkinColor.Colors c : FSkinColor.Colors.values()) {
c.setColor(new Color(preferredIcons.getPixel(c.getX(), c.getY()))); 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_LEFT (FSkinProp.IMG_BTN_DISABLED_LEFT, SourceFile.ICONS),
BTN_DISABLED_CENTER (FSkinProp.IMG_BTN_DISABLED_CENTER, SourceFile.ICONS), BTN_DISABLED_CENTER (FSkinProp.IMG_BTN_DISABLED_CENTER, SourceFile.ICONS),
BTN_DISABLED_RIGHT (FSkinProp.IMG_BTN_DISABLED_RIGHT, 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 //Foils
FOIL_01 (FSkinProp.FOIL_01, SourceFile.FOILS), FOIL_01 (FSkinProp.FOIL_01, SourceFile.FOILS),
@@ -312,6 +331,7 @@ public enum FSkinImage implements FImage {
TROPHIES(ForgeConstants.SPRITE_TROPHIES_FILE), TROPHIES(ForgeConstants.SPRITE_TROPHIES_FILE),
ABILITIES(ForgeConstants.SPRITE_ABILITY_FILE), ABILITIES(ForgeConstants.SPRITE_ABILITY_FILE),
BORDERS(ForgeConstants.SPRITE_BORDER_FILE), BORDERS(ForgeConstants.SPRITE_BORDER_FILE),
BUTTONS(ForgeConstants.SPRITE_BUTTONS_FILE),
MANAICONS(ForgeConstants.SPRITE_MANAICONS_FILE), MANAICONS(ForgeConstants.SPRITE_MANAICONS_FILE),
PLANAR_CONQUEST(ForgeConstants.SPRITE_PLANAR_CONQUEST_FILE); PLANAR_CONQUEST(ForgeConstants.SPRITE_PLANAR_CONQUEST_FILE);

View File

@@ -1,5 +1,6 @@
package forge.toolbox; package forge.toolbox;
import forge.Forge;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.Input.Keys;
@@ -54,10 +55,21 @@ public class FButton extends FDisplayObject implements IButton {
resetImg(); resetImg();
} }
private boolean hdbuttonskin(){
return Forge.hdbuttons;
}
private void resetImg() { private void resetImg() {
imgL = FSkinImage.BTN_UP_LEFT; if (hdbuttonskin())
imgM = FSkinImage.BTN_UP_CENTER; {
imgR = FSkinImage.BTN_UP_RIGHT; 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() { public String getText() {
@@ -83,9 +95,16 @@ public class FButton extends FDisplayObject implements IButton {
resetImg(); resetImg();
} }
else { else {
imgL = FSkinImage.BTN_DISABLED_LEFT; if (hdbuttonskin())
imgM = FSkinImage.BTN_DISABLED_CENTER; {
imgR = FSkinImage.BTN_DISABLED_RIGHT; 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;
}
} }
} }
@@ -102,17 +121,31 @@ public class FButton extends FDisplayObject implements IButton {
toggled = b0; toggled = b0;
if (toggled) { if (toggled) {
imgL = FSkinImage.BTN_TOGGLE_LEFT; if (hdbuttonskin())
imgM = FSkinImage.BTN_TOGGLE_CENTER; {
imgR = FSkinImage.BTN_TOGGLE_RIGHT; 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()) { else if (isEnabled()) {
resetImg(); resetImg();
} }
else { else {
imgL = FSkinImage.BTN_DISABLED_LEFT; if (hdbuttonskin())
imgM = FSkinImage.BTN_DISABLED_CENTER; {
imgR = FSkinImage.BTN_DISABLED_RIGHT; 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;
}
} }
} }
@@ -137,9 +170,18 @@ public class FButton extends FDisplayObject implements IButton {
@Override @Override
public final boolean press(float x, float y) { public final boolean press(float x, float y) {
if (isToggled()) { return true; } if (isToggled()) { return true; }
imgL = FSkinImage.BTN_DOWN_LEFT;
imgM = FSkinImage.BTN_DOWN_CENTER; if (hdbuttonskin())
imgR = FSkinImage.BTN_DOWN_RIGHT; {
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; 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_LEFT (new int[] {80, 200, 40, 40}, PropType.ICON),
IMG_BTN_DISABLED_CENTER (new int[] {120, 200, 1, 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), 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_FAV1 (new int[] {0, 0, 100, 100}, PropType.FAVICON),
IMG_FAV2 (new int[] {100, 0, 100, 100}, PropType.FAVICON), IMG_FAV2 (new int[] {100, 0, 100, 100}, PropType.FAVICON),
@@ -378,6 +397,7 @@ public enum FSkinProp {
TROPHY, TROPHY,
ABILITY, ABILITY,
BORDERS, BORDERS,
BUTTONS,
MANAICONS, MANAICONS,
PLANAR_CONQUEST, PLANAR_CONQUEST,
FAVICON 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_TROPHIES_FILE = "sprite_trophies.png";
public static final String SPRITE_ABILITY_FILE = "sprite_ability.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_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_MANAICONS_FILE = "sprite_manaicons.png";
public static final String SPRITE_AVATARS_FILE = "sprite_avatars.png"; public static final String SPRITE_AVATARS_FILE = "sprite_avatars.png";
public static final String SPRITE_SLEEVES_FILE = "sprite_sleeves.png"; public static final String SPRITE_SLEEVES_FILE = "sprite_sleeves.png";