package tk.captainsplexx.JavaFX.Controller; import java.util.ArrayList; import javafx.fxml.FXML; import javafx.scene.control.TreeView; import javafx.stage.Stage; import tk.captainsplexx.Entity.Layer.EntityLayer; import tk.captainsplexx.Game.Core; import tk.captainsplexx.JavaFX.TreeViewConverter; import tk.captainsplexx.JavaFX.TreeViewEntry; import tk.captainsplexx.JavaFX.Windows.EBXWindow; import tk.captainsplexx.Resource.FileHandler; import tk.captainsplexx.Resource.EBX.EBXFile; import tk.captainsplexx.Resource.EBX.EBXHandler; import tk.captainsplexx.Resource.EBX.Modify.ChangeFile; import tk.captainsplexx.Resource.EBX.Structure.EBXStructureFile; public class EBXWindowController { @FXML private TreeView<TreeViewEntry> ebxExplorer; private EBXWindow window; private Stage stage; public void createLayer(){ Core.runOnMainThread(new Runnable() { @Override public void run() { Core.getGame().getEntityHandler().createEntityLayer(window.getEBXFile()); System.err.println("--------------Layer creation done!!------------------"); } }); } public void createMeshVariationDatabase(){ Core.runOnMainThread(new Runnable() { @Override public void run() { if (window.getStage().getTitle().contains("variation")){ EBXStructureFile strcFile = Core.getGame().getResourceHandler().getEBXHandler().readEBXStructureFile(window.getEBXFile()); if (strcFile!=null){ Core.getGame().getResourceHandler().getMeshVariationDatabaseHandler().addDatabase(strcFile); Core.getJavaFXHandler().getDialogBuilder().showInfo("SUCCESSFUL", "MeshVariationDatabase added SUCCESSFUL!!", null, null); /*DEBUG ArrayList<EntityLayer> layers = Core.getGame().getEntityHandler().getLayers(); if (!layers.isEmpty()){ Core.getGame().getEntityHandler().updateLayer(layers.get(0), strcFile); }*/ }else{ Core.getJavaFXHandler().getDialogBuilder().showError("ERROR", "MeshVariationDatabase FAILED!!", null); } }else{ Core.getJavaFXHandler().getDialogBuilder().showError("ERROR", "Not a valid MeshVariationDatabase!", null); } } }); } public void close(){ Core.getJavaFXHandler().getMainWindow().destroyEBXWindow(stage); } public void saveEBX(){ if (ebxExplorer.getRoot() != null){ if (Core.getGame().getCurrentMod()!=null&&!Core.isDEBUG){ EBXHandler ebxHandler = Core.getGame().getResourceHandler().getEBXHandler(); Core.getJavaFXHandler().getDialogBuilder().showAsk("WARNING!", "After this process is completed successfully,\nthe EBXWindow will close and the Package will reload.\nThis can take some time!\n\nDo you really want to continue?", new Runnable() { @Override public void run() { EBXFile ebxFile = window.getEBXFile(); if (ebxFile!=null){ ChangeFile cFile = ebxHandler.getModifyHandler().getChangeFileByEBXGuid(ebxFile.getGuid()); if (cFile!=null){ if (cFile.applyChanges(true)){ Core.getJavaFXHandler().getDialogBuilder().showInfo("SUCESSFULL!", "Changes successfully appied to Mod!\nReloading..."); Core.getGame().getResourceHandler().resetEBXRelated(); Core.getJavaFXHandler().getMainWindow().destroyEBXWindow(stage); }else{ Core.getJavaFXHandler().getDialogBuilder().showError("ERROR", "Error, while applying changes!", null); } }else{ Core.getJavaFXHandler().getDialogBuilder().showError("ERROR", "No changes found, unable to save.", null); } } } }, null); /* String resPath = ebxExplorer.getRoot().getValue().getName()+".ebx"; String test = Core.getGame().getCurrentToc().getName(); Package pack = Core.getModTools().getPackage(test); Core.getModTools().extendPackage( LinkBundleType.BUNDLES, Core.getGame().getCurrentSB().getPath(), ResourceType.EBX, resPath, pack ); //EBXFile ebxFile = TreeViewConverter.getEBXFile(ebxExplorer.getRoot()); //byte[] ebxBytes = EBXConverter.createEBX(ebxFile); FileHandler.writeFile(Core.getGame().getCurrentMod().getPath()+ModTools.RESOURCEFOLDER+resPath, new byte[] {0x00}/*ebxBytes goes here!); //TODO //This will be moved over into main save. Core.getModTools().writePackages(); */ }else{ //DEBUG-- EBXFile ebxFile = TreeViewConverter.getEBXFile(ebxExplorer.getRoot()); System.err.println("TODO"); byte[] ebxBytes = Core.getGame().getResourceHandler().getEBXHandler().createEBX(ebxFile); FileHandler.writeFile("output/DEBUG.ebx", ebxBytes); //TEST 2 EBXFile orig = Core.getGame().getResourceHandler().getEBXHandler().loadFile(FileHandler.readFile("mods/SampleMod/resources/levels/mp/mp_playground/content/layer2_buildings.bak--IGNORE")); byte[] origBytes = Core.getGame().getResourceHandler().getEBXHandler().createEBX(orig); FileHandler.writeFile("output/ORIG_DEBUG.ebx", origBytes); } } } public TreeView<TreeViewEntry> getEBXExplorer() { return ebxExplorer; } public void setStage(Stage stage) { this.stage = stage; } public void setWindow(EBXWindow window) { this.window = window; } }