/*****************************************************************************
 *	Mouse.h 																 *
 *																			 *
 *	XFX::Input::Mouse class definition file 								 *
 *	Copyright (c) XFX Team. All Rights Reserved 							 *
 *****************************************************************************/
#ifndef _XFX_INPUT_MOUSE_
#define _XFX_INPUT_MOUSE_

#include "Enums.h"
#include <System/Types.h>

using namespace System;

namespace XFX
{
	namespace Input
	{
		/**
		 * Represents the state of a mouse input device, including mouse cursor position and buttons pressed.
		 */
		struct MouseState
		{
			ButtonState_t LeftButton;
			ButtonState_t MiddleButton;
			ButtonState_t RightButton;
			int X;
			ButtonState_t XButton1;
			ButtonState_t XButton2;
			int Y;

			bool operator!=(const MouseState& other) const;
			bool operator==(const MouseState& other) const;
		};

		/**
		 * Allows retrieval of position and button clicks from a mouse input device.
		 */
		class Mouse
		{
		private:
			Mouse(); //Private constructor to prevent instantiation.

		public:
			static MouseState GetState();
			static void SetPosition(int x, int y);
		};
	}
}

#endif //_XFX_INPUT_MOUSE_