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

#ifndef FUGG_RANK_H
#define FUGG_RANK_H

#include <cstdint>
#include <ostream>

namespace flyff {
    enum class Rank : uint32_t {
        None,
        Low,
        Normal,
        Captain,
        Boss,
        MidBoss,
        Material,
        Super,
        Guard,
        Citizen
    };

    static std::ostream &operator<<(std::ostream &os, const Rank &rank) {
        switch(rank) {
            case Rank::None:
                os << "None";
                break;
            case Rank::Low:
                os << "Low";
                break;
            case Rank::Normal:
                os << "Normal";
                break;
            case Rank::Captain:
                os << "Captain";
                break;
            case Rank::Boss:
                os << "Boss";
                break;
            case Rank::MidBoss:
                os << "MidBoss";
                break;
            case Rank::Material:
                os << "Material";
                break;
            case Rank::Super:
                os << "Super";
                break;
            case Rank::Guard:
                os << "Guard";
                break;
            case Rank::Citizen:
                os << "Citizen";
                break;
            default:
                os << "Rank(" << static_cast<unsigned>(rank) << ")";
                break;
        }
        return os;
    }
};

#endif //FUGG_RANK_H
