aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/crepe/api')
-rw-r--r--src/crepe/api/Animator.cpp30
-rw-r--r--src/crepe/api/Animator.h25
-rw-r--r--src/crepe/api/Camera.cpp6
-rw-r--r--src/crepe/api/Camera.h22
-rw-r--r--src/crepe/api/Config.h2
-rw-r--r--src/crepe/api/Sprite.cpp4
-rw-r--r--src/crepe/api/Sprite.h30
-rw-r--r--src/crepe/api/Transform.h4
8 files changed, 74 insertions, 49 deletions
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 <sys/types.h>
+
#include "Component.h"
#include "Sprite.h"
#include "types.h"
-#include <sys/types.h>
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:
/**