Rajout apres avoir eu un bug avec mainactivity

This commit is contained in:
2026-03-19 10:13:13 +01:00
parent b3299977a2
commit f91bfe6bc0
+46 -13
View File
@@ -3,6 +3,7 @@ package sae.chuzzle;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.RadioButton; import android.widget.RadioButton;
@@ -11,13 +12,15 @@ import android.widget.TextView;
public class MainActivity extends Activity implements View.OnClickListener { public class MainActivity extends Activity implements View.OnClickListener {
private static final long DUREE_HARD_MS = 60_000L; // 1 minute
private Controleur controleur; private Controleur controleur;
private Button btnJouer; private Button btnJouer;
private Button btnMenu; private Button btnMenu;
private TextView tvTimer;
private CountDownTimer compteARebours;
private long tempsRestantMs;
private boolean hardMode; private boolean hardMode;
private EtatJeu etatJeu; private EtatJeu etatJeu;
@@ -38,13 +41,18 @@ public class MainActivity extends Activity implements View.OnClickListener {
// --- Restauration si retour de pause --- // --- Restauration si retour de pause ---
if (savedInstanceState != null) { if (savedInstanceState != null) {
etatJeu.restaurerEtat(savedInstanceState); etatJeu.restaurerEtat(savedInstanceState);
if (hardMode) {
tempsRestantMs = savedInstanceState.getLong("tempsRestantMs", DUREE_HARD_MS);
}
} else {
tempsRestantMs = DUREE_HARD_MS;
} }
// --- Vue --- // --- Vue ---
VueGrille vueGrille = findViewById(R.id.vueGrille); VueGrille vueGrille = findViewById(R.id.vueGrille);
vueGrille.definirModeDaltonien(daltonien); vueGrille.definirModeDaltonien(daltonien);
tvTimer = findViewById(R.id.tvTimer);
// --- Controleur --- // --- Controleur ---
btnJouer = findViewById(R.id.btnJouer); btnJouer = findViewById(R.id.btnJouer);
@@ -64,8 +72,7 @@ public class MainActivity extends Activity implements View.OnClickListener {
(RadioButton) findViewById(R.id.rbLigne), (RadioButton) findViewById(R.id.rbLigne),
(RadioButton) findViewById(R.id.rbDroite), (RadioButton) findViewById(R.id.rbDroite),
(Spinner) findViewById(R.id.spinnerIndex), (Spinner) findViewById(R.id.spinnerIndex),
btnJouer, btnJouer
hardMode
); );
// --- Gestion tactile --- // --- Gestion tactile ---
@@ -73,14 +80,39 @@ public class MainActivity extends Activity implements View.OnClickListener {
new GestionnaireTactile(vueGrille, etatJeu, controleur); new GestionnaireTactile(vueGrille, etatJeu, controleur);
vueGrille.setOnTouchListener(gestionnaireTactile); vueGrille.setOnTouchListener(gestionnaireTactile);
// --- Logique Hard mode --- // --- Timer hard mode ---
if (hardMode) { if (hardMode && !etatJeu.estTerminee()) {
// TODO: Ajouter la nouvelle fonctionnalité pour le hard mode ici (en remplacement du timer) demarrerTimer(tempsRestantMs);
} else if (hardMode && etatJeu.estTerminee()) {
tvTimer.setVisibility(View.VISIBLE);
tvTimer.setText("⏱ 0s");
} }
} }
// - // -
// // TIMER
private void demarrerTimer(long dureeMs) {
tvTimer.setVisibility(View.VISIBLE);
compteARebours = new CountDownTimer(dureeMs, 1000) {
@Override
public void onTick(long millisRestants) {
tempsRestantMs = millisRestants;
long secondes = millisRestants / 1000;
tvTimer.setText("" + secondes + "s");
}
@Override
public void onFinish() {
tvTimer.setText("⏱ 0s");
// Forcer la fin de partie par le temps
etatJeu.forcerFinDePartie();
controleur.verifierFinDePartie();
}
}.start();
}
// - // -
// CYCLE DE VIE // CYCLE DE VIE
@@ -91,15 +123,17 @@ public class MainActivity extends Activity implements View.OnClickListener {
if (etatJeu != null) { if (etatJeu != null) {
etatJeu.sauvegarderEtat(outState); etatJeu.sauvegarderEtat(outState);
} }
if (controleur != null) { if (hardMode) {
controleur.sauvegarderEtat(outState); outState.putLong("tempsRestantMs", tempsRestantMs);
} }
} }
@Override @Override
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
if (compteARebours != null) {
compteARebours.cancel();
}
} }
@Override @Override
@@ -108,7 +142,6 @@ public class MainActivity extends Activity implements View.OnClickListener {
controleur.gererCoupJoueur(); controleur.gererCoupJoueur();
} }
if (v == btnMenu) { if (v == btnMenu) {
etatJeu.forcerFinDePartie();
Intent intent = new Intent(this, MenuActivity.class); Intent intent = new Intent(this, MenuActivity.class);
startActivity(intent); startActivity(intent);
} }