78 lines
3.2 KiB
C++
78 lines
3.2 KiB
C++
#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() };
|
|
}
|
|
|