mirror of
https://github.com/HowestDAE/dae16-VerhulstBram.git
synced 2025-12-16 03:41:48 +01:00
Add alot of memory leak fixes
This commit is contained in:
43
.idea/.idea.Motherload/.idea/workspace.xml
generated
43
.idea/.idea.Motherload/.idea/workspace.xml
generated
@@ -11,24 +11,33 @@
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="26a0623a-44d5-441c-8048-32ff1dab3479" name="Changes" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/Game/GroundTileTypeManager.cpp" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/Game/GroundTileTypeManager.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/.idea.Motherload/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.Motherload/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Engine/BaseGame.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Engine/BaseGame.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Engine/BaseGame.h" beforeDir="false" afterPath="$PROJECT_DIR$/Engine/BaseGame.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Engine/Text.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Engine/Text.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Animations/Animation.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Animations/Animation.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Animations/Animation.h" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Animations/Animation.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Game.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Game.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Game.h" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Game.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Game.vcxproj" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Game.vcxproj" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Game.vcxproj.filters" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Game.vcxproj.filters" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/GridSystem/WorldGridManager.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Game/GridSystem/WorldGridManager.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/GridSystem/WorldGridManager.h" beforeDir="false" afterPath="$PROJECT_DIR$/Game/GridSystem/WorldGridManager.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/GridSystem/WorldTile.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Game/GridSystem/WorldTile.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/GridSystem/WorldTile.h" beforeDir="false" afterPath="$PROJECT_DIR$/Game/GridSystem/WorldTile.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Levels/World/Building.h" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Levels/World/Building.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Gui/Screen.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Gui/Screen.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Gui/Screens/FuelScreen.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Gui/Screens/FuelScreen.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Gui/Screens/FuelScreen.h" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Gui/Screens/FuelScreen.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Gui/Screens/ScreenManager.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Gui/Screens/ScreenManager.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Gui/Screens/ScreenManager.h" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Gui/Screens/ScreenManager.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Levels/MainMenu/MainMenuLevel.h" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Levels/MainMenu/MainMenuLevel.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Levels/World/Building.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Levels/World/Building.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Levels/World/WorldLevel.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Levels/World/WorldLevel.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Levels/World/WorldLevel.h" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Levels/World/WorldLevel.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Player.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Player.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/Player.h" beforeDir="false" afterPath="$PROJECT_DIR$/Game/Player.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/TextureManager.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Game/TextureManager.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/TextureManager.h" beforeDir="false" afterPath="$PROJECT_DIR$/Game/TextureManager.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Game/main.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Game/main.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Resources/tiles/ores/Ore_Lava_1.jpg" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Resources/tiles/ores/Ore_Lava_2.jpg" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Resources/tiles/ores/Ore_Lava_3.jpg" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Resources/tiles/ores/Ore_Stone_1.jpg" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Resources/tiles/ores/Ore_Stone_2.jpg" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Resources/tiles/ores/Ore_Stone_3.jpg" beforeDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@@ -43,14 +52,17 @@
|
||||
</option>
|
||||
</component>
|
||||
<component name="HighlightingSettingsPerFile">
|
||||
<setting file="mock:///dummy.cpp" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="mock:///dummy.cpp" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/../../../../../../Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.37.32822/include/type_traits" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/../../../../../../Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.37.32822/include/vector" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="mock://C:/Users/Bram/Desktop/Programming 2/Exam/dae16-VerhulstBram/Game/Animations/Animation.cpp" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/Game/Animations/Animation.h" root0="FORCE_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/Game/Camera.cpp" root0="FORCE_HIGHLIGHTING" />
|
||||
<setting file="mock://C:/Users/Bram/Desktop/Programming 2/Exam/dae16-VerhulstBram/Game/Gui/Screens/FuelScreen.cpp" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/Game/pch.cpp" root0="FORCE_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/Game/pch.h" root0="FORCE_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/../../week6/Lab/Lab6/Game.cpp" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/../../week6/Lab/Lab6/main.cpp" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/../../week6/Lab/Lab6/pch.h" root0="SKIP_HIGHLIGHTING" />
|
||||
</component>
|
||||
<component name="MarkdownSettingsMigration">
|
||||
<option name="stateVersion" value="1" />
|
||||
@@ -70,7 +82,7 @@
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"C++ Project.Game.executor": "Run",
|
||||
"C++ Project.Game.executor": "Debug",
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"ignore.virus.scanning.warn.message": "true",
|
||||
@@ -79,7 +91,7 @@
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"settings.editor.selected.configurable": "preferences.CppConfiguration",
|
||||
"settings.editor.selected.configurable": "preferences.pluginManager",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
},
|
||||
"keyToStringList": {
|
||||
@@ -212,6 +224,9 @@
|
||||
<workItem from="1713796697935" duration="987000" />
|
||||
<workItem from="1713807176793" duration="5224000" />
|
||||
<workItem from="1713817523511" duration="347000" />
|
||||
<workItem from="1713853942608" duration="1816000" />
|
||||
<workItem from="1713855878621" duration="24000" />
|
||||
<workItem from="1713858589244" duration="4723000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="Rework Tile detection system">
|
||||
<option name="closed" value="true" />
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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<float>(m_CurrentFrame) * src.width;
|
||||
|
||||
m_pTexture->Draw(dst, src, m_isFlipped);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "Game.h"
|
||||
|
||||
#include <ostream>
|
||||
#include <algorithm>
|
||||
|
||||
#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();
|
||||
|
||||
@@ -111,6 +111,7 @@
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
<BrowseInformation>true</BrowseInformation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@@ -130,6 +131,9 @@
|
||||
xcopy "$(SolutionDir)Resources\*.*" "$(TargetDir)" /y /d /s
|
||||
</Command>
|
||||
</PostBuildEvent>
|
||||
<Bscmake>
|
||||
<PreserveSbr>true</PreserveSbr>
|
||||
</Bscmake>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
@@ -225,6 +229,7 @@
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;_UNICODE;UNICODE;</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<LinkCompiled>true</LinkCompiled>
|
||||
<BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GridSystem\WorldTile.cpp">
|
||||
<RuntimeLibrary>MultiThreadedDebugDll</RuntimeLibrary>
|
||||
@@ -299,7 +304,9 @@
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;_UNICODE;UNICODE;</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<LinkCompiled>true</LinkCompiled>
|
||||
<BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GroundTileTypeManager.cpp" />
|
||||
<ClCompile Include="Gui\Button.cpp" />
|
||||
<ClCompile Include="Gui\Screen.cpp" />
|
||||
<ClCompile Include="Gui\Screens\FuelScreen.cpp" />
|
||||
@@ -377,6 +384,7 @@
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;_UNICODE;UNICODE;</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<LinkCompiled>true</LinkCompiled>
|
||||
<BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Levels\MainMenu\MainMenuLevel.cpp" />
|
||||
<ClCompile Include="Levels\World\Building.cpp" />
|
||||
@@ -453,6 +461,7 @@
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;_UNICODE;UNICODE;</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<LinkCompiled>true</LinkCompiled>
|
||||
<BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main.cpp" />
|
||||
<ClCompile Include="pch.cpp" />
|
||||
@@ -466,6 +475,7 @@
|
||||
<ClInclude Include="GameManager.h" />
|
||||
<ClInclude Include="GridSystem\WorldGridManager.h" />
|
||||
<ClInclude Include="GridSystem\WorldTile.h" />
|
||||
<ClInclude Include="GroundTileTypeManager.h" />
|
||||
<ClInclude Include="Gui\Button.h" />
|
||||
<ClInclude Include="Gui\Screen.h" />
|
||||
<ClInclude Include="Gui\Screens\FuelScreen.h" />
|
||||
|
||||
@@ -27,9 +27,6 @@
|
||||
<ClCompile Include="Camera.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="WorldLevel.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Player.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
@@ -63,6 +60,15 @@
|
||||
<ClCompile Include="Levels\Level.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Levels\MainMenu\MainMenuLevel.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Levels\World\Building.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Levels\World\WorldLevel.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="Game.h">
|
||||
@@ -74,9 +80,6 @@
|
||||
<ClInclude Include="Camera.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="WorldLevel.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Player.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
@@ -110,5 +113,14 @@
|
||||
<ClInclude Include="Levels\Level.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Levels\MainMenu\MainMenuLevel.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Levels\World\Building.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Levels\World\WorldLevel.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "pch.h"
|
||||
#include "WorldGridManager.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <stdexcept>
|
||||
|
||||
#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();
|
||||
|
||||
@@ -72,6 +72,4 @@ public:
|
||||
|
||||
private:
|
||||
std::array<std::array<WorldTile *, WORLD_WIDTH>, WORLD_HEIGHT> m_worldTiles;
|
||||
|
||||
|
||||
};
|
||||
|
||||
@@ -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() {
|
||||
|
||||
|
||||
@@ -150,6 +150,8 @@ static std::map<GroundTileType *, float> GroundTileWeights {
|
||||
{ Tiles::Ores::IRON, 0.1f },
|
||||
};
|
||||
|
||||
void InitializeGroundTiles();
|
||||
|
||||
class WorldTile
|
||||
{
|
||||
public:
|
||||
@@ -197,7 +199,7 @@ private:
|
||||
|
||||
surroundingTiles m_SurroundingTiles;
|
||||
|
||||
std::vector<Texture *> m_SideTextures { 8, nullptr };
|
||||
std::vector<Texture*> m_SideTextures { 8, nullptr };
|
||||
|
||||
Texture* m_pAllTexture;
|
||||
};
|
||||
|
||||
22
Game/GroundTileTypeManager.cpp
Normal file
22
Game/GroundTileTypeManager.cpp
Normal file
@@ -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() {
|
||||
}
|
||||
38
Game/GroundTileTypeManager.h
Normal file
38
Game/GroundTileTypeManager.h
Normal file
@@ -0,0 +1,38 @@
|
||||
#pragma once
|
||||
#include <map>
|
||||
|
||||
|
||||
class GroundTileType;
|
||||
|
||||
class GroundTileTypeManager
|
||||
{
|
||||
public:
|
||||
static GroundTileTypeManager* GetInstance();
|
||||
static void DestroyInstance();
|
||||
|
||||
//
|
||||
// static GroundTileType* AIR{ nullptr };
|
||||
//
|
||||
//
|
||||
// static std::map<GroundTileType *, float> GroundTileWeights {
|
||||
// { Tiles::AIR, 0.2f },
|
||||
// { Tiles::DIRT, 0.5f },
|
||||
// { Tiles::Special::GRASS, 0.0f },
|
||||
// { Tiles::Hazards::STONE, 0.025f },
|
||||
// { Tiles::Hazards::LAVA, 0.01f },
|
||||
// { Tiles::Special::HARD_LEFT, 0.0f },
|
||||
// { Tiles::Special::HARD_MIDDLE, 0.0f },
|
||||
// { Tiles::Special::HARD_RIGHT, 0.0f },
|
||||
// { Tiles::Ores::BRONZE, 0.05f },
|
||||
// { Tiles::Ores::GOLD, 0.02f },
|
||||
// { Tiles::Ores::IRON, 0.1f },
|
||||
// };
|
||||
|
||||
private:
|
||||
GroundTileTypeManager();
|
||||
~GroundTileTypeManager();
|
||||
|
||||
static GroundTileTypeManager* m_pInstance;
|
||||
|
||||
};
|
||||
|
||||
@@ -5,6 +5,9 @@ Screen::Screen(const std::string& filePath, Vector2f pos, Vector2f size, Texture
|
||||
m_Background = manager->GetTexture(filePath);
|
||||
}
|
||||
Screen::~Screen() {
|
||||
for (Button* b : m_Buttons) {
|
||||
delete b;
|
||||
}
|
||||
}
|
||||
void Screen::Update(float elapsedSecs) {
|
||||
for (Button* b : m_Buttons) {
|
||||
|
||||
@@ -40,6 +40,10 @@ FuelScreen::FuelScreen(const std::string& filePath, Vector2f pos, Vector2f size,
|
||||
this->AddButton(fillTankButton);
|
||||
|
||||
}
|
||||
|
||||
FuelScreen::~FuelScreen() {
|
||||
}
|
||||
|
||||
void FuelScreen::Draw() const {
|
||||
Screen::Draw();
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ class FuelScreen : public Screen
|
||||
public:
|
||||
|
||||
FuelScreen(const std::string& filePath, Vector2f pos, Vector2f size, TextureManager* manager);
|
||||
virtual ~FuelScreen() override;
|
||||
|
||||
virtual void Draw() const override;
|
||||
virtual void Update(float elapsedSecs) override;
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
#include "utils.h"
|
||||
ScreenManager* ScreenManager::m_pInstance = nullptr;
|
||||
|
||||
Screen* ScreenManager::Fuel{ nullptr };
|
||||
Screen* ScreenManager::SellScreen{ nullptr };
|
||||
Screen* ScreenManager::m_FuelScreen{ nullptr };
|
||||
Screen* ScreenManager::m_SellScreen{ nullptr };
|
||||
|
||||
ScreenManager* ScreenManager::GetInstance() {
|
||||
|
||||
@@ -20,6 +20,10 @@ ScreenManager* ScreenManager::GetInstance() {
|
||||
return m_pInstance;
|
||||
}
|
||||
|
||||
void ScreenManager::DestroyInstance() {
|
||||
delete m_pInstance;
|
||||
}
|
||||
|
||||
void ScreenManager::OpenScreen(Screen* screen) {
|
||||
if(m_IsScreenOpen == false) {
|
||||
m_currentScreen = screen;
|
||||
@@ -33,14 +37,18 @@ void ScreenManager::CloseScreen() {
|
||||
}
|
||||
|
||||
}
|
||||
ScreenManager::~ScreenManager() {
|
||||
delete m_FuelScreen;
|
||||
delete m_SellScreen;
|
||||
}
|
||||
void ScreenManager::InitializeScreens() {
|
||||
Vector2f fuelScreenSize = Vector2f { 492, 396 };
|
||||
Vector2f fuelScreenCenter = Vector2f { utils::GetViewport().x / 2 - fuelScreenSize.x / 2, utils::GetViewport().y / 2 - fuelScreenSize.y / 2 };
|
||||
Fuel = new FuelScreen { "gui/fuel/background.png", fuelScreenCenter, Vector2f { 0, 0 }, TextureManager::GetInstance() };
|
||||
m_FuelScreen = new FuelScreen { "gui/fuel/background.png", fuelScreenCenter, Vector2f { 0, 0 }, TextureManager::GetInstance() };
|
||||
|
||||
Vector2f sellScreenSize = Vector2f { 533, 398 };
|
||||
Vector2f sellScreenCenter = Vector2f { utils::GetViewport().x / 2 - sellScreenSize.x / 2, utils::GetViewport().y / 2 - sellScreenSize.y / 2 };
|
||||
SellScreen = new Screen { "gui/sell/background.png", sellScreenCenter, sellScreenSize, TextureManager::GetInstance() };
|
||||
m_SellScreen = new Screen { "gui/sell/background.png", sellScreenCenter, sellScreenSize, TextureManager::GetInstance() };
|
||||
|
||||
//m_Button = Button { "gui/close.png", closeButtonPos, closeButtonSize, TextureManager::GetInstance() };
|
||||
}
|
||||
|
||||
@@ -7,19 +7,21 @@ class ScreenManager
|
||||
{
|
||||
public:
|
||||
static ScreenManager* GetInstance();
|
||||
static void DestroyInstance();
|
||||
|
||||
void OpenScreen(Screen* screen);
|
||||
void CloseScreen();
|
||||
|
||||
Screen* GetCurrentScreen() { return m_currentScreen; }
|
||||
Screen* GetCurrentScreen() const { return m_currentScreen; }
|
||||
|
||||
static ScreenManager* m_pInstance;
|
||||
|
||||
|
||||
static Screen* Fuel;
|
||||
static Screen* SellScreen;
|
||||
static Screen* m_FuelScreen;
|
||||
static Screen* m_SellScreen;
|
||||
private:
|
||||
ScreenManager() = default;
|
||||
~ScreenManager();
|
||||
|
||||
void InitializeScreens();
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ class MainMenuLevel : public Level
|
||||
public:
|
||||
|
||||
MainMenuLevel(Camera* camera);
|
||||
virtual ~MainMenuLevel();
|
||||
virtual ~MainMenuLevel() override;
|
||||
|
||||
void Update(float elapsedSec) override;
|
||||
void Draw() const override;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#include "pch.h"
|
||||
#include "Building.h"
|
||||
|
||||
#include <iostream>
|
||||
Building::Building(const std::string& filePath, const Vector2f& position, TextureManager* pTextureManager): m_Position(position) {
|
||||
m_Texture = pTextureManager->GetTexture(filePath);
|
||||
m_Size = Vector2f(m_Texture->GetWidth(), m_Texture->GetHeight());
|
||||
|
||||
@@ -63,6 +63,10 @@ WorldLevel::WorldLevel(Camera* camera, Rectf viewport): Level(camera),
|
||||
|
||||
}
|
||||
WorldLevel::~WorldLevel() {
|
||||
delete m_refeulBuilding;
|
||||
delete m_mineralBuilding;
|
||||
delete m_junkBuilding;
|
||||
delete m_repairBuilding;
|
||||
//delete m_pTextTexture;
|
||||
}
|
||||
void WorldLevel::Update(float elapsedSec) {
|
||||
@@ -111,6 +115,25 @@ void WorldLevel::Update(float elapsedSec) {
|
||||
|
||||
m_player.Update(elapsedSec, *this);
|
||||
|
||||
//Move the camera when the player gets to the edge
|
||||
if(m_FollowPlayer) {
|
||||
Vector2f playerPos = m_player.GetPosition();
|
||||
Vector2f newCameraPos = m_pCamera->GetPosition();
|
||||
if (playerPos.x < newCameraPos.x + 50) {
|
||||
newCameraPos.x = playerPos.x - 50;
|
||||
}
|
||||
if (playerPos.x > newCameraPos.x + m_viewport.width - 100) {
|
||||
newCameraPos.x = playerPos.x - m_viewport.width + 100;
|
||||
}
|
||||
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;
|
||||
}
|
||||
m_pCamera->SetPosition(newCameraPos);
|
||||
}
|
||||
|
||||
Screen* screen = m_screenManager->GetCurrentScreen();
|
||||
if (screen != nullptr) {
|
||||
screen->Update(elapsedSec);
|
||||
@@ -158,6 +181,9 @@ void WorldLevel::Draw() const {
|
||||
m_pCamera->EndRendering();
|
||||
|
||||
utils::FillRect(utils::GetMousePos(), 10, 10);
|
||||
|
||||
utils::DrawRect(50, 50, m_viewport.width - 100, m_viewport.height - 100);
|
||||
|
||||
const Screen* screen = m_screenManager->GetCurrentScreen();
|
||||
if (screen != nullptr) {
|
||||
screen->Draw();
|
||||
@@ -209,12 +235,12 @@ void WorldLevel::ProcessImGui() {
|
||||
}
|
||||
if (ImGui::BeginMenu("Screens")) {
|
||||
if (ImGui::MenuItem("Open Fuel screen")) {
|
||||
ScreenManager::GetInstance()->OpenScreen(ScreenManager::Fuel);
|
||||
ScreenManager::GetInstance()->OpenScreen(ScreenManager::m_FuelScreen);
|
||||
}
|
||||
|
||||
|
||||
if (ImGui::MenuItem("Open Sell screen")) {
|
||||
ScreenManager::GetInstance()->OpenScreen(ScreenManager::SellScreen);
|
||||
ScreenManager::GetInstance()->OpenScreen(ScreenManager::m_SellScreen);
|
||||
}
|
||||
|
||||
if (ImGui::MenuItem("Close Screen")) {
|
||||
@@ -249,6 +275,7 @@ void WorldLevel::ProcessImGui() {
|
||||
m_pCamera->SetPosition(Vector2f { -m_viewport.width / 2, -m_viewport.height / 2 });
|
||||
m_pCamera->SetScale(1.0f);
|
||||
}
|
||||
ImGui::Checkbox("Follow Player", &m_FollowPlayer);
|
||||
ImGui::End();
|
||||
}
|
||||
|
||||
|
||||
@@ -44,10 +44,11 @@ private:
|
||||
Building* m_junkBuilding;
|
||||
Building* m_repairBuilding;
|
||||
|
||||
float testLerp{ 0.0f };
|
||||
|
||||
// ImGui Vars
|
||||
bool m_ShowTextureManagerWindow { false };
|
||||
bool m_ShowCameraWindow { false };
|
||||
bool m_ShowPlayerInfo { true };
|
||||
|
||||
bool m_FollowPlayer { false };
|
||||
};
|
||||
|
||||
@@ -24,8 +24,8 @@ Player::Player(const Vector2f& Position, TextureManager* manager) : m_Position(P
|
||||
|
||||
Player::~Player() {
|
||||
delete m_walkAnimation;
|
||||
delete m_turnAnimation;
|
||||
delete m_digAnimation;
|
||||
// delete m_turnAnimation;
|
||||
// delete m_digAnimation;
|
||||
}
|
||||
|
||||
Collision::CollisionRect Player::GetCollisionRect() const {
|
||||
|
||||
@@ -95,8 +95,8 @@ private:
|
||||
bool m_DidJustDigLeft { false };
|
||||
Animation* m_currentAnimation{ nullptr };
|
||||
Animation* m_walkAnimation;
|
||||
Animation* m_turnAnimation;
|
||||
Animation* m_digAnimation;
|
||||
Animation* m_turnAnimation{ nullptr };
|
||||
Animation* m_digAnimation{ nullptr };
|
||||
|
||||
PlayerState m_State { PlayerState::Idle };
|
||||
PlayerDirection m_Direction { PlayerDirection::Right };
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#include "pch.h"
|
||||
#include "TextureManager.h"
|
||||
|
||||
#include <iostream>
|
||||
TextureManager* TextureManager::m_pInstance = nullptr;
|
||||
|
||||
TextureManager * TextureManager::GetInstance() {
|
||||
@@ -8,6 +10,9 @@ TextureManager * TextureManager::GetInstance() {
|
||||
}
|
||||
return m_pInstance;
|
||||
}
|
||||
void TextureManager::DestroyInstance() {
|
||||
delete m_pInstance;
|
||||
}
|
||||
Texture * TextureManager::GetTexture(const std::string& name) {
|
||||
if (m_Textures.find(name) != m_Textures.end()) {
|
||||
return m_Textures[name];
|
||||
@@ -18,7 +23,7 @@ Texture * TextureManager::GetTexture(const std::string& name) {
|
||||
}
|
||||
TextureManager::~TextureManager() {
|
||||
//TODO: Loop over the m_Textures to delete them
|
||||
for ( const auto &p : m_Textures ) {
|
||||
for (const auto& p : m_Textures) {
|
||||
delete p.second;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,8 @@ class TextureManager
|
||||
{
|
||||
public:
|
||||
static TextureManager * GetInstance();
|
||||
Texture * GetTexture(const std::string& name);
|
||||
static void DestroyInstance();
|
||||
Texture* GetTexture(const std::string& name);
|
||||
|
||||
private:
|
||||
TextureManager() = default;
|
||||
|
||||
@@ -12,11 +12,13 @@ int SDL_main(int argv, char** args) {
|
||||
|
||||
StartHeapControl();
|
||||
|
||||
new Button();
|
||||
|
||||
auto pGame { new Game { Window { "Motherload - Verhulst, Bram - 1DAEGD16E", Viewport.x, Viewport.y } } };
|
||||
pGame->Run();
|
||||
delete pGame;
|
||||
|
||||
DumpMemoryLeaks();
|
||||
//DumpMemoryLeaks();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user