package org.project.entity.players;

import org.project.entity.Entity;
import org.project.item.armors.KnightArmor;
import org.project.item.weapons.Sword;

public class Knight extends Player {

    // پرچم برای بررسی اینکه آیا دشمن در نوبت بعدی گیج (Stun) شده است یا خیر
    private boolean enemyStunnedNextTurn;

    public Knight(String name) {
        // ۱۰۰ خون، ۵۰ مانا، یک شمشیر اولیه (Sword) و زره شوالیه (KnightArmor)
        super(name, 100, 50, new Sword(), new KnightArmor());
        this.enemyStunnedNextTurn = false;
    }

    // حرکت اول: Light Attack (در کلاس والد Player با دمیج اسلحه پیاده شده است)

    // حرکت دوم: Heavy Attack (دمیج بالا، هزینه مانا: ۱۵)
    public void heavyAttack(Entity target) {
        if (target != null && useMana(15)) {
            // وارد کردن آسیب معادل دمیج اسلحه ضربدر ۱.۵
            int damage = (int) (getWeapon().getDamage() * 1.5);
            System.out.println("⚔️ شوالیه " + getName() + " یک ضربه سنگین (Heavy Attack) وارد کرد!");
            target.takeDamage(damage);
        }
    }

    // حرکت سوم: Defend (کاهش آسیب یا پرچم دفاع، هزینه مانا: ۱۰)
    @Override
    public void defend() {
        if (useMana(10)) {
            System.out.println("🛡️ شوالیه " + getName() + " گارد دفاعی گرفت! دمیج بعدی کاهش می‌یابد.");
            // منطق کاهش دمیج را می‌توان با یک پرچم در تک‌دمیج مدیریت کرد، فعلاً پیام گارد اعمال می‌شود
        }
    }

    // حرکت چهارم: Heal (درمان شوالیه با مانا، هزینه مانا: ۲۰)
    public void castHeal() {
        if (useMana(20)) {
            int healAmount = 30; // مقدار هیل ثابت ۳۰ واحد
            heal(healAmount);
            System.out.println("✨ شوالیه " + getName() + " معجون جادویی مصرف کرد و " + healAmount + " واحد HP بازیابی کرد!");
        }
    }

    // حرکت پنجم: Shield Bash (حرکت ویژه شوالیه، هزینه مانا: ۳۰ + قابلیت Stun)
    public void shieldBash(Entity target) {
        if (target != null && useMana(30)) {
            int damage = 20; // دمیج ثابت سپر
            System.out.println("💥 شوالیه " + getName() + " با سپر ضربه زد (Shield Bash)! دشمن آسیب دید و گیج (Stun) شد!");
            target.takeDamage(damage);
            // فعال کردن پرچم گیج شدن دشمن
            this.enemyStunnedNextTurn = true;
        }
    }

    // گتر و ستر پرچم Stun برای استفاده در کنترلر بازی (Main)
    public boolean isEnemyStunnedNextTurn() {
        return enemyStunnedNextTurn;
    }

    public void setEnemyStunnedNextTurn(boolean value) {
        this.enemyStunnedNextTurn = value;
    }
}