Support custom achievement images for mobile app

This commit is contained in:
drdev
2014-09-17 03:04:18 +00:00
parent d8cc47c8a3
commit 6d0f1364be
2 changed files with 20 additions and 4 deletions

View File

@@ -7,6 +7,7 @@ import com.badlogic.gdx.math.Rectangle;
import forge.Graphics; import forge.Graphics;
import forge.achievement.Achievement; import forge.achievement.Achievement;
import forge.achievement.AchievementCollection; import forge.achievement.AchievementCollection;
import forge.assets.FImage;
import forge.assets.FSkinColor; import forge.assets.FSkinColor;
import forge.assets.FSkinFont; import forge.assets.FSkinFont;
import forge.assets.FSkinImage; import forge.assets.FSkinImage;
@@ -184,7 +185,7 @@ public class AchievementsPage extends TabPage<SettingsScreen> {
FSkinFont subTitleFont = FSkinFont.forHeight(subTitleHeight); FSkinFont subTitleFont = FSkinFont.forHeight(subTitleHeight);
float plateY = y + topHeight + shelfHeight - plateHeight; float plateY = y + topHeight + shelfHeight - plateHeight;
float trophyStartY = y + topHeight + (shelfHeight - trophyHeight - 12 * scale) / 2; float trophyStartY = y + topHeight + (shelfHeight - trophyHeight - 37 * scale) / 2;
float plateOffset = (trophyWidth - plateWidth) / 2; float plateOffset = (trophyWidth - plateWidth) / 2;
if (y + topHeight > 0) { if (y + topHeight > 0) {
@@ -222,7 +223,16 @@ public class AchievementsPage extends TabPage<SettingsScreen> {
} }
if (plateY + plateHeight > 0) { if (plateY + plateHeight > 0) {
if (achievement.earnedGold()) { FImage customImage = (FImage)achievement.getCustomImage();
if (customImage != null) {
float customImageWidth = customImage.getWidth() * scale;
float customImageHeight = customImage.getHeight() * scale;
g.drawImage(customImage,
x + (trophyWidth - customImageWidth) / 2 + 1f * scale, //TODO: Remove +1 when image centered properly
y + trophyHeight - customImageHeight + 8f * scale, //TODO: Remove +8 when gap below images removed
customImageWidth, customImageHeight);
}
else if (achievement.earnedGold()) {
g.drawImage(FSkinImage.GOLD_TROPHY, x, y, trophyWidth, trophyHeight); g.drawImage(FSkinImage.GOLD_TROPHY, x, y, trophyWidth, trophyHeight);
} }
else if (achievement.earnedSilver()) { else if (achievement.earnedSilver()) {

View File

@@ -2,6 +2,7 @@ package forge.achievement;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import forge.FThreads;
import forge.GuiBase; import forge.GuiBase;
import forge.assets.FSkinProp; import forge.assets.FSkinProp;
import forge.assets.ISkinImage; import forge.assets.ISkinImage;
@@ -91,9 +92,14 @@ public abstract class Achievement {
customImage = null; customImage = null;
return; return;
} }
String filename = ForgeConstants.CACHE_ACHIEVEMENT_PICS_DIR + imagePrefix + "_" + suffix + ".png"; final String filename = ForgeConstants.CACHE_ACHIEVEMENT_PICS_DIR + imagePrefix + "_" + suffix + ".png";
if (FileUtil.doesFileExist(filename)) { if (FileUtil.doesFileExist(filename)) {
FThreads.invokeInEdtNowOrLater(GuiBase.getInterface(), new Runnable() {
@Override
public void run() {
customImage = GuiBase.getInterface().getUnskinnedIcon(filename); customImage = GuiBase.getInterface().getUnskinnedIcon(filename);
}
});
return; return;
} }
customImage = null; customImage = null;