diff --git a/.idea/.idea.Motherload/.idea/workspace.xml b/.idea/.idea.Motherload/.idea/workspace.xml
index 38ce9ba..e87ac59 100644
--- a/.idea/.idea.Motherload/.idea/workspace.xml
+++ b/.idea/.idea.Motherload/.idea/workspace.xml
@@ -11,24 +11,33 @@
+
+
-
-
+
+
+
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
@@ -43,14 +52,17 @@
-
-
+
+
+
+
+
@@ -70,7 +82,7 @@
+
+
+
diff --git a/Engine/Text.cpp b/Engine/Text.cpp
index 454d370..8fefdf4 100644
--- a/Engine/Text.cpp
+++ b/Engine/Text.cpp
@@ -10,6 +10,7 @@ Text::Text(const std::string& text, const std::string& fontPath, int size, const
}
Text::~Text() {
if(m_IsCreatedOk && m_Texture->IsCreationOk()) {
+ delete m_Texture;
}
}
void Text::Draw(const Vector2f& pos) const {
diff --git a/Game/Animations/Animation.cpp b/Game/Animations/Animation.cpp
index f5dd3e0..084e7fa 100644
--- a/Game/Animations/Animation.cpp
+++ b/Game/Animations/Animation.cpp
@@ -4,8 +4,6 @@
#include "utils.h"
Animation::Animation(Texture* pTexture, int frames, float frameDuration, Rectf srcRect): m_pTexture(pTexture), m_SrcRect(srcRect), m_Frames(frames) {
-}
-Animation::~Animation() {
}
void Animation::Update(float elapsedSec) {
if (m_isPlaying) {
@@ -25,7 +23,7 @@ void Animation::Draw(const Vector2f& pos) const {
void Animation::Draw(const Vector2f& pos, const Rectf& dst) const {
Rectf src = m_SrcRect;
- src.left += m_CurrentFrame * src.width;
+ src.left += static_cast(m_CurrentFrame) * src.width;
m_pTexture->Draw(dst, src, m_isFlipped);
}
diff --git a/Game/Animations/Animation.h b/Game/Animations/Animation.h
index 3fce61c..62ed188 100644
--- a/Game/Animations/Animation.h
+++ b/Game/Animations/Animation.h
@@ -5,7 +5,7 @@ class Animation
{
public:
Animation(Texture* pTexture, int frames, float frameDuration, Rectf srcRect);
- ~Animation();
+ ~Animation() = default;
void Update(float elapsedSec);
void Draw(const Vector2f& pos) const;
diff --git a/Game/Game.cpp b/Game/Game.cpp
index b741b47..ffd07be 100644
--- a/Game/Game.cpp
+++ b/Game/Game.cpp
@@ -2,6 +2,7 @@
#include "Game.h"
#include
+#include
#include "colors.h"
#include "utils.h"
@@ -26,6 +27,10 @@ void Game::Initialize() {
}
void Game::Cleanup() {
+
+ //TODO: ask how 2 delete the TextureManager
+ ScreenManager::DestroyInstance();
+ TextureManager::DestroyInstance();
}
void Game::Update(float elapsedSec) {
@@ -93,7 +98,11 @@ void Game::ProcessMouseWheelEvent(const SDL_MouseWheelEvent& e) {
scroll = Vector2f { 0, -1 };
}
//camera zoom
- m_Camera.SetScale((m_Camera.GetScale() - e.preciseY * 0.1f));
+ float newScale = m_Camera.GetScale() - e.preciseY * 0.1f;
+ if(newScale < 0.0f) {
+ newScale = 0.0f;
+ }
+ m_Camera.SetScale(newScale);
}
void Game::ProcessImGui() {
m_pCurrentLevel->ProcessImGui();
diff --git a/Game/Game.vcxproj b/Game/Game.vcxproj
index 309252e..fa9d262 100644
--- a/Game/Game.vcxproj
+++ b/Game/Game.vcxproj
@@ -111,6 +111,7 @@
true
Use
pch.h
+ true
Console
@@ -130,6 +131,9 @@
xcopy "$(SolutionDir)Resources\*.*" "$(TargetDir)" /y /d /s
+
+ true
+
@@ -225,6 +229,7 @@
_DEBUG;_CONSOLE;_UNICODE;UNICODE;
true
true
+ true
MultiThreadedDebugDll
@@ -299,7 +304,9 @@
_DEBUG;_CONSOLE;_UNICODE;UNICODE;
true
true
+ true
+
@@ -377,6 +384,7 @@
_DEBUG;_CONSOLE;_UNICODE;UNICODE;
true
true
+ true
@@ -453,6 +461,7 @@
_DEBUG;_CONSOLE;_UNICODE;UNICODE;
true
true
+ true
@@ -466,6 +475,7 @@
+
diff --git a/Game/Game.vcxproj.filters b/Game/Game.vcxproj.filters
index abf3bfd..e40b086 100644
--- a/Game/Game.vcxproj.filters
+++ b/Game/Game.vcxproj.filters
@@ -27,9 +27,6 @@
Source Files
-
- Source Files
-
Source Files
@@ -63,6 +60,15 @@
Source Files
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
@@ -74,9 +80,6 @@
Header Files
-
- Header Files
-
Header Files
@@ -110,5 +113,14 @@
Header Files
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
\ No newline at end of file
diff --git a/Game/GridSystem/WorldGridManager.cpp b/Game/GridSystem/WorldGridManager.cpp
index 4b03325..067c3c9 100644
--- a/Game/GridSystem/WorldGridManager.cpp
+++ b/Game/GridSystem/WorldGridManager.cpp
@@ -1,6 +1,7 @@
#include "pch.h"
#include "WorldGridManager.h"
+#include
#include
#include "WorldTile.h"
@@ -14,8 +15,29 @@ WorldGridManager::WorldGridManager() {
}
WorldGridManager::~WorldGridManager() {
+ for (size_t x { 0 }; x < WORLD_WIDTH; ++x) {
+ for (size_t y { 0 }; y < WORLD_HEIGHT; ++y) {
+ delete m_worldTiles[x][y];
+ }
+ }
+ std::cout << "Deleting static" << std::endl;
+ delete Tiles::AIR;
+ delete Tiles::DIRT;
+
+ delete Tiles::Hazards::LAVA;
+ delete Tiles::Hazards::STONE;
+
+ delete Tiles::Ores::BRONZE;
+ delete Tiles::Ores::GOLD;
+ delete Tiles::Ores::IRON;
+
+ delete Tiles::Special::GRASS;
+ delete Tiles::Special::HARD_LEFT;
+ delete Tiles::Special::HARD_MIDDLE;
+ delete Tiles::Special::HARD_RIGHT;
}
+
surroundingTiles WorldGridManager::GetSurroundingTiles(const WorldTile* world_tile) {
surroundingTiles tiles;
Vector2f pos = world_tile->GetPosition();
diff --git a/Game/GridSystem/WorldGridManager.h b/Game/GridSystem/WorldGridManager.h
index 898d448..40e2728 100644
--- a/Game/GridSystem/WorldGridManager.h
+++ b/Game/GridSystem/WorldGridManager.h
@@ -72,6 +72,4 @@ public:
private:
std::array, WORLD_HEIGHT> m_worldTiles;
-
-
};
diff --git a/Game/GridSystem/WorldTile.cpp b/Game/GridSystem/WorldTile.cpp
index 7abba1b..0b74c6c 100644
--- a/Game/GridSystem/WorldTile.cpp
+++ b/Game/GridSystem/WorldTile.cpp
@@ -33,6 +33,10 @@ GroundTileType* getRandomGroundTile() {
// This should never be reached if weights sum to 1.0
return Tiles::AIR; // Default value
}
+// void InitializeGroundTiles() {
+//
+// Tiles::AIR = new GroundTileType("", GroundTileTypes::Air);
+// }
WorldTile::WorldTile(const Vector2f& position, GroundTileType* groundTileType, TextureManager* pTextureManager, WorldGridManager* pGridManager) : m_Position { position }, m_GroundTileType { groundTileType }, m_pGridManager { pGridManager } {
// const std::string dirtPath = + "tiles/dirt/dirt" + std::to_string(utils::randRange(1, 5)) + ".png";
// m_pTexture = new Texture(dirtPath);
@@ -52,7 +56,6 @@ WorldTile::WorldTile(const Vector2f& position, GroundTileType* groundTileType, T
m_pAllTexture = pTextureManager->GetTexture("tiles/dirt/sidepieces/all.png");
}
WorldTile::~WorldTile() {
- delete m_pTexture;
}
void WorldTile::Draw() {
diff --git a/Game/GridSystem/WorldTile.h b/Game/GridSystem/WorldTile.h
index 1e278cc..1649dd3 100644
--- a/Game/GridSystem/WorldTile.h
+++ b/Game/GridSystem/WorldTile.h
@@ -150,6 +150,8 @@ static std::map GroundTileWeights {
{ Tiles::Ores::IRON, 0.1f },
};
+void InitializeGroundTiles();
+
class WorldTile
{
public:
@@ -197,7 +199,7 @@ private:
surroundingTiles m_SurroundingTiles;
- std::vector m_SideTextures { 8, nullptr };
+ std::vector m_SideTextures { 8, nullptr };
Texture* m_pAllTexture;
};
diff --git a/Game/GroundTileTypeManager.cpp b/Game/GroundTileTypeManager.cpp
new file mode 100644
index 0000000..a5c9c31
--- /dev/null
+++ b/Game/GroundTileTypeManager.cpp
@@ -0,0 +1,22 @@
+#include "pch.h"
+#include "GroundTileTypeManager.h"
+
+#include "GridSystem/WorldTile.h"
+
+GroundTileTypeManager* GroundTileTypeManager::m_pInstance = nullptr;
+
+GroundTileTypeManager* GroundTileTypeManager::GetInstance() {
+ if (m_pInstance == nullptr) {
+ m_pInstance = new GroundTileTypeManager();
+ }
+ return m_pInstance;
+}
+void GroundTileTypeManager::DestroyInstance() {
+}
+// void GroundTileTypeManager::Initialize() {
+ // AIR = new GroundTileType("", GroundTileTypes::Air);
+// }
+GroundTileTypeManager::GroundTileTypeManager() {
+}
+GroundTileTypeManager::~GroundTileTypeManager() {
+}
diff --git a/Game/GroundTileTypeManager.h b/Game/GroundTileTypeManager.h
new file mode 100644
index 0000000..cbf1581
--- /dev/null
+++ b/Game/GroundTileTypeManager.h
@@ -0,0 +1,38 @@
+#pragma once
+#include