#pragma once
#include "../../sdk/math/math.hpp"
#include <windows.h>
#include <map>
#include <vector>
#include <string>

struct moduleData {
	HMODULE module;
	DWORD_PTR base;
	uintptr_t size;
};

class C_CSPlayerPawn;
class CUserCmd;
class CBaseUserCmdPB;

namespace aim {
	Vector recoilControl(bool move, C_CSPlayerPawn* localPawn);
	void aimBot(C_CSPlayerPawn* enemyPlayer, uintptr_t boneArray, CUserCmd* pCmd, CBaseUserCmdPB* pBaseCmd);
	void moveMouseToLocation(Vector pos);
	//void triggerBot(DWORD_PTR base, C_CSPlayerPawn* localPawn);

    inline C_CSPlayerPawn* lockedPlayer = 0;

    inline bool isHotTrigger;
    inline int hotSelectTrigger = 0;
    inline int hotTrigger;
    inline bool playerLock;

    inline bool state;
    inline bool rcs;
    inline bool trigger;

    inline bool alaimlock = false;
    inline bool checkSpotted = true;
    inline float smoothing = 3.2f;

    inline float fov = 2.5;
    inline bool fovCircle;

    inline int bone;
    inline int boneSelect = 1;
    inline std::vector<std::string> bones = { "Head", "Neck","Chest", "Crotch" };
    inline std::map <std::string, int> boneMap = { {"Head",6},{"Neck",5},{"Chest",4},{"Crotch",0} };

    inline int aimMode = 2;
    inline std::vector<std::string> aimModes = { "Closest to Player", "Closest to Crosshair", "Furthest from crosshair", "No preference" };
    inline std::map <std::string, int> aimModeMap = { {"Closest to Player",0},{"Closest to Crosshair",1},{"Furthest from crosshair",2},{"No preference",3} };

    inline int hotSelectAim = 0;
    inline int hotAim;

    inline float sens = 2.25f;
}
