package com.example.boidelov3.hub;

import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.boidelov3.R;
import com.example.boidelov3.games.boideloclassic.BoideloClassicSetupActivity;
import com.example.boidelov3.games.papelito.PapelitoSetupActivity;
import com.example.boidelov3.hub.adapter.GameAdapter;
import com.example.boidelov3.hub.model.GameInfo;
import java.util.ArrayList;
import java.util.List;

/**
 * GameSelectionActivity - Hub principal de sélection des jeux
 * Cette activité remplace l'ancienne MainActivity et sert de point d'entrée
 * pour tous les jeux disponibles dans Boidelo.
 */
public class GameSelectionActivity extends AppCompatActivity implements GameAdapter.OnItemClickListener {

    private RecyclerView gamesRecyclerView;
    private GameAdapter gameAdapter;
    private List<GameInfo> gamesList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game_selection);

        initViews();
        setupGamesList();
        setupRecyclerView();
    }

    /**
     * Initialise les vues de l'activité
     */
    private void initViews() {
        gamesRecyclerView = findViewById(R.id.gamesRecyclerView);
        gamesRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    }

    /**
     * Configure la liste des jeux disponibles
     */
    private void setupGamesList() {
        gamesList = new ArrayList<>();

        // Boidelo Classic - Le jeu original
        gamesList.add(new GameInfo(
                "Boidelo Classic",
                "Le jeu original de questions et défis",
                R.drawable.ic_boidelo_classic,
                GameInfo.GameType.BOIDELO_CLASSIC,
                true
        ));

        // 89++ - Jeu de cartes
        gamesList.add(new GameInfo(
                "89++",
                "Jeu de cartes avec timer et défis",
                R.drawable.ic_game_89,
                GameInfo.GameType.GAME_89,
                true  // Available now
        ));

        // Papelito (Undercover) - Jeu de déduction
        gamesList.add(new GameInfo(
                "Papelito",
                "Trouvez l'undercover avant qu'il ne soit trop tard!",
                R.drawable.ic_papelito,
                GameInfo.GameType.UNDERCOVER,
                true  // Available now
        ));

        // Jeux de règles
        gamesList.add(new GameInfo(
                "Règles de jeux",
                "Découvrez les règles des jeux d'ambiance populaires",
                R.drawable.ic_rules,
                GameInfo.GameType.RULES,
                true  // Available now!
        ));
    }

    /**
     * Configure le RecyclerView avec l'adaptateur
     */
    private void setupRecyclerView() {
        gameAdapter = new GameAdapter(gamesList, this);
        gamesRecyclerView.setAdapter(gameAdapter);
    }

    /**
     * Gère le clic sur un jeu de la liste
     * @param gameInfo Le jeu sélectionné
     */
    @Override
    public void onItemClick(GameInfo gameInfo) {
        if (!gameInfo.isAvailable()) {
            // Afficher un message "Coming soon"
            android.widget.Toast.makeText(this, gameInfo.getName() + " - Bientôt disponible!", 
                android.widget.Toast.LENGTH_SHORT).show();
            return;
        }

        switch (gameInfo.getGameType()) {
            case BOIDELO_CLASSIC:
                startActivity(new Intent(this, BoideloClassicSetupActivity.class));
                break;
            case GAME_89:
                startActivity(new Intent(this, com.example.boidelov3.games.game89.Game89SetupActivity.class));
                break;
            case UNDERCOVER:
                startActivity(new Intent(this, com.example.boidelov3.games.papelito.PapelitoSetupActivity.class));
                break;
            case RULES:
                startActivity(new Intent(this, com.example.boidelov3.rules.RulesListActivity.class));
                break;
        }
    }
}
