diff options
-rw-r--r-- | src/crepe/api/Animator.h | 14 | ||||
-rw-r--r-- | src/crepe/api/Camera.h | 26 | ||||
-rw-r--r-- | src/crepe/api/Sprite.h | 36 | ||||
-rw-r--r-- | src/crepe/api/Texture.cpp | 16 | ||||
-rw-r--r-- | src/crepe/api/Texture.h | 1 | ||||
-rw-r--r-- | src/crepe/facade/SDLContext.cpp | 17 | ||||
-rw-r--r-- | src/crepe/facade/SDLContext.h | 49 | ||||
-rw-r--r-- | src/crepe/system/AnimatorSystem.cpp | 2 |
8 files changed, 60 insertions, 101 deletions
diff --git a/src/crepe/api/Animator.h b/src/crepe/api/Animator.h index ede1610..42ce957 100644 --- a/src/crepe/api/Animator.h +++ b/src/crepe/api/Animator.h @@ -28,11 +28,11 @@ public: /** * \brief Constructs an Animator object that will control animations for a sprite sheet. * - * \param[in] id The unique identifier for the component, typically assigned automatically. - * \param[in] spritesheet A reference to the Sprite object which holds the sprite sheet for animation. - * \param[in] row The maximum number of rows in the sprite sheet. - * \param[in] col The maximum number of columns in the sprite sheet. - * \param[in] col__animate The specific col index of the sprite sheet to animate. This allows selecting which col to animate from multiple col in the sheet. + * \param id The unique identifier for the component, typically assigned automatically. + * \param spritesheet A reference to the Sprite object which holds the sprite sheet for animation. + * \param row The maximum number of rows in the sprite sheet. + * \param col The maximum number of columns in the sprite sheet. + * \param col__animate The specific col index of the sprite sheet to animate. This allows selecting which col to animate from multiple col in the sheet. * * This constructor sets up the Animator with the given parameters, and initializes the animation system. */ @@ -80,8 +80,10 @@ private: //int fps; private: - //! Friend class that can directly access the private members of the Animator. + //! AnimatorSystem adjust the private member parameters of Animator; friend class AnimatorSystem; + + //! SDLContext reads the Animator member var's friend class SDLContext; }; } // namespace crepe diff --git a/src/crepe/api/Camera.h b/src/crepe/api/Camera.h index 7587b44..708a523 100644 --- a/src/crepe/api/Camera.h +++ b/src/crepe/api/Camera.h @@ -2,8 +2,8 @@ #include <cstdint> -#include "Component.h" #include "Color.h" +#include "Component.h" namespace crepe { @@ -31,34 +31,22 @@ public: ~Camera(); public: - /** - * \brief Background color of the camera view. - */ + //! \brief Background color of the camera view. Color bg_color; - /** - * \brief Aspect ratio height for the camera. - */ + //! \brief Aspect ratio height for the camera. double aspect_height; - /** - * \brief Aspect ratio width for the camera. - */ + //! \brief Aspect ratio width for the camera. double aspect_width; - /** - * \brief X-coordinate of the camera position. - */ + //! \brief X-coordinate of the camera position. double x; - /** - * \brief Y-coordinate of the camera position. - */ + //! \brief Y-coordinate of the camera position. double y; - /** - * \brief Zoom level of the camera view. - */ + //! \brief Zoom level of the camera view. double zoom; public: diff --git a/src/crepe/api/Sprite.h b/src/crepe/api/Sprite.h index 51cb860..1db32d7 100644 --- a/src/crepe/api/Sprite.h +++ b/src/crepe/api/Sprite.h @@ -10,13 +10,6 @@ namespace crepe { -/** - * \struct Rect - * \brief Represents a rectangle area for rendering. - * - * Everything within the defined rectangle will be rendered. - * The SDLContext will translate this into the library's rectangle structure. - */ struct Rect { int w = 0; int h = 0; @@ -24,29 +17,16 @@ struct Rect { int y = 0; }; -/** - * \struct FlipSettings - * \brief Flip settings for the sprite. - * - * Defines the horizontal and vertical flip settings for a sprite, which the - * SDLContext will translate into the corresponding settings for the library. - */ struct FlipSettings { bool flip_x = false; bool flip_y = false; }; -//! Forward declaration of the SDLContext facade. class SDLContext; - -//! Forward declaration of the Animator class. class Animator; - -//! Forward declaration of the AnimatorSystem class. class AnimatorSystem; /** - * \class Sprite * \brief Represents a renderable sprite component. * * A renderable sprite that can be displayed in the game. It includes a texture, @@ -55,6 +35,9 @@ class AnimatorSystem; class Sprite : public Component { public: + + // TODO: Loek comment in github #27 will be looked another time + // about shared_ptr Texture /** * \brief Constructs a Sprite with specified parameters. * \param game_id Unique identifier for the game object this sprite belongs to. @@ -78,23 +61,30 @@ public: //! Flip settings for the sprite FlipSettings flip; //! Layer sorting level of the sprite - uint8_t sorting_in_layer; + uint8_t sorting_in_layer = 0; //! Order within the sorting layer - uint8_t order_in_layer; + uint8_t order_in_layer = 0; public: /** * \brief Gets the maximum number of instances allowed for this sprite. * \return Maximum instance count as an integer. + * + * For now is this number randomly picked. I think it will eventually be 1. */ virtual int get_instances_max() const { return 10; } private: + //! Reads the sprite_rect of sprite friend class SDLContext; + + //! Reads the all the variables plus the sprite_rect friend class Animator; + + //! Reads the all the variables plus the sprite_rect friend class AnimatorSystem; - //! Render area of the sprite + //! Render area of the sprite this will also be adjusted by the AnimatorSystem if an Animator object is present in GameObject Rect sprite_rect; }; diff --git a/src/crepe/api/Texture.cpp b/src/crepe/api/Texture.cpp index 5519e5e..e6c2e05 100644 --- a/src/crepe/api/Texture.cpp +++ b/src/crepe/api/Texture.cpp @@ -32,18 +32,10 @@ void Texture::load(unique_ptr<Asset> res) { } int Texture::get_width() const{ - if (this->texture) { - return SDLContext::get_instance().get_width(*this); - } - else { - return 0; - } + if (this->texture == nullptr) return 0; + return SDLContext::get_instance().get_width(*this); } int Texture::get_height() const{ - if (this->texture) { - return SDLContext::get_instance().get_height(*this); - } - else { - return 0; - } + if (this->texture == nullptr) return 0; + return SDLContext::get_instance().get_width(*this); } diff --git a/src/crepe/api/Texture.h b/src/crepe/api/Texture.h index 6d99a93..828518d 100644 --- a/src/crepe/api/Texture.h +++ b/src/crepe/api/Texture.h @@ -64,6 +64,7 @@ private: void load(std::unique_ptr<Asset> res); private: + //TODO make RAII //! The texture of the class from the library SDL_Texture * texture = nullptr; diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp index 9a2d15a..cedb7b8 100644 --- a/src/crepe/facade/SDLContext.cpp +++ b/src/crepe/facade/SDLContext.cpp @@ -7,6 +7,7 @@ #include <cmath> #include <cstddef> #include <iostream> +#include <string> #include "../api/Sprite.h" #include "../api/Texture.h" @@ -98,13 +99,15 @@ void SDLContext::handle_events(bool & running) { */ } -void SDLContext::clear_screen() const { SDL_RenderClear(this->game_renderer); } -void SDLContext::present_screen() const { SDL_RenderPresent(this->game_renderer); } +void SDLContext::clear_screen() { SDL_RenderClear(this->game_renderer); } +void SDLContext::present_screen() { + SDL_RenderPresent(this->game_renderer); +} void SDLContext::draw(const Sprite & sprite, const Transform & transform, - const Camera & cam) const { + const Camera & cam) { - static SDL_RendererFlip render_flip + SDL_RendererFlip render_flip = (SDL_RendererFlip) ((SDL_FLIP_HORIZONTAL * sprite.flip.flip_x) | (SDL_FLIP_VERTICAL * sprite.flip.flip_y)); @@ -147,10 +150,10 @@ void SDLContext::camera(const Camera & cam) { const uint64_t SDLContext::get_ticks() const { return SDL_GetTicks64(); } -SDL_Texture * SDLContext::texture_from_path(const char * path) const { - dbg_trace(); +//TODO: make this RAII +SDL_Texture * SDLContext::texture_from_path(const std::string & path) { - SDL_Surface * tmp = IMG_Load(path); + SDL_Surface * tmp = IMG_Load(path.c_str()); if (!tmp) { std::cerr << "Error surface " << IMG_GetError << std::endl; } diff --git a/src/crepe/facade/SDLContext.h b/src/crepe/facade/SDLContext.h index 3396697..80b76dd 100644 --- a/src/crepe/facade/SDLContext.h +++ b/src/crepe/facade/SDLContext.h @@ -3,18 +3,18 @@ #include <SDL2/SDL_keycode.h> #include <SDL2/SDL_render.h> #include <SDL2/SDL_video.h> +#include <string> #include "../api/Sprite.h" #include "../api/Transform.h" #include "api/Camera.h" -typedef SDL_Keycode CREPE_KEYCODES; - //FIXME: this needs to be removed const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; namespace crepe { +typedef SDL_Keycode CREPE_KEYCODES; class Texture; class LoopManager; @@ -35,29 +35,13 @@ public: */ static SDLContext & get_instance(); - /** - * \brief Deleted copy constructor. - */ SDLContext(const SDLContext &) = delete; - - /** - * \brief Deleted move constructor. - */ SDLContext(SDLContext &&) = delete; - - /** - * \brief Deleted copy assignment operator. - * \return Reference to the SDLContext instance. - */ SDLContext & operator=(const SDLContext &) = delete; - - /** - * \brief Deleted move assignment operator. - * \return Reference to the SDLContext instance. - */ SDLContext & operator=(SDLContext &&) = delete; private: + //! will only use handle_events friend class LoopManager; /** * \brief Handles SDL events such as window close and input. @@ -65,8 +49,8 @@ private: */ void handle_events(bool & running); - private: + //! Will only use get_ticks friend class AnimatorSystem; /** @@ -75,7 +59,6 @@ private: */ const uint64_t get_ticks() const; - private: /** * \brief Constructs an SDLContext instance. @@ -87,13 +70,13 @@ private: * \brief Destroys the SDLContext instance. * Cleans up SDL resources, including the window and renderer. */ - virtual ~SDLContext(); - - + ~SDLContext(); private: - + //! Will use the funtions: texture_from_path, get_width,get_height. friend class Texture; + + //! Will use the funtions: texture_from_path, get_width,get_height. friend class Animator; /** @@ -101,25 +84,24 @@ private: * \param path Path to the image file. * \return Pointer to the created SDL_Texture. */ - SDL_Texture * texture_from_path(const char * path) const; + SDL_Texture * texture_from_path(const std::string & path); /** * \brief Gets the width of a texture. * \param texture Reference to the Texture object. * \return Width of the texture as an integer. */ - int get_width(const Texture & ) const ; + int get_width(const Texture &) const; /** * \brief Gets the height of a texture. * \param texture Reference to the Texture object. * \return Height of the texture as an integer. */ - int get_height(const Texture &) const ; - + int get_height(const Texture &) const; private: - + //! Will use draw,clear_screen, present_screen, camera. friend class RenderSystem; /** @@ -129,17 +111,17 @@ private: * \param camera Reference to the Camera for view adjustments. */ void draw(const Sprite & sprite, const Transform & transform, - const Camera & camera) const; + const Camera & camera); /** * \brief Clears the screen, preparing for a new frame. */ - void clear_screen() const ; + void clear_screen(); /** * \brief Presents the rendered frame to the screen. */ - void present_screen() const ; + void present_screen(); /** * \brief Sets the current camera for rendering. @@ -148,6 +130,7 @@ private: void camera(const Camera & camera); private: + //TODO: Make this RAII //! sdl window SDL_Window * game_window = nullptr; //! renderer for the crepe engine diff --git a/src/crepe/system/AnimatorSystem.cpp b/src/crepe/system/AnimatorSystem.cpp index 3d6c807..4ea889a 100644 --- a/src/crepe/system/AnimatorSystem.cpp +++ b/src/crepe/system/AnimatorSystem.cpp @@ -3,11 +3,11 @@ #include <functional> #include <vector> -#include "ComponentManager.h" #include "facade/SDLContext.h" #include "util/log.h" #include "api/Animator.h" +#include "ComponentManager.h" #include "AnimatorSystem.h" using namespace crepe; |