11 Commits

Author SHA1 Message Date
c4f960f332 Feat: Notifications OFF par défaut et Implémentation Sonore
- Notifications:
  - Valeur par défaut pour l'activation des notifications mise à 'false'.
  - L'utilisateur doit maintenant activer explicitement les notifications via les paramètres.
- Son:
  - Ajout de la structure pour les effets sonores via SoundPool.
  - Création du dossier 'res/raw' (si nécessaire) pour les fichiers audio (placeholders: move, merge, win, game_over).
  - Initialisation de SoundPool et chargement des sons dans MainActivity.onCreate.
  - Ajout méthode playSound() pour jouer les effets (vérifie si chargé et activé).
  - Déclenchement des sons 'move' et 'merge' dans handleSwipe.
  - Déclenchement des sons 'win' et 'game_over' à l'affichage des dialogues correspondants.
  - Activation du switch 'Son' dans les paramètres, sauvegarde/chargement de la préférence 'sound_enabled'.
  - Libération de SoundPool dans MainActivity.onDestroy.
2025-04-04 17:02:06 +02:00
7dc7360e14 Feat: Implémentation de base des notifications
- Ajout permission POST_NOTIFICATIONS dans AndroidManifest.xml (Android 13+).
- Création d'un canal de notification ('BEST_2048_CHANNEL') dans MainActivity.onCreate.
- Ajout d'une icône de notification simple (ic_stat_notification_2048.xml).
- Ajout de strings pour les notifications et la gestion des permissions.
- Modification de MainActivity :
  - Implémentation de la demande de permission POST_NOTIFICATIONS via ActivityResultLauncher,
    déclenchée par l'activation du switch dans les paramètres.
  - Ajout méthode utilitaire 'showNotification' utilisant NotificationCompat.Builder.
  - Ajout méthodes 'showAchievementNotification', 'showHighScoreNotification' (test), 'showInactivityNotification' (test).
  - Déclenchement de 'showAchievementNotification' dans handleSwipe lors de la première victoire.
  - Activation du switch 'Notifications' dans le dialogue des paramètres et gestion de son état
    via SharedPreferences et demande de permission.
  - Ajout (commenté/optionnel) boutons de test pour notifications HighScore/Inactivité.
- NOTE: Notifications périodiques (HighScore, Inactivité) non planifiées, déclenchées
  manuellement pour test dans ce commit. Nécessite WorkManager/AlarmManager pour implémentation réelle.
2025-04-04 15:20:14 +02:00
a61f110992 Feat: Implémentation écran Paramètres (dialogue)
- Création du layout personnalisé 'dialog_settings.xml'.
- Ajout des options dans le dialogue :
  - Son (placeholder désactivé).
  - Notifications (placeholder désactivé).
  - Bouton 'Gérer les Permissions' ouvrant les paramètres système de l'app.
  - Bouton 'Partager mes Statistiques' utilisant l'Intent de partage Android.
  - Bouton 'Réinitialiser les Statistiques' avec dialogue de confirmation.
  - Bouton 'Quitter l'Application'.
  - Bouton 'Fermer'.
- Ajout des strings correspondantes.
- Implémentation de showSettingsDialog(), shareStats(), showResetStatsConfirmationDialog(),
  resetStatistics() dans MainActivity.
- Ajout de la méthode resetStats() dans GameStats.
2025-04-04 15:07:21 +02:00
b7655a825a Feat: Amélioration dialogue 'À Propos'
- Remplacement de l'AlertDialog simple par un layout personnalisé (dialog_about.xml).
- Mise à jour du message 'À Propos' avec les informations du groupe et contexte projet.
- Ajout d'un TextView cliquable contenant un lien vers le site web 'legion-muyue.fr'.
- Implémentation de l'ouverture du lien dans un navigateur via Intent dans showAboutDialog().
2025-04-04 14:53:20 +02:00
2a782950cd Feat: Implémentation menu principal via AlertDialog
- Ajout des chaînes de caractères pour le menu et ses options dans strings.xml.
- Modification de MainActivity :
  - Implémentation de showMenu() pour créer et afficher la liste d'options grâce à un layout personnalisé (dialog_main_menu.xml).
  - Ajout de showHowToPlayDialog() affichant les règles de base.
  - Ajout de showAboutDialog() affichant des informations sur l'app.
  - Ajout de showSettingsDialog() comme placeholder pour les futurs paramètres.
