"""AutoPOE2 - Tab Điều Hành Nhiệm Vụ Chiến Dịch & Map Scenario (Tab Quest)."""

from __future__ import annotations

from typing import Any
import customtkinter as ctk

from src.assistant_tool import ui_theme as theme


def build_tab_quest(app: Any, scroll: Any) -> None:
    """Xây dựng nội dung Tab Nhiệm vụ trên scroll container và gán widget vào app."""
    sec_auto = app._create_section_label(scroll, "TỰ HÀNH 1-CLICK")
    sec_auto.pack(anchor="w", pady=(2, 2))

    auto_card = ctk.CTkFrame(
        scroll,
        fg_color=theme.c("ok_bg"),
        border_color=theme.c("ok_border"),
        border_width=1,
        corner_radius=theme.CARD_CORNER_RADIUS,
    )
    auto_card.pack(fill="x", padx=4, pady=(0, 6))

    auto_header_frame = ctk.CTkFrame(auto_card, fg_color="transparent")
    auto_header_frame.pack(fill="x", padx=6, pady=(4, 2))

    app.lbl_lifecycle_badge = ctk.CTkLabel(
        auto_header_frame,
        text="SẴN SÀNG TỰ HÀNH",
        font=ctk.CTkFont(family="Segoe UI", size=11, weight="bold"),
        text_color=theme.c("ok"),
    )
    app.lbl_lifecycle_badge.pack(side="left")

    app.btn_master_toggle = ctk.CTkButton(
        auto_header_frame,
        text="▶ BẬT TỰ HÀNH [F8 / F6]",
        font=ctk.CTkFont(family="Segoe UI", size=10, weight="bold"),
        fg_color=theme.c("start"),
        hover_color=theme.c("ok_hover"),
        width=160,
        height=24,
        command=app._on_bot_toggle_hotkey,
    )
    app.btn_master_toggle.pack(side="right")

    phase_frame = ctk.CTkFrame(
        auto_card, fg_color=theme.c("ok_bg_deep"), corner_radius=4
    )
    phase_frame.pack(fill="x", padx=6, pady=(0, 3))

    app.lbl_lifecycle_phase = ctk.CTkLabel(
        phase_frame,
        text="GIAI ĐOẠN 1: CÀY QUEST CHIẾN DỊCH",
        font=ctk.CTkFont(family="Segoe UI", size=10, weight="bold"),
        text_color=theme.c("text_on_ok_bright"),
    )
    app.lbl_lifecycle_phase.pack(anchor="w", padx=6, pady=(3, 0))

    app.lbl_lifecycle_action = ctk.CTkLabel(
        phase_frame,
        text="  ↳ Chờ xác thực khu vực từ Client.txt / SHM — U chỉ khi làng",
        font=ctk.CTkFont(size=10),
        text_color=theme.c("text_on_ok"),
    )
    app.lbl_lifecycle_action.pack(anchor="w", padx=6, pady=(0, 3))

    lbl_auto_note = ctk.CTkLabel(
        auto_card,
        text="F8 = Bật/Tắt Core 120Hz | Pause / F12 = Dừng Khẩn Cấp | Tự Hành Hoàn Toàn",
        font=ctk.CTkFont(size=9, slant="italic"),
        text_color=theme.c("text_on_ok_muted"),
    )
    lbl_auto_note.pack(anchor="w", padx=6, pady=(0, 4))

    sec3 = app._create_section_label(
        scroll, "⚔️ ĐIỀU HÀNH NHIỆM VỤ CHIẾN DỊCH (WORLD MAP 'U' RUNNER)"
    )
    sec3.pack(anchor="w", pady=(4, 2))

    quest_card = ctk.CTkFrame(
        scroll,
        fg_color="#0f172a",
        border_color="#3b82f6",
        border_width=1,
        corner_radius=theme.CARD_CORNER_RADIUS,
    )
    quest_card.pack(fill="x", padx=4, pady=(0, 6))

    app.chk_quest = ctk.CTkCheckBox(
        quest_card,
        text="Tự động làm nhiệm vụ Campaign (Auto-Questing)",
        font=ctk.CTkFont(size=11, weight="bold"),
        text_color=theme.c("text_primary"),
        fg_color=theme.c("start"),
    )
    app.chk_quest.select()
    app.chk_quest.pack(anchor="w", padx=8, pady=(6, 2))

    app.chk_patrol = ctk.CTkCheckBox(
        quest_card,
        text="  ↳ 🧭 Tự Động Dò Map & Tuần Tra (Auto-Patrol Explorer)",
        font=ctk.CTkFont(size=10),
        text_color=theme.c("info_cyan"),
        fg_color=theme.c("info"),
    )
    app.chk_patrol.select()
    app.chk_patrol.pack(anchor="w", padx=16, pady=(0, 2))

    app.chk_dynamic_quest = ctk.CTkCheckBox(
        quest_card,
        text="  ↳ 🎯 Nhận Diện Làng & Mở World Map 'U' Dịch Chuyển (Town State Machine)",
        font=ctk.CTkFont(size=10, weight="bold"),
        text_color="#34d399",
        fg_color=theme.c("start"),
    )
    app.chk_dynamic_quest.select()
    app.chk_dynamic_quest.pack(anchor="w", padx=16, pady=(0, 4))

    target_frame = ctk.CTkFrame(quest_card, fg_color="#1e293b", corner_radius=4)
    target_frame.pack(fill="x", padx=8, pady=(0, 4))

    row_act = ctk.CTkFrame(target_frame, fg_color="transparent")
    row_act.pack(fill="x", padx=6, pady=(3, 1))
    ctk.CTkLabel(
        row_act,
        text="Act Mục Tiêu:",
        font=ctk.CTkFont(size=10, weight="bold"),
        text_color="#cbd5e1",
    ).pack(side="left", padx=(0, 6))

    app.var_quest_act = ctk.StringVar(value="Act 2 (Vastiri & Ardura Caravan)")
    app.cmb_quest_act = ctk.CTkComboBox(
        row_act,
        values=[
            "Act 1 (Ogham & Clearfell)",
            "Act 2 (Vastiri & Ardura Caravan)",
            "Act 3 (The Sandswept Marsh & Phrey Jungle)",
            "Atlas Endgame (Waystone Maps T1-T16)",
        ],
        variable=app.var_quest_act,
        width=200,
        height=22,
        font=ctk.CTkFont(size=10),
        command=app._on_quest_act_changed,
    )
    app.cmb_quest_act.pack(side="left")

    row_zone = ctk.CTkFrame(target_frame, fg_color="transparent")
    row_zone.pack(fill="x", padx=6, pady=(1, 3))
    ctk.CTkLabel(
        row_zone,
        text="Map / Boss:",
        font=ctk.CTkFont(size=10, weight="bold"),
        text_color="#cbd5e1",
    ).pack(side="left", padx=(0, 14))

    app.var_quest_zone = ctk.StringVar(
        value="Dreadnought (Boss Jamanra - Skill Book)"
    )
    app.cmb_quest_zone = ctk.CTkComboBox(
        row_zone,
        values=[
            "Vastiri Outskirts (Waypoint)",
            "The Mastodon Sands (Boss Goliath)",
            "The Traitor's Passage (Waypoint)",
            "Dreadnought (Boss Jamanra - Skill Book)",
        ],
        variable=app.var_quest_zone,
        width=200,
        height=22,
        font=ctk.CTkFont(size=10),
    )
    app.cmb_quest_zone.pack(side="left")

    btn_quest_row = ctk.CTkFrame(quest_card, fg_color="transparent")
    btn_quest_row.pack(fill="x", padx=8, pady=(2, 4))

    app.btn_trigger_quest_travel = ctk.CTkButton(
        btn_quest_row,
        text="🚀 MỞ WORLD MAP 'U' & DỊCH CHUYỂN NGAY",
        font=ctk.CTkFont(size=10, weight="bold"),
        fg_color=theme.c("blue"),
        hover_color=theme.c("blue_hover"),
        height=24,
        command=app._on_trigger_quest_travel_clicked,
    )
    app.btn_trigger_quest_travel.pack(side="left", fill="x", expand=True)

    scenario_frame = ctk.CTkFrame(quest_card, fg_color="#0f172a", corner_radius=4)
    scenario_frame.pack(fill="x", padx=8, pady=(2, 4))

    row_scenario = ctk.CTkFrame(scenario_frame, fg_color="transparent")
    row_scenario.pack(fill="x", padx=6, pady=(3, 1))
    ctk.CTkLabel(
        row_scenario,
        text="Kịch Bản Map:",
        font=ctk.CTkFont(size=10, weight="bold"),
        text_color="#38bdf8",
    ).pack(side="left", padx=(0, 6))

    app.var_map_scenario = ctk.StringVar(value="Fast Clear (Rare/Pack ven đường)")
    app.cmb_map_scenario = ctk.CTkComboBox(
        row_scenario,
        values=[
            "Boss Rush (Tối ưu Atlas Points)",
            "Atlas Quest Rush (Nhiệm vụ Atlas)",
            "Fast Clear (Rare/Pack ven đường)",
            "Full Clear (Khám phá toàn bộ A*)",
        ],
        variable=app.var_map_scenario,
        width=210,
        height=22,
        font=ctk.CTkFont(size=10),
        command=app._on_map_scenario_changed,
    )
    app.cmb_map_scenario.pack(side="left", fill="x", expand=True)

    row_scenario_opt = ctk.CTkFrame(scenario_frame, fg_color="transparent")
    row_scenario_opt.pack(fill="x", padx=6, pady=(1, 3))
    app.chk_auto_portal = ctk.CTkCheckBox(
        row_scenario_opt,
        text="Tự động mở Portal (T) về Hideout sau khi diệt Boss",
        font=ctk.CTkFont(size=10),
        text_color=theme.c("text_muted"),
        command=app._on_auto_portal_toggle,
    )
    app.chk_auto_portal.select()
    app.chk_auto_portal.pack(side="left")

    app.lbl_active_quest = ctk.CTkLabel(
        quest_card,
        text="  👉 [Mục Tiêu]: Đang ở Làng -> Bấm nút để tự mở World Map 'U'",
        font=ctk.CTkFont(size=10, weight="bold"),
        text_color=theme.c("gold_light"),
        wraplength=420,
        justify="left",
    )
    app.lbl_active_quest.pack(anchor="w", padx=8, pady=(0, 6))
