#ifndef MAINSCREEN_HPP_INCLUDED
#define MAINSCREEN_HPP_INCLUDED

#include "../../Core/Types/Box.hpp"
#include "../../Core/Classes/Character.hpp"
#include <cstdint>
#include <string>
#include <vector>

/** @addtogroup Interfaces
* @{ */
class Mainscreen
{
    public:
        typedef enum SCREEN_STATE
        {
            LOGIN_SCREEN,
            LOBBY_SCREEN,
            CONNECTING,
            LOADING,
            HOPPING,
            PLAYING
        } SCREEN_STATE;

        typedef enum CROSSHAIR_STATE
        {
            NONE,
            YELLOW,
            RED
        } CROSSHAIR_STATE;

        static Mainscreen::SCREEN_STATE GetState();
        static Mainscreen::CROSSHAIR_STATE GetCrosshairState();

        static bool IsLoggedIn();

        static std::string GetUpText();
        static bool UpTextContains(const std::string& UpText);
        static bool UpTextContains(const std::vector<std::string>& UpTexts);
        static bool IsUpText(const std::string& UpText);
        static bool IsUpText(const std::vector<std::string>& UpTexts);
        static bool WaitIsUpText(std::uint32_t Duration, std::uint32_t Step, const std::string& UpText);
        static bool WaitUpTextContains(std::uint32_t Duration, std::uint32_t Step, const std::string& UpText);
        static bool WaitUpTextContains(std::uint32_t Duration, std::uint32_t Step, const std::vector<std::string>& UpTexts);

};

/** @} */

#endif // MAINSCREEN_HPP_INCLUDED
