public static void saveGame(String fileName) throws IOException { try { Bundle bundle = new Bundle(); bundle.put(VERSION, Game.version); bundle.put(CHALLENGES, challenges); bundle.put(HERO, hero); bundle.put(GOLD, gold); bundle.put(DEPTH, depth); bundle.put(POS, potionOfStrength); bundle.put(SOU, scrollsOfUpgrade); bundle.put(AS, arcaneStyli); bundle.put(DV, dewVial); bundle.put(WT, transmutation); int count = 0; int ids[] = new int[chapters.size()]; for (Integer id : chapters) { ids[count++] = id; } bundle.put(CHAPTERS, ids); Bundle quests = new Bundle(); Ghost.Quest.storeInBundle(quests); WandMaker.Quest.storeInBundle(quests); Blacksmith.Quest.storeInBundle(quests); Imp.Quest.storeInBundle(quests); bundle.put(QUESTS, quests); Room.storeRoomsInBundle(bundle); Statistics.storeInBundle(bundle); Journal.storeInBundle(bundle); if (quickslot instanceof Class) { bundle.put(QUICKSLOT, ((Class<?>) quickslot).getName()); } Scroll.save(bundle); Potion.save(bundle); Wand.save(bundle); Ring.save(bundle); Bundle badges = new Bundle(); Badges.saveLocal(badges); bundle.put(BADGES, badges); OutputStream output = Game.instance.openFileOutput(fileName, Game.MODE_PRIVATE); Bundle.write(bundle, output); output.close(); } catch (Exception e) { GamesInProgress.setUnknown(hero.heroClass); } }
public static void validateAllPotionsIdentified() { if (Dungeon.hero != null && Dungeon.hero.isAlive() && !local.contains(Badge.ALL_POTIONS_IDENTIFIED) && Potion.allKnown() && !PixelDungeon.autoIdentify()) { Badge badge = Badge.ALL_POTIONS_IDENTIFIED; local.add(badge); displayBadge(badge); validateAllItemsIdentified(); } }
public static void init() { challenges = PixelDungeon.challenges(); Actor.clear(); PathFinder.setMapSize(Level.WIDTH, Level.HEIGHT); Scroll.initLabels(); Potion.initColors(); Wand.initWoods(); Ring.initGems(); Statistics.reset(); Journal.reset(); depth = 0; gold = 0; potionOfStrength = 0; scrollsOfUpgrade = 0; arcaneStyli = 0; dewVial = true; transmutation = Random.IntRange(6, 14); chapters = new HashSet<Integer>(); Ghost.Quest.reset(); WandMaker.Quest.reset(); Blacksmith.Quest.reset(); Imp.Quest.reset(); Room.shuffleTypes(); hero = new Hero(); hero.live(); Badges.reset(); StartScene.curClass.initHero(hero); }
public static void loadGame(String fileName, boolean fullLoad) throws IOException { Bundle bundle = gameBundle(fileName); Dungeon.challenges = bundle.getInt(CHALLENGES); Dungeon.level = null; Dungeon.depth = -1; if (fullLoad) { PathFinder.setMapSize(Level.WIDTH, Level.HEIGHT); } Scroll.restore(bundle); Potion.restore(bundle); Wand.restore(bundle); Ring.restore(bundle); potionOfStrength = bundle.getInt(POS); scrollsOfUpgrade = bundle.getInt(SOU); arcaneStyli = bundle.getInt(AS); dewVial = bundle.getBoolean(DV); transmutation = bundle.getInt(WT); if (fullLoad) { chapters = new HashSet<Integer>(); int ids[] = bundle.getIntArray(CHAPTERS); if (ids != null) { for (int id : ids) { chapters.add(id); } } Bundle quests = bundle.getBundle(QUESTS); if (!quests.isNull()) { Ghost.Quest.restoreFromBundle(quests); WandMaker.Quest.restoreFromBundle(quests); Blacksmith.Quest.restoreFromBundle(quests); Imp.Quest.restoreFromBundle(quests); } else { Ghost.Quest.reset(); WandMaker.Quest.reset(); Blacksmith.Quest.reset(); Imp.Quest.reset(); } Room.restoreRoomsFromBundle(bundle); } Bundle badges = bundle.getBundle(BADGES); if (!badges.isNull()) { Badges.loadLocal(badges); } else { Badges.reset(); } String qsClass = bundle.getString(QUICKSLOT); if (qsClass != null) { try { quickslot = Class.forName(qsClass); } catch (ClassNotFoundException e) { } } else { quickslot = null; } @SuppressWarnings("unused") String version = bundle.getString(VERSION); hero = null; hero = (Hero) bundle.get(HERO); gold = bundle.getInt(GOLD); depth = bundle.getInt(DEPTH); Statistics.restoreFromBundle(bundle); Journal.restoreFromBundle(bundle); }