/** * Destroy must cleanup everything. Only objects exist so the GC will do all the cleanup after the * last reference is removed. */ public void destroyApp(boolean unconditional) { display.setCurrent(null); canvas.destroy(); if (score != null) { score.close(); } }
/** Creates new PushPuzzle MIDlet. */ public PushPuzzle() { display = Display.getDisplay(this); score = new Score(); canvas = new PushPuzzleCanvas(this, score); alert = new Alert("Warning"); if (!score.open()) { System.out.println("Score open failed"); } canvas.init(); canvas.addCommand(undoCommand); canvas.addCommand(scoresCommand); canvas.addCommand(restartCommand); canvas.addCommand(levelCommand); canvas.addCommand(exitCommand); canvas.addCommand(nextCommand); canvas.addCommand(prevCommand); canvas.addCommand(themeCommand); canvas.setCommandListener(this); }
/** Respond to a commands issued on any Screen */ public void commandAction(Command c, Displayable s) { if (c == undoCommand) { canvas.undoMove(); } else if (c == restartCommand) { canvas.restartLevel(); } else if (c == levelCommand) { levelScreen = canvas.getLevelScreen(); levelScreen.addCommand(okCommand); levelScreen.setCommandListener(this); display.setCurrent(levelScreen); } else if ((c == okCommand) && (s == levelScreen)) { if (!canvas.gotoLevel()) { alert.setString("Could not load level"); display.setCurrent(alert, canvas); } else { display.setCurrent(canvas); } } else if (c == scoresCommand) { scoreScreen = canvas.getScoreScreen(); scoreScreen.addCommand(okCommand); scoreScreen.setCommandListener(this); display.setCurrent(scoreScreen); } else if ((c == okCommand) && (s == scoreScreen)) { display.setCurrent(canvas); } else if (c == exitCommand) { destroyApp(false); notifyDestroyed(); } else if ((c == List.SELECT_COMMAND) && (s == canvas)) { // Solved the level scoreScreen = canvas.getScoreScreen(); scoreScreen.addCommand(okCommand); scoreScreen.setCommandListener(this); display.setCurrent(scoreScreen); // Read the next screen. canvas.nextLevel(1); } else if (c == nextCommand) { if (!canvas.nextLevel(1)) { alert.setString("Could not load level " + (canvas.getLevel() + 1)); display.setCurrent(alert, canvas); } else { display.setCurrent(canvas); } if (s == canvas) { canvas.repaint(); } } else if (c == prevCommand) { if (!canvas.nextLevel(-1)) { alert.setString("Could not load level " + (canvas.getLevel() - 1)); display.setCurrent(alert, canvas); } else { display.setCurrent(canvas); } if (s == canvas) { canvas.repaint(); } } else if (c == themeCommand) { canvas.changeTheme(); } }