v0.6.1: improvements to badges and badges scene:

- badges scene now shows as many blanks as missing badges
- badges scene is a bit more condensed on phone screens
- YASD badge now covers death by falling/glyph
- games played badges reduced from 10/100/500/200 to 10/50/250/1000
- A couple of badges no longer override others
This commit is contained in:
Evan Debenham 2017-07-17 15:07:18 -04:00 committed by Evan Debenham
parent 82f58507e7
commit 9924f5d28d
3 changed files with 44 additions and 33 deletions
core/src/main
java/com/shatteredpixel/shatteredpixeldungeon
resources/com/shatteredpixel/shatteredpixeldungeon/messages/misc

View File

@ -523,19 +523,25 @@ public class Badges {
Badge badge = Badge.DEATH_FROM_GLYPH;
local.add( badge );
displayBadge( badge );
validateYASD();
}
public static void validateDeathFromFalling() {
Badge badge = Badge.DEATH_FROM_FALLING;
local.add( badge );
displayBadge( badge );
validateYASD();
}
private static void validateYASD() {
if (global.contains( Badge.DEATH_FROM_FIRE ) &&
global.contains( Badge.DEATH_FROM_POISON ) &&
global.contains( Badge.DEATH_FROM_GAS ) &&
global.contains( Badge.DEATH_FROM_HUNGER)) {
global.contains( Badge.DEATH_FROM_HUNGER) &&
global.contains( Badge.DEATH_FROM_GLYPH) &&
global.contains( Badge.DEATH_FROM_FALLING)) {
Badge badge = Badge.YASD;
local.add( badge );
@ -793,13 +799,13 @@ public class Badges {
if (Rankings.INSTANCE.totalNumber >= 10) {
badge = Badge.GAMES_PLAYED_1;
}
if (Rankings.INSTANCE.totalNumber >= 100) {
if (Rankings.INSTANCE.totalNumber >= 50) {
badge = Badge.GAMES_PLAYED_2;
}
if (Rankings.INSTANCE.totalNumber >= 500) {
if (Rankings.INSTANCE.totalNumber >= 250) {
badge = Badge.GAMES_PLAYED_3;
}
if (Rankings.INSTANCE.totalNumber >= 2000) {
if (Rankings.INSTANCE.totalNumber >= 1000) {
badge = Badge.GAMES_PLAYED_4;
}
@ -870,11 +876,12 @@ public class Badges {
leaveBest( filtered, Badge.FOOD_EATEN_1, Badge.FOOD_EATEN_2, Badge.FOOD_EATEN_3, Badge.FOOD_EATEN_4 );
leaveBest( filtered, Badge.ITEM_LEVEL_1, Badge.ITEM_LEVEL_2, Badge.ITEM_LEVEL_3, Badge.ITEM_LEVEL_4 );
leaveBest( filtered, Badge.POTIONS_COOKED_1, Badge.POTIONS_COOKED_2, Badge.POTIONS_COOKED_3, Badge.POTIONS_COOKED_4 );
leaveBest( filtered, Badge.BOSS_SLAIN_1_ALL_CLASSES, Badge.BOSS_SLAIN_3_ALL_SUBCLASSES );
leaveBest( filtered, Badge.DEATH_FROM_FIRE, Badge.YASD );
leaveBest( filtered, Badge.DEATH_FROM_GAS, Badge.YASD );
leaveBest( filtered, Badge.DEATH_FROM_HUNGER, Badge.YASD );
leaveBest( filtered, Badge.DEATH_FROM_POISON, Badge.YASD );
leaveBest( filtered, Badge.DEATH_FROM_GLYPH, Badge.YASD );
leaveBest( filtered, Badge.DEATH_FROM_FALLING, Badge.YASD );
leaveBest( filtered, Badge.ALL_WEAPONS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED );
leaveBest( filtered, Badge.ALL_ARMOR_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED );
leaveBest( filtered, Badge.ALL_WANDS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED );
@ -882,9 +889,6 @@ public class Badges {
leaveBest( filtered, Badge.ALL_ARTIFACTS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED );
leaveBest( filtered, Badge.ALL_POTIONS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED );
leaveBest( filtered, Badge.ALL_SCROLLS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED );
leaveBest( filtered, Badge.VICTORY, Badge.VICTORY_ALL_CLASSES );
leaveBest( filtered, Badge.VICTORY, Badge.HAPPY_END );
leaveBest( filtered, Badge.VICTORY, Badge.CHAMPION );
leaveBest( filtered, Badge.GAMES_PLAYED_1, Badge.GAMES_PLAYED_2, Badge.GAMES_PLAYED_3, Badge.GAMES_PLAYED_4 );
ArrayList<Badge> list = new ArrayList<Badge>( filtered );

View File

@ -61,16 +61,8 @@ public class BadgesScene extends PixelScene {
archs.setSize( w, h );
add( archs );
float pw = Math.min( w, (ShatteredPixelDungeon.landscape() ? MIN_WIDTH_L : MIN_WIDTH_P) * 3 ) - 16;
float ph = Math.min( h, (ShatteredPixelDungeon.landscape() ? MIN_HEIGHT_L : MIN_HEIGHT_P) * 3 ) - 32;
float size = (float)Math.sqrt( pw * ph / 27f );
int nCols = (int)Math.ceil( pw / size );
int nRows = (int)Math.ceil( ph / size );
size = Math.min( pw / nCols, ph / nRows );
float left = (w - size * nCols) / 2;
float top = (h - size * nRows) / 2;
float left = 5;
float top = 15;
RenderedText title = PixelScene.renderText( Messages.get(this, "title"), 9 );
title.hardlight(Window.TITLE_COLOR);
@ -82,17 +74,32 @@ public class BadgesScene extends PixelScene {
Badges.loadGlobal();
List<Badges.Badge> badges = Badges.filtered( true );
for (int i=0; i < nRows; i++) {
for (int j=0; j < nCols; j++) {
int index = i * nCols + j;
Badges.Badge b = index < badges.size() ? badges.get( index ) : null;
BadgeButton button = new BadgeButton( b );
button.setPos(
left + j * size + (size - button.width()) / 2,
top + i * size + (size - button.height()) / 2);
align(button);
add( button );
}
int blankBadges = 34;
blankBadges -= badges.size();
if (badges.contains(Badges.Badge.ALL_ITEMS_IDENTIFIED)) blankBadges -= 6;
if (badges.contains(Badges.Badge.YASD)) blankBadges -= 5;
blankBadges = Math.max(0, blankBadges);
//guarantees a max of 5 rows in landscape, and 8 in portrait, assuming a max of 40 buttons
int nCols = ShatteredPixelDungeon.landscape() ? 7 : 4;
if (badges.size() + blankBadges > 32 && !ShatteredPixelDungeon.landscape()) nCols++;
int nRows = 1 + (blankBadges + badges.size())/nCols;
float badgeWidth = (w - 2*left)/nCols;
float badgeHeight = (h - 2*top)/nRows;
for (int i = 0; i < badges.size() + blankBadges; i++){
int row = i / nCols;
int col = i % nCols;
Badges.Badge b = i < badges.size() ? badges.get( i ) : null;
BadgeButton button = new BadgeButton( b );
button.setPos(
left + col * badgeWidth + (badgeWidth - button.width()) / 2,
top + row * badgeHeight + (badgeHeight - button.height()) / 2);
align(button);
add( button );
}
ExitButton btnExit = new ExitButton();

View File

@ -28,7 +28,7 @@ badges$badge.death_from_gas=Death from toxic gas
badges$badge.death_from_hunger=Death from hunger
badges$badge.death_from_glyph=Death from a glyph
badges$badge.death_from_falling=Death from falling down
badges$badge.yasd=Death from fire, poison, toxic gas & hunger
badges$badge.yasd=Death from fire, poison, toxic gas, hunger, glyph, and falling
badges$badge.boss_slain_1=1st boss slain
badges$badge.boss_slain_2=2nd boss slain
badges$badge.boss_slain_3=3rd boss slain
@ -59,9 +59,9 @@ badges$badge.no_monsters_slain=Level completed without killing any monsters
badges$badge.grim_weapon=Monster killed by a Grim weapon
badges$badge.piranhas=6 piranhas killed
badges$badge.games_played_1=10 games played
badges$badge.games_played_2=100 games played
badges$badge.games_played_3=500 games played
badges$badge.games_played_4=2000 games played
badges$badge.games_played_2=50 games played
badges$badge.games_played_3=250 games played
badges$badge.games_played_4=1000 games played
badges$badge.happy_end=Happy end
badges$badge.champion=Challenge won