From 3c83e566dd3304a5bccb222937d3947c570d2ea9 Mon Sep 17 00:00:00 2001 From: Bram Verhulst Date: Thu, 16 May 2024 12:44:53 +0200 Subject: [PATCH] Add sun / moon, started on score / GameManager --- .idea/.idea.Motherload/.idea/workspace.xml | 71 ++++++++++++--------- Game/Game.vcxproj | 2 + Game/GameManager.cpp | 48 ++++++++++++++ Game/GameManager.h | 34 ++++++++-- Game/Gui/Screens/MainScreen.cpp | 7 ++ Game/Gui/Screens/MainScreen.h | 2 + Game/Levels/World/OrbitingObject.cpp | 14 ++++ Game/Levels/World/OrbitingObject.h | 21 ++++++ Game/Levels/World/WorldLevel.cpp | 8 +++ Game/Levels/World/WorldLevel.h | 4 ++ Resources/moon.png | Bin 0 -> 8950 bytes Resources/sun.png | Bin 0 -> 18230 bytes 12 files changed, 176 insertions(+), 35 deletions(-) create mode 100644 Game/Levels/World/OrbitingObject.cpp create mode 100644 Game/Levels/World/OrbitingObject.h create mode 100644 Resources/moon.png create mode 100644 Resources/sun.png diff --git a/.idea/.idea.Motherload/.idea/workspace.xml b/.idea/.idea.Motherload/.idea/workspace.xml index 562475c..d241815 100644 --- a/.idea/.idea.Motherload/.idea/workspace.xml +++ b/.idea/.idea.Motherload/.idea/workspace.xml @@ -11,21 +11,16 @@ - - + + - - - - - + + - - + + + + @@ -52,6 +51,7 @@ + @@ -78,28 +78,28 @@ - { + "keyToString": { + "C++ Project.Game.executor": "Debug", + "RunOnceActivity.OpenProjectViewOnStart": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "ignore.virus.scanning.warn.message": "true", + "node.js.detected.package.eslint": "true", + "node.js.detected.package.tslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "node.js.selected.package.tslint": "(autodetect)", + "nodejs_package_manager_path": "npm", + "settings.editor.selected.configurable": "preferences.pluginManager", + "vue.rearranger.settings.migration": "true" }, - "keyToStringList": { - "rider.external.source.directories": [ - "C:\\Users\\Bram\\AppData\\Roaming\\JetBrains\\Rider2024.1\\resharper-host\\DecompilerCache", - "C:\\Users\\Bram\\AppData\\Roaming\\JetBrains\\Rider2024.1\\resharper-host\\SourcesCache", - "C:\\Users\\Bram\\AppData\\Local\\Symbols\\src" + "keyToStringList": { + "rider.external.source.directories": [ + "C:\\Users\\Bram\\AppData\\Roaming\\JetBrains\\Rider2024.1\\resharper-host\\DecompilerCache", + "C:\\Users\\Bram\\AppData\\Roaming\\JetBrains\\Rider2024.1\\resharper-host\\SourcesCache", + "C:\\Users\\Bram\\AppData\\Local\\Symbols\\src" ] } -}]]> +} @@ -250,7 +250,7 @@ - + - @@ -423,7 +431,8 @@ - diff --git a/Game/Game.vcxproj b/Game/Game.vcxproj index 035089c..4724b62 100644 --- a/Game/Game.vcxproj +++ b/Game/Game.vcxproj @@ -539,6 +539,7 @@ + MultiThreadedDebugDll EnableFastChecks @@ -639,6 +640,7 @@ + diff --git a/Game/GameManager.cpp b/Game/GameManager.cpp index a41cc3b..276cd67 100644 --- a/Game/GameManager.cpp +++ b/Game/GameManager.cpp @@ -1,2 +1,50 @@ #include "pch.h" #include "GameManager.h" + +GameManager* GameManager::m_pInstance = nullptr; + +GameManager& GameManager::GetInstance() { + if (m_pInstance == nullptr) { + m_pInstance = new GameManager(); + } + return *m_pInstance; +} +void GameManager::SetMainScreen(MainScreen* pMainScreen) { + m_pMainScreen = pMainScreen; + //TODO: not the best but ¯\_(ツ)_/¯ +} +void GameManager::SetFuel(int fuel) { + m_Fuel = fuel; +} +int GameManager::GetFuel() const { + return m_Fuel; +} +void GameManager::DecreaseFuel(int fuel) { + m_Fuel -= fuel; +} +void GameManager::AddFuel(int fuel) { + m_Fuel += fuel; +} +void GameManager::SetHullIntegrity(int hullIntegrity) { + m_HullIntegrity = hullIntegrity; +} +int GameManager::GetHullIntegrity() const { + return m_HullIntegrity; +} +void GameManager::DamageHull(int damage) { + m_HullIntegrity -= damage; +} +void GameManager::SetScore(int score) { + m_Score = score; +} +int GameManager::GetScore() const { + return m_Score; +} +void GameManager::IncreaseScore(int score) { + m_Score += score; +} +void GameManager::Update(float elapsedSecs) { + m_pMainScreen->SetFuelMeterValue(m_Fuel); + m_pMainScreen->SetHullMeterValue(m_HullIntegrity); + m_pMainScreen->SetScore(std::to_string(m_Score)); +} diff --git a/Game/GameManager.h b/Game/GameManager.h index 0a34524..c67fedb 100644 --- a/Game/GameManager.h +++ b/Game/GameManager.h @@ -1,12 +1,38 @@ #pragma once #include "Player.h" +#include "Gui/Screens/MainScreen.h" -class GameManager -{ +class GameManager { public: - float balance{ 0.0f }; - float fuel{ 0.0f }; + static GameManager& GetInstance(); + static GameManager* m_pInstance; + + + void SetMainScreen(MainScreen* pMainScreen); + + void SetFuel(int fuel); + int GetFuel() const; + void DecreaseFuel(int fuel); + void AddFuel(int fuel); + + void SetHullIntegrity(int hullIntegrity); + int GetHullIntegrity() const; + void DamageHull(int damage); + + void SetScore(int score); + int GetScore() const; + void IncreaseScore(int score); + + void Update(float elapsedSecs); private: GameManager() = default; + + + float m_Balance{ 0.0f }; + int m_HullIntegrity{ 100 }; + int m_Fuel{ 100 }; + int m_Score{ 0 }; + MainScreen* m_pMainScreen{ nullptr }; }; + diff --git a/Game/Gui/Screens/MainScreen.cpp b/Game/Gui/Screens/MainScreen.cpp index 9e84d42..166fab5 100644 --- a/Game/Gui/Screens/MainScreen.cpp +++ b/Game/Gui/Screens/MainScreen.cpp @@ -18,6 +18,10 @@ MainScreen::MainScreen(TextureManager* manager) : Screen("", Vector2f{0, 0}, Vec Vector2f DepthMeterPosition{10, ScreenSize.y - 120}; m_DepthText = new GuiText(DepthMeterPosition, "Depth: 20", "fonts/Arial.ttf", 20, Colors::YELLOW); this->AddElement(m_DepthText); + + Vector2f ScoreMeterPosition{10, ScreenSize.y - 150}; + m_ScoreText = new GuiText(ScoreMeterPosition, "Score: 0", "fonts/Arial.ttf", 20, Colors::YELLOW); + this->AddElement(m_ScoreText); } MainScreen::~MainScreen() = default; void MainScreen::Draw() const { @@ -35,4 +39,7 @@ void MainScreen::SetHullMeterValue(float value) const { void MainScreen::SetDepth(const std::string& text) const { m_DepthText->ChangeText(text); } +void MainScreen::SetScore(const std::string& text) const { + m_ScoreText->ChangeText(text); +} diff --git a/Game/Gui/Screens/MainScreen.h b/Game/Gui/Screens/MainScreen.h index a9aa2fc..9141fa8 100644 --- a/Game/Gui/Screens/MainScreen.h +++ b/Game/Gui/Screens/MainScreen.h @@ -15,11 +15,13 @@ public: void SetHullMeterValue(float value) const; void SetDepth(const std::string& text) const; + void SetScore(const std::string& text) const; private: GuiMeter* m_FuelMeter; GuiMeter* m_HullMeter; GuiText* m_DepthText; + GuiText* m_ScoreText; }; diff --git a/Game/Levels/World/OrbitingObject.cpp b/Game/Levels/World/OrbitingObject.cpp new file mode 100644 index 0000000..bc9d364 --- /dev/null +++ b/Game/Levels/World/OrbitingObject.cpp @@ -0,0 +1,14 @@ +#include "pch.h" +#include "OrbitingObject.h" + +#include +OrbitingObject::OrbitingObject(const Vector2f& orbit, float distance, float speed, Texture* texture, float offset): m_Texture(texture), m_Orbit(orbit), m_Speed(speed), m_Distance(distance), m_currentCycle(offset) { +} +void OrbitingObject::Update(float elapsedSecs) { + m_Position = Vector2f(m_Orbit.x + cosf(m_currentCycle) * m_Distance, m_Orbit.y + sinf(m_currentCycle) * m_Distance); + m_currentCycle += m_Speed * elapsedSecs; +} +void OrbitingObject::Draw() const { + m_Texture->Draw(m_Position); + +} diff --git a/Game/Levels/World/OrbitingObject.h b/Game/Levels/World/OrbitingObject.h new file mode 100644 index 0000000..6d11ff1 --- /dev/null +++ b/Game/Levels/World/OrbitingObject.h @@ -0,0 +1,21 @@ +#pragma once +#include "Texture.h" + +class OrbitingObject { +public: + OrbitingObject(const Vector2f& orbit, float distance, float speed, Texture* texture, float offset = 0); + + void Update(float elapsedSecs); + void Draw() const; + + +private: + Texture* m_Texture; + Vector2f m_Position; + Vector2f m_Orbit; + float m_Distance; + float m_Speed; + + float m_currentCycle{ 0 }; + +}; diff --git a/Game/Levels/World/WorldLevel.cpp b/Game/Levels/World/WorldLevel.cpp index 3051072..fa169c1 100644 --- a/Game/Levels/World/WorldLevel.cpp +++ b/Game/Levels/World/WorldLevel.cpp @@ -67,6 +67,8 @@ WorldLevel::WorldLevel(Camera* camera, Rectf viewport): Level(camera), m_MainScreen = new MainScreen(TextureManager::GetInstance()); + m_Sun = new OrbitingObject(Vector2f{0, -1000}, 1200, 0.5f, TextureManager::GetInstance()->GetTexture("sun.png")); + m_Moon = new OrbitingObject(Vector2f{0, -1000}, 1200, 0.5f, TextureManager::GetInstance()->GetTexture("moon.png"), M_PI); } WorldLevel::~WorldLevel() { @@ -86,6 +88,9 @@ void WorldLevel::Update(float elapsedSec) { // m_gridManager.GetTileAtIndex(x, y)->m_Hightlight = false; // } // } + + m_Sun->Update(elapsedSec); + m_Moon->Update(elapsedSec); for (int x { 0 }; x < WORLD_WIDTH; ++x) { for (int y { 0 }; y < WORLD_HEIGHT; ++y) { @@ -179,6 +184,9 @@ void WorldLevel::Draw() const { utils::SetColor(Colors::GREEN); utils::DrawArrow(Vector2f{0, 0}, m_MousePos); + m_Sun->Draw(); + m_Moon->Draw(); + m_pCamera->EndRendering(); utils::FillRect(utils::GetMousePos(), 10, 10); diff --git a/Game/Levels/World/WorldLevel.h b/Game/Levels/World/WorldLevel.h index 4c1ba9b..3b2eb55 100644 --- a/Game/Levels/World/WorldLevel.h +++ b/Game/Levels/World/WorldLevel.h @@ -6,6 +6,7 @@ #include "GridSystem/WorldGridManager.h" #include "Gui/Screens/ScreenManager.h" #include "Camera.h" +#include "OrbitingObject.h" #include "Text.h" #include "Gui/GuiMeter.h" #include "Gui/Screens/MainScreen.h" @@ -49,6 +50,9 @@ private: MainScreen* m_MainScreen{}; + OrbitingObject* m_Sun{ nullptr }; + OrbitingObject* m_Moon{ nullptr }; + Texture* m_topCover{ nullptr }; // ImGui Vars diff --git a/Resources/moon.png b/Resources/moon.png new file mode 100644 index 0000000000000000000000000000000000000000..50b814e355ae64ac1e0882a6675d14983189832c GIT binary patch literal 8950 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 Q9{>OV07*qoM6N<$g8#j81poj5 literal 0 HcmV?d00001 diff --git a/Resources/sun.png b/Resources/sun.png new file mode 100644 index 0000000000000000000000000000000000000000..5a939036069fc0bcfac07807ec98b0fdba915e8d GIT binary patch literal 18230 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 literal 0 HcmV?d00001