#include "Core/Asura.h"

#ifdef AVP_USE_INPUT_SIMULATOR

#ifdef ASURA_USE_PRAGMA_ONCE
	#pragma once
#endif

#ifndef ___AVP_INPUTSIMULATOR_SYSTEM_H___
#define ___AVP_INPUTSIMULATOR_SYSTEM_H___

class AVP_InputSimulator_System
{
	public:
		static void Initialise();
		static void Shutdown();

		static void Update( u_char* ucCurrentInput, float* pfAxisValue );

		static void Platform_SetFireButton( const bool bFire, u_char* ucCurrentInput );
		static void Platform_SetSecondaryFireButton( const bool bSprint, u_char* ucCurrentInput );
		static void Platform_SetTurnAxisHorizontal( const float fValue, float* pfAxisValue );
		static void Platform_SetTurnAxisVertical( const float fValue, float* pfAxisValue );
		static void Platform_SetMoveForwardsButton( const bool bMove, u_char* ucCurrentInput, float* pfAxisValue );
		static void Platform_SetMoveBackwardsButton( const bool bMove, u_char* ucCurrentInput, float* pfAxisValue );
		static void Platform_SetMoveLeftButton( const bool bMove, u_char* ucCurrentInput, float* pfAxisValue );
		static void Platform_SetMoveRightButton( const bool bMove, u_char* ucCurrentInput, float* pfAxisValue );
		static void Platform_SetJumpButton( const bool bJump, u_char* ucCurrentInput );
		static void Platform_SetFocusMode( const bool bFocus, u_char* ucCurrentInput );
		static void Platform_SetCloakButton( const bool bCloak, u_char* ucCurrentInput );
		static void Platform_SetSprintButton( const bool bSprint, u_char* ucCurrentInput );
		static void Platform_SetStanceButton( const bool bChangeStance, u_char* ucCurrentInput );
		static void Platform_SetWalkButton( const bool bWalk, u_char* ucCurrentInput );
		static void Platform_SetDownButton( const bool bDown, u_char* ucCurrentInput, float* pfAxisValue );
		static void Platform_SetAcceptButton( const bool bAccept, u_char* ucCurrentInput );
		static void Platform_SetReloadButton( bool bReload, u_char* ucCurrentInput );
};

#endif // ___AVP_INPUTSIMULATOR_SYSTEM_H___

#endif // AVP_USE_INPUT_SIMULATOR
