"""AutoPOE2 - Thanh Trạng Thái HUD Siêu Mỏng 44px (HUD Strip Component).

Hiển thị toàn bộ thông số Telemetry thời gian thực từ C++ Core:
- Hàng 1: HP, Thanh Máu, Badge HP Sensor, Khu vực, Tọa độ XYZ, Trạng thái nhân vật.
- Hàng 2: ES/Ward, Mana, Thanh Mana, Spirit, Radar đếm quái/vật phẩm/cổng.
"""

from __future__ import annotations

from typing import Any
import customtkinter as ctk

from src.assistant_tool import ui_theme as theme


def create_hud_strip(app: Any, parent: Any) -> ctk.CTkFrame:
    """Xây dựng dải HUD siêu mỏng 44px và gắn trực tiếp các nhãn vào app instance."""
    strip = ctk.CTkFrame(
        parent,
        fg_color=theme.c("card_bg"),
        corner_radius=0,
        height=theme.HUD_STRIP_HEIGHT,
    )
    strip.pack(fill="x", side="top")
    strip.pack_propagate(False)

    # Hàng 1 (HP + HP Bar + Sensor Badge | Area | XYZ | State)
    row1 = ctk.CTkFrame(strip, fg_color="transparent")
    row1.pack(fill="x", padx=8, pady=(2, 1))

    app.lbl_hp = ctk.CTkLabel(
        row1,
        text="HP: -- / --",
        font=ctk.CTkFont(size=11, weight="bold"),
        text_color=theme.c("hp"),
    )
    app.lbl_hp.pack(side="left", anchor="w")
    if hasattr(app, "_on_auto_detect_vitals_clicked"):
        app.lbl_hp.bind("<Button-1>", lambda e: app._on_auto_detect_vitals_clicked())

    app.bar_hp = ctk.CTkProgressBar(
        row1,
        width=70,
        height=7,
        fg_color=theme.c("bar_track"),
        progress_color=theme.c("hp"),
    )
    app.bar_hp.set(1.0)
    app.bar_hp.pack(side="left", padx=6)
    if hasattr(app, "_on_auto_detect_vitals_clicked"):
        app.bar_hp.bind("<Button-1>", lambda e: app._on_auto_detect_vitals_clicked())

    app.lbl_hp_sensor_badge = ctk.CTkLabel(
        row1,
        text="HP Sensor: RPM",
        font=ctk.CTkFont(size=9, weight="bold"),
        text_color=theme.c("text_muted"),
        fg_color=theme.c("card_bg_alt"),
        corner_radius=4,
        padx=4,
        pady=0,
    )
    app.lbl_hp_sensor_badge.pack(side="left", padx=(0, 8))
    if hasattr(app, "_on_auto_detect_vitals_clicked"):
        app.lbl_hp_sensor_badge.bind(
            "<Button-1>", lambda e: app._on_auto_detect_vitals_clicked()
        )

    app.lbl_area = ctk.CTkLabel(
        row1,
        text="Khu vực: --",
        font=ctk.CTkFont(size=11, weight="bold"),
        text_color=theme.c("gold_light"),
    )
    app.lbl_area.pack(side="left", padx=(4, 8))

    app.lbl_xyz = ctk.CTkLabel(
        row1,
        text="XYZ: chờ Core",
        font=ctk.CTkFont(size=10),
        text_color=theme.c("text_muted"),
    )
    app.lbl_xyz.pack(side="left", padx=(0, 8))

    app.lbl_char_state = ctk.CTkLabel(
        row1,
        text="[ĐỨNG YÊN]",
        font=ctk.CTkFont(size=10, weight="bold"),
        text_color=theme.c("ok"),
    )
    app.lbl_char_state.pack(side="right")

    # Hàng 2 (ES/Ward | Mana + Mana Bar | Spirit | Radar | Quái)
    row2 = ctk.CTkFrame(strip, fg_color="transparent")
    row2.pack(fill="x", padx=8, pady=(0, 2))

    app.lbl_vitals_es_ward = ctk.CTkLabel(
        row2,
        text="ES: --/--  Ward: --/--",
        font=ctk.CTkFont(size=10, weight="bold"),
        text_color=theme.c("es"),
    )
    app.lbl_vitals_es_ward.pack(side="left", padx=(0, 8))

    app.lbl_mana = ctk.CTkLabel(
        row2,
        text="💧 Mana: -- / -- (100%)",
        font=ctk.CTkFont(size=10, weight="bold"),
        text_color=theme.c("mana"),
    )
    app.lbl_mana.pack(side="left", padx=(0, 4))

    app.bar_mana = ctk.CTkProgressBar(
        row2,
        width=60,
        height=5,
        fg_color=theme.c("bar_track"),
        progress_color=theme.c("mana"),
    )
    app.bar_mana.set(1.0)
    app.bar_mana.pack(side="left", padx=4)

    app.lbl_spirit = ctk.CTkLabel(
        row2,
        text="Spirit: --/--",
        font=ctk.CTkFont(size=10, weight="bold"),
        text_color=theme.c("spirit"),
    )
    app.lbl_spirit.pack(side="left", padx=(4, 8))

    app.lbl_monsters = ctk.CTkLabel(
        row2,
        text="0 quái gần (0 tổng)",
        font=ctk.CTkFont(size=10),
        text_color=theme.c("warn"),
    )
    app.lbl_monsters.pack(side="right", padx=(8, 0))

    app.lbl_radar = ctk.CTkLabel(
        row2,
        text="Radar: 0 Quái | 0 Đồ rơi | 0 Cổng",
        font=ctk.CTkFont(size=10),
        text_color=theme.c("warn"),
    )
    app.lbl_radar.pack(side="right")

    return strip
