v0.9.0a: Added a check for replaced badges when badges are loaded/saved
This commit is contained in:
parent
d14cafa190
commit
714349f769
|
@ -212,10 +212,14 @@ public class Badges {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addReplacedBadges(badges);
|
||||||
|
|
||||||
return badges;
|
return badges;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void store( Bundle bundle, HashSet<Badge> badges ) {
|
public static void store( Bundle bundle, HashSet<Badge> badges ) {
|
||||||
|
addReplacedBadges(badges);
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
String names[] = new String[badges.size()];
|
String names[] = new String[badges.size()];
|
||||||
|
|
||||||
|
@ -239,16 +243,6 @@ public class Badges {
|
||||||
Bundle bundle = FileUtils.bundleFromFile( BADGES_FILE );
|
Bundle bundle = FileUtils.bundleFromFile( BADGES_FILE );
|
||||||
global = restore( bundle );
|
global = restore( bundle );
|
||||||
|
|
||||||
//fixes a bug with challenge badges in pre-0.9.0 saves
|
|
||||||
if (global.contains(Badge.CHAMPION_3)){
|
|
||||||
saveNeeded = !global.contains(Badge.CHAMPION_2) || global.contains(Badge.CHAMPION_1);
|
|
||||||
global.add(Badge.CHAMPION_2);
|
|
||||||
global.add(Badge.CHAMPION_1);
|
|
||||||
} else if (global.contains(Badge.CHAMPION_2)){
|
|
||||||
saveNeeded = !global.contains(Badge.CHAMPION_1);
|
|
||||||
global.add(Badge.CHAMPION_1);
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
global = new HashSet<>();
|
global = new HashSet<>();
|
||||||
}
|
}
|
||||||
|
@ -896,6 +890,36 @@ public class Badges {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Badge[][] tierBadgeReplacements = new Badge[][]{
|
||||||
|
{Badge.MONSTERS_SLAIN_1, Badge.MONSTERS_SLAIN_2, Badge.MONSTERS_SLAIN_3, Badge.MONSTERS_SLAIN_4},
|
||||||
|
{Badge.GOLD_COLLECTED_1, Badge.GOLD_COLLECTED_2, Badge.GOLD_COLLECTED_3, Badge.GOLD_COLLECTED_4},
|
||||||
|
{Badge.ITEM_LEVEL_1, Badge.ITEM_LEVEL_2, Badge.ITEM_LEVEL_3, Badge.ITEM_LEVEL_4},
|
||||||
|
{Badge.LEVEL_REACHED_1, Badge.LEVEL_REACHED_2, Badge.LEVEL_REACHED_3, Badge.LEVEL_REACHED_4},
|
||||||
|
{Badge.STRENGTH_ATTAINED_1, Badge.STRENGTH_ATTAINED_2, Badge.STRENGTH_ATTAINED_3, Badge.STRENGTH_ATTAINED_4},
|
||||||
|
{Badge.FOOD_EATEN_1, Badge.FOOD_EATEN_2, Badge.FOOD_EATEN_3, Badge.FOOD_EATEN_4},
|
||||||
|
{Badge.POTIONS_COOKED_1, Badge.POTIONS_COOKED_2, Badge.POTIONS_COOKED_3, Badge.POTIONS_COOKED_4 },
|
||||||
|
{Badge.BOSS_SLAIN_1, Badge.BOSS_SLAIN_2, Badge.BOSS_SLAIN_3, Badge.BOSS_SLAIN_4},
|
||||||
|
{Badge.GAMES_PLAYED_1, Badge.GAMES_PLAYED_2, Badge.GAMES_PLAYED_3, Badge.GAMES_PLAYED_4},
|
||||||
|
{Badge.CHAMPION_1, Badge.CHAMPION_2, Badge.CHAMPION_3}
|
||||||
|
};
|
||||||
|
|
||||||
|
private static final Badge[][] metaBadgeReplacements = new Badge[][]{
|
||||||
|
{Badge.DEATH_FROM_FIRE, Badge.YASD},
|
||||||
|
{Badge.DEATH_FROM_GAS, Badge.YASD},
|
||||||
|
{Badge.DEATH_FROM_HUNGER, Badge.YASD},
|
||||||
|
{Badge.DEATH_FROM_POISON, Badge.YASD},
|
||||||
|
{Badge.DEATH_FROM_GLYPH, Badge.YASD},
|
||||||
|
{Badge.DEATH_FROM_FALLING, Badge.YASD },
|
||||||
|
|
||||||
|
{Badge.ALL_WEAPONS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED},
|
||||||
|
{Badge.ALL_ARMOR_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED},
|
||||||
|
{Badge.ALL_WANDS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED},
|
||||||
|
{Badge.ALL_RINGS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED},
|
||||||
|
{Badge.ALL_ARTIFACTS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED},
|
||||||
|
{Badge.ALL_POTIONS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED},
|
||||||
|
{Badge.ALL_SCROLLS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED}
|
||||||
|
};
|
||||||
|
|
||||||
public static List<Badge> filterReplacedBadges( List<Badge> badges ) {
|
public static List<Badge> filterReplacedBadges( List<Badge> badges ) {
|
||||||
|
|
||||||
leaveBest( badges, Badge.MONSTERS_SLAIN_1, Badge.MONSTERS_SLAIN_2, Badge.MONSTERS_SLAIN_3, Badge.MONSTERS_SLAIN_4 );
|
leaveBest( badges, Badge.MONSTERS_SLAIN_1, Badge.MONSTERS_SLAIN_2, Badge.MONSTERS_SLAIN_3, Badge.MONSTERS_SLAIN_4 );
|
||||||
|
@ -906,22 +930,17 @@ public class Badges {
|
||||||
leaveBest( badges, Badge.FOOD_EATEN_1, Badge.FOOD_EATEN_2, Badge.FOOD_EATEN_3, Badge.FOOD_EATEN_4 );
|
leaveBest( badges, Badge.FOOD_EATEN_1, Badge.FOOD_EATEN_2, Badge.FOOD_EATEN_3, Badge.FOOD_EATEN_4 );
|
||||||
leaveBest( badges, Badge.ITEM_LEVEL_1, Badge.ITEM_LEVEL_2, Badge.ITEM_LEVEL_3, Badge.ITEM_LEVEL_4 );
|
leaveBest( badges, Badge.ITEM_LEVEL_1, Badge.ITEM_LEVEL_2, Badge.ITEM_LEVEL_3, Badge.ITEM_LEVEL_4 );
|
||||||
leaveBest( badges, Badge.POTIONS_COOKED_1, Badge.POTIONS_COOKED_2, Badge.POTIONS_COOKED_3, Badge.POTIONS_COOKED_4 );
|
leaveBest( badges, Badge.POTIONS_COOKED_1, Badge.POTIONS_COOKED_2, Badge.POTIONS_COOKED_3, Badge.POTIONS_COOKED_4 );
|
||||||
leaveBest( badges, Badge.DEATH_FROM_FIRE, Badge.YASD );
|
|
||||||
leaveBest( badges, Badge.DEATH_FROM_GAS, Badge.YASD );
|
|
||||||
leaveBest( badges, Badge.DEATH_FROM_HUNGER, Badge.YASD );
|
|
||||||
leaveBest( badges, Badge.DEATH_FROM_POISON, Badge.YASD );
|
|
||||||
leaveBest( badges, Badge.DEATH_FROM_GLYPH, Badge.YASD );
|
|
||||||
leaveBest( badges, Badge.DEATH_FROM_FALLING, Badge.YASD );
|
|
||||||
leaveBest( badges, Badge.ALL_WEAPONS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED );
|
|
||||||
leaveBest( badges, Badge.ALL_ARMOR_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED );
|
|
||||||
leaveBest( badges, Badge.ALL_WANDS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED );
|
|
||||||
leaveBest( badges, Badge.ALL_RINGS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED );
|
|
||||||
leaveBest( badges, Badge.ALL_ARTIFACTS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED );
|
|
||||||
leaveBest( badges, Badge.ALL_POTIONS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED );
|
|
||||||
leaveBest( badges, Badge.ALL_SCROLLS_IDENTIFIED, Badge.ALL_ITEMS_IDENTIFIED );
|
|
||||||
leaveBest( badges, Badge.GAMES_PLAYED_1, Badge.GAMES_PLAYED_2, Badge.GAMES_PLAYED_3, Badge.GAMES_PLAYED_4 );
|
leaveBest( badges, Badge.GAMES_PLAYED_1, Badge.GAMES_PLAYED_2, Badge.GAMES_PLAYED_3, Badge.GAMES_PLAYED_4 );
|
||||||
leaveBest( badges, Badge.CHAMPION_1, Badge.CHAMPION_2, Badge.CHAMPION_3 );
|
leaveBest( badges, Badge.CHAMPION_1, Badge.CHAMPION_2, Badge.CHAMPION_3 );
|
||||||
|
|
||||||
|
for (Badge[] tierReplace : tierBadgeReplacements){
|
||||||
|
leaveBest( badges, tierReplace );
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Badge[] metaReplace : metaBadgeReplacements){
|
||||||
|
leaveBest( badges, metaReplace );
|
||||||
|
}
|
||||||
|
|
||||||
return badges;
|
return badges;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -938,16 +957,9 @@ public class Badges {
|
||||||
|
|
||||||
public static List<Badge> filterHigherIncrementalBadges(List<Badges.Badge> badges ) {
|
public static List<Badge> filterHigherIncrementalBadges(List<Badges.Badge> badges ) {
|
||||||
|
|
||||||
leaveWorst( badges, Badge.MONSTERS_SLAIN_1, Badge.MONSTERS_SLAIN_2, Badge.MONSTERS_SLAIN_3, Badge.MONSTERS_SLAIN_4 );
|
for (Badge[] tierReplace : tierBadgeReplacements){
|
||||||
leaveWorst( badges, Badge.GOLD_COLLECTED_1, Badge.GOLD_COLLECTED_2, Badge.GOLD_COLLECTED_3, Badge.GOLD_COLLECTED_4 );
|
leaveWorst( badges, tierReplace );
|
||||||
leaveWorst( badges, Badge.BOSS_SLAIN_1, Badge.BOSS_SLAIN_2, Badge.BOSS_SLAIN_3, Badge.BOSS_SLAIN_4 );
|
}
|
||||||
leaveWorst( badges, Badge.LEVEL_REACHED_1, Badge.LEVEL_REACHED_2, Badge.LEVEL_REACHED_3, Badge.LEVEL_REACHED_4 );
|
|
||||||
leaveWorst( badges, Badge.STRENGTH_ATTAINED_1, Badge.STRENGTH_ATTAINED_2, Badge.STRENGTH_ATTAINED_3, Badge.STRENGTH_ATTAINED_4 );
|
|
||||||
leaveWorst( badges, Badge.FOOD_EATEN_1, Badge.FOOD_EATEN_2, Badge.FOOD_EATEN_3, Badge.FOOD_EATEN_4 );
|
|
||||||
leaveWorst( badges, Badge.ITEM_LEVEL_1, Badge.ITEM_LEVEL_2, Badge.ITEM_LEVEL_3, Badge.ITEM_LEVEL_4 );
|
|
||||||
leaveWorst( badges, Badge.POTIONS_COOKED_1, Badge.POTIONS_COOKED_2, Badge.POTIONS_COOKED_3, Badge.POTIONS_COOKED_4 );
|
|
||||||
leaveWorst( badges, Badge.GAMES_PLAYED_1, Badge.GAMES_PLAYED_2, Badge.GAMES_PLAYED_3, Badge.GAMES_PLAYED_4 );
|
|
||||||
leaveWorst( badges, Badge.CHAMPION_1, Badge.CHAMPION_2, Badge.CHAMPION_3 );
|
|
||||||
|
|
||||||
Collections.sort( badges );
|
Collections.sort( badges );
|
||||||
|
|
||||||
|
@ -964,4 +976,28 @@ public class Badges {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Collection<Badge> addReplacedBadges(Collection<Badges.Badge> badges ) {
|
||||||
|
|
||||||
|
for (Badge[] tierReplace : tierBadgeReplacements){
|
||||||
|
addLower( badges, tierReplace );
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Badge[] metaReplace : metaBadgeReplacements){
|
||||||
|
addLower( badges, metaReplace );
|
||||||
|
}
|
||||||
|
|
||||||
|
return badges;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void addLower( Collection<Badge> list, Badge...badges ) {
|
||||||
|
for (int i=badges.length-1; i > 0; i--) {
|
||||||
|
if (list.contains( badges[i])) {
|
||||||
|
for (int j=0; j < i; j++) {
|
||||||
|
list.add( badges[j] );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user