diff --git a/SFMLEngine/makingAGameTick/resources.hpp b/SFMLEngine/makingAGameTick/Classes/Other/resources.hpp similarity index 100% rename from SFMLEngine/makingAGameTick/resources.hpp rename to SFMLEngine/makingAGameTick/Classes/Other/resources.hpp diff --git a/SFMLEngine/makingAGameTick/resources.inl b/SFMLEngine/makingAGameTick/Classes/Other/resources.inl similarity index 100% rename from SFMLEngine/makingAGameTick/resources.inl rename to SFMLEngine/makingAGameTick/Classes/Other/resources.inl diff --git a/SFMLEngine/makingAGameTick/Classes/Other/world.cpp b/SFMLEngine/makingAGameTick/Classes/Other/world.cpp new file mode 100644 index 0000000..99497ee --- /dev/null +++ b/SFMLEngine/makingAGameTick/Classes/Other/world.cpp @@ -0,0 +1,27 @@ +#ifndef WORLD_CPP // ZA WARUDO +#define WORLD_CPP + +World::World(sf::RenderWindow& window) +: mWindow(window) +, mWorldView(window.getDefaultView()) +, mWorldBounds +( + WORLD_LEFT_X_POSITION, + WORLD_TOP_Y_POSITION, + mWorldView.getSize().x, + WORLD_HEIGHT +) +, mSpawnPosition +( + mWorldView.getSize().x / 2.f, + mWorldBounds.height - mWorldView.getSize().y +) +, mScrollSpeed ( WORLD_SCROLL_SPEED ) +, mPlayerAircraft(nullptr) +{ + // loadTextures(); + // buildScene(); + // mWorldView.setCenter(mSpawnPosition); +} + +#endif // WORLD_CPP diff --git a/SFMLEngine/makingAGameTick/Classes/Other/world.hpp b/SFMLEngine/makingAGameTick/Classes/Other/world.hpp new file mode 100644 index 0000000..c0e2f55 --- /dev/null +++ b/SFMLEngine/makingAGameTick/Classes/Other/world.hpp @@ -0,0 +1,42 @@ +#ifndef WORLD_HPP // ZA WARUDO +#define WORLD_HPP + +#include +#include "../SceneNodeDerrivatives/SceneNode.hpp" +#include "../SceneNodeDerrivatives/aircraft.hpp" + +class World : private sf::NonCopyable // We only have one world and we do not want to copy it #StopClimateChange amiright +{ + public: + explicit World(sf::RenderWindow& window); + void update(sf::Time deltaTime); + void draw(); + private: + void loadTextures(); + void buildScene(); + + private: + enum Layer + { + Background, + Air, + LayerCount + }; + + private: + sf::RenderWindow& mWindow; // reference to the render window + sf::View mWorldView; // current world's view + TextureHolder mTextures; // All the textures needed inside the world + SceneNode mSceneGraph; + std::array mSceneLayers; // Pointers to access the scene graph's layerr nodes + + sf::FloatRect mWorldBounds; // Bounding rectangle of the world + sf::Vector2f mSpawnPosition; // Where player plane appears in the beginning + float mScrollSpeed; // Speed with which the world is scrolled + Aircraft* mPlayerAircraft; // Pointer to player aircraft +}; + +// std::array is a class template for fixed size static arrays, same functionality, performance as C arrays but allows copies, assignment, passing or returning objects from the function, additional safety and usefull methods like size(), begin() or end() + +#include "world.cpp" +#endif // WORLD_HPP diff --git a/SFMLEngine/makingAGameTick/SceneNode.cpp b/SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/SceneNode.cpp similarity index 100% rename from SFMLEngine/makingAGameTick/SceneNode.cpp rename to SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/SceneNode.cpp diff --git a/SFMLEngine/makingAGameTick/SceneNode.hpp b/SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/SceneNode.hpp similarity index 100% rename from SFMLEngine/makingAGameTick/SceneNode.hpp rename to SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/SceneNode.hpp diff --git a/SFMLEngine/makingAGameTick/SpriteNode.cpp b/SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/SpriteNode.cpp similarity index 100% rename from SFMLEngine/makingAGameTick/SpriteNode.cpp rename to SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/SpriteNode.cpp diff --git a/SFMLEngine/makingAGameTick/SpriteNode.hpp b/SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/SpriteNode.hpp similarity index 100% rename from SFMLEngine/makingAGameTick/SpriteNode.hpp rename to SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/SpriteNode.hpp diff --git a/SFMLEngine/makingAGameTick/aircraft.cpp b/SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/aircraft.cpp similarity index 100% rename from SFMLEngine/makingAGameTick/aircraft.cpp rename to SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/aircraft.cpp diff --git a/SFMLEngine/makingAGameTick/aircraft.hpp b/SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/aircraft.hpp similarity index 100% rename from SFMLEngine/makingAGameTick/aircraft.hpp rename to SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/aircraft.hpp diff --git a/SFMLEngine/makingAGameTick/entity.cpp b/SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/entity.cpp similarity index 100% rename from SFMLEngine/makingAGameTick/entity.cpp rename to SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/entity.cpp diff --git a/SFMLEngine/makingAGameTick/entity.hpp b/SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/entity.hpp similarity index 100% rename from SFMLEngine/makingAGameTick/entity.hpp rename to SFMLEngine/makingAGameTick/Classes/SceneNodeDerrivatives/entity.hpp diff --git a/SFMLEngine/makingAGameTick/app b/SFMLEngine/makingAGameTick/app index e0b64d2..d55588a 100755 Binary files a/SFMLEngine/makingAGameTick/app and b/SFMLEngine/makingAGameTick/app differ diff --git a/SFMLEngine/makingAGameTick/constants.hpp b/SFMLEngine/makingAGameTick/constants.hpp index 6074f09..416335b 100644 --- a/SFMLEngine/makingAGameTick/constants.hpp +++ b/SFMLEngine/makingAGameTick/constants.hpp @@ -25,4 +25,11 @@ const sf::Time TIME_PER_FRAME = sf::seconds(1.f / 60.f); // 1 frame is 1 / 60 of // Error strings const std::string TEXTURE_LOAD_ERROR = "TextureHolder::load - Failed to load "; +// World constants +const float WORLD_LEFT_X_POSITION = 0; +const float WORLD_TOP_Y_POSITION = 0; +// const float WORLD_WIDTH = 0; by default mWorldView.getSize().x +const float WORLD_HEIGHT = 2000; +const float WORLD_SCROLL_SPEED = -1; + #endif // CONSTANTS_HPP diff --git a/SFMLEngine/makingAGameTick/game.cpp b/SFMLEngine/makingAGameTick/game.cpp index 54296a7..a76d7ad 100644 --- a/SFMLEngine/makingAGameTick/game.cpp +++ b/SFMLEngine/makingAGameTick/game.cpp @@ -4,16 +4,18 @@ #include #include #include "constants.hpp" -#include "resources.hpp" -#include "SceneNode.hpp" -#include "SpriteNode.hpp" -#include "entity.hpp" -#include "aircraft.hpp" +#include "./Classes/Other/resources.hpp" +#include "./Classes/Other/world.hpp" +#include "./Classes/SceneNodeDerrivatives/SceneNode.hpp" +#include "./Classes/SceneNodeDerrivatives/SpriteNode.hpp" +#include "./Classes/SceneNodeDerrivatives/entity.hpp" +#include "./Classes/SceneNodeDerrivatives/aircraft.hpp" #include "basic.cpp" + class Game { public: diff --git a/SFMLEngine/makingAGameTick/game.o b/SFMLEngine/makingAGameTick/game.o index f47628b..ce0fb1d 100644 Binary files a/SFMLEngine/makingAGameTick/game.o and b/SFMLEngine/makingAGameTick/game.o differ diff --git a/SFMLEngine/makingAGameTick/world.cpp b/SFMLEngine/makingAGameTick/world.cpp deleted file mode 100644 index 03318ff..0000000 --- a/SFMLEngine/makingAGameTick/world.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#ifndef WORLD_CPP // ZA WARUDO -#define WORLD_CPP - - -#endif WORLD_CPP diff --git a/SFMLEngine/makingAGameTick/world.hpp b/SFMLEngine/makingAGameTick/world.hpp deleted file mode 100644 index 5eb8c09..0000000 --- a/SFMLEngine/makingAGameTick/world.hpp +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef WORLD_HPP // ZA WARUDO -#define WORLD_HPP - - - -#include "world.cpp" -#endif WORLD_HPP