import 'package:flutter/material.dart';

import 'package:asciineverdie/data/game_text_l10n.dart' as l10n;
import 'package:asciineverdie/src/core/engine/iap_service.dart';
import 'package:asciineverdie/src/shared/retro_colors.dart';

/// 속도 부스트 버튼 위젯 (Phase 6)
///
/// 게임 화면에 표시되는 속도 부스트 활성화 버튼
class SpeedBoostButton extends StatelessWidget {
  const SpeedBoostButton({
    super.key,
    required this.isActive,
    required this.remainingSeconds,
    required this.onActivate,
    this.boostMultiplier = 5,
  });

  /// 부스트 활성화 여부
  final bool isActive;

  /// 남은 시간 (초)
  final int remainingSeconds;

  /// 부스트 배율
  final int boostMultiplier;

  /// 활성화 콜백
  final VoidCallback onActivate;

  @override
  Widget build(BuildContext context) {
    final isPaidUser = IAPService.instance.isAdRemovalPurchased;
    final gold = RetroColors.goldOf(context);
    final goldDark = RetroColors.goldDarkOf(context);
    final expColor = RetroColors.expOf(context);

    // 부스트 활성화 중일 때
    if (isActive) {
      return _buildActiveButton(context, expColor);
    }

    // 부스트 비활성화 상태
    return _buildInactiveButton(context, gold, goldDark, isPaidUser);
  }

  Widget _buildActiveButton(BuildContext context, Color expColor) {
    return Container(
      padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
      decoration: BoxDecoration(
        color: expColor.withValues(alpha: 0.3),
        borderRadius: BorderRadius.circular(8),
        border: Border.all(color: expColor, width: 2),
        boxShadow: [
          BoxShadow(
            color: expColor.withValues(alpha: 0.5),
            blurRadius: 8,
            spreadRadius: 1,
          ),
        ],
      ),
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          Row(
            mainAxisSize: MainAxisSize.min,
            children: [
              Text('⚡', style: TextStyle(fontSize: 18, color: expColor)),
              const SizedBox(width: 4),
              Text(
                '${boostMultiplier}x',
                style: TextStyle(
                  fontFamily: 'PressStart2P',
                  fontSize: 14,
                  color: expColor,
                  fontWeight: FontWeight.bold,
                ),
              ),
            ],
          ),
          const SizedBox(height: 4),
          Text(
            l10n.speedBoostRemaining(remainingSeconds),
            style: TextStyle(
              fontFamily: 'PressStart2P',
              fontSize: 10,
              color: expColor.withValues(alpha: 0.8),
            ),
          ),
        ],
      ),
    );
  }

  Widget _buildInactiveButton(
    BuildContext context,
    Color gold,
    Color goldDark,
    bool isPaidUser,
  ) {
    return GestureDetector(
      onTap: onActivate,
      child: Container(
        padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
        decoration: BoxDecoration(
          color: gold.withValues(alpha: 0.2),
          borderRadius: BorderRadius.circular(8),
          border: Border.all(color: gold, width: 2),
        ),
        child: Row(
          mainAxisSize: MainAxisSize.min,
          children: [
            Text('⚡', style: TextStyle(fontSize: 18, color: gold)),
            const SizedBox(width: 4),
            Text(
              '${boostMultiplier}x',
              style: TextStyle(
                fontFamily: 'PressStart2P',
                fontSize: 12,
                color: gold,
              ),
            ),
            // 광고 아이콘 (무료 유저만)
            if (!isPaidUser) ...[
              const SizedBox(width: 6),
              Container(
                padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 2),
                decoration: BoxDecoration(
                  color: Colors.white.withValues(alpha: 0.2),
                  borderRadius: BorderRadius.circular(4),
                ),
                child: const Text(
                  'AD',
                  style: TextStyle(
                    fontFamily: 'PressStart2P',
                    fontSize: 8,
                    color: Colors.white,
                  ),
                ),
              ),
            ],
          ],
        ),
      ),
    );
  }
}
