#ifndef IE_DINPUT_H
#define IE_DINPUT_H

/*
	Ripatti Artem (c) 2011

	Это заголовочный файл реализации интерфейса XInputEngine
	при помощи DirectInput 8.
*/

#include "ie_iface.h"
#pragma comment (lib, "dinput8.lib")
#pragma comment (lib, "dxguid.lib")
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>

namespace ie
{
	class InputEngineDInput8 : public XInputEngine
	{
		HWND h_wnd;

		LPDIRECTINPUT8			g_Input;		// ввод
		LPDIRECTINPUTDEVICE8	g_Mouse;		// мышь
		LPDIRECTINPUTDEVICE8	g_Keyboard;		// клавиатура

		BYTE diks[256];
		BYTE diks2[256];

		DIMOUSESTATE dms;
		DIMOUSESTATE dms2;

		int mx, my;
	public:
		InputEngineDInput8(HWND hWnd);
		~InputEngineDInput8();

		void clear_states();

		// обновить информацию из ввода
		virtual void read_states();

		// верно ли, что клавиша key в предыдущем фрейме
		// была в состоянии before, а в текущем - в состоянии now
		virtual bool pressed(int key, bool before, bool now);

		virtual bool pressed_before(int key);
		virtual bool pressed_now(int key);

		// тут работа с мшой
		virtual int get_mouse_x();
		virtual int get_mouse_y();
		virtual bool mouse_pressed(int button, bool before, bool now);
		virtual bool mouse_pressed_before(int key);
		virtual bool mouse_pressed_now(int key);
	};
}

#endif