#pragma once

#include "application/config/ConfigOwner.h"
#include "application/config/values/BasicValues.h"
#include "application/config/values/ColorValues.h"
#include "application/config/values/KeybindValue.h"
#include "application/config/values/NumberValues.h"
#include "features/aimbot/IAimbotSettings.h"

namespace ta::adapters::config
{
    class AimbotConfigAdapter final : public ta::application::config::ConfigOwner,
                                        public ta::features::aimbot::IAimbotSettings
    {
    public:
        AimbotConfigAdapter();
        [[nodiscard]] ta::features::aimbot::AimbotSettings read() const override;
        void set_magic_bullet(bool enabled) override;

    private:
        ta::application::config::RegisteredConfigValue<ta::application::config::CheckboxValue> magic_bullet_{*this, "magic_bullet", false, "Magic Bullet"};
        ta::application::config::RegisteredConfigValue<ta::application::config::KeybindValue> aimbot_hotkey_{*this, "aimbot_hotkey", 0, "Aimbot Hotkey"};
        ta::application::config::RegisteredConfigValue<ta::application::config::CheckboxValue> show_target_{*this, "show_target", true, "Show Target"};
        ta::application::config::RegisteredConfigValue<ta::application::config::FloatSliderValue> target_size_{*this, "target_size", 3, 1, 10, "Target Size"};
        ta::application::config::RegisteredConfigValue<ta::application::config::ColorpickerValue> target_color_{*this, "target_color", ta::application::config::ConfigColor{1, 0, 1, 1}, "Target Color"};
    };
}
