/// <reference path="../ContentDescription.ts" />
/**
 * Quick Cheat Sheet of markers!
 * When making a description take these markers into account while describing the action! If a marker describes something
 * please include it if you add it to the description. Example: if you describe the attack as a "heavy hit!", make sure
 * to add the HIGH_DAMAGE marker, we don't want a "heavy hit!" to be displayed for an attack that caused 1 damage.
 *
 * Mandatory Markers - Include only one and clone description for each
 * CombatHit.FULL_DODGE
 * CombatHit.PARTIAL_DODGE
 * CombatHit.FULL_HIT
 *
 * Mandatory Markers - Include only one and clone description for each. These don't show up in FULL_DODGE
 * CombatResult.KNOCKED
 * CombatResult.KNOCKED_OFF
 * CombatResult.KILLED
 *
 * Non-Mandatory Markers - Include at most one per description, none makes a description fit more attacks. These don't show up in FULL_DODGE.
 * CombatDamage.LOW_DAMAGE
 * CombatDamage.MEDIUM_DAMAGE
 * CombatDamage.HIGH_DAMAGE
 */
class CombatDescription extends ContentDescription {
    public static DESCRIPTIONS = [];

    public constructor (name : string) {
        super(name, new ContentGroup());
        CombatDescription.DESCRIPTIONS.push(this);
    }

    public addUnit () {
        let unit = new CombatUnit();
        (<ContentGroup> this.group).addUnit(unit);
        return unit;
    }

    public static getDescription (target : ContentGroup) {
        return ContentDescription.pickDescriptions(CombatDescription.DESCRIPTIONS, target);
    }
}