#pragma once

#include <cstdint>
#include <string>

namespace ta::features::player
{
    struct PlayerSettings
    {
        bool god_mode = false;
        bool infinite_stamina = false;
        bool no_hunger_thirst = false;
        bool instant_search = false;
        bool speed_hack = false;
        int speed_hotkey = 0;
        int speed = 1;
        bool fly_mode = false;
        int fly_hotkey = 0;
        int fly_up_hotkey = 0x20;
        int fly_down_hotkey = 0x11;
        bool always_survive = false;
        bool no_malfunction = false;
        bool infinite_ammo = false;

        bool operator==(const PlayerSettings&) const = default;
    };

    struct PlayerCommand
    {
        bool add_exp = false;
        std::string exp_type;
        int exp_amount = 0;

        bool add_fence_rep = false;
        float fence_rep_amount = 0.0f;
        int fence_rep_source = 0;

        bool add_trader_rep = false;
        int trader_index = 0;
        std::string trader_name;
        float trader_rep_amount = 0.0f;

        bool set_skill = false;
        std::string skill_name;
        int skill_level = 0;

        std::uint64_t trace_id = 0;
        std::string trace_action;
    };
}
