#pragma once

#include "refCInputEvent.h"
#include "enumKey.h"

namespace FDK
{
	public enum class E入力デバイス種別
	{
		キーボード,
		マウス,
		ジョイスティック,
		MIDI入力,
		未知のデバイス
	};

	public interface class IInputDevice
	{
		property E入力デバイス種別 e入力デバイス種別
		{
			E入力デバイス種別 get();
		}

		// デバイスのGUID。
		// Joystickの場合のみ使用。その他のデバイスでは常に null。
		property Guid^ guid 
		{
			Guid^ get();
		}
		
		// デバイス番号。
		// MIDIの場合：MIDIデバイス番号(0〜)
		// Keyboardの場合：常に 0
		// Joystickの場合：常に 0
		property int ID 
		{
			int get();
		}

		property List<CInputEvent^>^ list入力イベント
		{
			List<CInputEvent^>^ get();
		}
		property String^ strデバイス名
		{
			String^ get();
			void set( String^ );
		}

		void tポーリング( bool bWindowがアクティブ中, bool bバッファ入力を使用する );

		bool bキーが押された( int nKey );
		bool bキーが押された( Key key );
		
		bool bキーが押されている( int nKey );
		bool bキーが押されている( Key key );
		
		bool bキーが離された( int nKey );
		bool bキーが離された( Key key );

		bool bキーが離されている( int nKey );
		bool bキーが離されている( Key key );
	};
}
