package projectzombie.menu; import java.io.File; import java.io.IOException; import java.nio.file.FileVisitResult; import java.nio.file.FileVisitor; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.BasicFileAttributes; import bdf.types.BdfArray; import bdf.types.BdfNamedList; import bdf.types.BdfObject; import bdf.types.BdfReader; import gl_engine.vec.Vec2d; import projectzombie.Main; import projectzombie.init.Models; import projectzombie.input.types.InputGUI; import projectzombie.menu.gui.GUI; import projectzombie.menu.gui.GUIAlignment; import projectzombie.menu.gui.GUIBackToMenu; import projectzombie.menu.gui.GUIButtonBasic; import projectzombie.menu.gui.GUILabel; import projectzombie.menu.gui.GUITextBox; import projectzombie.worker.WorkerTasks; public class MenuWorldDelete extends Menu { private MenuSaves parent; private String path; private GUI gui; public MenuWorldDelete(MenuSaves parent, String name, String path) { this.parent = parent; this.path = path; keepMouse = false; doGameloop = parent.doGameloop; doGameRender = parent.doGameRender; showIngameGUI = parent.showIngameGUI; gui = new GUIBackToMenu(parent); input = new InputGUI(gui); GUIButtonBasic buttonCancel = new GUIButtonBasic("Cancel", button -> { Main.menu = parent; }); GUIButtonBasic buttonDelete = new GUIButtonBasic("Delete", button -> { deleteSave(); }); buttonCancel.setAlign(GUIAlignment.RIGHT); buttonDelete.setAlign(GUIAlignment.LEFT); buttonCancel.setPos(new Vec2d(-0.5, -4)); buttonDelete.setPos(new Vec2d(0.5, -4)); { // Delete world title GUILabel label = new GUILabel(); label.setText("Delete World"); label.setSize(new Vec2d(1, 1)); label.setPos(new Vec2d(0, 4)); gui.add(label); } { // Delete world confirm message GUILabel label = new GUILabel(); label.setText("Are you sure you want to delete \"" + name + "\"?"); label.setSize(new Vec2d(0.4, 0.4)); label.setPos(new Vec2d(0, 3)); gui.add(label); } gui.add(buttonCancel); gui.add(buttonDelete); } private void deleteSave() { BdfObject bdf = Main.bdf_saves.getObject(); BdfNamedList nl = bdf.getNamedList(); BdfArray array = nl.get("saves").getArray(); try { Files.walkFileTree(Paths.get("./saves/" + path), new FileVisitor() { @Override public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { Files.delete(dir); return FileVisitResult.CONTINUE; } @Override public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { return FileVisitResult.CONTINUE; } @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { Files.delete(file); return FileVisitResult.CONTINUE; } @Override public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException { return FileVisitResult.CONTINUE; } }); } catch(IOException e) { e.printStackTrace(); } for(int i=0;i