#pragma once #include #include "../../engine/UI.h" #include "../../engine/resources.h" #include "../../engine/stateManager.h" #include "../theArchanist/map/gameMap.h" /** * Struct to represent the sounds used in the menu */ struct MenuSounds { Sound click{"buttonClick.ogg", false, 60}; Sound music{"loneliness.ogg", true, 30}; }; /** * Struct to represent the settings for level config */ struct ArchSettings { enum Difficulty { easy = 0, medium, hard }; int seed{0}; int levels{3}; int difficulty{Difficulty::medium}; }; /** * @class menuState * @brief The state that represents the main menu for our project. From here * settings can be edited and game selected. * * @author Chase Percy * */ class menuState { public: static std::shared_ptr init(Resources& engineResources); static void destroy(); static void pause(bool option); static void handleEvents(SDL_Event& event); static void update(float deltaTime); static void draw(); static void setCamera(); private: static std::shared_ptr m_thisState; /// This state static gameMap m_map; /// the map to be drawn in the background static float m_timer; /// the timer for updating and drawing a new map static MenuSounds m_sounds; /// the sounds to be used in the menu static ArchSettings m_archSettings; /// the settings to update };