示例#1
0
 protected void quitter() {
   game.stop();
   // on quitte l'activité
   setResult(Navigation.ACTION_QUIT.getResultCode());
   // on revient à l'accueil pour quitter
   Intent quitter = new Intent(GameActivity.this, MainActivity.class);
   quitter.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
   quitter.setAction(Navigation.ACTION_QUIT.getAction());
   finish();
   startActivity(quitter);
 }
示例#2
0
  @Override
  protected void onResume() {
    super.onResume();
    // on détermine le 1er joueur à partir du bouton clické sur l'activité précedente
    String firstPlayer = getIntent().getStringExtra(EXTRA_START_PLAYER);
    try {
      // initialisation du jeu
      game.init(firstPlayer);
      game.setRunning(true);

      // on récupère le graphic engine
      TttGraphicEngine graphicEngine = (TttGraphicEngine) game.getModules().get(ModuleType.GRAPHIC);
      // et on lui passe les views
      graphicEngine.setGameView(gameView);
      graphicEngine.setInfoView(infoText);
      graphicEngine.setButtonNext(buttonNext);
      graphicEngine.setButtonQuit(buttonQuit);

      // FIXME [Ttt] récréation de nouveau thread à chaque onResume()
      // on lance la gestion du jeu dans un thread
      Thread gameThread =
          new Thread(
              new Runnable() {
                /** handler pour communiquer avec le thread principal (UI thread) */
                private final Handler handler =
                    new Handler(Looper.getMainLooper(), new MsgHandler());
                /** Callback permettant de transmettre une GameException au thread principal */
                class MsgHandler implements Callback {
                  public boolean handleMessage(Message msg) {
                    lauchError((GameException) msg.obj);
                    return true;
                  }
                }

                public void run() {
                  // Moves the current Thread into the background
                  android.os.Process.setThreadPriority(
                      android.os.Process.THREAD_PRIORITY_BACKGROUND);
                  try {
                    game.run();
                  } catch (GameException gex) {
                    // en cas d'erreur du jeu
                    Message msg = new Message();
                    msg.obj = gex;
                    // on envoie l'exception à l'UI thread via le callback
                    handler.sendMessage(msg);
                  }
                }
              });
      gameThread.setName("TtT Game thread");
      gameThread.start();
    } catch (GameException gex) {
      // interprétation de l'erreur du jeu
      lauchError(gex);
    }
    // récupération du 1er joueur
    State startPlayer = State.getPlayerState(getIntent().getStringExtra(EXTRA_START_PLAYER));
    // envoi d'une requête au game engine
    game.getModules()
        .get(ModuleType.GAME)
        .pushEvent(new TttEngineEvent(GameEvents.BEGIN_TURN, startPlayer));
  }
示例#3
0
 @Override
 protected void onDestroy() {
   game.stop();
   super.onDestroy();
 }