#ifndef IE_FLKT_1_3_H
#define IE_FLKT_1_3_H

/*
	Ripatti Artem (c) 2013

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

#include <map>

#include "ie_iface.h"
#include <FL/Fl.H>
#include <FL/Fl_Window.H>

namespace ie
{
	class InputEngineFLTK13 : public XInputEngine
	{
		Fl_Window * _wnd;

		std::map< int, int > fl_to_dik;

		int mx, my, mx0, my0;
		bool diks[256], diks2[256], diks0[256];
		bool btn[4], btn2[4], btn0[4];
	public:
		InputEngineFLTK13();
		~InputEngineFLTK13();

		int outer_handle( Fl_Window * wnd, int e );

		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
