#include "script.h"

#include <string>
#include <ctime>

#pragma warning(disable : 4244 4305) // double <-> float conversions

std::string statusText;
DWORD statusTextDrawTicksMax;
bool statusTextGxtEntry;

bool on = false;


void update()
{
	Ped playerPed = PLAYER::PLAYER_PED_ID();
	Vehicle veh = PED::GET_VEHICLE_PED_IS_USING(playerPed);

	if (GetAsyncKeyState(VK_RCONTROL) && on == true && (PED::IS_PED_IN_ANY_VEHICLE(playerPed, 0)))
	{
		on = false;
		AUDIO::PLAY_SOUND_FRONTEND(-1, "NAV_UP_DOWN", "HUD_FRONTEND_DEFAULT_SOUNDSET", 0);
		WAIT(200);
	}

	if (GetAsyncKeyState(VK_RCONTROL) && on == false && (PED::IS_PED_IN_ANY_VEHICLE(playerPed, 0)))
	{
		on = true;
		AUDIO::PLAY_SOUND_FRONTEND(-1, "NAV_UP_DOWN", "HUD_FRONTEND_DEFAULT_SOUNDSET", 0);
		WAIT(200);
	}

	if (!PED::IS_PED_IN_ANY_VEHICLE(playerPed, 0))
	{
		on = false;
	}

	if (on == true)
	{
		float speed = ENTITY::GET_ENTITY_SPEED(veh);
		VEHICLE::SET_VEHICLE_ON_GROUND_PROPERLY(veh);

		if (GetAsyncKeyState(VK_LSHIFT) && (PED::IS_PED_IN_ANY_VEHICLE(playerPed, 0)))
		{
			if (speed <= 0.5f)
			{
				speed += 5.0f;
			}
			speed += speed * 0.05f;
			VEHICLE::SET_VEHICLE_FORWARD_SPEED(veh, speed);
		}
		if (GetAsyncKeyState(VK_LCONTROL))
		{
			VEHICLE::SET_VEHICLE_FORWARD_SPEED(veh, -10.0f);
		}
		if (GetAsyncKeyState(VK_SPACE) && (PED::IS_PED_IN_ANY_VEHICLE(playerPed, 0)))
		{
			if (ENTITY::IS_ENTITY_IN_AIR(veh) || speed > 5.0)
				VEHICLE::SET_VEHICLE_FORWARD_SPEED(veh, 0.0);
		}
	}
}

void main()
{
	while (true)
	{
		update();
		WAIT(0);
	}
}

void ScriptMain()
{
	srand(GetTickCount());
	main();
}