/**
 *  Triangles
 *  Copyright (C) 2016 POSITIVE MENTAL ATTITUDE
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, version 3 of the License.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#pragma once

#include <functional>
#include "State.hpp"
#include "Triangle.hpp"
#include "GuiButton.hpp"

class MenuState: public State
{
	public:
		MenuState();
		void init() final;
		void refresh() final;
		void coreThink(const sf::Event& event) final;
		void coreInput() final;
		void coreUpdate(sf::Time delta) final;
		void coreRender(const bool shaders) final;

	private:
		enum {
			Main = 0, Credits, Settings
		};
		int _subStatus;
		Triangle _crazyTriangles[30];
		int _crazyColors[30][4];
		GuiTriangle _logo;
		GuiTriangle _play;
		GuiTriangle _settings;
		GuiTriangle _quit;
		GuiButton _shaders;
		GuiButton _fullscreen;
		sf::Text _credits;
		sf::RenderTexture _crazy;
		sf::RenderTexture _waterMap;
		sf::Shader _waterSine;
		sf::Shader _waterFrag;
		sf::Music _music;
		sf::Color _color;
		int _padSelection;
};