#ifndef MENU_H
#define MENU_H

// System Header Files --------------
#ifdef _WIN32
#include <windows.h>
#endif //win32
#include <gl/gl.h>
#include <gl/glu.h>
#include <sdl.h>

// Program Header Files -------------
#include "font.h"

// Return Value definitions ---------
// Don't forget to make changes to nGraph.h
#define NGRAPH_MAIN_MENU			33
#define NGRAPH_SEARCH				32
#define NGRAPH_SHORTEST_PATH		31
#define NGRAPH_MIN_TREE				30
#define NGRAPH_QUIT					0

namespace ngObjects
{
	class Menu
	{
		public:
			Menu(){}
			Menu(int winWidth, int winHeight);
			void activate();
			char getEnteredKey(){if(enteredKey)return toupper(enteredKey[0]);else return '\0';}
			bool isActive(){return running;}
			int processEvent(SDL_Event &e);
			void render();
			void setWindowSettings(int winWidth, int winHeight){windowW = winWidth; windowH = winHeight;}
		private:
			GLUquadricObj *quadratic;
			char *enteredKey;
			char startChar, endChar;
			bool running, fadeOut;
			int highlight, currentState;
			int windowH, windowW, fov;
			GLfloat currentOpacity;
			Font menuFont;
			void handleKeyPress(SDL_keysym *keysym);
			void handleMouseButton();
	};
}

#endif // MENU_H
