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:
parent
82f58507e7
commit
9924f5d28d
core/src/main
java/com/shatteredpixel/shatteredpixeldungeon
resources/com/shatteredpixel/shatteredpixeldungeon/messages/misc
|
@ -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 );
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user