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 @@
+
+
+
+
+
+
+
+
+
+
-
-
+
+
@@ -31,6 +41,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -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 @@
-
+
+
+
+
+
+
@@ -374,7 +462,15 @@
1715208368790
-
+
+
+ 1715255455692
+
+
+
+ 1715255455692
+
+
@@ -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