From 9b375abd652c2ce4cb2057a9337941dfa0f0ea50 Mon Sep 17 00:00:00 2001 From: PolishPigeon Date: Sat, 22 Jan 2022 11:49:18 +0100 Subject: [PATCH] feat: Generalizing resource handling --- SFMLEngine/makingAGameTick/app | Bin 77704 -> 75768 bytes SFMLEngine/makingAGameTick/game.cpp | 4 ++-- SFMLEngine/makingAGameTick/game.o | Bin 127632 -> 120648 bytes SFMLEngine/makingAGameTick/resources.hpp | 11 ++++++----- SFMLEngine/makingAGameTick/resources.inl | 20 +++++++++++--------- 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/SFMLEngine/makingAGameTick/app b/SFMLEngine/makingAGameTick/app index db3781e0534d3409b2628da92329679371ff0f3e..d6f4799f281001de68336df95169a31bf6758492 100755 GIT binary patch delta 16833 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 Zdz8X=O4%Fq?i^;4M1ND6e~2mQ{{b`&-fRE> diff --git a/SFMLEngine/makingAGameTick/game.cpp b/SFMLEngine/makingAGameTick/game.cpp index e25f397..69d6b2c 100644 --- a/SFMLEngine/makingAGameTick/game.cpp +++ b/SFMLEngine/makingAGameTick/game.cpp @@ -26,13 +26,13 @@ class Game bool mIsMovingDown = false; private: sf::RenderWindow mWindow; - TextureHolder mTexture; + ResourceHolder mTexture; sf::Sprite mPlayer; }; Game::Game() : mWindow(sf::VideoMode(640, 480), "SFML Application"), mTexture(), mPlayer() { - //TextureHolder textures; + //ResourceHolder textures; mTexture.load(Textures::Airplane, PATH_TO_PLAYER_TEXTURE); mPlayer.setTexture(mTexture.get(Textures::Airplane)); diff --git a/SFMLEngine/makingAGameTick/game.o b/SFMLEngine/makingAGameTick/game.o index 5fc86b3f4425e853f470c839ba90c371b4359cfd..d04558e822704bf003b12abe96718311c6cff750 100644 GIT binary patch literal 120648 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%0Dh*$DsJ~kC zOEZ8N-`G8H>km5oGT*$dD?khc!B;xF>-GM%*lxR{XJ#mbuP)$iYWKcq?*j_@9j#EJ z@NL@s#Rj4eUydDY+<3@R-!2_B)J3HKVTO9#dhK3+&gQo#ih6o{#N^Atp>6~=XO}Kb zU}v_ixv8q5KD8{dc%(A|@9#AxoA6nRrsh;~#FQDc&udFn)m+2B7c{kxXu(sv$=1{| z&OEs=QP+wW*_{y!TASNj_?sB}$& zk|g~TSE|7;fYeffJpQvT<%pdVnMe?AL({Y_z6 z|1V@gpU?ay{gy1~ha2c$%!0neK>v#@=qDTKf0+e+xq+Vggl>1*x3#}{2KrxRLBG&I ze=0D|SNk^pDFglBEa;aT=tpNke=F0=_D}bPXt}j-lm9jY|JE$%*Bj`|vY>y!K>u3e3;Ag}?c3<-t|4+#|6B1}(`nyEPj|-{OO)9tvBu4 z^!K`<{B-}LrqjNSewTqi*%X>i`!;%gKZUHn-({h{j|}qD-Ef+(_HF$8=YkoWF1^p%iJ>9FU<<`DU{!WAZ_hdo8#lZjGEavCcw30=t~XsbPp%Po^R9NGy^@YsWYXYYoLEK3;pT)nB@5Jhb-tD zn7^d|Sr+oA4Dvso1^sdZ|0lAbUuEF`WES+d8TkJ^3;H_^{5!Lt*Y{w_{!8~Gf&Ncf@NY2CznTUArA#l|&+oFJUv8kMd$=>Lzf}hM z*R!BsYbgI4SE={x=xt-^_ylCIkH+vY_uY(7&C9{4X)Rtp7h}LBGww|4&)S zzr#SkGYk4X270Pp13_ z8|ZgsK|jnuPiG>T@-H^f)BWa|(w8#5)IZ%Xo+*9YK;M-GeYrt?x_>-V{__m{Kgfc< z)co8{(sFvf9nnW`(sZw zQ~nza{OKO{OzAfn=;>beOzArf^3(n8nbL1D(9=EdnbL1H(9?bJnbL1Jlz(>?^|#Z& z|L83E?=kTIAPfF`4fJ&1d#2^@%lCZA@sI9#&y;=u)63`Y_GBS{KGVzj=LAFl%SWDo z9WE|Ht{cwuM;@UO*GCZo?o|AuGL;5U+|Nvd9o%-Nr?uBT_^tIZNX0tNS@4NJZ?`e( zIAij>U?4zgr5lbPlxLW}lfE`jJde`uhRGVf|eLjPeYTJL{N#ekelIbGA+!(}&ByneQ=d&{LgmTdVfP~9DODf=HF>3Kiy9l=D*Lv|4!yl?Mu2a z|KSkcB>(G7|4B)VaG3s6AU4(Cc7y!%OlnyEG7JBYGUPwm!oSPF|4{?~e_Hqt=7Bd| z`QNkf?@yBroNlMoemCQHxcsZ3P((%A@AwS)-wb+_{__p|sjY|k_s76#;y*7#{<)wx z@h>s(r{}N3{BN@Gzb-@m%PsuN4gBf(>oEW4Ed1}xkbkFz|3U-*P6K~Z9_c^auO4Uq zCsU+wq-*Iu!Svzr?^V7pbc#%jaG1|=pr<@bLlMha{y5W9`+WxCu>Q`m@IQ?w&NG=_ zd!gbuS6k>OGJT^aWIrUPL+3Om`M0qAa{PWCd4%QvvW5Rf=AW+r-)iB%*HHgk4E+CK z;lGvnUy!E!w9idC4cGsXpKu9_)6k!SeHs(}#Y|6iE?rpvCxRX#MA}c@KU}H}Oib

Ad`meL_-^~2w_)E{f3;(UmU$(!k2L8D) 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 literal 127632 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 Z2^7hb*HQRkqTf*L=KLbcC$BL5{{x#myaoUO diff --git a/SFMLEngine/makingAGameTick/resources.hpp b/SFMLEngine/makingAGameTick/resources.hpp index bfbbf0e..d107720 100644 --- a/SFMLEngine/makingAGameTick/resources.hpp +++ b/SFMLEngine/makingAGameTick/resources.hpp @@ -9,14 +9,15 @@ namespace Textures // This gives us a scope for the enumerators which allows us enum ID { Landscape, Airplane, Missile }; } -class TextureHolder +template +class ResourceHolder { public: - void load(Textures::ID id, const std::string& filename); - sf::Texture& get(Textures::ID id); - const sf::Texture& get(Textures::ID id) const; + void load(Identifier id, const std::string& filename); + Resource& get(Identifier id); + const Resource& get(Identifier id) const; private: - std::map< Textures::ID, std::unique_ptr > mTextureMap; + std::map< Identifier, std::unique_ptr > mResourceMap; // unique_ptr are class templates that act like pointers, this allows us to work with heavyweight objects without copying them all the time, or we can store classes that are non-cpyable like sf::Shader }; diff --git a/SFMLEngine/makingAGameTick/resources.inl b/SFMLEngine/makingAGameTick/resources.inl index f773553..b6d20bf 100644 --- a/SFMLEngine/makingAGameTick/resources.inl +++ b/SFMLEngine/makingAGameTick/resources.inl @@ -1,29 +1,31 @@ #ifndef RESOURCES_INL #define RESOURCES_INL - -void TextureHolder::load(Textures::ID id, const std::string& filename) +template +void ResourceHolder::load(Identifier id, const std::string& filename) // Function to load a resource, it takes one parameter for filename and one for identifier { - std::unique_ptr texture(new sf::Texture()); // Create sf:Texture and store it in the unique pointer + std::unique_ptr texture(new Resource()); // Create sf:Texture and store it in the unique pointer if(!texture -> loadFromFile(filename))// Load the texture from the filename { throw std::runtime_error(TEXTURE_LOAD_ERROR + filename); } - auto inserted = mTextureMap.insert(std::make_pair(id, std::move(texture))); // Insert texture into map mTextureMap, std::move used to take ownership from texture variable and transfer it to std::make_pair(), std::move moves the resource into a new place and removes it from earlier place https://en.cppreference.com/w/cpp/utility/move + auto inserted = mResourceMap.insert(std::make_pair(id, std::move(texture))); // Insert texture into map mResourceMap, std::move used to take ownership from texture variable and transfer it to std::make_pair(), std::move moves the resource into a new place and removes it from earlier place https://en.cppreference.com/w/cpp/utility/move assert(inserted.second); } -sf::Texture& TextureHolder::get(Textures::ID id) // returns a reference to a texture +template +Resource& ResourceHolder::get(Identifier id) // returns a reference to a texture { - auto found = mTextureMap.find(id); // find returns an iterator to the found element or end() if nothing was found - assert(found != mTextureMap.end()); + auto found = mResourceMap.find(id); // find returns an iterator to the found element or end() if nothing was found + assert(found != mResourceMap.end()); return *found -> second; // We have to access the second member of the pointer, then we deference it and get a texture } -const sf::Texture& TextureHolder::get(Textures::ID id) const // we need to be able to invoke get() also if we only have a pointer/reference to the const TextureHolder, it returns const sf::Texture so the texture cannot be changed by caller +template +const Resource& ResourceHolder::get(Identifier id) const // we need to be able to invoke get() also if we only have a pointer/reference to the const ResourceHolder, it returns const Resource so the texture cannot be changed by caller { - auto found = mTextureMap.find(id); // find returns an iterator to the found element or end() if nothing was found + auto found = mResourceMap.find(id); // find returns an iterator to the found element or end() if nothing was found return *found -> second; // We have to access the second member of the pointer, then we deference it and get a texture }