package fruitymod.tranquil.powers;

import com.badlogic.gdx.graphics.Texture;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
import com.megacrit.cardcrawl.actions.utility.UseCardAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.powers.DexterityPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
import fruitymod.TranquilMod;

public class FlowPower extends AbstractPower {
    public static final String POWER_ID = "Tranquil_FlowPower";
    public static final String NAME = "Flow";
    public static final String DESCRIPTION = "You gain 1 Strength and 1 Dexterity per stack of Flow.";

    public FlowPower(AbstractCreature owner, int amount) {
        this.name = NAME;
        this.ID = POWER_ID;
        this.owner = owner;
        this.amount = amount;
        this.updateDescription();
        this.img = new Texture(TranquilMod.makePowerImagePath(POWER_ID));
    }

    @Override
    public void updateDescription() {
        this.description = DESCRIPTION;
    }

    @Override
    public void onAfterUseCard(AbstractCard card, UseCardAction action) {
        super.onAfterUseCard(card, action);
        if (
                (owner.hasPower("Tranquil_AttunedAttackPower") && card.type == AbstractCard.CardType.ATTACK)
            //|| (owner.hasPower("Tranquil_AttunedSkillPower") && card.type == AbstractCard.CardType.SKILL)
        ) {
            this.amount++;
            AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(owner, owner,
                    new StrengthPower(owner, 1), 1));
            AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(owner, owner,
                    new DexterityPower(owner, 1), 1));
        } else {
            AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(owner, owner,
                    new StrengthPower(owner, -1 * amount), -1 * amount));
            AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(owner, owner,
                    new DexterityPower(owner, -1 * amount), -1 * amount));
            AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(owner, owner, this));
        }
    }
}