/** * Generates a random dungeon. * * @param dungeonMapData The dungeon specification, not null * @return The entrance to the dungeon, never null * @throws IOException If {@link DungeonBuilder#setDungeonMapData(DungeonMapData)} fails * @throws ReflectiveOperationException If the desired DungeonBuilder can not be instantiated */ public static DungeonLevel buildDungeon(final DungeonMapData dungeonMapData) throws IOException, ReflectiveOperationException { final DungeonBuilder builder = getDungeonBuilder(dungeonMapData); builder.fromString(builder.buildRandomDungeonString()); final List<DungeonLevel> dungeonLevels = builder.getLevels(); return dungeonLevels.get(0); }
/** * De-serializes a dungeon. * * @param dungeonMapData The dungeon specification, not null * @param serializedDungeon The serialized dungeon String, not null * @return The entrance to the dungeon, never null * @throws IOException If {@link DungeonBuilder#setDungeonMapData(DungeonMapData)} fails * @throws ReflectiveOperationException If the desired DungeonBuilder can not be instantiated * @see DungeonBuilder#fromString(String) */ public static DungeonLevel fromString( final DungeonMapData dungeonMapData, final String serializedDungeon) throws IOException, ReflectiveOperationException { final DungeonBuilder builder = getDungeonBuilder(dungeonMapData); builder.fromString(serializedDungeon); final List<DungeonLevel> dungeonLevels = builder.getLevels(); return dungeonLevels.get(0); }
private static DungeonBuilder getDungeonBuilder(final DungeonMapData dungeonMapData) throws IOException, ReflectiveOperationException { final DungeonType dungeonType = dungeonMapData.getDungeonType(); Validate.notNull(dungeonType); if (!BUILDER_MAP.containsKey(dungeonType)) { throw new InvalidKeyException("Encountered unknown DungeonType '" + dungeonType + "'."); } final DungeonBuilder builder = (DungeonBuilder) BUILDER_MAP.get(dungeonType).newInstance(); builder.setDungeonMapData(dungeonMapData); return builder; }
/** * Generates a random serialized dungeon. * * @param dungeonMapData The dungeon specification, not null * @return A base-64 encoded String representing the serialized dungeon, never null * @throws IOException If {@link DungeonBuilder#setDungeonMapData(DungeonMapData)} fails * @throws ReflectiveOperationException If the desired DungeonBuilder can not be instantiated * @see DungeonBuilder#buildRandomDungeonString() */ public static String generateSerializedDungeon(final DungeonMapData dungeonMapData) throws IOException, ReflectiveOperationException { final DungeonBuilder builder = getDungeonBuilder(dungeonMapData); return builder.buildRandomDungeonString(); }