예제 #1
0
  /**
   * 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();
    }
  }
예제 #2
0
  /** 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);
  }
예제 #3
0
  /** 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();
    }
  }