aboutsummaryrefslogtreecommitdiff
path: root/src/crepe
diff options
context:
space:
mode:
authorheavydemon21 <nielsstunnebrink1@gmail.com>2024-11-20 12:07:07 +0100
committerheavydemon21 <nielsstunnebrink1@gmail.com>2024-11-20 12:07:07 +0100
commitbdc81e355e5bee5d2a3e29346ba08f7bc55196ca (patch)
treea5a62ba0b7fd5a354b6523cff768099281d317a1 /src/crepe
parent88f613cbb2e4aaf3ed55ac0c6490706dd6f6f19d (diff)
adjusted branch based on feedback
Diffstat (limited to 'src/crepe')
-rw-r--r--src/crepe/api/Animator.cpp2
-rw-r--r--src/crepe/api/Camera.h18
-rw-r--r--src/crepe/api/Vector2.cpp4
-rw-r--r--src/crepe/api/Vector2.h2
-rw-r--r--src/crepe/facade/SDLContext.cpp7
-rw-r--r--src/crepe/system/AnimatorSystem.cpp2
-rw-r--r--src/crepe/system/RenderSystem.cpp1
7 files changed, 15 insertions, 21 deletions
diff --git a/src/crepe/api/Animator.cpp b/src/crepe/api/Animator.cpp
index f3d809c..d206428 100644
--- a/src/crepe/api/Animator.cpp
+++ b/src/crepe/api/Animator.cpp
@@ -18,7 +18,7 @@ Animator::Animator(game_object_id_t id, Sprite & ss, int row, int col, int col_a
animator_rect.h /= col;
animator_rect.w /= row;
animator_rect.x = 0;
- animator_rect.y = (col_animator - 1)* animator_rect.h;
+ animator_rect.y = (col_animator - 1) * animator_rect.h;
this->active = false;
}
Animator::~Animator() { dbg_trace(); }
diff --git a/src/crepe/api/Camera.h b/src/crepe/api/Camera.h
index dfccd24..d7292ef 100644
--- a/src/crepe/api/Camera.h
+++ b/src/crepe/api/Camera.h
@@ -28,25 +28,17 @@ public:
//! Background color of the camera view.
Color bg_color;
- /**
- * \pos The position of the camera in world units
- */
+ //! pos The position of the camera in world units
Vector2 pos = {0, 0};
- /**
- * \screen the display size in pixels ( output resolution )
- */
+ //! screen the display size in pixels ( output resolution )
Vector2 screen = {640, 480};
- /**
- * \viewport is the area of the world visible through the camera (in world units)
- */
+ //! viewport is the area of the world visible through the camera (in world units)
Vector2 viewport = {500, 500};
- /**
- * \scale scaling factor from world units to pixel coordinates
- */
- Vector2 scale = {0,0};
+ //! scale scaling factor from world units to pixel coordinates
+ Vector2 scale = {0, 0};
//! Zoom level of the camera view.
double zoom = 1.0f;
diff --git a/src/crepe/api/Vector2.cpp b/src/crepe/api/Vector2.cpp
index c3a49b7..8658c00 100644
--- a/src/crepe/api/Vector2.cpp
+++ b/src/crepe/api/Vector2.cpp
@@ -8,14 +8,16 @@ Vector2 Vector2::operator+(const Vector2 & other) const { return {x + other.x, y
Vector2 Vector2::operator*(double scalar) const { return {x * scalar, y * scalar}; }
-Vector2 Vector2::operator*(const Vector2 & other) const{
+Vector2 Vector2::operator*(const Vector2 & other) const {
return {this->x * other.x, this->y * other.y};
}
+
Vector2 & Vector2::operator*=(const Vector2 & other) {
x *= other.x;
y *= other.y;
return *this;
}
+
Vector2 & Vector2::operator*=(const double & other) {
x *= other;
y *= other;
diff --git a/src/crepe/api/Vector2.h b/src/crepe/api/Vector2.h
index 2a5db1d..790160d 100644
--- a/src/crepe/api/Vector2.h
+++ b/src/crepe/api/Vector2.h
@@ -18,6 +18,7 @@ struct Vector2 {
//! Multiplies this vector by a scalar and returns the result.
Vector2 operator*(double scalar) const;
+ //! Multiplies this vector by another vector element-wise and updates this vector.
Vector2 operator*(const Vector2 & other) const;
//! Multiplies this vector by another vector element-wise and updates this vector.
@@ -26,6 +27,7 @@ struct Vector2 {
//! Multiplies a scalar value to both components of this vector and updates this vector.
Vector2 & operator*=(const double & other);
+ //! Divides this vector by another vector element-wise and updates this vector.
Vector2 operator/(const Vector2 & other) const;
//! Adds another vector to this vector and updates this vector.
diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp
index 785b285..0cb7be9 100644
--- a/src/crepe/facade/SDLContext.cpp
+++ b/src/crepe/facade/SDLContext.cpp
@@ -38,7 +38,7 @@ SDLContext::SDLContext() {
}
SDL_Window * tmp_window
= SDL_CreateWindow("Crepe Game Engine", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
- this->viewport.w, this->viewport.h, SDL_WINDOW_RESIZABLE);
+ this->viewport.w, this->viewport.h, 0);
if (!tmp_window) {
// FIXME: throw exception
std::cerr << "Window could not be created! SDL_Error: " << SDL_GetError() << std::endl;
@@ -104,13 +104,11 @@ void SDLContext::handle_events(bool & running) {
void SDLContext::clear_screen() { SDL_RenderClear(this->game_renderer.get()); }
void SDLContext::present_screen() { SDL_RenderPresent(this->game_renderer.get()); }
-
void SDLContext::draw(const Sprite & sprite, const Transform & transform, const Camera & cam) {
SDL_RendererFlip render_flip
= (SDL_RendererFlip) ((SDL_FLIP_HORIZONTAL * sprite.flip.flip_x)
| (SDL_FLIP_VERTICAL * sprite.flip.flip_y));
-
Vector2 pixel_coord = (transform.position - cam.pos) * cam.scale;
double pixel_w = sprite.sprite_rect.w * transform.scale * cam.scale.x;
@@ -148,11 +146,10 @@ void SDLContext::camera(Camera & cam) {
cam.scale.y = cam.scale.x = cam.screen.y / zoomed_viewport.y;
}
-
if (this->viewport.w != cam.screen.x && this->viewport.h != cam.screen.y) {
this->viewport.w = cam.screen.x;
this->viewport.h = cam.screen.y;
- SDL_SetWindowSize(this->game_window.get(), cam.screen.x , cam.screen.y);
+ SDL_SetWindowSize(this->game_window.get(), cam.screen.x, cam.screen.y);
}
SDL_SetRenderDrawColor(this->game_renderer.get(), cam.bg_color.r, cam.bg_color.g,
diff --git a/src/crepe/system/AnimatorSystem.cpp b/src/crepe/system/AnimatorSystem.cpp
index ceb5bfd..efe0e48 100644
--- a/src/crepe/system/AnimatorSystem.cpp
+++ b/src/crepe/system/AnimatorSystem.cpp
@@ -3,8 +3,8 @@
#include <vector>
#include "api/Animator.h"
-
#include "facade/SDLContext.h"
+
#include "AnimatorSystem.h"
#include "ComponentManager.h"
diff --git a/src/crepe/system/RenderSystem.cpp b/src/crepe/system/RenderSystem.cpp
index 989a82f..7538e20 100644
--- a/src/crepe/system/RenderSystem.cpp
+++ b/src/crepe/system/RenderSystem.cpp
@@ -13,6 +13,7 @@ using namespace crepe;
void RenderSystem::clear_screen() const { SDLContext::get_instance().clear_screen(); }
void RenderSystem::present_screen() const { SDLContext::get_instance().present_screen(); }
+
void RenderSystem::update_camera() {
ComponentManager & mgr = this->component_manager;