Update Screen system

Added FuelScreen (Working buttons)
Added SellScreen (Nothing working)
This commit is contained in:
Bram Verhulst
2024-04-04 00:07:45 +02:00
parent df9e2f0b64
commit eb4c7b4d76
20 changed files with 759 additions and 45 deletions

View File

@@ -10,6 +10,7 @@
#include "colors.h"
#include "utils.h"
#include "GridSystem/WorldTile.h"
#include "Gui/Screens/ScreenManager.h"
class GroundTileType;
@@ -17,7 +18,8 @@ WorldLevel::WorldLevel(Camera* camera, Rectf viewport): Level(camera),
m_gridManager(WorldGridManager()),
m_player(Player { Point2f { 0, 100 }, TextureManager::GetInstance() }),
m_mousePos { 0, 0 },
m_viewport(viewport) {
m_viewport(viewport),
m_screenManager(ScreenManager::GetInstance()) {
// The grid is 34 x 50 big, the top center is 0,0 in world coords
for (size_t x { 0 }; x < WORLD_WIDTH; ++x) {
for (size_t y { 0 }; y < WORLD_HEIGHT; ++y) {
@@ -44,8 +46,7 @@ WorldLevel::WorldLevel(Camera* camera, Rectf viewport): Level(camera),
for (size_t x { 0 }; x < WORLD_WIDTH; ++x) {
m_gridManager.GetTileAtIndex(x, 0)->SetTileType(Tiles::AIR);
}
Point2f screenCenterPos = Point2f { m_viewport.width / 2 - 492 / 2, m_viewport.height / 2 - 396 / 2 };
m_screen = Screen{ "gui/fuel/background.png", screenCenterPos, Point2f { 492, 396 }, TextureManager::GetInstance() };
}
WorldLevel::~WorldLevel() {
//delete m_pTextTexture;
@@ -81,6 +82,11 @@ void WorldLevel::Update(float elapsedSec) {
t->SetTileType(Tiles::AIR);
}
Screen* screen = m_screenManager->GetCurrentScreen();
if (screen != nullptr) {
screen->Update(elapsedSec);
}
//Point2f playerPos = m_player.GetPosition();
//Point2f newCameraPos = playerPos;
//m_pCamera->SetPosition(newCameraPos);
@@ -123,8 +129,10 @@ void WorldLevel::Draw() const {
m_pCamera->EndRendering();
utils::FillRect(utils::GetMousePos(), 10, 10);
m_screen.Draw();
const Screen* screen = m_screenManager->GetCurrentScreen();
if (screen != nullptr) {
screen->Draw();
}
}
void WorldLevel::MouseMove(const Point2f& mousePos) {
m_mousePos = mousePos;
@@ -144,8 +152,29 @@ void WorldLevel::ProcessImGui() {
}
ImGui::EndMenu();
}
if (ImGui::BeginMenu(std::to_string(utils::isKeyPressed(SDL_SCANCODE_S)).c_str())) {
if(ImGui::BeginMenu("Screens")) {
if(ImGui::MenuItem("Open Fuel screen")) {
ScreenManager::GetInstance()->OpenScreen(ScreenManager::Fuel);
}
if(ImGui::MenuItem("Open Sell screen")) {
ScreenManager::GetInstance()->OpenScreen(ScreenManager::SellScreen);
}
if(ImGui::MenuItem("Close Screen")) {
ScreenManager::GetInstance()->CloseScreen();
}
ImGui::EndMenu();
}
Point2f screenPos = utils::GetMousePos();
std::string mousePos = "Mouse Pos: (" + std::to_string(screenPos.x) + ", " + std::to_string(screenPos.y) + ")";
if(ImGui::BeginMenu(mousePos.c_str())) {
ImGui::EndMenu();
}
ImGui::EndMainMenuBar();
}