﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OldSkool;

namespace lewt.Entity {

    public enum Attributes {
        Health,
        Energy,
        HealthRegen,
        EnergyRegen,

        Strength,
        Intelligence,
        Dexterity,

        Speed,
        Block, //COMPUTE-IN
        Evasion, //COMPUTE-IN

        Attack,
        Defense, //COMPUTE-IN

        Luck
    }

    public enum ExecuteActionResult {
        Executed, Failed, DoesNotApply
    }
    public interface CharacterClass {
        int BaseMovementCooldownAfterSpecial { get; }
        String Name { get; }
        int BaseCooldown(XAction action);
        ExecuteActionResult ExecuteAction(BaseCharacter me, Dungeon dungeon, XAction action);
        XAction RecommendAction(BaseCharacter me, Func<XAction, bool> canPerform);
        Dictionary<Attributes,Ref<float>> BaseAttributes(Ref<int> Level);
        void NotifyDealtDamange(Dungeon dungeon, BaseCharacter me, BaseCharacter victim, float damageTaken);
    }
}
