#ifndef MOD_QUICK_BOOST_H
#define MOD_QUICK_BOOST_H

#include "Player.h"
#include 
#include 

struct QuickBoostGearEntry
{
    uint32 itemEntry;
    uint8 equipmentSlot;
};

struct QuickBoostLocation
{
    uint32 mapId;
    float x;
    float y;
    float z;
    float o;
};

class QuickBoost
{
public:
    static QuickBoost* instance()
    {
        static QuickBoost instance;
        return &instance;
    }

    void LoadConfig();

    bool IsEnabled() const { return _enabled; }
    uint8 GetBoostLevel() const { return _boostLevel; }

    void ApplyBoost(Player* player) const;

private:
    void DestroyStartingGear(Player* player) const;
    void EquipStarterGear(Player* player) const;
    void GiveStartingMoney(Player* player) const;
    void TeleportToCapital(Player* player) const;
    void GrantHunterPet(Player* player) const;
    void LearnClassSpells(Player* player) const;

    bool _enabled = true;
    bool _destroyStartingGear = true;
    bool _teleportToCapital = true;
    bool _grantHunterPet = true;
    bool _learnClassSpells = true;
    uint8 _boostLevel = 15;
    uint32 _startingMoney = 5000; // copper

    static std::unordered_map> const _classGear;
    static std::unordered_map const _racePet;
    static std::unordered_map const _raceCapital;
};

#define sQuickBoost QuickBoost::instance()

#endif