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

class Hud extends StatelessWidget {
  final Player player;

  const Hud({super.key, required this.player});

  @override
  Widget build(BuildContext context) {
    // We'll give the HUD a fixed height relative to the screen
    return Container(
      height: 100,
      color: const Color(0xFF323232), // Classic dark grey status bar
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: [
          _buildStatColumn("FLOOR", "1"),
          _buildStatColumn("SCORE", "${player.score}"),
          _buildStatColumn("LIVES", "3"),
          _buildFace(),
          _buildStatColumn(
            "HEALTH",
            "${player.health}%",
            color: _getHealthColor(),
          ),
          _buildStatColumn("AMMO", "${player.ammo}"),
          _buildWeaponIcon(),
        ],
      ),
    );
  }

  Widget _buildStatColumn(
    String label,
    String value, {
    Color color = Colors.white,
  }) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Text(
          label,
          style: const TextStyle(
            color: Colors.red,
            fontSize: 12,
            fontWeight: FontWeight.bold,
          ),
        ),
        Text(
          value,
          style: TextStyle(color: color, fontSize: 20, fontFamily: 'monospace'),
        ),
      ],
    );
  }

  Widget _buildFace() {
    // For now, we'll use a simple icon. Later we can map VSWAP indices
    // for BJ Blazkowicz's face based on health percentage.
    return Container(
      width: 60,
      height: 80,
      decoration: BoxDecoration(
        color: Colors.blueGrey[800],
        border: Border.all(color: Colors.grey, width: 2),
      ),
      child: const Icon(Icons.face, color: Colors.white, size: 40),
    );
  }

  Widget _buildWeaponIcon() {
    IconData weaponIcon = Icons.horizontal_rule; // Default Knife/Pistol
    if (player.hasChainGun) weaponIcon = Icons.reorder;
    if (player.hasMachineGun) weaponIcon = Icons.view_headline;

    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        const Text("WEAPON", style: TextStyle(color: Colors.red, fontSize: 10)),
        Icon(weaponIcon, color: Colors.white),
      ],
    );
  }

  Color _getHealthColor() {
    if (player.health > 50) return Colors.white;
    if (player.health > 25) return Colors.orange;
    return Colors.red;
  }
}
