#pragma once

#include <cstdint>

namespace flyff {

    enum class JobID : uint32_t {
        Vagrant = 0,
        Mercenary = 1,
        Acrobat = 2,
        Assist = 3,
        Magician = 4,
        Puppeteer = 5,
        Knight = 6,
        Blade = 7,
        Jester = 8,
        Ranger = 9,
        Ringmaster = 10,
        Billposter = 11,
        Psychikeeper = 12,
        Elementor = 13
    };


    static std::ostream &operator<<(std::ostream &os, const JobID &type) {
        switch (type) {
            case JobID::Vagrant:
                os << "Vagrant";
                break;
            case JobID::Mercenary:
                os << "Mercenary";
                break;
            case JobID::Acrobat:
                os << "Acrobat";
                break;
            case JobID::Assist:
                os << "Assist";
                break;
            case JobID::Magician:
                os << "Magician";
                break;
            case JobID::Puppeteer:
                os << "Puppeteer";
                break;
            case JobID::Knight:
                os << "Knight";
                break;
            case JobID::Blade:
                os << "Blade";
                break;
            case JobID::Jester:
                os << "Jester";
                break;
            case JobID::Ranger:
                os << "Ranger";
                break;
            case JobID::Ringmaster:
                os << "Ringmaster";
                break;
            case JobID::Billposter:
                os << "Billposter";
                break;
            case JobID::Psychikeeper:
                os << "Psychikeeper";
                break;
            case JobID::Elementor:
                os << "Elementor";
                break;
            default:
                os << "Unknown";
                break;
        }

        return os;
    }
};