コード例 #1
0
ファイル: Dungeon.java プロジェクト: lycan11/pixel-dungeon
  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);
    }
  }
コード例 #2
0
  private void inscribeScroll(BlankScroll scroll) {

    scroll.detach(getCurUser().belongings.backpack);

    inscribeEffect();

    Scroll inscribedScroll = Scroll.createRandomScroll();
    getCurUser().collect(inscribedScroll);
  }
コード例 #3
0
  public static void validateAllScrollsIdentified() {
    if (Dungeon.hero != null
        && Dungeon.hero.isAlive()
        && !local.contains(Badge.ALL_SCROLLS_IDENTIFIED)
        && Scroll.allKnown()
        && !PixelDungeon.autoIdentify()) {

      Badge badge = Badge.ALL_SCROLLS_IDENTIFIED;
      local.add(badge);
      displayBadge(badge);

      validateAllItemsIdentified();
    }
  }
コード例 #4
0
ファイル: Dungeon.java プロジェクト: lycan11/pixel-dungeon
  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);
  }
コード例 #5
0
ファイル: Dungeon.java プロジェクト: lycan11/pixel-dungeon
  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);
  }