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); }
@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)); }
@Override protected void onDestroy() { game.stop(); super.onDestroy(); }