private static void savePlayerStatus(BufferedWriter w, Player p) throws IOException { w.newLine(); w.write(Integer.toString(p.getX())); w.newLine(); w.write(Integer.toString(p.getY())); w.newLine(); w.write(Integer.toString(p.EXP)); w.newLine(); w.write(Integer.toString(p.HP)); w.newLine(); w.write(Integer.toString(p.MP)); w.newLine(); w.write(InteractiveEntity.getInventoryAsString(p.getInventory(), p.inventorySize)); w.newLine(); w.write(InteractiveEntity.getInventoryAsString(p.getEquips(), p.inventorySize)); }
public static void updateSave(String saveLocation, Player p, GameBoard currentMap) throws IOException { File playerFile = new File(saveLocation + "/player.txt"); BufferedWriter w = new BufferedWriter(new FileWriter(playerFile)); Save.savePlayerProfession(w, p.getProfession()); Save.savePlayerStatus(w, p); w.close(); BufferedWriter r = new BufferedWriter(new FileWriter(saveLocation + "/" + currentMap.mapID)); Save.saveBoard(currentMap, r); Save.saveEntities(currentMap, r); r.close(); File director = new File(saveLocation + "/saveInformation.txt"); BufferedReader a = new BufferedReader(new FileReader(director)); String name = a.readLine(); a.close(); BufferedWriter b = new BufferedWriter(new FileWriter(director)); b.write(name); b.newLine(); b.write(currentMap.mapID); b.close(); }
/** * Make a new save from scratch. generates a whole dungeon, level by level, and saves it to the * disk * * @param fileLocation the file location for the save * @param nameofSave the name of the save * @param p the profession generated by the class generator * @return the save generated * @throws IOException Signals that an I/O exception has occurred. * @throws SlickException the slick exception */ public static Save makeNewSave(String fileLocation, String nameofSave, Profession p) throws SlickException { try { new File(fileLocation).mkdir(); File director = new File(fileLocation + "/saveInformation.txt"); BufferedWriter r = new BufferedWriter(new FileWriter(director)); r.write(nameofSave); r.newLine(); r.write("floor0.map"); r.close(); DungeonMap map = new DungeonMap(16); Tile spawnTile = null; for (int i = 0; i < map.getDepth(); i++) { File floorFile = new File(fileLocation + map.getFloorName(i)); floorFile.createNewFile(); r = new BufferedWriter(new FileWriter(floorFile)); GameBoard gameBoard = map.makeBoard(i); if (i == 0) { spawnTile = gameBoard.getValidSpawnTile(); } Save.saveBoard(gameBoard, r); Save.saveEntities(gameBoard, r); r.close(); } File playerFile = new File(fileLocation + "/player.txt"); playerFile.createNewFile(); BufferedWriter w = new BufferedWriter(new FileWriter(playerFile)); savePlayerProfession(w, p); Player pl = new Player(p, null); pl.setLocation(spawnTile, Tile.LAYER_ACTIVE); savePlayerStatus(w, pl); w.close(); Save s = new Save(fileLocation); return s; } catch (IOException e) { throw new SlickException("unable to create save " + nameofSave, e); } }
private Player loadPlayerStatus(BufferedReader r, GameContainer c, GameBoard b, Profession p) throws SlickException, IOException { // TODO stuff r.readLine(); int tileX = Integer.parseInt(r.readLine()); int tileY = Integer.parseInt(r.readLine()); int currentEXP = Integer.parseInt(r.readLine()); int currentHP = Integer.parseInt(r.readLine()); int currentMP = Integer.parseInt(r.readLine()); ArrayList<Item> inventory = InteractiveEntity.loadItems(r.readLine().split(",")); ArrayList<Item> equips = InteractiveEntity.loadItems(r.readLine().split(",")); Player player = new Player(p, c.getInput()); player.setLocation(b.getTileAt(tileX, tileY), Tile.LAYER_ACTIVE); player.EXP = currentEXP; player.HP = currentHP; player.MP = currentMP; player.getInventory().addAll(inventory); for (int i = 0; i < equips.size(); i++) { if (equips.get(i) != null) { player.equipItem((Equip) equips.get(i)); } } return player; }
private static void setPlayerPosition(Player player, GameBoard b, String lastMap) { // find the landing pad if it's coming from the old map. Otherwise, use the player's coords if (!lastMap.equals("")) { Tile target = null; for (int x = 0; x < b.getWidth(); x++) { for (int y = 0; y < b.getHeight(); y++) { if (!b.getTileAt(x, y).isOpen(Tile.LAYER_PASSIVE_MAP)) { if (LandingPad.class.isAssignableFrom( b.getTileAt(x, y).getEntity(Tile.LAYER_PASSIVE_MAP).getClass())) { LandingPad pad = LandingPad.class.cast(b.getTileAt(x, y).getEntity(Tile.LAYER_PASSIVE_MAP)); if (pad.fromFloor.equals(lastMap)) { target = b.getTileAt(x, y); break; } } } } } b.insertEntity(0, target, player, Tile.LAYER_ACTIVE); } else { b.insertEntity(0, b.getTileAt(player.getX(), player.getY()), player, Tile.LAYER_ACTIVE); } }