package ttt.organization; import nu.xom.Attribute; import nu.xom.Element; import ttt.io.XMLSerializeable; import ttt.organization.managers.TTT_EntityManager; import ttt.organization.managers.TTT_SceneManager; public class TTT_Project implements XMLSerializeable { public final TTT_SceneManager sceneManager; public final TTT_VariableCase variables; public final TTT_EntityManager entities; private String openingScene; // Updating code private static boolean levelSwitchRequested = false; private static String nextLevel; public TTT_Project() { sceneManager = new TTT_SceneManager(); variables = new TTT_VariableCase(); entities = new TTT_EntityManager(); openingScene = ""; } public static void switchToLevel(final String levelId) { nextLevel = levelId; levelSwitchRequested = true; } @Override public Element writeToElement() { Element e = new Element(getElementName()); e.appendChild(sceneManager.writeToElement()); e.appendChild(variables.writeToElement()); e.appendChild(entities.writeToElement()); e.addAttribute(new Attribute("startingScene", openingScene)); return e; } @Override public void assembleFromElement(Element entity) { sceneManager.assembleFromElement(entity.getChildElements(sceneManager.getElementName()).get(0)); variables.assembleFromElement(entity.getChildElements(variables.getElementName()).get(0)); entities.assembleFromElement(entity.getChildElements(entities.getElementName()).get(0)); openingScene = entity.getAttribute("startingScene").getValue(); } public void update(final long milliDelta) { if (levelSwitchRequested) { sceneManager.getCurrentScene().onDeath(); sceneManager.moveToScene(nextLevel); sceneManager.getCurrentScene().onSpawn(); levelSwitchRequested = false; } } @Override public String getElementName() { return "project"; } public void setOpeningScene(String openingScene) { this.openingScene = openingScene; } public void moveToOpeningScene() { sceneManager.moveToScene(openingScene); } public String toString() { return getElementName(); } }