diff --git a/.idea/.idea.Motherload/.idea/workspace.xml b/.idea/.idea.Motherload/.idea/workspace.xml index b5ea7d8..14ac547 100644 --- a/.idea/.idea.Motherload/.idea/workspace.xml +++ b/.idea/.idea.Motherload/.idea/workspace.xml @@ -11,12 +11,22 @@ + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -39,12 +122,12 @@ + - @@ -83,7 +166,7 @@ "node.js.selected.package.eslint": "(autodetect)", "node.js.selected.package.tslint": "(autodetect)", "nodejs_package_manager_path": "npm", - "settings.editor.selected.configurable": "preferences.sourceCode.C++", + "settings.editor.selected.configurable": "preferences.pluginManager", "vue.rearranger.settings.migration": "true" }, "keyToStringList": { @@ -236,7 +319,12 @@ - + + + + + + - @@ -400,7 +496,8 @@ - diff --git a/Game/Game.cpp b/Game/Game.cpp index 5093645..07555fd 100644 --- a/Game/Game.cpp +++ b/Game/Game.cpp @@ -57,6 +57,9 @@ void Game::Draw() const { void Game::ProcessKeyDownEvent(const SDL_KeyboardEvent& e) { //std::cout << "KEYDOWN event: " << e.keysym.sym << std::endl; + if(e.keysym.sym == SDLK_BACKQUOTE) { + m_imGui = !m_imGui; + } } void Game::ProcessKeyUpEvent(const SDL_KeyboardEvent& e) { @@ -83,5 +86,7 @@ void Game::ProcessMouseWheelEvent(const SDL_MouseWheelEvent& e) { m_Camera.SetScale(newScale); } void Game::ProcessImGui() { - m_pCurrentLevel->ProcessImGui(); + if(m_imGui) { + m_pCurrentLevel->ProcessImGui(); + } } diff --git a/Game/Game.h b/Game/Game.h index ccd4cbb..336f40d 100644 --- a/Game/Game.h +++ b/Game/Game.h @@ -46,4 +46,7 @@ private: Vector2f m_MouseOffset {}; bool m_IsRightMouseDown {}; + + bool m_imGui{ true }; + }; diff --git a/Game/Game.vcxproj b/Game/Game.vcxproj index 4a62c04..7863e40 100644 --- a/Game/Game.vcxproj +++ b/Game/Game.vcxproj @@ -313,6 +313,7 @@ + MultiThreadedDebugDll @@ -485,6 +486,7 @@ + diff --git a/Game/Gui/GuiMeter.cpp b/Game/Gui/GuiMeter.cpp index f798ffb..ca11ed4 100644 --- a/Game/Gui/GuiMeter.cpp +++ b/Game/Gui/GuiMeter.cpp @@ -3,17 +3,25 @@ #include "TextureManager.h" #include "utils.h" -GuiMeter::GuiMeter(const std::string& filePath, Vector2f pos, Vector2f frameSize, int frameCount, TextureManager* manager): m_Position(pos), m_FrameCount(frameCount) { - m_Animation = new Animation(manager->GetTexture(filePath),frameCount, 0.0f, Rectf{0, 0, frameSize.x, frameSize.y}, false); - +GuiMeter::GuiMeter(const std::string& filePath, Vector2f pos, Vector2f frameSize, int frameCount, TextureManager* manager): GuiMeter( + filePath, pos, frameSize, frameSize, frameCount, manager) { +} +GuiMeter::GuiMeter(const std::string& filePath, Vector2f pos, Vector2f frameSize, Vector2f drawSize, int frameCount, TextureManager* manager): m_Position(pos), + m_DrawSize(drawSize), m_FrameCount(frameCount) { + m_Animation = new Animation(manager->GetTexture(filePath), frameCount, 0.0f, Rectf { 0, 0, frameSize.x, frameSize.y }, false); } GuiMeter::~GuiMeter() { delete m_Animation; } void GuiMeter::Draw() const { - m_Animation->Draw(m_Position); + m_Animation->Draw(m_Position, Rectf{m_Position, m_DrawSize}); + utils::DrawRect(Rectf { m_Position, m_DrawSize}); } void GuiMeter::Update(float elapsedSec) { + m_Value += 1; const int frame = static_cast(utils::map(m_Value, 0.0f, m_MaxValue, 0, (float)m_Animation->GetFrameCount())); m_Animation->SetFrame(frame); -} \ No newline at end of file +} +void GuiMeter::SetValue(float value) { + m_Value = value; +} diff --git a/Game/Gui/GuiMeter.h b/Game/Gui/GuiMeter.h index 0598228..60f40dc 100644 --- a/Game/Gui/GuiMeter.h +++ b/Game/Gui/GuiMeter.h @@ -5,23 +5,26 @@ class TextureManager; -class GuiMeter : public GuiElement +class GuiMeter final : public GuiElement { public: - GuiMeter() = default; GuiMeter(const std::string& filePath, Vector2f pos, Vector2f frameSize, int frameCount, TextureManager* manager); - virtual ~GuiMeter(); + GuiMeter(const std::string& filePath, Vector2f pos, Vector2f frameSize, Vector2f drawSize, int frameCount, TextureManager* manager); + GuiMeter(GuiMeter& other) = delete; + GuiMeter& operator=(const GuiMeter& other) = delete; + GuiMeter(GuiMeter&& other) = delete; + GuiMeter& operator=(GuiMeter&& other) = delete; + virtual ~GuiMeter() override; virtual void Draw() const override; virtual void Update(float elapsedSec) override; - void SetValue(float value) { - m_Value = value; - } + void SetValue(float value); private: - Animation* m_Animation{ nullptr }; + Animation* m_Animation{ nullptr }; Vector2f m_Position; + Vector2f m_DrawSize; float m_Value{ 0.0f }; const float m_MaxValue{ 100.0f }; diff --git a/Game/Gui/Screen.cpp b/Game/Gui/Screen.cpp index 05bad80..fa19abf 100644 --- a/Game/Gui/Screen.cpp +++ b/Game/Gui/Screen.cpp @@ -2,7 +2,11 @@ #include "Screen.h" Screen::Screen(const std::string& filePath, Vector2f pos, Vector2f size, TextureManager* manager): m_Position(pos), m_Size(size) { - m_Background = manager->GetTexture(filePath); + if(!filePath.empty()) { + m_Background = manager->GetTexture(filePath); + } else { + m_Background = nullptr; + } } Screen::~Screen() { for (GuiElement* b : m_Elements) { @@ -15,11 +19,13 @@ void Screen::Update(float elapsedSecs) { } } void Screen::Draw() const { - Rectf dest = Rectf(m_Position, m_Size); - Rectf src = Rectf(0, 0, m_Background->GetWidth(), m_Background->GetHeight()); - m_Background->Draw(dest, src, false); + if(m_Background != nullptr) { //Incase there is no background + Rectf dest = Rectf(m_Position, m_Size); + Rectf src = Rectf(0, 0, m_Background->GetWidth(), m_Background->GetHeight()); + m_Background->Draw(dest, src, false); + } - for (GuiElement* b : m_Elements) { - b->Draw(); + for (GuiElement* GuiElement : m_Elements) { + GuiElement->Draw(); } } diff --git a/Game/Gui/Screens/FuelScreen.cpp b/Game/Gui/Screens/FuelScreen.cpp index 4d2b00a..8a1727c 100644 --- a/Game/Gui/Screens/FuelScreen.cpp +++ b/Game/Gui/Screens/FuelScreen.cpp @@ -41,8 +41,7 @@ FuelScreen::FuelScreen(const std::string& filePath, Vector2f pos, Vector2f size, } -FuelScreen::~FuelScreen() { -} +FuelScreen::~FuelScreen() = default; void FuelScreen::Draw() const { Screen::Draw(); diff --git a/Game/Gui/Screens/MainScreen.cpp b/Game/Gui/Screens/MainScreen.cpp new file mode 100644 index 0000000..e6fa826 --- /dev/null +++ b/Game/Gui/Screens/MainScreen.cpp @@ -0,0 +1,16 @@ +#include "pch.h" +#include "MainScreen.h" +MainScreen::MainScreen(TextureManager* manager) : Screen("", Vector2f{0, 0}, Vector2f{900.f, 500.f}, manager) { + m_FuelMeter = new GuiMeter("gui/main/fuel/fuel.png", Vector2f{20, 500.f - 146 / 1.5 - 20}, Vector2f{336, 146},Vector2f{336 / 2, 146 / 1.5}, 21, manager); + this->AddElement(m_FuelMeter); +} +MainScreen::~MainScreen() = default; +void MainScreen::Draw() const { + Screen::Draw(); +} +void MainScreen::Update(float elapsedSecs) { + Screen::Update(elapsedSecs); +} +void MainScreen::SetFuelMeterValue(float value) const { + m_FuelMeter->SetValue(value); +} diff --git a/Game/Gui/Screens/MainScreen.h b/Game/Gui/Screens/MainScreen.h new file mode 100644 index 0000000..daff08f --- /dev/null +++ b/Game/Gui/Screens/MainScreen.h @@ -0,0 +1,18 @@ +#pragma once +#include "Gui/GuiMeter.h" +#include "Gui/Screen.h" + +class MainScreen: public Screen { +public: + explicit MainScreen(TextureManager* manager); + virtual ~MainScreen() override; + + virtual void Draw() const override; + virtual void Update(float elapsedSecs) override; + + void SetFuelMeterValue(float value) const; + +private: + GuiMeter* m_FuelMeter; + +}; diff --git a/Game/Levels/World/Building.h b/Game/Levels/World/Building.h index 28390b3..08855b0 100644 --- a/Game/Levels/World/Building.h +++ b/Game/Levels/World/Building.h @@ -6,10 +6,10 @@ class Building { public: Building(const std::string& filePath, const Vector2f& position, TextureManager* pTextureManager); - Building(const Building& other) = delete; - Building(Building&& other) = delete; - Building& operator=(const Building& other) = delete; - Building& operator=(Building&& other) = delete; + Building(const Building& other) = default; + Building(Building&& other) = default; + Building& operator=(const Building& other) = default; + Building& operator=(Building&& other) = default; ~Building(); diff --git a/Game/Levels/World/WorldLevel.cpp b/Game/Levels/World/WorldLevel.cpp index 8a62ad3..43bfc98 100644 --- a/Game/Levels/World/WorldLevel.cpp +++ b/Game/Levels/World/WorldLevel.cpp @@ -35,12 +35,13 @@ WorldLevel::WorldLevel(Camera* camera, Rectf viewport): Level(camera), m_GridManager.GetTileAtIndex(x, 0)->SetTileType(GroundTileTypeManager::GetInstance()->AIR); m_GridManager.GetTileAtIndex(x, 1)->SetTileType(GroundTileTypeManager::GetInstance()->GRASS); } - m_RefeulBuilding = new Building { "buildings/fuelStation.png", Vector2f { -700, -52 }, TextureManager::GetInstance() }; + m_Buildings.emplace_back(Building { "buildings/fuelStation.png", Vector2f { -700, -52 }, TextureManager::GetInstance() }); + m_GridManager.GetTileAtWorldPos(Vector2f { -750, -50 })->SetTileType(GroundTileTypeManager::GetInstance()->HARD_LEFT); m_GridManager.GetTileAtWorldPos(Vector2f { -700, -50 })->SetTileType(GroundTileTypeManager::GetInstance()->HARD_LEFT); m_GridManager.GetTileAtWorldPos(Vector2f { -650, -50 })->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE); m_GridManager.GetTileAtWorldPos(Vector2f { -600, -50 })->SetTileType(GroundTileTypeManager::GetInstance()->HARD_RIGHT); - m_MineralBuilding = new Building { "buildings/mineralStation.png", Vector2f { -350, -52 }, TextureManager::GetInstance() }; + m_Buildings.emplace_back(Building { "buildings/mineralStation.png", Vector2f { -350, -52 }, TextureManager::GetInstance() }); m_GridManager.GetTileAtWorldPos(Vector2f {-400, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_LEFT); m_GridManager.GetTileAtWorldPos(Vector2f {-350, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE); m_GridManager.GetTileAtWorldPos(Vector2f {-300, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE); @@ -48,7 +49,7 @@ WorldLevel::WorldLevel(Camera* camera, Rectf viewport): Level(camera), m_GridManager.GetTileAtWorldPos(Vector2f {-200, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE); m_GridManager.GetTileAtWorldPos(Vector2f {-150, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_RIGHT); - m_JunkBuilding = new Building { "buildings/junkStation.png", Vector2f { 250, -52 }, TextureManager::GetInstance() }; + m_Buildings.emplace_back(Building { "buildings/junkStation.png", Vector2f { 250, -52 }, TextureManager::GetInstance() }); m_GridManager.GetTileAtWorldPos(Vector2f {200, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_LEFT); m_GridManager.GetTileAtWorldPos(Vector2f {250, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE); m_GridManager.GetTileAtWorldPos(Vector2f {300, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE); @@ -56,24 +57,22 @@ WorldLevel::WorldLevel(Camera* camera, Rectf viewport): Level(camera), m_GridManager.GetTileAtWorldPos(Vector2f {400, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE); m_GridManager.GetTileAtWorldPos(Vector2f {450, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_RIGHT); - m_RepairBuilding = new Building { "buildings/repairStation.png", Vector2f { 700, -52 }, TextureManager::GetInstance() }; + m_Buildings.emplace_back(Building { "buildings/repairStation.png", Vector2f { 700, -52 }, TextureManager::GetInstance() }); m_GridManager.GetTileAtWorldPos(Vector2f {650, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_LEFT); m_GridManager.GetTileAtWorldPos(Vector2f {700, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE); m_GridManager.GetTileAtWorldPos(Vector2f {750, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_MIDDLE); m_GridManager.GetTileAtWorldPos(Vector2f {800, -50})->SetTileType(GroundTileTypeManager::GetInstance()->HARD_RIGHT); - // m_Meter = new GuiMeter("gui/main/fuel_guage.png", Vector2f{100, 100}, Vector2f{336, 146}, 100, TextureManager::GetInstance()); // Texture* test = new Texture("gui/main/fuel_guage.png"); + m_topCover = TextureManager::GetInstance()->GetTexture("topBackground.png"); + + m_MainScreen = new MainScreen(TextureManager::GetInstance()); + } WorldLevel::~WorldLevel() { - delete m_RefeulBuilding; - delete m_MineralBuilding; - delete m_JunkBuilding; - delete m_RepairBuilding; - + delete m_MainScreen; } void WorldLevel::Update(float elapsedSec) { m_Fps = 1 / elapsedSec; - // m_Meter->Update(elapsedSec); int mouseX, mouseY; SDL_GetMouseState(&mouseX, &mouseY); @@ -95,20 +94,9 @@ void WorldLevel::Update(float elapsedSec) { } } } - testCounter++; - std::vector ToDelete{}; - for(Particle* p : m_Particles) { - p->Update(elapsedSec); - if(p->IsDead()) { - ToDelete.emplace_back(p); - } - } - for (Particle* p : ToDelete) { - m_Particles.erase(std::remove(m_Particles.begin(), m_Particles.end(), p), m_Particles.end()); - delete p; - } - if(testCounter % 100 == 0) { - m_Particles.emplace_back(new Particle(Vector2f{100, 100}, Vector2f{float(utils::randRange(-200, 200)), 10},100, TextureManager::GetInstance()->GetTexture("particles/dirt_" + std::to_string(utils::randRange(1, 8)) + ".png"))); + + for (Building building : m_Buildings) { + building.Update(elapsedSec); } @@ -118,23 +106,6 @@ void WorldLevel::Update(float elapsedSec) { } } - //Get the diogonal tiles of the selected tile - // if (m_pSelectedTile != nullptr) { - // surroundingTiles surroundingTiles = m_gridManager.GetSurroundingTiles(m_pSelectedTile); - // TileDirection direction = TileDirection::TopMiddle; - // const std::array directions = { TileDirection::TopLeft, TileDirection::TopMiddle, TileDirection::TopRight, TileDirection::MiddleLeft, - // TileDirection::MiddleRight, TileDirection::BottomLeft, TileDirection::BottomMiddle, TileDirection::BottomRight }; - // - // for (int i = 0; i < 8; i++) { - // direction = directions[i]; - // if (surroundingTiles.GetTile(direction) != nullptr) { - // if (surroundingTiles.GetTile(direction)->GetTileType() != GroundTileTypeManager::GetInstance()->AIR) { - // //surroundingTiles.GetTile(direction)->m_Hightlight = true; - // } - // } - // } - // } - m_Player.Update(elapsedSec, *this); //Move the camera when the player gets to the edge @@ -150,8 +121,8 @@ void WorldLevel::Update(float elapsedSec) { if (playerPos.y < newCameraPos.y + 50) { newCameraPos.y = playerPos.y - 50; } - if (playerPos.y > newCameraPos.y + m_Viewport.height - 50) { - newCameraPos.y = playerPos.y - m_Viewport.height + 50; + if (playerPos.y > newCameraPos.y + m_Viewport.height - 100) { + newCameraPos.y = playerPos.y - m_Viewport.height + 100; } m_pCamera->SetPosition(newCameraPos); } @@ -161,6 +132,8 @@ void WorldLevel::Update(float elapsedSec) { screen->Update(elapsedSec); } + m_MainScreen->Update(elapsedSec); + //Vector2f playerPos = m_player.GetPosition(); //Vector2f newCameraPos = playerPos; //m_pCamera->SetPosition(newCameraPos); @@ -169,7 +142,10 @@ void WorldLevel::Update(float elapsedSec) { //m_pCamera->SetPosition(Vector2f{playerPos.x - m_viewport.width / 2, playerPos.y - m_viewport.height / 2}); } void WorldLevel::Draw() const { + m_pCamera->BeginRendering(); + // m_topCover->Draw(Vector2f{-850,-70} ); + m_topCover->Draw(Rectf{-850, -70, 850, -70 + 32}, Rectf{0, 0, WORLD_WIDTH * 50, 32}); for (Collision::CollisionRect rect : m_Rects) { utils::DrawRect(rect.pos, rect.size.x, rect.size.y); @@ -191,16 +167,12 @@ void WorldLevel::Draw() const { m_pSelectedTile->Draw(); } - m_RefeulBuilding->Draw(); - m_MineralBuilding->Draw(); - m_JunkBuilding->Draw(); - m_RepairBuilding->Draw(); - m_Player.Draw(); - - for(Particle* p : m_Particles) { - p->Draw(); + for(Building building : m_Buildings) { + building.Draw(); } + m_Player.Draw(); + utils::SetColor(Colors::GREEN); utils::DrawArrow(Vector2f{0, 0}, m_MousePos); @@ -214,8 +186,9 @@ void WorldLevel::Draw() const { if (screen != nullptr) { screen->Draw(); } + m_MainScreen->Draw(); + - // m_Meter->Draw(); } void WorldLevel::MouseMove(const Vector2f& mousePos) { m_MousePos = mousePos; diff --git a/Game/Levels/World/WorldLevel.h b/Game/Levels/World/WorldLevel.h index e9e7eb5..b5f8d2d 100644 --- a/Game/Levels/World/WorldLevel.h +++ b/Game/Levels/World/WorldLevel.h @@ -7,6 +7,7 @@ #include "Gui/Screens/ScreenManager.h" #include "Camera.h" #include "Gui/GuiMeter.h" +#include "Gui/Screens/MainScreen.h" #include "Particle/Particle.h" class WorldLevel : public Level @@ -28,8 +29,6 @@ public: std::vector m_Rects; - std::vector m_Particles; - int testCounter{ 0 }; private: double m_Fps{ 0.0f }; @@ -44,18 +43,17 @@ private: WorldTile* m_pSelectedTile { nullptr }; - Building* m_RefeulBuilding; - Building* m_MineralBuilding; - Building* m_JunkBuilding; - Building* m_RepairBuilding; + std::vector m_Buildings{}; - GuiMeter* m_Meter{ nullptr }; + MainScreen* m_MainScreen{}; + + Texture* m_topCover{ nullptr }; // ImGui Vars bool m_ShowTextureManagerWindow { false }; bool m_ShowCameraWindow { false }; bool m_ShowPlayerInfo { true }; - bool m_FollowPlayer { false }; + bool m_FollowPlayer { true }; }; diff --git a/Game/Player.cpp b/Game/Player.cpp index 2953179..5ab45e1 100644 --- a/Game/Player.cpp +++ b/Game/Player.cpp @@ -29,7 +29,7 @@ Player::Player(const Vector2f& Position, TextureManager* manager) : m_Position(P m_digAnimation = new Animation( manager->GetTexture("animations/player/player_dig.png"), 7, 0.05f, Rectf { 0, 0, 70, 70 }, true); - + m_currentAnimation = m_walkAnimation; } Player::Player(Player&& other) { @@ -71,8 +71,9 @@ void Player::Draw() const { } glPopMatrix(); - utils::DrawEllipse(m_DigDestination, 5, 5); - utils::DrawEllipse(m_DigStart, 5, 5); + for (Particle* particle : m_DigParticles) { + particle->Draw(); + } } void Player::ProcessImGui() { ImGui::Begin("Collision Info", nullptr, ImGuiWindowFlags_AlwaysAutoResize); @@ -166,17 +167,24 @@ void Player::Update(float elapsedTime, WorldLevel& level) { m_BobTimer = 0.0f; } - - + std::vector particlesToDelete {}; + for (Particle* particle : m_DigParticles) { + particle->Update(elapsedTime); + if (particle->IsDead()) { + particlesToDelete.push_back(particle); + } + } + for (Particle* particle : particlesToDelete) { + m_DigParticles.erase(std::remove(m_DigParticles.begin(), m_DigParticles.end(), particle), m_DigParticles.end()); + delete particle; + } //check for keys if (m_State != PlayerState::Digging) { if (utils::isKeyDown(SDL_SCANCODE_W)) { - // if (m_Grounded) { m_State = PlayerState::Flying; m_Vel.y = m_Speed; m_Grounded = false; - // } } if (utils::isKeyPressed(SDL_SCANCODE_S)) { if (m_Grounded) { @@ -259,16 +267,15 @@ void Player::Update(float elapsedTime, WorldLevel& level) { m_currentAnimation->Update(elapsedTime); - + if (m_currentAnimation->IsDone() && m_IsTurning) { m_currentAnimation = m_walkAnimation; m_IsTurning = false; } - - - if(m_currentAnimation == m_digStartAnimation) { - + + if (m_currentAnimation == m_digStartAnimation) { + } #pragma region Collision @@ -362,12 +369,12 @@ void Player::Update(float elapsedTime, WorldLevel& level) { // m_walkAnimation->SetPlaying(false); //Diganimation m_currentAnimation->Update(elapsedTime); - if(m_currentAnimation->IsDone() && m_State == PlayerState::Digging && !m_IsDiggingPrimed) { + if (m_currentAnimation->IsDone() && m_State == PlayerState::Digging && !m_IsDiggingPrimed) { m_IsDiggingPrimed = true; m_currentAnimation = m_digAnimation; } - if(m_IsDiggingPrimed) { + if (m_IsDiggingPrimed) { if (!m_Digging) { //TODO: fix for setting the start position m_Digging = true; m_DigStart = m_Position; @@ -377,7 +384,12 @@ void Player::Update(float elapsedTime, WorldLevel& level) { m_DigProgress += elapsedTime; //lerp to the destination float progress = utils::map(m_DigProgress, 0.0f, m_DigTime, 0.0f, 1.0f); + int particleProgress = (int)utils::map(m_DigProgress, 0.0f, m_DigTime, 0.0f, 100.0f); std::cout << progress << '\n'; + if (particleProgress % 25 == 0) { + m_DigParticles.push_back(new Particle(m_Position, Vector2f { (float)utils::randRange(-200, 200), (float)utils::randRange(-100, -300) }, 5.f, + TextureManager::GetInstance()->GetTexture("particles/dirt_" + std::to_string(utils::randRange(1, 8)) + ".png"))); + } m_Position = utils::lerp(m_DigStart, m_DigDestination, progress); if (progress >= 0.5f && !m_HasDeletedTile) { m_DigTile->SetTileType(GroundTileTypeManager::GetInstance()->AIR); diff --git a/Game/Player.h b/Game/Player.h index 60a6a71..2b99a46 100644 --- a/Game/Player.h +++ b/Game/Player.h @@ -2,6 +2,7 @@ #include "Collision.h" #include "TextureManager.h" #include "Animations/Animation.h" +#include "Particle/Particle.h" class WorldLevel; @@ -95,6 +96,8 @@ private: bool m_IsDiggingPrimed{ false }; + std::vector m_DigParticles{}; + const float m_DigTime{ 0.5f }; bool m_Grounded { false }; diff --git a/Game/main.cpp b/Game/main.cpp index f0089d2..984cb0d 100644 --- a/Game/main.cpp +++ b/Game/main.cpp @@ -12,7 +12,7 @@ int SDL_main(int argv, char** args) { StartHeapControl(); - auto pGame { new Game { Window { "Motherload - Verhulst, Bram - 1DAEGD16E", Viewport.x, Viewport.y, false} } }; + auto pGame { new Game { Window { "Motherload - Verhulst, Bram - 1DAEGD16E", Viewport.x, Viewport.y, true} } }; pGame->Run(); delete pGame; diff --git a/Resources/gui/main/fuel/0.png b/Resources/gui/main/fuel/0.png new file mode 100644 index 0000000..01fac8b Binary files /dev/null and b/Resources/gui/main/fuel/0.png differ diff --git a/Resources/gui/main/fuel/10.png b/Resources/gui/main/fuel/10.png new file mode 100644 index 0000000..a370ff5 Binary files /dev/null and b/Resources/gui/main/fuel/10.png differ diff --git a/Resources/gui/main/fuel/100.png b/Resources/gui/main/fuel/100.png new file mode 100644 index 0000000..f518537 Binary files /dev/null and b/Resources/gui/main/fuel/100.png differ diff --git a/Resources/gui/main/fuel/15.png b/Resources/gui/main/fuel/15.png new file mode 100644 index 0000000..e922284 Binary files /dev/null and b/Resources/gui/main/fuel/15.png differ diff --git a/Resources/gui/main/fuel/20.png b/Resources/gui/main/fuel/20.png new file mode 100644 index 0000000..747a5e8 Binary files /dev/null and b/Resources/gui/main/fuel/20.png differ diff --git a/Resources/gui/main/fuel/25.png b/Resources/gui/main/fuel/25.png new file mode 100644 index 0000000..03160fb Binary files /dev/null and b/Resources/gui/main/fuel/25.png differ diff --git a/Resources/gui/main/fuel/30.png b/Resources/gui/main/fuel/30.png new file mode 100644 index 0000000..43b7fba Binary files /dev/null and b/Resources/gui/main/fuel/30.png differ diff --git a/Resources/gui/main/fuel/35.png b/Resources/gui/main/fuel/35.png new file mode 100644 index 0000000..3065bdc Binary files /dev/null and b/Resources/gui/main/fuel/35.png differ diff --git a/Resources/gui/main/fuel/40.png b/Resources/gui/main/fuel/40.png new file mode 100644 index 0000000..1246553 Binary files /dev/null and b/Resources/gui/main/fuel/40.png differ diff --git a/Resources/gui/main/fuel/45.png b/Resources/gui/main/fuel/45.png new file mode 100644 index 0000000..1bdd52c Binary files /dev/null and b/Resources/gui/main/fuel/45.png differ diff --git a/Resources/gui/main/fuel/5.png b/Resources/gui/main/fuel/5.png new file mode 100644 index 0000000..8d2ed2b Binary files /dev/null and b/Resources/gui/main/fuel/5.png differ diff --git a/Resources/gui/main/fuel/50.png b/Resources/gui/main/fuel/50.png new file mode 100644 index 0000000..f36b6bf Binary files /dev/null and b/Resources/gui/main/fuel/50.png differ diff --git a/Resources/gui/main/fuel/55.png b/Resources/gui/main/fuel/55.png new file mode 100644 index 0000000..02a0e9b Binary files /dev/null and b/Resources/gui/main/fuel/55.png differ diff --git a/Resources/gui/main/fuel/60.png b/Resources/gui/main/fuel/60.png new file mode 100644 index 0000000..a69e73c Binary files /dev/null and b/Resources/gui/main/fuel/60.png differ diff --git a/Resources/gui/main/fuel/65.png b/Resources/gui/main/fuel/65.png new file mode 100644 index 0000000..4d6509d Binary files /dev/null and b/Resources/gui/main/fuel/65.png differ diff --git a/Resources/gui/main/fuel/70.png b/Resources/gui/main/fuel/70.png new file mode 100644 index 0000000..bfa22ce Binary files /dev/null and b/Resources/gui/main/fuel/70.png differ diff --git a/Resources/gui/main/fuel/75.png b/Resources/gui/main/fuel/75.png new file mode 100644 index 0000000..5d24283 Binary files /dev/null and b/Resources/gui/main/fuel/75.png differ diff --git a/Resources/gui/main/fuel/80.png b/Resources/gui/main/fuel/80.png new file mode 100644 index 0000000..311824f Binary files /dev/null and b/Resources/gui/main/fuel/80.png differ diff --git a/Resources/gui/main/fuel/85.png b/Resources/gui/main/fuel/85.png new file mode 100644 index 0000000..a9fe701 Binary files /dev/null and b/Resources/gui/main/fuel/85.png differ diff --git a/Resources/gui/main/fuel/90.png b/Resources/gui/main/fuel/90.png new file mode 100644 index 0000000..180818d Binary files /dev/null and b/Resources/gui/main/fuel/90.png differ diff --git a/Resources/gui/main/fuel/95.png b/Resources/gui/main/fuel/95.png new file mode 100644 index 0000000..58bd1d1 Binary files /dev/null and b/Resources/gui/main/fuel/95.png differ diff --git a/Resources/gui/main/fuel/fuel.png b/Resources/gui/main/fuel/fuel.png new file mode 100644 index 0000000..3f7ebe1 Binary files /dev/null and b/Resources/gui/main/fuel/fuel.png differ diff --git a/Resources/topBackground.png b/Resources/topBackground.png new file mode 100644 index 0000000..0268fad Binary files /dev/null and b/Resources/topBackground.png differ