From 3bee5d6ed5c6bd9f862ed257508c2e44ca7b181d Mon Sep 17 00:00:00 2001 From: KosmX <kosmx.mc@gmail.com> Date: Wed, 5 May 2021 22:21:23 +0200 Subject: [PATCH] Success build some changes --- 2d-game.vcxproj | 2 ++ 2d-game.vcxproj.filters | 24 ++++++++++++++----- Entity.h | 11 ++++++++- ITexture.h | 8 +++++-- LazySprite.cpp | 22 +++++++---------- LazySprite.h | 12 ++++------ ResourceManager.cpp | 7 ++++-- ResourceManager.h | 4 +--- SimpleSprite.cpp | 12 +++++----- SimpleSprite.h | 6 ++--- WallEntity.cpp | 1 + WallEntity.h | 20 ++++++++++++++++ game.cpp | 1 + mainGame.cpp | 2 ++ x64/Release/2d-game.Build.CppClean.log | 19 +++++++++++++++ x64/Release/2d-game.exe.recipe | 11 +++++++++ x64/Release/2d-game.log | 1 + .../2d-game.vcxproj.FileListAbsolute.txt | 0 18 files changed, 120 insertions(+), 43 deletions(-) create mode 100644 WallEntity.cpp create mode 100644 WallEntity.h create mode 100644 x64/Release/2d-game.Build.CppClean.log create mode 100644 x64/Release/2d-game.exe.recipe create mode 100644 x64/Release/2d-game.log create mode 100644 x64/Release/2d-game.vcxproj.FileListAbsolute.txt diff --git a/2d-game.vcxproj b/2d-game.vcxproj index 69db831..6e89048 100644 --- a/2d-game.vcxproj +++ b/2d-game.vcxproj @@ -149,6 +149,7 @@ <ClCompile Include="mainGame.cpp" /> <ClCompile Include="ResourceManager.cpp" /> <ClCompile Include="SimpleSprite.cpp" /> + <ClCompile Include="WallEntity.cpp" /> </ItemGroup> <ItemGroup> <ClInclude Include="DynamicArray.hpp" /> @@ -163,6 +164,7 @@ <ClInclude Include="resource.h" /> <ClInclude Include="ResourceManager.h" /> <ClInclude Include="SimpleSprite.h" /> + <ClInclude Include="WallEntity.h" /> </ItemGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> diff --git a/2d-game.vcxproj.filters b/2d-game.vcxproj.filters index 4b6dbb1..9cf0a13 100644 --- a/2d-game.vcxproj.filters +++ b/2d-game.vcxproj.filters @@ -24,14 +24,17 @@ <Filter Include="Header Files\gameObj\management"> <UniqueIdentifier>{886a9672-46a0-46f4-a068-e12dce07d024}</UniqueIdentifier> </Filter> + <Filter Include="Header Files\gameObj\entities"> + <UniqueIdentifier>{2a6abf62-06d5-4f89-a9e3-f572fb2f7d2f}</UniqueIdentifier> + </Filter> + <Filter Include="Source Files\gameObj\entities"> + <UniqueIdentifier>{df2376d0-03f2-4c26-aabc-0cfcf53c4a2c}</UniqueIdentifier> + </Filter> </ItemGroup> <ItemGroup> <ClCompile Include="game.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="Entity.cpp"> - <Filter>Source Files\gameObj</Filter> - </ClCompile> <ClCompile Include="ResourceManager.cpp"> <Filter>Source Files\gameObj</Filter> </ClCompile> @@ -44,14 +47,17 @@ <ClCompile Include="mainGame.cpp"> <Filter>Source Files</Filter> </ClCompile> + <ClCompile Include="Entity.cpp"> + <Filter>Source Files\gameObj\entities</Filter> + </ClCompile> + <ClCompile Include="WallEntity.cpp"> + <Filter>Source Files\gameObj\entities</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="interfaces.h"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="Entity.h"> - <Filter>Header Files\gameObj</Filter> - </ClInclude> <ClInclude Include="LazySprite.h"> <Filter>Header Files\gameObj\render</Filter> </ClInclude> @@ -82,5 +88,11 @@ <ClInclude Include="DynamicArray.hpp"> <Filter>Header Files</Filter> </ClInclude> + <ClInclude Include="Entity.h"> + <Filter>Header Files\gameObj\entities</Filter> + </ClInclude> + <ClInclude Include="WallEntity.h"> + <Filter>Header Files\gameObj\entities</Filter> + </ClInclude> </ItemGroup> </Project> \ No newline at end of file diff --git a/Entity.h b/Entity.h index 76ecd85..f823398 100644 --- a/Entity.h +++ b/Entity.h @@ -2,10 +2,13 @@ #include "olc.h" #include "ITexture.h" -#include "mainGame.h" + +class GameClient; namespace entities { + class WallEntity; + class Entity { protected: @@ -29,6 +32,12 @@ namespace entities { virtual ~Entity() = default; //TODO getAs*** stuff, all virtual + //same purpose to dynamic_cast, but without using language server + virtual WallEntity* getAsWallEntity() + { + return nullptr; + } + }; diff --git a/ITexture.h b/ITexture.h index 8aa9e78..8cb504b 100644 --- a/ITexture.h +++ b/ITexture.h @@ -1,7 +1,11 @@ #pragma once -#include "Entity.h" + #include "olcPGEX_TransformedView.h" +namespace entities { + class Entity; +} + namespace render { @@ -10,7 +14,7 @@ namespace render public: //Giving the entity will reduce the variables needed, and will make it's use more dynamic - virtual void render(olc::TransformedView& scene, Entity& entity) = 0; + virtual void render(olc::TransformedView& scene, entities::Entity& entity) = 0; virtual ~ITexture() = default; }; diff --git a/LazySprite.cpp b/LazySprite.cpp index ae1f5c7..9ed1caa 100644 --- a/LazySprite.cpp +++ b/LazySprite.cpp @@ -6,28 +6,24 @@ namespace render { olc::Decal* LazySprite::getDecay() { if (sprite == nullptr) { - this->sprite = render::ResourceManager::getSprite(this->resourceName); + this->sprite = ResourceManager::getSprite(this->resourceName); } return this->sprite; } - LazySprite::LazySprite(const std::string& resName, int u, int v, int sizeU, int sizeV) - : LazySprite(resName, olc::vi2d(u, v), olc::vi2d(sizeU, sizeV)) + + LazySprite::LazySprite(const std::string& resName) + : sprite(nullptr), resourceName(resName) {} - LazySprite::LazySprite(const std::string& resName, olc::vi2d pos, olc::vi2d size) - : resourceName(resName), uv(pos), size(size) - { - sprite = nullptr; - } - - void LazySprite::render(olc::TransformedView& scene, olc::vf2d pos, olc::vf2d scale) + void LazySprite::render(olc::TransformedView& scene, const olc::vi2d& pos, const olc::vf2d& uv, const olc::vf2d& size, olc::vf2d scale) { scene.DrawPartialDecal(pos, this->getDecay(), uv, size, scale); } - void LazySprite::renderCentered(olc::TransformedView& scene, olc::vf2d pos, olc::vf2d scale) + + + void LazySprite::renderCentered(olc::TransformedView& scene, const olc::vi2d& pos, const olc::vf2d& uv, const olc::vf2d& size, olc::vf2d scale) { - //probably modify the ints to doubles??? - render(scene, pos + size*2.0, scale); + this->render(scene, pos + size / 2.0f, uv, size, scale); } } diff --git a/LazySprite.h b/LazySprite.h index e657043..f38867c 100644 --- a/LazySprite.h +++ b/LazySprite.h @@ -13,28 +13,26 @@ namespace render { class LazySprite { private: - olc::Decal* sprite = nullptr; + olc::Decal* sprite; protected: const std::string resourceName; //int const u, v, sizeU, sizeV; - olc::vi2d const uv, size; + //olc::vi2d const uv, size; olc::Decal* getDecay(); public: /** * u, v the texture coordinates on the image, * sizeU, V are the size of that sprite */ - LazySprite(const std::string& resName, int u, int v, int sizeU = 16, int sizeV = 16); - - LazySprite(const std::string& resName, olc::vi2d pos, olc::vi2d size = olc::vi2d(16, 16)); + explicit LazySprite(const std::string& resName); /** * Render the sprite in world-space */ - void render(olc::TransformedView& scene, olc::vf2d, olc::vf2d scale = olc::vf2d(1, 1)); + void render(olc::TransformedView& scene, const olc::vi2d& pos, const olc::vf2d& uv, const olc::vf2d& size, olc::vf2d scale = olc::vf2d(1, 1)); - void renderCentered(olc::TransformedView& scene, olc::vf2d, olc::vf2d scale); + void renderCentered(olc::TransformedView& scene, const olc::vi2d& pos, const olc::vf2d& uv, const olc::vf2d& size, olc::vf2d scale = olc::vf2d(1, 1)); //decal reference is not my stuff, I don't have to delete it. }; diff --git a/ResourceManager.cpp b/ResourceManager.cpp index 5688532..edad00e 100644 --- a/ResourceManager.cpp +++ b/ResourceManager.cpp @@ -37,7 +37,10 @@ namespace render */ void ResourceManager::createInstance(std::string* parent) { - instance = std::make_unique<ResourceManager>(*new ResourceManager(parent)); + if(instance != nullptr){ + throw std::runtime_error("Can't create a second instance of a singleton resource manager"); + } + instance = new ResourceManager(parent); } olc::Decal* ResourceManager::getSprite(const std::string& key) @@ -59,5 +62,5 @@ namespace render return &this->decalData; } - //std::unique_ptr<ResourceManager> ResourceManager::instance; + ResourceManager* ResourceManager::instance = nullptr; } \ No newline at end of file diff --git a/ResourceManager.h b/ResourceManager.h index 99e9dc5..f2eb314 100644 --- a/ResourceManager.h +++ b/ResourceManager.h @@ -1,8 +1,6 @@ #pragma once #include <string> -#include <map> -#include <memory> #include "olcPixelGameEngine.h" namespace render @@ -15,7 +13,7 @@ namespace render class ResourceManager { private: //static - static std::unique_ptr<ResourceManager> instance; + static ResourceManager* instance; static ResourceManager& getInstance(); //who needs that??? public: //static diff --git a/SimpleSprite.cpp b/SimpleSprite.cpp index 85c79cf..ef87941 100644 --- a/SimpleSprite.cpp +++ b/SimpleSprite.cpp @@ -1,12 +1,12 @@ #include "SimpleSprite.h" +#include "Entity.h" -render::SimpleSprite::SimpleSprite(const std::string name, olc::vi2d pos) - : sprite(name, pos) -{ - -} +using namespace olc; + +render::SimpleSprite::SimpleSprite(const std::string& name, const vi2d& pos, const vf2d& size) + : sprite(name), uv(pos), size(size) {} void render::SimpleSprite::render(olc::TransformedView& scene, entities::Entity& entity) { - this->sprite.render(scene, entity.getPos()); + this->sprite.render(scene, entity.getPos(), uv, size); } diff --git a/SimpleSprite.h b/SimpleSprite.h index 7f2cc91..ff6a816 100644 --- a/SimpleSprite.h +++ b/SimpleSprite.h @@ -3,7 +3,6 @@ #include <string> #include "LazySprite.h" - namespace render { class SimpleSprite : @@ -11,9 +10,10 @@ namespace render { { private: LazySprite sprite; - + const olc::vf2d uv, size; + public: - SimpleSprite(const std::string name, olc::vi2d pos); + SimpleSprite(const std::string& name, const olc::vi2d& pos, const olc::vf2d& size); void render(olc::TransformedView& scene, entities::Entity& entity) override; }; diff --git a/WallEntity.cpp b/WallEntity.cpp new file mode 100644 index 0000000..4c161e9 --- /dev/null +++ b/WallEntity.cpp @@ -0,0 +1 @@ +#include "WallEntity.h" diff --git a/WallEntity.h b/WallEntity.h new file mode 100644 index 0000000..280b8fe --- /dev/null +++ b/WallEntity.h @@ -0,0 +1,20 @@ +#pragma once + +#include "Entity.h" + +namespace entities { + class WallEntity : public Entity + { + public: + + + + + //This is a wall entity after all. + WallEntity* getAsWallEntity() override + { + return this; + } + }; + +} diff --git a/game.cpp b/game.cpp index 0cad066..e136c85 100644 --- a/game.cpp +++ b/game.cpp @@ -1,4 +1,5 @@ #define OLC_PGE_APPLICATION +#define OLC_PGEX_TRANSFORMEDVIEW #include "olcPixelGameEngine.h" #include "mainGame.h" diff --git a/mainGame.cpp b/mainGame.cpp index ea3b542..d9946be 100644 --- a/mainGame.cpp +++ b/mainGame.cpp @@ -49,3 +49,5 @@ bool GameClient::OnUserUpdate(float fElapsedTime) return true; } + +GameClient* GameClient::instance = nullptr; \ No newline at end of file diff --git a/x64/Release/2d-game.Build.CppClean.log b/x64/Release/2d-game.Build.CppClean.log new file mode 100644 index 0000000..8ec59e3 --- /dev/null +++ b/x64/Release/2d-game.Build.CppClean.log @@ -0,0 +1,19 @@ +c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.ipdb +c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.iobj +c:\users\kosmx\documents\github\2d-game\x64\release\vc142.pdb +c:\users\kosmx\documents\github\2d-game\x64\release\wallentity.obj +c:\users\kosmx\documents\github\2d-game\x64\release\simplesprite.obj +c:\users\kosmx\documents\github\2d-game\x64\release\resourcemanager.obj +c:\users\kosmx\documents\github\2d-game\x64\release\maingame.obj +c:\users\kosmx\documents\github\2d-game\x64\release\lazysprite.obj +c:\users\kosmx\documents\github\2d-game\x64\release\game.obj +c:\users\kosmx\documents\github\2d-game\x64\release\entity.obj +c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.exe +c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.pdb +c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.tlog\2d-game.write.1u.tlog +c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.tlog\cl.command.1.tlog +c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.tlog\cl.read.1.tlog +c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.tlog\cl.write.1.tlog +c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.tlog\link.command.1.tlog +c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.tlog\link.read.1.tlog +c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.tlog\link.write.1.tlog diff --git a/x64/Release/2d-game.exe.recipe b/x64/Release/2d-game.exe.recipe new file mode 100644 index 0000000..fcf2687 --- /dev/null +++ b/x64/Release/2d-game.exe.recipe @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project> + <ProjectOutputs> + <ProjectOutput> + <FullPath>C:\Users\kosmx\Documents\GitHub\2d-game\x64\Release\2d-game.exe</FullPath> + </ProjectOutput> + </ProjectOutputs> + <ContentFiles /> + <SatelliteDlls /> + <NonRecipeFileRefs /> +</Project> \ No newline at end of file diff --git a/x64/Release/2d-game.log b/x64/Release/2d-game.log new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/x64/Release/2d-game.log @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/x64/Release/2d-game.vcxproj.FileListAbsolute.txt b/x64/Release/2d-game.vcxproj.FileListAbsolute.txt new file mode 100644 index 0000000..e69de29 -- GitLab