
/*****************************************************************************\

  Copyright (C) 2013, Solarix <solarix.one1 at gmail dot com>

  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
  arising from the use of this software.

  Permission is granted to anyone to use this software subject to the 
  terms and conditions stated in Car Spawner - License.txt, and the following restrictions:

  1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgment in the product documentation is required.
  2. Altered source versions must be plainly marked as such, and must not be
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.

\*****************************************************************************/
#pragma once

#include "../ScriptHook/Scripting.h"

namespace Scripting
{
	// Add any functions you want to use but are not documented in ScriptHook here...
	static LPCWSTR *UNICODEGetPlayerName(Player playerIndex) {return NativeInvoke::Invoke<NATIVE_GET_PLAYER_NAME,LPCWSTR*>(playerIndex); }
	static b8 IsModelInCDIMAGE (eModel model) { return NativeInvoke::Invoke<NATIVE_IS_MODEL_IN_CDIMAGE, b8>(model); }
	static b8 IsInPlayerSettingsMenu() { return NativeInvoke::Invoke<NATIVE_IS_IN_PLAYER_SETTINGS_MENU,b8>(); }
	static b8 IsMouseButtonJustPressed(u32 mButton) { return NativeInvoke::Invoke<NATIVE_IS_MOUSE_BUTTON_JUST_PRESSED, b8>(mButton); }
	static b8 IsMouseButtonPressed(u32 mButton) { return NativeInvoke::Invoke<NATIVE_IS_MOUSE_BUTTON_PRESSED, b8>(mButton); }
	static void GetMouseWheel(i32 *Wheel) { NativeInvoke::Invoke<NATIVE_GET_MOUSE_WHEEL, ScriptVoid>(Wheel); }
	static void ClearPrints() { NativeInvoke::Invoke<NATIVE_CLEAR_PRINTS, ScriptVoid>(); }
	static b8 IsNetworkSession() {return NativeInvoke::Invoke<NATIVE_IS_NETWORK_SESSION,b8>(); }
	static b8 HasControlOfNetworkId(u32 netid) { return NativeInvoke::Invoke<NATIVE_HAS_CONTROL_OF_NETWORK_ID, b8>(netid); }
	static b8 RequestControlOfNetworkId(u32 networkID) { return NativeInvoke::Invoke<NATIVE_REQUEST_CONTROL_OF_NETWORK_ID, b8>(networkID); }	
	static b8 DoesVehicleExistWithNetworkId(u32 networkID) { return NativeInvoke::Invoke<NATIVE_DOES_VEHICLE_EXIST_WITH_NETWORK_ID, b8>(networkID); }
	static void GetNetworkIdFromVehicle(Vehicle veh, u32 *networkID) { NativeInvoke::Invoke<NATIVE_GET_NETWORK_ID_FROM_VEHICLE, ScriptVoid>(veh, networkID); }
	static void GetVehicleFromNetworkId(u32 networkID, Vehicle *veh) { NativeInvoke::Invoke<NATIVE_GET_VEHICLE_FROM_NETWORK_ID,ScriptVoid>(networkID, veh); }
	static void SetCanBurstCarTyres(Vehicle veh, b8 value) { NativeInvoke::Invoke<NATIVE_SET_CAN_BURST_CAR_TYRES,ScriptVoid> (veh, value); }
	static void SetHeliStabiliser(Vehicle heli, b8 set) { NativeInvoke::Invoke<NATIVE_SET_HELI_STABILISER, ScriptVoid>(heli, set); }
	static void SetHeliBladesFullSpeed(Vehicle veh) { NativeInvoke::Invoke<NATIVE_SET_HELI_BLADES_FULL_SPEED,ScriptVoid>(veh); }
	static void SetCarEngineOn (Vehicle veh, bool flag0, bool flag1) { NativeInvoke::Invoke<NATIVE_SET_CAR_ENGINE_ON,ScriptVoid>(veh, flag0, flag1); }
	static void TriggerVehAlarm (Vehicle veh) { NativeInvoke::Invoke<NATIVE_TRIGGER_VEH_ALARM,ScriptVoid>(veh); }
	static void SetVehAlarm (Vehicle veh, b8 set) { NativeInvoke::Invoke<NATIVE_SET_VEH_ALARM,ScriptVoid>(veh, set); }
	static void SetVehAlarmDuration (Vehicle veh, i32 duration) { NativeInvoke::Invoke<NATIVE_SET_VEH_ALARM_DURATION,ScriptVoid>(veh, duration); }
}