From 05e099c03a2242bf5194d06191a0ff667d404817 Mon Sep 17 00:00:00 2001 From: heavydemon21 Date: Fri, 6 Dec 2024 19:21:56 +0100 Subject: implemented feedback --- src/crepe/api/Animator.cpp | 30 +++++++++++++++--------------- src/crepe/api/Animator.h | 25 +++++++++++++++---------- src/crepe/api/Camera.cpp | 6 +++--- src/crepe/api/Camera.h | 22 +++++++++++++++++----- src/crepe/api/Config.h | 2 +- src/crepe/api/Sprite.cpp | 4 ++-- src/crepe/api/Sprite.h | 30 +++++++++++++++++++----------- src/crepe/api/Transform.h | 4 ++-- 8 files changed, 74 insertions(+), 49 deletions(-) (limited to 'src/crepe/api') diff --git a/src/crepe/api/Animator.cpp b/src/crepe/api/Animator.cpp index 8b91859..154135f 100644 --- a/src/crepe/api/Animator.cpp +++ b/src/crepe/api/Animator.cpp @@ -8,18 +8,18 @@ using namespace crepe; Animator::Animator(uint32_t id, Sprite & ss, unsigned int max_row, unsigned int max_col, - const Animator::Data & ctx) + const Animator::Data & data) : Component(id), spritesheet(ss), - row(max_row), - col(max_col), - data(ctx) { + max_rows(max_row), + max_columns(max_col), + data(data) { dbg_trace(); - this->spritesheet.mask.h /= this->col; - this->spritesheet.mask.w /= this->row; - this->spritesheet.mask.x = this->data.curr_row * this->spritesheet.mask.w; - this->spritesheet.mask.y = this->data.curr_col * this->spritesheet.mask.h; + this->spritesheet.mask.h /= this->max_columns; + this->spritesheet.mask.w /= this->max_rows; + this->spritesheet.mask.x = this->data.row * this->spritesheet.mask.w; + this->spritesheet.mask.y = this->data.col * this->spritesheet.mask.h; // need to do this for to get the aspect ratio for a single clipping in the spritesheet this->spritesheet.aspect_ratio @@ -36,8 +36,8 @@ void Animator::pause() { this->active = false; } void Animator::stop() { this->active = false; - this->data.curr_col = 0; - this->data.curr_row = 0; + this->data.col = 0; + this->data.row = 0; } void Animator::set_fps(int fps) { this->data.fps = fps; } @@ -47,13 +47,13 @@ void Animator::set_cycle_range(int start, int end) { void Animator::set_anim(int col) { Animator::Data & ctx = this->data; - this->spritesheet.mask.x = ctx.curr_row = 0; - ctx.curr_col = col; - this->spritesheet.mask.y = ctx.curr_col * this->spritesheet.mask.h; + this->spritesheet.mask.x = ctx.row = 0; + ctx.col = col; + this->spritesheet.mask.y = ctx.col * this->spritesheet.mask.h; } void Animator::next_anim() { Animator::Data & ctx = this->data; - ctx.curr_row = ctx.curr_row++ % this->row; - this->spritesheet.mask.x = ctx.curr_row * this->spritesheet.mask.w; + ctx.row = ctx.row++ % this->max_rows; + this->spritesheet.mask.x = ctx.row * this->spritesheet.mask.w; } diff --git a/src/crepe/api/Animator.h b/src/crepe/api/Animator.h index 2a0a889..23d29f6 100644 --- a/src/crepe/api/Animator.h +++ b/src/crepe/api/Animator.h @@ -1,9 +1,10 @@ #pragma once +#include + #include "Component.h" #include "Sprite.h" #include "types.h" -#include namespace crepe { @@ -25,10 +26,10 @@ public: unsigned int fps = 1; //! The current col being animated. - unsigned int curr_col = 0; + unsigned int col = 0; //! The current row being animated. - unsigned int curr_row = 0; + unsigned int row = 0; //! should the animation loop bool looping = false; @@ -105,26 +106,30 @@ public: * \param ss the reference to the spritesheet * \param max_row maximum of rows inside the given spritesheet * \param max_col maximum of columns inside the given spritesheet - * \param ctx extra animation data for more control + * \param data extra animation data for more control * * This constructor sets up the Animator with the given parameters, and initializes the * animation system. */ Animator(game_object_id_t id, Sprite & ss, unsigned int max_row, unsigned int max_col, - const Animator::Data & ctx); + const Animator::Data & data); ~Animator(); // dbg_trace public: - //! A reference to the Sprite sheet containing. - Sprite & spritesheet; - //! The maximum number of columns in the sprite sheet. - const unsigned int col; + const unsigned int max_columns; //! The maximum number of rows in the sprite sheet. - const unsigned int row; + const unsigned int max_rows; Animator::Data data; + +private: + //! A reference to the Sprite sheet containing. + Sprite & spritesheet; + + // uses the spritesheet + friend AnimatorSystem; }; } // namespace crepe // diff --git a/src/crepe/api/Camera.cpp b/src/crepe/api/Camera.cpp index b042c35..179dc18 100644 --- a/src/crepe/api/Camera.cpp +++ b/src/crepe/api/Camera.cpp @@ -1,17 +1,17 @@ -#include "types.h" #include "util/Log.h" #include "Camera.h" #include "Component.h" +#include "types.h" using namespace crepe; Camera::Camera(game_object_id_t id, const ivec2 & screen, const vec2 & viewport_size, - const Data & ctx) + const Data & data) : Component(id), screen(screen), viewport_size(viewport_size), - data(ctx) { + data(data) { dbg_trace(); } diff --git a/src/crepe/api/Camera.h b/src/crepe/api/Camera.h index 84ca9e1..54d9a73 100644 --- a/src/crepe/api/Camera.h +++ b/src/crepe/api/Camera.h @@ -16,10 +16,20 @@ namespace crepe { class Camera : public Component { public: struct Data { - //! Background color of the camera view. - const Color bg_color = Color::WHITE; + /** + * \bg_color background color of the game + * + * This will make the background the same color as the given value. + */ + const Color bg_color = Color::BLACK; - //! Zoom level of the camera view. + /** + * \zoom Zooming level of the game + * + * zoom = 1 --> no zoom. + * zoom < 1 --> zoom out + * zoom > 1 --> zoom in + */ double zoom = 1; //! offset postion from the game object transform component @@ -30,10 +40,12 @@ public: /** * \brief Constructs a Camera with the specified ID and background color. * \param id Unique identifier for the camera component. - * \param ctx the camera component data + * \param screen is the actual screen size in pixels + * \param viewport_size is the view of the world in game units + * \param data the camera component data */ Camera(game_object_id_t id, const ivec2 & screen, const vec2 & viewport_size, - const Data & ctx); + const Camera::Data & data); ~Camera(); // dbg_trace only public: diff --git a/src/crepe/api/Config.h b/src/crepe/api/Config.h index 200a3b0..f1bca62 100644 --- a/src/crepe/api/Config.h +++ b/src/crepe/api/Config.h @@ -66,7 +66,7 @@ public: //! default window settings struct { - //TODO make this constexpr because this will never change + //! default screen size in pixels ivec2 default_size = {1280, 720}; std::string window_title = "Jetpack joyride clone"; diff --git a/src/crepe/api/Sprite.cpp b/src/crepe/api/Sprite.cpp index b52a344..cc0e20a 100644 --- a/src/crepe/api/Sprite.cpp +++ b/src/crepe/api/Sprite.cpp @@ -11,10 +11,10 @@ using namespace std; using namespace crepe; -Sprite::Sprite(game_object_id_t id, Texture & texture, const Sprite::Data & ctx) +Sprite::Sprite(game_object_id_t id, Texture & texture, const Sprite::Data & data) : Component(id), texture(std::move(texture)), - data(ctx) { + data(data) { dbg_trace(); diff --git a/src/crepe/api/Sprite.h b/src/crepe/api/Sprite.h index 78ed7ad..ea8104c 100644 --- a/src/crepe/api/Sprite.h +++ b/src/crepe/api/Sprite.h @@ -28,8 +28,15 @@ public: bool flip_y = false; }; + //! Sprite data that does not have to be set in the constructor struct Data { - //! Color tint of the sprite + /** + * \color tint of the sprite + * + * the default value is white because of the color multiplier. + * this means that the orginal image will be shown. if color is BLACK for example + * then it turns the image black because of the Color channels being 0. + */ Color color = Color::WHITE; //! Flip settings for the sprite @@ -44,10 +51,10 @@ public: /** * \size width and height of the sprite in game units * - * if height is filled in and not width it will multiply width by aspect_ratio. - * if width is filled in and not height it will multiply height by aspect_ratio. - * if neither is filled it will not show sprite because size will be zero - * if both are filled will it use the width and height without making sure the aspect_ratio + * - if height is filled in and not width it will multiply width by aspect_ratio. + * - if width is filled in and not height it will multiply height by aspect_ratio. + * - if neither is filled it will not show sprite because size will be zero + * - if both are filled will it use the width and height without making sure the aspect_ratio * is correct */ vec2 size; @@ -69,7 +76,7 @@ public: * \param texture asset of the image * \param ctx all the sprite data */ - Sprite(game_object_id_t id, Texture & texture, const Data & ctx); + Sprite(game_object_id_t id, Texture & texture, const Data & data); ~Sprite(); //! Texture used for the sprite @@ -79,11 +86,12 @@ public: private: /** - * \aspect_ratio ratio of the img so that scaling will not become weird - * - * cannot be const because if Animator component is addded then ratio becomes scuffed and - * does it need to be calculated again in the Animator - */ + * \aspect_ratio ratio of the img + * + * - This will multiply one of \c size variable if it is 0. + * - Will be adjusted if \c Animator component is added to an GameObject + * that is why this value cannot be const. + */ float aspect_ratio; //! Reads the mask of sprite diff --git a/src/crepe/api/Transform.h b/src/crepe/api/Transform.h index 34ac70a..3ef0fb5 100644 --- a/src/crepe/api/Transform.h +++ b/src/crepe/api/Transform.h @@ -16,9 +16,9 @@ public: //! Translation (shift) vec2 position = {0, 0}; //! Rotation, in degrees clockwise - double rotation = 0; + float rotation = 0; //! Multiplication factor - double scale = 0; + float scale = 0; protected: /** -- cgit v1.2.3