#include "cMainMenu.hpp" using MainMenu::cMainMenu; using MainMenu::eOptions; using MainMenu::operator ++; using MainMenu::operator --; cMainMenu::cMainMenu() : mp_camera(nullptr), mp_font(nullptr), mp_titleText(nullptr), mp_singleText(nullptr), mp_headText(nullptr), mp_quitText(nullptr), m_option(Start), m_run(true) { mp_camera = new VideoEngine::cCamera(); m_titleSprite.setCamera(&mp_camera); m_singleSprite.setCamera(&mp_camera); m_headSprite.setCamera(&mp_camera); m_quitSprite.setCamera(&mp_camera); m_colour.r = 255; m_colour.g = 0; m_colour.b = 0; m_selectColour.r = 0; m_selectColour.g = 0; m_selectColour.b = 255; m_titleColour.r = 255; m_titleColour.g = 255; m_titleColour.b = 255; } cMainMenu::~cMainMenu() { delete mp_camera; mp_camera = nullptr; delete mp_font; mp_font = nullptr; } const eOptions cMainMenu::ShowMenu() { SingleSelect(); while (m_run == true) { Display(); Input(); } return m_option; } void cMainMenu::OptionUp() { --m_option; PlaySound(); switch (m_option) { case Start: SingleSelect(); break; case Head: HeadSelect(); break; case Quit: QuitSelect(); break; } } void cMainMenu::OptionDown() { ++m_option; PlaySound(); switch (m_option) { case Start: SingleSelect(); break; case Head: HeadSelect(); break; case Quit: QuitSelect(); break; } } void cMainMenu::OptionSelect() { m_run = false; } void cMainMenu::setOption( const eOptions option /*= eOptions::Start*/ ) { m_option = option; } void cMainMenu::setSound( const cString dir, const cString filename ) { m_menuSound.setFileNameandDir(filename, dir); m_menuSound.setLoops(0); } void cMainMenu::setColour( const SDL_Colour colour ) { m_colour = colour; } void cMainMenu::setSelectColour( const SDL_Colour selectcolour ) { m_selectColour = selectcolour; } void cMainMenu::setTitleColour( const SDL_Colour titlecolour ) { m_titleColour = titlecolour; } void cMainMenu::setFont( const cString dir, const cString filename ) { delete mp_font; mp_font = nullptr; mp_font = new TextTypeEngine::cFont(dir, filename); } void cMainMenu::setTitleText( const cString text, const long int size, const long int x, const long int y ) { mp_titleText = new TextTypeEngine::cText(m_titleColour, &mp_font, text, size); m_titleSprite.setPosition(x, y); m_titleSprite.setImage((VideoEngine::cImage**)(&mp_titleText)); m_titleSprite.setImageArea(); } void cMainMenu::setSingleText( const cString text, const long int size, const long int x, const long int y ) { mp_singleText = new TextTypeEngine::cText(m_colour, &mp_font, text, size); m_singleSprite.setPosition(x, y); m_singleSprite.setImage((VideoEngine::cImage**)(&mp_singleText)); m_singleSprite.setImageArea(); } void cMainMenu::setHeadText( const cString text, const long int size, const long int x, const long int y ) { mp_headText = new TextTypeEngine::cText(m_colour, &mp_font, text, size); m_headSprite.setPosition(x, y); m_headSprite.setImage((VideoEngine::cImage**)(&mp_headText)); m_headSprite.setImageArea(); } void cMainMenu::setQuitText( const cString text, const long int size, const long int x, const long int y ) { mp_quitText = new TextTypeEngine::cText(m_colour, &mp_font, text, size); m_quitSprite.setPosition(x, y); m_quitSprite.setImage((VideoEngine::cImage**)(&mp_quitText)); m_quitSprite.setImageArea(); } ///Private void cMainMenu::ResetTextColour() { if (mp_singleText != nullptr) mp_singleText->setColour(m_colour); if (mp_headText != nullptr) mp_headText->setColour(m_colour); if (mp_quitText != nullptr) mp_quitText->setColour(m_colour); } void cMainMenu::Display() { mp_camera->Draw(); VideoEngine::cVideo::Inst().Display(); } void cMainMenu::Redraw() { m_titleSprite.CameraDraw(); m_singleSprite.CameraDraw(); m_headSprite.CameraDraw(); m_quitSprite.CameraDraw(); } void cMainMenu::PlaySound() { m_menuSound.PlaySound(); } void cMainMenu::Input() { EventEngine::cEvent::Inst().CheckEvents(); } void cMainMenu::SingleSelect() { if (mp_singleText == nullptr) return; ResetTextColour(); mp_singleText->setColour(m_selectColour); Redraw(); } void cMainMenu::HeadSelect() { if (mp_headText == nullptr) return; ResetTextColour(); mp_headText->setColour(m_selectColour); Redraw(); } void cMainMenu::QuitSelect() { if (mp_quitText == nullptr) return; ResetTextColour(); mp_quitText->setColour(m_selectColour); Redraw(); }