#include "ScreenManager.h" #include "FuelScreen.h" #include "utils.h" ScreenManager* ScreenManager::m_pInstance = nullptr; Screen* ScreenManager::Fuel{ nullptr }; Screen* ScreenManager::SellScreen{ nullptr }; ScreenManager* ScreenManager::GetInstance() { if(m_pInstance == nullptr) { m_pInstance = new ScreenManager(); } if(!m_pInstance->m_AreScreensInitialized) { m_pInstance->InitializeScreens(); //TODO: Ask if this a hack m_pInstance->m_AreScreensInitialized = true; } return m_pInstance; } void ScreenManager::OpenScreen(Screen* screen) { if(m_IsScreenOpen == false) { m_currentScreen = screen; m_IsScreenOpen = true; } } void ScreenManager::CloseScreen() { if(m_IsScreenOpen == true) { m_IsScreenOpen = false; m_currentScreen = nullptr; } } void ScreenManager::InitializeScreens() { Point2f fuelScreenSize = Point2f { 492, 396 }; Point2f fuelScreenCenter = Point2f { utils::GetViewport().x / 2 - fuelScreenSize.x / 2, utils::GetViewport().y / 2 - fuelScreenSize.y / 2 }; Fuel = new FuelScreen { "gui/fuel/background.png", fuelScreenCenter, fuelScreenSize, TextureManager::GetInstance() }; Point2f closeButtonOffset = Point2f { 460, 396 - 14 }; Point2f closeButtonPos = fuelScreenCenter + closeButtonOffset; closeButtonPos.y -= 18; Button* closeFuelButton = new Button { "gui/close.png", closeButtonPos, Point2f{0,0}, TextureManager::GetInstance() }; closeFuelButton->SetOnClick([this]() { CloseScreen(); }); Fuel->AddButton(closeFuelButton); Point2f oneDollarButtonPos = Point2f { 451, 287 }; oneDollarButtonPos += fuelScreenCenter; Button* fiveDollarButton = new Button { "gui/fuel/5dollars.png", oneDollarButtonPos , Point2f{0,0}, TextureManager::GetInstance() }; Fuel->AddButton(fiveDollarButton); Point2f tenDollarButtonPos = oneDollarButtonPos + Point2f { 113, -1 }; tenDollarButtonPos += fuelScreenCenter; Button* tenDollarButton = new Button { "gui/fuel/10dollars.png", tenDollarButtonPos, Point2f{0,0}, TextureManager::GetInstance() }; Fuel->AddButton(tenDollarButton); Point2f twentyFiveDollarButtonPos = oneDollarButtonPos + Point2f { 0, -89 }; twentyFiveDollarButtonPos += fuelScreenCenter; Button* twentyFiveDollarButton = new Button { "gui/fuel/25dollars.png", twentyFiveDollarButtonPos, Point2f{0,0}, TextureManager::GetInstance() }; Fuel->AddButton(twentyFiveDollarButton); Point2f fiftyDollarButtonPos = twentyFiveDollarButtonPos + Point2f { 114, 0 }; Button* fiftyDollarButton = new Button { "gui/fuel/50dollars.png", fiftyDollarButtonPos, Point2f{0,0}, TextureManager::GetInstance() }; Fuel->AddButton(fiftyDollarButton); Point2f fillTankButtonPos = Point2f { 450, 108 }; fillTankButtonPos += fuelScreenCenter; Button* fillTankButton = new Button { "gui/fuel/fillTank.png", fillTankButtonPos, Point2f{0,0}, TextureManager::GetInstance() }; Fuel->AddButton(fillTankButton); Point2f sellScreenSize = Point2f { 533, 398 }; Point2f sellScreenCenter = Point2f { utils::GetViewport().x / 2 - sellScreenSize.x / 2, utils::GetViewport().y / 2 - sellScreenSize.y / 2 }; SellScreen = new Screen { "gui/sell/background.png", sellScreenCenter, sellScreenSize, TextureManager::GetInstance() }; //m_Button = Button { "gui/close.png", closeButtonPos, closeButtonSize, TextureManager::GetInstance() }; }