#include "pch.h" #include "ScreenManager.h" #include "FuelScreen/FuelScreen.h" #include "SellScreen/SellScreen.h" #include "utils.h" #include "GameOver/GameOverScreen.h" ScreenManager* ScreenManager::m_pInstance = nullptr; Screen* ScreenManager::m_FuelScreen { nullptr }; Screen* ScreenManager::m_SellScreen { nullptr }; Screen* ScreenManager::m_GameOverScreen { nullptr }; ScreenManager * ScreenManager::GetInstance() { if (m_pInstance == nullptr) { m_pInstance = new ScreenManager(); } if (!m_pInstance->m_AreScreensInitialized) { m_pInstance->InitializeScreens(); m_pInstance->m_AreScreensInitialized = true; } return m_pInstance; } void ScreenManager::DestroyInstance() { delete 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; } } bool ScreenManager::IsScreenOpen() const { return m_IsScreenOpen; } ScreenManager::~ScreenManager() { delete m_FuelScreen; delete m_SellScreen; delete m_GameOverScreen; } void ScreenManager::InitializeScreens() { Vector2f fuelScreenSize = Vector2f { 492, 396 }; Vector2f fuelScreenCenter = Vector2f { utils::GetViewport().x / 2 - fuelScreenSize.x / 2, utils::GetViewport().y / 2 - fuelScreenSize.y / 2 }; m_FuelScreen = new FuelScreen { "gui/fuel/background.png", fuelScreenCenter, Vector2f { 0, 0 }, TextureManager::GetInstance() }; Vector2f sellScreenSize = Vector2f { 533, 398 }; Vector2f sellScreenCenter = Vector2f { utils::GetViewport().x / 2 - sellScreenSize.x / 2, utils::GetViewport().y / 2 - sellScreenSize.y / 2 }; m_SellScreen = new SellScreen { "gui/sell/background.png", sellScreenCenter, sellScreenSize, TextureManager::GetInstance() }; Vector2f gameOverScreenSize = Vector2f { 533, 398 }; Vector2f gameOverScreenCenter = Vector2f { utils::GetViewport().x / 2 - gameOverScreenSize.x / 2, utils::GetViewport().y / 2 - gameOverScreenSize.y / 2 }; m_GameOverScreen = new GameOverScreen { "", gameOverScreenCenter, gameOverScreenSize, TextureManager::GetInstance() }; //m_Button = Button { "gui/close.png", closeButtonPos, closeButtonSize, TextureManager::GetInstance() }; }