"""AutoPOE2 - Tab Cấu Hình Chiến Đấu & Phản Xạ Sinh Tồn (Tab Combat)."""

from __future__ import annotations

from typing import Any
import customtkinter as ctk

from src.assistant_tool import ui_theme as theme
from src.assistant_tool.ui.skill_binder_panel import build_skill_binder_section


def build_tab_combat(app: Any, scroll: Any) -> None:
    """Xây dựng nội dung Tab Chiến đấu trên scroll container và gán widget vào app."""
    sec1 = app._create_section_label(scroll, "🛡️ CHIẾN ĐẤU & PHẢN XẠ SINH TỒN")
    sec1.pack(anchor="w", pady=(2, 4))

    # 1. Iframe Dodge Roll & Burst slider
    app.chk_dodge = ctk.CTkCheckBox(
        scroll,
        text="Iframe Dodge Roll (Lăn né 300ms bất tử khi dính sốc sát thương)",
        font=ctk.CTkFont(size=11, weight="bold"),
        text_color=theme.c("text_primary"),
        fg_color=theme.c("start"),
        hover_color=theme.c("ok_hover"),
    )
    app.chk_dodge.select()
    app.chk_dodge.pack(anchor="w", padx=8, pady=(2, 1))

    burst_row = ctk.CTkFrame(scroll, fg_color="transparent")
    burst_row.pack(fill="x", padx=12, pady=(0, 4))
    app.lbl_burst = ctk.CTkLabel(
        burst_row,
        text="  ↳ Ngưỡng sốc máu kích hoạt né: 22% maxHP",
        font=ctk.CTkFont(size=10),
        text_color="#94a3b8",
    )
    app.lbl_burst.pack(side="left")
    app.sld_burst = ctk.CTkSlider(
        burst_row,
        from_=10,
        to=50,
        number_of_steps=40,
        width=130,
        height=12,
        command=app._on_burst_slider_change,
    )
    app.sld_burst.set(22)
    app.sld_burst.pack(side="right", padx=(4, 0))

    # 2. Smart Flasks & Flask sliders
    app.chk_flask = ctk.CTkCheckBox(
        scroll,
        text="Smart Flask Sipping (2 bình Máu & Mana POE2 - Chống spam khi HoT)",
        font=ctk.CTkFont(size=11, weight="bold"),
        text_color=theme.c("text_primary"),
        fg_color=theme.c("start"),
        hover_color=theme.c("ok_hover"),
    )
    app.chk_flask.select()
    app.chk_flask.pack(anchor="w", padx=8, pady=(2, 1))

    flask_hp_row = ctk.CTkFrame(scroll, fg_color="transparent")
    flask_hp_row.pack(fill="x", padx=12, pady=(0, 2))
    app.lbl_flask_hp = ctk.CTkLabel(
        flask_hp_row,
        text="  ↳ Bơm bình Máu khi HP <= 55%",
        font=ctk.CTkFont(size=10),
        text_color="#94a3b8",
    )
    app.lbl_flask_hp.pack(side="left")
    app.sld_flask_hp = ctk.CTkSlider(
        flask_hp_row,
        from_=20,
        to=80,
        number_of_steps=60,
        width=130,
        height=12,
        command=app._on_flask_slider_change,
    )
    app.sld_flask_hp.set(55)
    app.sld_flask_hp.pack(side="right", padx=(4, 0))

    flask_mp_row = ctk.CTkFrame(scroll, fg_color="transparent")
    flask_mp_row.pack(fill="x", padx=12, pady=(0, 4))
    app.lbl_flask_mana = ctk.CTkLabel(
        flask_mp_row,
        text="  ↳ Bơm bình Mana khi Mana <= 25%",
        font=ctk.CTkFont(size=10),
        text_color="#94a3b8",
    )
    app.lbl_flask_mana.pack(side="left")
    app.sld_flask_mana = ctk.CTkSlider(
        flask_mp_row,
        from_=10,
        to=60,
        number_of_steps=50,
        width=130,
        height=12,
        command=app._on_flask_mana_slider_change,
    )
    app.sld_flask_mana.set(25)
    app.sld_flask_mana.pack(side="right", padx=(4, 0))

    # 3. Expected Max HP
    hp_input_frame = ctk.CTkFrame(scroll, fg_color="transparent")
    hp_input_frame.pack(fill="x", padx=10, pady=(0, 4))
    lbl_mhp = ctk.CTkLabel(
        hp_input_frame,
        text="  ↳ Máu tối đa (Expected Max HP):",
        font=ctk.CTkFont(size=10),
        text_color="#94a3b8",
    )
    lbl_mhp.pack(side="left")
    app.entry_max_hp = ctk.CTkEntry(
        hp_input_frame,
        placeholder_text="Tự động nhận diện (vd: Auto hoặc 491)",
        width=160,
        height=22,
        font=ctk.CTkFont(size=10),
    )
    app.entry_max_hp.pack(side="left", padx=(6, 0))
    app.entry_expected_max_hp = app.entry_max_hp

    app.btn_auto_detect_vitals = ctk.CTkButton(
        hp_input_frame,
        text="⚡ Quét Vitals",
        width=80,
        height=22,
        command=app._on_auto_detect_vitals_clicked,
        font=ctk.CTkFont(size=10, weight="bold"),
        fg_color=theme.c("info"),
        hover_color=theme.c("info_hover"),
    )
    app.btn_auto_detect_vitals.pack(side="left", padx=(4, 0))

    saved_settings = app._load_user_settings()
    init_mhp = saved_settings.get("expected_max_hp", "Auto")
    app.entry_max_hp.insert(0, str(init_mhp))
    app.entry_max_hp.bind("<KeyRelease>", lambda e: app._on_expected_hp_changed())
    app.entry_max_hp.bind("<FocusOut>", lambda e: app._save_user_settings())

    # 4. Kiting & Logout
    app.chk_kiting = ctk.CTkCheckBox(
        scroll,
        text="Dynamic Kiting né quái theo tọa độ XYZ (Thả diều quái khi áp sát < 35)",
        font=ctk.CTkFont(size=11),
        text_color="#e2e8f0",
    )
    app.chk_kiting.select()
    app.chk_kiting.pack(anchor="w", padx=8, pady=2)

    app.chk_chicken = ctk.CTkCheckBox(
        scroll,
        text="Emergency Logout an toàn khi HP <= 18% (Bảo toàn 10% kinh nghiệm)",
        font=ctk.CTkFont(size=11),
        text_color="#e2e8f0",
    )
    app.chk_chicken.select()
    app.chk_chicken.pack(anchor="w", padx=8, pady=(2, 4))

    # 5. Combo & Stagger
    app.chk_combo = ctk.CTkCheckBox(
        scroll,
        text="Combat Combo: Đánh xa [Chuột phải] ⟷ Quái áp sát né [E] | Finisher [R]",
        font=ctk.CTkFont(size=11, weight="bold"),
        text_color=theme.c("text_primary"),
        fg_color=theme.c("start"),
    )
    app.chk_combo.select()
    app.chk_combo.pack(anchor="w", padx=8, pady=2)

    app.chk_stagger = ctk.CTkCheckBox(
        scroll,
        text="Heavy Stagger Finisher (Tự xả đòn kết liễu khi Poise quái >= 80%)",
        font=ctk.CTkFont(size=11),
        text_color="#e2e8f0",
    )
    app.chk_stagger.select()
    app.chk_stagger.pack(anchor="w", padx=8, pady=(2, 4))

    # 6. Captures
    app.chk_cap_burst = ctk.CTkCheckBox(
        scroll,
        text="Tự động chụp màn hình khi bị sốc sát thương nặng (Burst Damage)",
        font=ctk.CTkFont(size=11),
        text_color="#e2e8f0",
    )
    app.chk_cap_burst.select()
    app.chk_cap_burst.pack(anchor="w", padx=8, pady=2)

    app.chk_cap_periodic = ctk.CTkCheckBox(
        scroll,
        text="Tự động chụp màn hình định kỳ mỗi 30 giây để thu thập dữ liệu huấn luyện",
        font=ctk.CTkFont(size=11),
        text_color="#e2e8f0",
    )
    app.chk_cap_periodic.select()
    app.chk_cap_periodic.pack(anchor="w", padx=8, pady=(2, 6))

    # 7. Auto Skill Binder (Khả năng tự cấu hình gắn skill vào phím tắt)
    build_skill_binder_section(app, scroll)
