//
// Created by main on 25-10-22.
//

#ifndef FUGG_PARAMID_H
#define FUGG_PARAMID_H

#include <cstdint>

namespace flyff {
    enum class ParamID : uint32_t {
        Strength = 0,
        Dexterity,
        Intelligence,
        Stamina,

        Speed = 4,
        // DST_HAWKEYE_RATE: Increased attack range modifier.
        DstHawkEye = 8,
//        UnknownSpeed = 9,

        AdditionalDamage = 35,
        // DST_HP_MAX
        MaxHitPoint = 44,
        // DST_HP_MAX_RATE
        MaxHitPointScaling = 53,

//        Max = 82,
    };


    static std::ostream &operator<<(std::ostream &os, const ParamID &type) {
        switch (type) {
            case ParamID::Strength: os << "Strength"; break;
            case ParamID::Dexterity: os << "Dexterity"; break;
            case ParamID::Intelligence: os << "Intelligence"; break;
            case ParamID::Stamina: os << "Stamina"; break;

            case ParamID::Speed: os << "Speed"; break;

            case ParamID::AdditionalDamage: os << "AdditionalDamage"; break;

            case ParamID::MaxHitPoint: os << "MaxHitPoint"; break;
            case ParamID::MaxHitPointScaling: os << "MaxHitPointScaling"; break;

            default: os << "ParamID(" << static_cast<unsigned>(type) << ")";
        }
        return os;
    }

}


#endif //FUGG_PARAMID_H