2025-04-04 14:28:41 +02:00
b32d1e0986 Fix: Amélioration gestion états Victoire et Game Over
- Ajout d'un enum GameFlowState (PLAYING, WON_DIALOG_SHOWN, GAME_OVER) dans MainActivity.
- handleSwipe n'accepte les mouvements que si l'état est PLAYING.
- Lors de la première victoire (>= 2048), affiche une nouvelle boîte de dialogue
  proposant 'Continuer' ou 'Nouvelle Partie'.
  - Si 'Continuer', l'état passe à WON_DIALOG_SHOWN, permettant au jeu de continuer
    sans réafficher la dialogue de victoire.
- En cas de Game Over, l'état passe à GAME_OVER et le jeu est bloqué.
- startNewGame réinitialise l'état à PLAYING.
- loadGame détermine l'état initial basé sur le jeu chargé.
- Mise à jour des strings pour les nouvelles dialogues.
2025-04-04 13:50:24 +02:00
73ab81e208 Feat: Stats, Refactor, Permissions
- AndroidManifest: Ajout permissions (Network, BT, Location).
- Game.java: Refonte majeure (renommage, contexte, états win/loss,
  logique SharedPreferences implémentée, probabilités addNewTile modifiées,
  méthodes check win/loss, pushX retourne boolean, JavaDoc).
- MainActivity.java: Refonte majeure (gestion stats via ViewStub,
  champs/méthodes stats, dialogs win/loss, refactorisation onCreate,
  getters/setters, gestion cycle vie onPause/onResume, MAJ handleSwipe).
- OnSwipeTouchListener.java: Ajout annotations, JavaDoc.
- Layouts: Ajout stats_layout.xml, ajout ViewStub dans activity_main.xml.
- Ressources: Ajout/MAJ strings (stats), colors (thème, tuiles, stats),
  styles (stats, fullscreen), dimens, anim (durée), drawables (bouton multi, tile_background).
2025-04-04 12:06:08 +02:00
a190263cf5 Feat: Ajout confirmation restart et sauvegarde/chargement état
- Ajout dialog_restart_confirm.xml et dialog_background.xml pour la confirmation.
- Mise à jour strings.xml avec les textes de la boîte de dialogue.
- Modification de MainActivity:
  - Implémentation de showRestartConfirmationDialog.
  - Ajout logique SharedPreferences pour saveGame() dans onPause() et loadGame() dans onCreate().
- Modification de Game:
  - Ajout constructeur Game(board, score, highScore).
  - Ajout setter setHighScore(int).
  - Implémentation de serialize() et static deserialize() pour l'état du jeu.
  - updateHighScore() appelle maintenant saveHighScore() (stub).
2025-04-04 11:39:22 +02:00
344db1e4ae Refactor: UI - Styles, Dimens, Animations, Code Java
- XML:
  - Utilisation de <include> pour les boutons du bas (bottom_buttons_layout.xml).
  - Extraction des dimensions dans dimens.xml.
  - Définition de styles (ScoreLabelStyle, ButtonStyle, LargeButtonStyle) dans styles.xml.
  - Ajout de nombreuses couleurs dans colors.xml.
  - Ajout placeholders pour tile_background.xml et button_multiplayer_background.xml.
- Java:
  - MainActivity: Utilisation de switch et teinte pour l'apparence des tuiles (setTileAppearance),
    utilisation de getString pour les scores, ajout listeners et animations simples aux boutons,
    implémentation de restartGame(), ajout stubs autres boutons, ajout enum Direction.
  - Game: Ajout champ/méthodes highScore (stubs load/save), appel updateHighScore après fusion,
    utilisation de List<int[]> pour emptySpaces.
  - OnSwipeTouchListener: Utilisation d'une interface SwipeListener pour découplage.
- Ajout des fichiers d'animation button_press.xml et button_release.xml.
2025-04-03 19:25:08 +02:00
7eb597650c Feat: Ajout layout initial et ressources UI
- Création de activity_main.xml avec la structure de base (labels score,
  conteneur grille, boutons).
- Création de strings.xml avec les textes initiaux.
- Création de colors.xml avec les couleurs de base.
- Création des fichiers drawable tile_*.xml pour l'apparence des tuiles
  (vide, 2 à 2048).
2025-04-03 18:47:59 +02:00
0126838872 Création du projet sous Android Studio 2025-04-03 18:21:45 +02:00