feat: Ajout du hub de jeux et nouveau mode 89++

Nouvelles fonctionnalités:
- Hub de sélection de jeux avec cartes animées
- Refonte complète de Boidelo Classic avec nouvelle architecture
- Nouveau mode 89++ : assistant de jeu avec timer et défis
- Système de joueurs dynamique avec ajout/suppression
- Interface moderne et cohérente entre les jeux

Améliorations:
- Système de défis avec pause pendant l'affichage
- Gestion des gorgées avec slider (1-8)
- Statistiques de joueurs en temps réel
- Bouton retour fonctionnel avec gestion de la notch

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
feldenr
2026-01-14 22:50:55 +01:00
co-authored by Claude
parent ecb44f1934
commit 1b3d67526d
30 changed files with 3710 additions and 87 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white"/>
<solid android:color="@color/card_background"/>
<corners android:radius="16dp"/>
<stroke
android:width="1dp"
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/primary"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM12.5,7H11v6l5.25,3.15 0.75,-1.23 -4.5,-2.67z" />
</vector>
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/accent"
android:pathData="M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2zM7,7h2v2H7V7zM11,7h2v2h-2V7zM15,7h2v2h-2V7zM7,11h2v2H7v-2zM11,11h2v2h-2v-2zM15,11h2v2h-2v-2zM7,15h10v2H7v-2z" />
</vector>
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/accent"
android:pathData="M18,2H6C4.9,2 4,2.9 4,4v16c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4c0,-1.1 -0.9,-2 -2,-2zM6,4h5v8l-2.5,-1.5L6,12V4z" />
</vector>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/primary"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,5c1.66,0 3,1.34 3,3s-1.34,3 -3,3 -3,-1.34 -3,-3 1.34,-3 3,-3zM12,19.2c-2.5,0 -4.71,-1.28 -6,-3.22 0.03,-1.99 4,-3.08 6,-3.08 1.99,0 5.97,1.09 6,3.08 -1.29,1.94 -3.5,3.22 -6,3.22z" />
</vector>
@@ -0,0 +1,213 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".games.boideloclassic.BoideloClassicGameActivity">
<!-- App Bar -->
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/primary"
app:navigationIcon="@android:drawable/ic_menu_revert"
app:title="Boidelo Classic"
app:titleTextColor="@color/text_on_primary" />
</com.google.android.material.appbar.AppBarLayout>
<!-- Main Content -->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<!-- Progress Bar -->
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="0dp"
android:layout_height="8dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:max="100"
android:progress="0"
android:progressTint="@color/accent"
android:progressBackgroundTint="@color/surface_variant"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!-- Progress Text -->
<TextView
android:id="@+id/progressTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="Question 1 / 50"
android:textColor="@color/text_secondary"
android:textSize="12sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/progressBar" />
<!-- Question Type Indicator -->
<LinearLayout
android:id="@+id/questionIndicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="center"
android:orientation="vertical"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/progressTextView">
<ImageView
android:id="@+id/indicatorIcon"
android:layout_width="32dp"
android:layout_height="32dp"
android:src="@drawable/ic_player_one"
app:tint="@color/text_secondary" />
<TextView
android:id="@+id/indicatorText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="1 joueur"
android:textColor="@color/text_secondary"
android:textSize="12sp"
android:textStyle="bold" />
</LinearLayout>
<!-- Main Question Container -->
<com.google.android.material.card.MaterialCardView
android:id="@+id/questionCard"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="24dp"
app:cardBackgroundColor="@color/card_background"
app:cardCornerRadius="20dp"
app:cardElevation="8dp"
app:layout_constraintBottom_toTopOf="@id/buttonContainer"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/questionIndicator">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="24dp">
<!-- Manche Counter -->
<TextView
android:id="@+id/mancheCounterTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/bg_card"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingEnd="16dp"
android:paddingBottom="8dp"
android:text="Manches: 5"
android:textColor="@color/primary"
android:textSize="14sp"
android:textStyle="bold"
android:visibility="gone"
tools:visibility="visible" />
<!-- Manche Question Text (petit) -->
<TextView
android:id="@+id/mancheQuestionText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:gravity="center"
android:text="Défi en cours"
android:textColor="@color/text_secondary"
android:textSize="14sp"
android:textStyle="italic"
android:visibility="gone" />
<!-- Question Text -->
<TextView
android:id="@+id/questionTextView"
style="@style/BoideloQuestionText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Question"
android:textSize="26sp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- Button Container -->
<LinearLayout
android:id="@+id/buttonContainer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="32dp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<!-- Skip Button -->
<com.google.android.material.button.MaterialButton
android:id="@+id/skipButton"
style="@style/BoideloButton"
android:layout_width="229dp"
android:layout_height="match_parent"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:onClick="onSkipClick"
android:text="Abandonner le défi"
android:textSize="12sp"
android:textColor="@color/error"
android:visibility="gone"
app:backgroundTint="@color/surface_variant"
app:cornerRadius="28dp" />
<!-- Next Button -->
<com.google.android.material.button.MaterialButton
android:id="@+id/suivantButton"
style="@style/BoideloButton.Primary"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="8dp"
android:layout_weight="2"
android:onClick="OnClickButton1"
android:text="Suivant"
android:textSize="18sp"
app:cornerRadius="28dp"
app:icon="@android:drawable/ic_media_play"
app:iconGravity="textEnd" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -0,0 +1,175 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/surface"
tools:context=".games.boideloclassic.BoideloClassicParamsActivity">
<!-- App Bar -->
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/primary"
app:navigationIcon="@android:drawable/ic_menu_revert"
app:title="@string/parameters"
app:titleTextColor="@color/text_on_primary" />
</com.google.android.material.appbar.AppBarLayout>
<!-- Main Content -->
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<!-- Title -->
<TextView
style="@style/BoideloTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginBottom="16dp"
android:text="@string/game_settings" />
<!-- Game Settings Card -->
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
app:cardBackgroundColor="@color/card_background"
app:cardCornerRadius="16dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<!-- Number of Questions -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/number_of_questions"
android:textColor="@color/text_primary"
android:textSize="16sp"
android:textStyle="bold" />
<SeekBar
android:id="@+id/questionsSeekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:max="50"
android:min="10"
android:progress="20" />
<TextView
android:id="@+id/questionsCountText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:gravity="center"
android:textColor="@color/accent"
android:textSize="14sp"
android:textStyle="bold"
tools:text="20 questions" />
<!-- Number of Gorgées -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/number_of_gorgees"
android:textColor="@color/text_primary"
android:textSize="16sp"
android:textStyle="bold" />
<SeekBar
android:id="@+id/gorgeesSeekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:max="5"
android:min="1"
android:progress="1" />
<TextView
android:id="@+id/gorgeesCountText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:gravity="center"
android:textColor="@color/accent"
android:textSize="14sp"
android:textStyle="bold"
tools:text="+1 gorgée" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- AI Settings Card -->
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
app:cardBackgroundColor="@color/card_background"
app:cardCornerRadius="16dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/artificial_intelligence"
android:textColor="@color/text_primary"
android:textSize="16sp"
android:textStyle="bold" />
<com.google.android.material.switchmaterial.SwitchMaterial
android:id="@+id/aiSwitch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/enable_ai_questions"
android:textColor="@color/text_hint"
android:textSize="14sp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- Save Button -->
<com.google.android.material.button.MaterialButton
android:id="@+id/saveButton"
style="@style/BoideloButton.Primary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/save" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -0,0 +1,147 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background"
android:fitsSystemWindows="true"
tools:context=".games.boideloclassic.BoideloClassicSetupActivity">
<!-- App Bar -->
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/primary"
app:navigationIcon="@android:drawable/ic_menu_revert"
app:title="Boidelo Classic"
app:titleTextColor="@android:color/white" />
</com.google.android.material.appbar.AppBarLayout>
<!-- Main Content -->
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<!-- Title -->
<TextView
style="@style/BoideloTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginBottom="16dp"
android:text="@string/boidelo_classic_setup_title"
android:textColor="@color/primary" />
<!-- Game Description Card -->
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
app:cardBackgroundColor="@color/card_background"
app:cardCornerRadius="16dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Le jeu original de questions et défis"
android:textColor="@color/text_primary"
android:textSize="14sp"
android:gravity="center" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- Players Card -->
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
app:cardBackgroundColor="@color/card_background"
app:cardCornerRadius="16dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/players"
android:textColor="@color/text_primary"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/playerCountText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/min_players_required"
android:textColor="@color/accent"
android:textSize="14sp"
android:textStyle="bold"
android:gravity="center" />
<LinearLayout
android:id="@+id/playersContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="vertical" />
<com.google.android.material.button.MaterialButton
android:id="@+id/addPlayerButton"
style="@style/BoideloButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/add_player"
app:icon="@android:drawable/ic_input_add" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- Start Button -->
<com.google.android.material.button.MaterialButton
android:id="@+id/startGameButton"
style="@style/BoideloButton.Primary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/start_game"
android:textSize="18sp"
app:icon="@android:drawable/ic_media_play" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -0,0 +1,240 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background"
tools:context=".games.game89.Game89GameActivity">
<!-- App Bar -->
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/primary"
app:navigationIcon="@android:drawable/ic_menu_revert"
app:title="89++ - Assistant"
app:titleTextColor="@android:color/white" />
</com.google.android.material.appbar.AppBarLayout>
<!-- Main Content -->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:paddingTop="24dp"
android:paddingBottom="16dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<!-- Timer Card -->
<com.google.android.material.card.MaterialCardView
android:id="@+id/timerCard"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:cardBackgroundColor="@color/primary"
app:cardCornerRadius="24dp"
app:cardElevation="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:padding="32dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Assistant 89++"
android:textColor="@android:color/white"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/timerTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Prochain défi dans: 2:00"
android:textColor="@android:color/white"
android:textSize="32sp"
android:textStyle="bold"
android:gravity="center" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Jouez avec vos cartes physiques !"
android:textColor="@android:color/white"
android:textSize="14sp"
android:alpha="0.9" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- Challenge Display -->
<com.google.android.material.card.MaterialCardView
android:id="@+id/challengeContainer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:visibility="gone"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/accent"
app:cardCornerRadius="20dp"
app:cardElevation="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/timerCard"
tools:visibility="visible">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="⚠️ DÉFI !"
android:textColor="@android:color/white"
android:textSize="24sp"
android:textStyle="bold" />
<TextView
android:id="@+id/challengeTitleTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Changement de sens !"
android:textColor="@android:color/white"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:id="@+id/challengeDescriptionTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="Le sens du jeu est inversé !"
android:textColor="@android:color/white"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="👆 Tapez pour continuer"
android:textColor="@android:color/white"
android:textSize="12sp"
android:alpha="0.7"
android:layout_gravity="center" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- Action Buttons -->
<LinearLayout
android:id="@+id/actionButtons"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/challengeContainer">
<com.google.android.material.button.MaterialButton
android:id="@+id/recordDrinksButton"
style="@style/BoideloButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:text="🍺 Enregistrer\ngorgées"
android:textColor="@color/text_primary"
android:textSize="14sp"
app:backgroundTint="@android:color/white"
app:cornerRadius="20dp"
app:strokeColor="@color/primary"
app:strokeWidth="2dp"
android:elevation="2dp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/showStatsButton"
style="@style/BoideloButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_weight="1"
android:text="📊 Voir\nstatistiques"
android:textColor="@color/text_primary"
android:textSize="14sp"
app:backgroundTint="@android:color/white"
app:cornerRadius="20dp"
app:strokeColor="@color/primary"
app:strokeWidth="2dp"
android:elevation="2dp" />
</LinearLayout>
<!-- Info Card -->
<com.google.android.material.card.MaterialCardView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:cardBackgroundColor="@android:color/white"
app:cardCornerRadius="16dp"
app:cardElevation="4dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/actionButtons">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="💡 Rappel des règles"
android:textColor="@color/text_primary"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="• Valet = -10\n• Dame = Change sens\n• Roi = Choisissez la valeur\n• Dizaine (10, 20...) = distribuez des gorgées\n• 70 = DOUBLE (14 gorgées!)"
android:textColor="@color/text_hint"
android:textSize="14sp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -0,0 +1,191 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/surface"
tools:context=".games.game89.Game89SetupActivity">
<!-- App Bar -->
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/primary"
app:navigationIcon="@android:drawable/ic_menu_revert"
app:title="89++ - Configuration"
app:titleTextColor="@color/text_on_primary" />
</com.google.android.material.appbar.AppBarLayout>
<!-- Main Content -->
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<!-- Title -->
<TextView
style="@style/BoideloTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginBottom="16dp"
android:text="@string/game_89_title"
android:textColor="@color/primary" />
<!-- Game Rules Card -->
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
app:cardBackgroundColor="@color/card_background"
app:cardCornerRadius="16dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/game_rules"
android:textColor="@color/text_primary"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/game_89_rules_summary"
android:textColor="@color/text_hint"
android:textSize="14sp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- Players Card -->
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
app:cardBackgroundColor="@color/card_background"
app:cardCornerRadius="16dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/players"
android:textColor="@color/text_primary"
android:textSize="18sp"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/playersContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="vertical" />
<com.google.android.material.button.MaterialButton
android:id="@+id/addPlayerButton"
style="@style/BoideloButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/add_player"
app:icon="@android:drawable/ic_input_add" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- Challenge Timer Card -->
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
app:cardBackgroundColor="@color/card_background"
app:cardCornerRadius="16dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/challenge_timer"
android:textColor="@color/text_primary"
android:textSize="18sp"
android:textStyle="bold" />
<SeekBar
android:id="@+id/timerSeekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:max="2"
android:min="1"
android:progress="1" />
<TextView
android:id="@+id/timerText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:gravity="center"
android:text="1 minute"
android:textColor="@color/accent"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- Start Button -->
<com.google.android.material.button.MaterialButton
android:id="@+id/startGameButton"
style="@style/BoideloButton.Primary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/start_game"
android:textSize="18sp"
app:icon="@android:drawable/ic_media_play" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background"
android:fitsSystemWindows="true"
tools:context=".hub.GameSelectionActivity">
<!-- App Bar -->
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/primary"
app:title="@string/app_name"
app:titleTextColor="@color/text_on_primary"
android:paddingStart="8dp"
android:paddingEnd="8dp" />
</com.google.android.material.appbar.AppBarLayout>
<!-- Main Content -->
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<!-- Welcome Title -->
<TextView
style="@style/BoideloTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginBottom="8dp"
android:gravity="center"
android:text="@string/welcome_to_hub" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:gravity="center"
android:text="@string/select_game_subtitle"
android:textColor="@color/text_hint"
android:textSize="14sp" />
<!-- Games RecyclerView -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/gamesRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_game_card" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
+111
View File
@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/card_background"
app:cardCornerRadius="12dp"
app:cardElevation="2dp"
app:strokeColor="@color/card_stroke"
app:strokeWidth="1dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:padding="16dp">
<!-- Game Icon Container -->
<com.google.android.material.card.MaterialCardView
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_marginEnd="16dp"
app:cardBackgroundColor="@color/accent"
app:cardCornerRadius="8dp"
app:cardElevation="0dp">
<ImageView
android:id="@+id/gameIcon"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_gravity="center"
android:contentDescription="@string/game_icon"
android:src="@drawable/ic_player_three"
app:tint="@color/text_primary" />
</com.google.android.material.card.MaterialCardView>
<!-- Game Info -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/gameName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/text_primary"
android:textSize="18sp"
android:textStyle="bold"
android:maxLines="1"
android:ellipsize="end"
tools:text="Boidelo Classic" />
<TextView
android:id="@+id/gameDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:textColor="@color/text_hint"
android:textSize="14sp"
android:maxLines="2"
android:ellipsize="end"
tools:text="Le jeu original de questions et défis" />
<!-- Coming Soon Badge -->
<com.google.android.material.chip.Chip
android:id="@+id/statusText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/coming_soon"
android:textColor="@color/text_hint"
android:textSize="11sp"
android:visibility="gone"
app:chipBackgroundColor="@color/surface_variant"
app:chipCornerRadius="4dp"
app:chipMinHeight="24dp"
style="@style/Widget.Material3.Chip.Assist.Elevated" />
</LinearLayout>
<!-- Play Indicator -->
<com.google.android.material.card.MaterialCardView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginStart="8dp"
app:cardBackgroundColor="@color/primary"
app:cardCornerRadius="20dp"
app:cardElevation="2dp">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="center"
android:contentDescription="@string/play_game"
android:src="@android:drawable/ic_media_play"
app:tint="@color/text_on_primary" />
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
app:cardBackgroundColor="@color/card_background"
app:cardCornerRadius="8dp"
app:cardElevation="2dp"
app:strokeColor="@color/card_stroke"
app:strokeWidth="1dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:padding="8dp">
<!-- Player Number Indicator -->
<TextView
android:id="@+id/playerNumber"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="@drawable/bg_button_secondary"
android:gravity="center"
android:textColor="@color/text_primary"
android:textSize="12sp"
android:textStyle="bold"
android:text="4" />
<!-- Player Name Input -->
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:hint="@string/player_name_hint"
app:boxBackgroundColor="@color/white"
app:boxStrokeColor="@color/primary"
app:boxStrokeWidth="1dp"
app:endIconMode="clear_text"
app:hintTextColor="@color/text_hint"
style="@style/Widget.Material3.TextInputLayout.OutlinedBox">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/playerName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:maxLines="1"
android:textSize="14sp" />
</com.google.android.material.textfield.TextInputLayout>
<!-- Remove Button with Material Design -->
<com.google.android.material.button.MaterialButton
android:id="@+id/removePlayerButton"
style="@style/Widget.Material3.Button.IconButton.Filled"
android:layout_width="40dp"
android:layout_height="40dp"
android:contentDescription="@string/remove_player"
app:icon="@android:drawable/ic_delete"
app:iconTint="@color/error"
app:backgroundTint="@color/surface"
app:iconSize="20dp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
+37 -35
View File
@@ -1,50 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Mode SOMBRE - Amélioré pour lisibilité -->
<!-- Mode SOMBRE - Nouvelle palette adaptée -->
<!-- Fond - gris moyen pour meilleur contraste -->
<color name="background">#1E1E1E</color>
<color name="surface">#2D2D2D</color>
<color name="surface_variant">#3A3A3A</color>
<color name="card_background">#2D2D2D</color>
<!-- Arrière-plans - fond sombre avec la nouvelle palette -->
<color name="background">#000807</color>
<color name="surface">#0D0D1A</color>
<color name="surface_variant">#1A1A2E</color>
<color name="card_background">#141428</color>
<!-- Texte - blanc pour contraste maximal -->
<color name="text_primary">#FFFFFF</color>
<color name="text_secondary">#E0E0E0</color>
<color name="text_hint">#9E9E9E</color>
<!-- Texte - blanc et variantes de la nouvelle palette -->
<color name="text_primary">#FBF9FF</color>
<color name="text_secondary">#B3B7EE</color>
<color name="text_hint">#9395D3</color>
<color name="text_on_primary">#000807</color>
<!-- Couleur principale - violet clair sur fond sombre -->
<color name="primary">#B388FF</color>
<color name="primary_dark">#7C4DFF</color>
<color name="primary_light">#D1C4E9</color>
<!-- Couleur principale - adaptée du mode clair -->
<color name="primary">#B3B7EE</color>
<color name="primary_dark">#9395D3</color>
<color name="accent">#B3B7EE</color>
<!-- Couleurs de jeu - plus claires pour être visibles -->
<color name="game_normal">#2D2D2D</color>
<color name="game_background">#1E1E1E</color>
<color name="game_question_standard">#2D2D2D</color>
<color name="game_question_1player">#372E45</color>
<color name="game_question_2players">#413E5A</color>
<color name="game_question_3players">#4B4E6F</color>
<color name="game_question_manche">#2E3E5A</color>
<color name="game_manche_end">#5A4E2E</color>
<color name="game_finished">#5A3E2E</color>
<!-- Couleurs de jeu - adaptées pour mode sombre -->
<color name="game_normal">#0D0D1A</color>
<color name="game_background">#000807</color>
<color name="game_question_standard">#141428</color>
<color name="game_question_1player">#1E1E35</color>
<color name="game_question_2players">#2A2A45</color>
<color name="game_question_3players">#373755</color>
<color name="game_question_manche">#2A2A45</color>
<color name="game_manche_end">#3A3520</color>
<color name="game_finished">#3A2520</color>
<!-- États -->
<color name="success">#81C784</color>
<color name="error">#EF5350</color>
<color name="warning">#FFB74D</color>
<!-- Pour compatibilité -->
<color name="white">#FFFFFF</color>
<color name="black">#000000</color>
<color name="accent">#B388FF</color>
<color name="accent_dark">#E0E0E0</color>
<color name="primary_container">#4A3A69</color>
<color name="on_primary_container">#EDE7F6</color>
<color name="card_stroke">#404040</color>
<color name="divider">#404040</color>
<color name="text_on_game_primary">#FFFFFF</color>
<color name="text_on_colored_dark">#FFFFFF</color>
<!-- Conteneurs -->
<color name="primary_container">#2A2A45</color>
<color name="on_primary_container">#FBF9FF</color>
<color name="card_stroke">#2A2A45</color>
<color name="divider">#2A2A45</color>
<!-- Overlays -->
<color name="overlay_dark">#80000000</color>
<color name="overlay_light">#80FFFFFF</color>
<!-- Pour compatibilité -->
<color name="white">#FBF9FF</color>
<color name="black">#000807</color>
</resources>
+37 -36
View File
@@ -1,50 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- REFACTORING COMPLET - Palette Simple et Contrastée -->
<!-- Mode CLAIR -->
<color name="background">#FFFFFF</color>
<color name="surface">#FFFFFF</color>
<color name="surface_variant">#F0F0F0</color>
<!-- NOUVELLE PALETTE - Design cohérent et accessible -->
<!-- Couleurs principales -->
<color name="primary">#9395D3</color>
<color name="primary_dark">#000807</color>
<color name="accent">#B3B7EE</color>
<!-- Arrière-plans -->
<color name="background">#FBF9FF</color>
<color name="surface">#FBF9FF</color>
<color name="surface_variant">#FBF9FF</color>
<color name="card_background">#FFFFFF</color>
<!-- Texte - contraste maximal -->
<color name="text_primary">#000000</color>
<color name="text_secondary">#333333</color>
<color name="text_hint">#999999</color>
<!-- Couleur principale - violet visible -->
<color name="primary">#7C4DFF</color>
<color name="primary_dark">#6200EA</color>
<color name="primary_light">#B388FF</color>
<!-- Couleurs de jeu - très subtiles, lisibles -->
<color name="game_normal">#FFFFFF</color>
<color name="game_background">#FFFFFF</color>
<!-- Texte - contraste optimal -->
<color name="text_primary">#000807</color>
<color name="text_secondary">#A2A3BB</color>
<color name="text_hint">#9395D3</color>
<color name="text_on_primary">#FBF9FF</color>
<!-- Couleurs de jeu -->
<color name="game_normal">#FBF9FF</color>
<color name="game_background">#FBF9FF</color>
<color name="game_question_standard">#FFFFFF</color>
<color name="game_question_1player">#F3E5F5</color>
<color name="game_question_2players">#E1BEE7</color>
<color name="game_question_3players">#CE93D8</color>
<color name="game_question_manche">#E8EAF6</color>
<color name="game_question_1player">#E8EAF6</color>
<color name="game_question_2players">#D1C4E9</color>
<color name="game_question_3players">#B3B7EE</color>
<color name="game_question_manche">#C5CAE9</color>
<color name="game_manche_end">#FFF59D</color>
<color name="game_finished">#FFCCBC</color>
<!-- États -->
<color name="success">#4CAF50</color>
<color name="error">#F44336</color>
<color name="warning">#FF9800</color>
<!-- Pour compatibilité -->
<color name="white">#FFFFFF</color>
<color name="black">#000000</color>
<color name="accent">#7C4DFF</color>
<color name="accent_dark">#333333</color>
<color name="primary_container">#EDE7F6</color>
<color name="on_primary_container">#1A0033</color>
<!-- Conteneurs -->
<color name="primary_container">#E8EAF6</color>
<color name="on_primary_container">#000807</color>
<color name="card_stroke">#E0E0E0</color>
<color name="divider">#E0E0E0</color>
<color name="text_on_game_primary">#000000</color>
<color name="text_on_colored_dark">#FFFFFF</color>
<color name="divider">#B3B7EE</color>
<!-- Overlays -->
<color name="overlay_dark">#80000000</color>
<color name="overlay_light">#80FFFFFF</color>
<!-- Pour compatibilité -->
<color name="white">#FFFFFF</color>
<color name="black">#000807</color>
</resources>
+56
View File
@@ -20,5 +20,61 @@
<string name="activer_les_questions_par_chatgpt">Activer les questions par IA</string>
<string name="cl_api_openai">Clé API</string>
<string name="openai">Intelligence Artificielle</string>
<!-- Hub Strings -->
<string name="welcome_to_hub">Bienvenue sur Boidelo Hub</string>
<string name="select_game_subtitle">Choisissez un jeu pour commencer</string>
<string name="game_icon">Icône du jeu</string>
<string name="play_game">Jouer</string>
<string name="coming_soon">Bientôt disponible</string>
<string name="boidelo_classic_description">Le jeu original de questions et défis</string>
<string name="game_89_description">Jeu de cartes avec timer et défis</string>
<string name="undercover_description">Trouvez l\'undercover avant qu\'il ne soit trop tard!</string>
<string name="rules_description">Découvrez les règles des jeux d\'ambiance populaires</string>
<!-- Boidelo Classic Strings -->
<string name="boidelo_classic_title">Boidelo Classic</string>
<string name="boidelo_classic_setup_title">Configuration de la partie</string>
<string name="player_name_hint">Nom du joueur</string>
<string name="min_players_required">Joueurs: 0 / min. 3</string>
<string name="player_setup_instructions">Pour commencer, entrez les noms des joueurs (minimum 3)</string>
<string name="add_player">Ajouter un joueur</string>
<string name="start_game">JOUER</string>
<string name="settings">Paramètres</string>
<string name="parameters">Paramètres</string>
<string name="game_settings">Paramètres du jeu</string>
<string name="number_of_questions">Nombre de questions</string>
<string name="number_of_gorgees">Nombre de gorgées</string>
<string name="artificial_intelligence">Intelligence Artificielle</string>
<string name="enable_ai_questions">Activer les questions par IA</string>
<string name="save">Enregistrer</string>
<string name="skip">Passer</string>
<string name="next">Suivant</string>
<string name="remove_player">Supprimer ce joueur</string>
<!-- Game 89++ Strings -->
<string name="game_89_title">89++</string>
<string name="game_89_rules_summary">Le but est d\'arriver à un compte de 89 ou de le dépasser. Le joueur qui arrive/dépasse 89 perd!\n\nValet = -10 | Dame = Change sens | Roi = Choisissez la valeur\n\nÀ chaque dizaine (10, 20, 30…), distribuez des gorgées égales à la dizaine (sauf 70 = double)!</string>
<string name="game_rules">Règles du jeu</string>
<string name="players">Joueurs</string>
<string name="challenge_timer">Timer des défis</string>
<string name="game_89_play_card">Jouer une carte</string>
<string name="game_89_mistake">Erreur de calcul</string>
<string name="game_89_counter">Compteur</string>
<string name="game_89_clockwise">↻ Sens horaire</string>
<string name="game_89_counterclockwise">↺ Sens anti-horaire</string>
<string name="game_89_current_player">Joueur actuel</string>
<string name="game_89_your_cards">Vos cartes</string>
<string name="game_89_next_challenge">Prochain défi dans:</string>
<string name="game_89_challenge_title">DÉFI!</string>
<string name="game_89_select_value">Sélectionnez la valeur (1-10):</string>
<string name="game_89_announce_count">Annoncez le compte:</string>
<string name="game_89_actual_count">Compte actuel:</string>
<string name="game_89_ten_multiplier">DIZAINE! %d gorgées à distribuer!</string>
<string name="game_89_seventy_bonus">70 = DOUBLE! 14 gorgées!</string>
<string name="game_89_game_over">Le jeu est terminé!</string>
<string name="game_89_winner">%s a gagné!</string>
<string name="game_89_loser">%s a dépassé 89 et perd!</string>
<string name="game_89_final_stats">Statistiques finales:</string>
<!-- Legacy strings (to be removed after refactor) -->
<string name="test_de_connectivit_openai">Tester la connexion</string>
</resources>
+12 -12
View File
@@ -19,27 +19,27 @@
<!-- Bouton primaire -->
<style name="BoideloButton.Primary">
<item name="backgroundTint">@color/primary</item>
<item name="android:textColor">@color/white</item>
<item name="rippleColor">@color/primary_light</item>
<item name="android:textColor">@color/text_on_primary</item>
<item name="rippleColor">@color/primary_dark</item>
</style>
<!-- Bouton secondaire -->
<style name="BoideloButton.Secondary">
<item name="backgroundTint">@color/accent</item>
<item name="android:textColor">@color/text_primary</item>
<item name="rippleColor">@color/accent_dark</item>
<item name="rippleColor">@color/primary</item>
</style>
<!-- Bouton danger -->
<style name="BoideloButton.Danger">
<item name="backgroundTint">@color/error</item>
<item name="android:textColor">@color/white</item>
<item name="android:textColor">@color/text_on_primary</item>
</style>
<!-- Bouton succès -->
<style name="BoideloButton.Success">
<item name="backgroundTint">@color/success</item>
<item name="android:textColor">@color/white</item>
<item name="android:textColor">@color/text_on_primary</item>
</style>
<!-- ============================================================ -->
@@ -98,17 +98,17 @@
<!-- ============================================================ -->
<style name="BoideloCard" parent="Widget.Material3.CardView.Elevated">
<item name="cardBackgroundColor">@color/white</item>
<item name="cardBackgroundColor">@color/card_background</item>
<item name="cardCornerRadius">16dp</item>
<item name="cardElevation">4dp</item>
<item name="contentPadding">16dp</item>
</style>
<style name="BoideloCard.Outlined">
<item name="cardBackgroundColor">@color/white</item>
<item name="cardBackgroundColor">@color/card_background</item>
<item name="cardCornerRadius">16dp</item>
<item name="cardElevation">0dp</item>
<item name="strokeColor">@color/surface_variant</item>
<item name="strokeColor">@color/card_stroke</item>
<item name="strokeWidth">1dp</item>
</style>
@@ -119,7 +119,7 @@
<style name="BoideloSeekBar" parent="Widget.AppCompat.SeekBar">
<item name="colorAccent">@color/accent</item>
<item name="android:progressTint">@color/accent</item>
<item name="android:progressBackgroundTint">@color/surface_variant</item>
<item name="android:progressBackgroundTint">@color/divider</item>
</style>
<!-- ============================================================ -->
@@ -128,7 +128,7 @@
<style name="BoideloProgressBar" parent="Widget.AppCompat.ProgressBar.Horizontal">
<item name="android:progressTint">@color/accent</item>
<item name="android:progressBackgroundTint">@color/surface_variant</item>
<item name="android:progressBackgroundTint">@color/divider</item>
</style>
<!-- ============================================================ -->
@@ -137,7 +137,7 @@
<style name="BoideloToolbar" parent="Widget.Material3.Toolbar">
<item name="android:background">@color/primary</item>
<item name="titleTextColor">@color/white</item>
<item name="titleTextColor">@color/text_on_primary</item>
<item name="android:elevation">4dp</item>
</style>
@@ -147,7 +147,7 @@
<style name="BoideloChip" parent="Widget.Material3.Chip.Suggestion">
<item name="chipBackgroundColor">@color/accent</item>
<item name="chipStrokeColor">@color/accent_dark</item>
<item name="chipStrokeColor">@color/primary</item>
<item name="android:textColor">@color/text_primary</item>
</style>