#ifndef _CEVENT_HPP_
#define _CEVENT_HPP_

/*** SDL Header Files ***/
#include <SDL.h>

/*** DLL Header File ***/
#include "dllExport.h"

namespace EventEngine {
	class EXPORT_FROM_MYDLL cEvent
	{
	public:
	public:
		cEvent();

		virtual ~cEvent();

		virtual void OnEvent( const SDL_Event& event );

		virtual void OnInputFocus();

		virtual void OnInputBlur();

		virtual void OnKeyDown(SDL_Keycode sym, Uint16 mod);//, Uint16 unicode);

		virtual void OnKeyUp(SDL_Keycode sym, Uint16 mod);//, Uint16 unicode);

		virtual void OnMouseFocus();

		virtual void OnMouseBlur();

		virtual void OnMouseMove(int mX, int mY, int relX, int relY, bool Left, bool Right, bool Middle);

		virtual void OnMouseWheel(bool Up, bool Down);	//Not implemented

		virtual void OnLButtonDown(int mX, int mY);

		virtual void OnLButtonUp(int mX, int mY);

		virtual void OnRButtonDown(int mX, int mY);

		virtual void OnRButtonUp(int mX, int mY);

		virtual void OnMButtonDown(int mX, int mY);

		virtual void OnMButtonUp(int mX, int mY);

		virtual void OnJoyAxis(SDL_JoystickID which, Uint8 axis, Sint16 value);

		virtual void OnJoyButtonDown(SDL_JoystickID which, Uint8 button);

		virtual void OnJoyButtonUp(SDL_JoystickID which, Uint8 button);

		virtual void OnJoyHat(SDL_JoystickID which, Uint8 hat, Uint8 value);

		virtual void OnJoyBall(SDL_JoystickID which, Uint8 ball, Sint16 xrel, Sint16 yrel);

		virtual void OnMinimize();

		virtual void OnRestore();

		virtual void OnResize(int w, int h);

		virtual void OnExpose();

		virtual void OnExit();

		virtual void OnUser(Uint32 type, int code, void* data1, void* data2);
	private:
		void OnWindowsEvent( const SDL_Event& event );
		void OnMouseButtonDown( const SDL_Event& event );
		void OnMouseButtonUp( const SDL_Event& event );
	};/// END CLASS DEFINITION cEvent
}/// END NAMESPACE DEFINITION EventEngine
#endif/// END IFNDEF _CEVENT_HPP_
