import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

import 'package:awale/cubit/game_cubit.dart';
import 'package:awale/models/game/game.dart';
import 'package:awale/ui/widgets/actions/button_game_quit.dart';

class GameEndWidget extends StatelessWidget {
  const GameEndWidget({
    super.key,
    required this.playerIndex,
    required this.widgetSize,
  });

  final int playerIndex;
  final double widgetSize;

  @override
  Widget build(BuildContext context) {
    return BlocBuilder<GameCubit, GameState>(
      builder: (BuildContext context, GameState gameState) {
        final Game currentGame = gameState.currentGame;

        final String playerImageAsset =
            currentGame.scores[playerIndex] == currentGame.scores[1 - playerIndex]
                ? 'assets/ui/game_draw.png'
                : (currentGame.scores[playerIndex] > currentGame.scores[1 - playerIndex]
                    ? 'assets/ui/game_win.png'
                    : 'assets/ui/game_fail.png');

        final Image playerImage = Image(
          image: AssetImage(playerImageAsset),
          fit: BoxFit.fill,
          height: widgetSize,
        );

        return RotatedBox(
          quarterTurns: 1 + 2 * playerIndex,
          child: Container(
            margin: const EdgeInsets.all(2),
            padding: const EdgeInsets.all(2),
            height: widgetSize,
            child: Table(
              defaultColumnWidth: const IntrinsicColumnWidth(),
              defaultVerticalAlignment: TableCellVerticalAlignment.bottom,
              children: [
                TableRow(
                  children: [
                    Column(children: [playerImage]),
                    Column(children: [playerImage]),
                    Column(
                      children: [
                        currentGame.animationInProgress
                            ? Image(
                                image: const AssetImage('assets/ui/placeholder.png'),
                                fit: BoxFit.fill,
                                height: widgetSize,
                              )
                            : SizedBox.square(
                                dimension: 70,
                                child: QuitGameButton(),
                              ),
                      ],
                    ),
                    Column(children: [playerImage]),
                    Column(children: [playerImage]),
                  ],
                ),
              ],
            ),
          ),
        );
      },
    );
  }
}