public static void validateItemsIdentified() { for (Catalog cat : Catalog.values()){ if (cat.allSeen()){ Badge b = Catalog.catalogBadges.get(cat); if (!global.contains(b)){ displayBadge(b); } } } if (!global.contains( Badge.ALL_ITEMS_IDENTIFIED ) && global.contains( Badge.ALL_WEAPONS_IDENTIFIED ) && global.contains( Badge.ALL_ARMOR_IDENTIFIED ) && global.contains( Badge.ALL_WANDS_IDENTIFIED ) && global.contains( Badge.ALL_RINGS_IDENTIFIED ) && global.contains( Badge.ALL_ARTIFACTS_IDENTIFIED ) && global.contains( Badge.ALL_POTIONS_IDENTIFIED ) && global.contains( Badge.ALL_SCROLLS_IDENTIFIED )) { displayBadge( Badge.ALL_ITEMS_IDENTIFIED ); } }
@Override public int compare(Class<? extends Item> a, Class<? extends Item> b) { int result = 0; //specifically known items appear first, then seen items, then unknown items. if (known.get(a) && Catalog.isSeen(a)) result -= 2; if (known.get(b) && Catalog.isSeen(b)) result += 2; if (Catalog.isSeen(a)) result --; if (Catalog.isSeen(b)) result ++; return result; } });
public static void store( Bundle bundle ){ Badges.loadGlobal(); ArrayList<String> seen = new ArrayList<>(); //if we have identified all items of a set, we use the badge to keep track instead. if (!Badges.isUnlocked(Badges.Badge.ALL_ITEMS_IDENTIFIED)) { for (Catalog cat : values()) { if (!Badges.isUnlocked(catalogBadges.get(cat))) { for (Class<? extends Item> item : cat.items()) { if (cat.seen.get(item)) seen.add(item.getSimpleName()); } } } } bundle.put( CATALOGS, seen.toArray(new String[0]) ); }
public Item identify() { levelKnown = true; cursedKnown = true; if (Dungeon.hero != null && Dungeon.hero.isAlive()) { Catalog.setSeen(getClass()); } return this; }
final HashMap<Class<? extends Item>, Boolean> known = new HashMap<>(); if (currentItemIdx == WEAPON_IDX) { itemClasses = new ArrayList<>(Catalog.WEAPONS.items()); for (Class<? extends Item> cls : itemClasses) known.put(cls, true); } else if (currentItemIdx == ARMOR_IDX){ itemClasses = new ArrayList<>(Catalog.ARMOR.items()); for (Class<? extends Item> cls : itemClasses) known.put(cls, true); } else if (currentItemIdx == WAND_IDX){ itemClasses = new ArrayList<>(Catalog.WANDS.items()); for (Class<? extends Item> cls : itemClasses) known.put(cls, true); } else if (currentItemIdx == RING_IDX){ itemClasses = new ArrayList<>(Catalog.RINGS.items()); for (Class<? extends Item> cls : itemClasses) known.put(cls, Ring.getKnown().contains(cls)); } else if (currentItemIdx == ARTIF_IDX){ itemClasses = new ArrayList<>(Catalog.ARTIFACTS.items()); for (Class<? extends Item> cls : itemClasses) known.put(cls, true); } else if (currentItemIdx == POTION_IDX){ itemClasses = new ArrayList<>(Catalog.POTIONS.items()); for (Class<? extends Item> cls : itemClasses) known.put(cls, Potion.getKnown().contains(cls)); } else if (currentItemIdx == SCROLL_IDX) { itemClasses = new ArrayList<>(Catalog.SCROLLS.items()); for (Class<? extends Item> cls : itemClasses) known.put(cls, Scroll.getKnown().contains(cls)); } else { for (Class<? extends Item> itemClass : itemClasses) { try{ CatalogItem item = new CatalogItem(itemClass.newInstance(), known.get(itemClass), Catalog.isSeen(itemClass)); item.setRect( 0, pos, width, ITEM_HEIGHT ); content.add( item );
public static boolean isSeen(Class<? extends Item> itemClass){ for (Catalog cat : values()) { if (cat.seen.containsKey(itemClass)) { return cat.seen.get(itemClass); } } return false; }
public boolean allSeen(){ for (Class<?extends Item> item : items()){ if (!seen.get(item)){ return false; } } return true; }
public static void loadGlobal(){ if (loaded){ return; } Bundle bundle; try { bundle = FileUtils.bundleFromFile( JOURNAL_FILE ); } catch (IOException e){ bundle = new Bundle(); } Catalog.restore( bundle ); Document.restore( bundle ); loaded = true; }
public static void saveGlobal(){ if (!saveNeeded){ return; } Bundle bundle = new Bundle(); Catalog.store(bundle); Document.store(bundle); try { FileUtils.bundleToFile( JOURNAL_FILE, bundle ); saveNeeded = false; } catch (IOException e) { ShatteredPixelDungeon.reportException(e); } }
public Item identify() { levelKnown = true; cursedKnown = true; if (Dungeon.hero != null && Dungeon.hero.isAlive()) { Catalog.setSeen(getClass()); } return this; }
final HashMap<Class<? extends Item>, Boolean> known = new HashMap<>(); if (currentItemIdx == WEAPON_IDX) { itemClasses = new ArrayList<>(Catalog.WEAPONS.items()); for (Class<? extends Item> cls : itemClasses) known.put(cls, true); } else if (currentItemIdx == ARMOR_IDX){ itemClasses = new ArrayList<>(Catalog.ARMOR.items()); for (Class<? extends Item> cls : itemClasses) known.put(cls, true); } else if (currentItemIdx == WAND_IDX){ itemClasses = new ArrayList<>(Catalog.WANDS.items()); for (Class<? extends Item> cls : itemClasses) known.put(cls, true); } else if (currentItemIdx == RING_IDX){ itemClasses = new ArrayList<>(Catalog.RINGS.items()); for (Class<? extends Item> cls : itemClasses) known.put(cls, Ring.getKnown().contains(cls)); } else if (currentItemIdx == ARTIF_IDX){ itemClasses = new ArrayList<>(Catalog.ARTIFACTS.items()); for (Class<? extends Item> cls : itemClasses) known.put(cls, true); } else if (currentItemIdx == POTION_IDX){ itemClasses = new ArrayList<>(Catalog.POTIONS.items()); for (Class<? extends Item> cls : itemClasses) known.put(cls, Potion.getKnown().contains(cls)); } else if (currentItemIdx == SCROLL_IDX) { itemClasses = new ArrayList<>(Catalog.SCROLLS.items()); for (Class<? extends Item> cls : itemClasses) known.put(cls, Scroll.getKnown().contains(cls)); } else { for (Class<? extends Item> itemClass : itemClasses) { try{ CatalogItem item = new CatalogItem(itemClass.newInstance(), known.get(itemClass), Catalog.isSeen(itemClass)); item.setRect( 0, pos, width, ITEM_HEIGHT ); content.add( item );
public static boolean isSeen(Class<? extends Item> itemClass){ for (Catalog cat : values()) { if (cat.seen.containsKey(itemClass)) { return cat.seen.get(itemClass); } } return false; }
public boolean allSeen(){ for (Class<?extends Item> item : items()){ if (!seen.get(item)){ return false; } } return true; }
public static void loadGlobal(){ if (loaded){ return; } Bundle bundle; try { bundle = FileUtils.bundleFromFile( JOURNAL_FILE ); } catch (IOException e){ bundle = new Bundle(); } Catalog.restore( bundle ); Document.restore( bundle ); loaded = true; }
public static void saveGlobal(){ if (!saveNeeded){ return; } Bundle bundle = new Bundle(); Catalog.store(bundle); Document.store(bundle); try { FileUtils.bundleToFile( JOURNAL_FILE, bundle ); saveNeeded = false; } catch (IOException e) { ShatteredPixelDungeon.reportException(e); } }
public static void store( Bundle bundle ){ Badges.loadGlobal(); ArrayList<String> seen = new ArrayList<>(); //if we have identified all items of a set, we use the badge to keep track instead. if (!Badges.isUnlocked(Badges.Badge.ALL_ITEMS_IDENTIFIED)) { for (Catalog cat : values()) { if (!Badges.isUnlocked(catalogBadges.get(cat))) { for (Class<? extends Item> item : cat.items()) { if (cat.seen.get(item)) seen.add(item.getSimpleName()); } } } } bundle.put( CATALOGS, seen.toArray(new String[0]) ); }
public void setKnown() { if (!anonymous) { if (!isKnown()) { handler.know(this); } if (Dungeon.hero.isAlive()) { Catalog.setSeen(getClass()); } } }
public static void validateItemsIdentified() { for (Catalog cat : Catalog.values()){ if (cat.allSeen()){ Badge b = Catalog.catalogBadges.get(cat); if (!global.contains(b)){ displayBadge(b); } } } if (!global.contains( Badge.ALL_ITEMS_IDENTIFIED ) && global.contains( Badge.ALL_WEAPONS_IDENTIFIED ) && global.contains( Badge.ALL_ARMOR_IDENTIFIED ) && global.contains( Badge.ALL_WANDS_IDENTIFIED ) && global.contains( Badge.ALL_RINGS_IDENTIFIED ) && global.contains( Badge.ALL_ARTIFACTS_IDENTIFIED ) && global.contains( Badge.ALL_POTIONS_IDENTIFIED ) && global.contains( Badge.ALL_SCROLLS_IDENTIFIED )) { displayBadge( Badge.ALL_ITEMS_IDENTIFIED ); } }
public static void setSeen(Class<? extends Item> itemClass){ for (Catalog cat : values()) { if (cat.seen.containsKey(itemClass) && !cat.seen.get(itemClass)) { cat.seen.put(itemClass, true); Journal.saveNeeded = true; } } Badges.validateItemsIdentified(); }
@Override public int compare(Class<? extends Item> a, Class<? extends Item> b) { int result = 0; //specifically known items appear first, then seen items, then unknown items. if (known.get(a) && Catalog.isSeen(a)) result -= 2; if (known.get(b) && Catalog.isSeen(b)) result += 2; if (Catalog.isSeen(a)) result --; if (Catalog.isSeen(b)) result ++; return result; } });