diff options
Diffstat (limited to 'src/crepe')
-rw-r--r-- | src/crepe/Asset.cpp | 3 | ||||
-rw-r--r-- | src/crepe/Particle.h | 2 | ||||
-rw-r--r-- | src/crepe/SDLApp.cpp | 4 | ||||
-rw-r--r-- | src/crepe/SDLContext.cpp | 8 | ||||
-rw-r--r-- | src/crepe/api/Color.cpp | 1 | ||||
-rw-r--r-- | src/crepe/api/Color.h | 2 | ||||
-rw-r--r-- | src/crepe/api/Force.cpp | 4 | ||||
-rw-r--r-- | src/crepe/api/ParticleEmitter.cpp | 8 | ||||
-rw-r--r-- | src/crepe/api/Rigidbody.h | 1 | ||||
-rw-r--r-- | src/crepe/api/Texture.h | 3 | ||||
-rw-r--r-- | src/crepe/api/Transform.h | 13 |
11 files changed, 41 insertions, 8 deletions
diff --git a/src/crepe/Asset.cpp b/src/crepe/Asset.cpp index 3cbed0b..8a2a11c 100644 --- a/src/crepe/Asset.cpp +++ b/src/crepe/Asset.cpp @@ -5,7 +5,8 @@ using namespace crepe; Asset::Asset(const std::string & src) { - //this->src = std::filesystem::canonical(src); + // FIXME: restore this + // this->src = std::filesystem::canonical(src); this->src = src; this->file = std::ifstream(this->src, std::ios::in | std::ios::binary); } diff --git a/src/crepe/Particle.h b/src/crepe/Particle.h index 6f689bd..21e691d 100644 --- a/src/crepe/Particle.h +++ b/src/crepe/Particle.h @@ -7,6 +7,8 @@ namespace crepe { class Particle { public: Position position; + // FIXME: `Position` is an awkward name for a 2D vector. See FIXME comment in + // api/Transform.h for fix proposal. Position velocity; float lifespan; bool active; diff --git a/src/crepe/SDLApp.cpp b/src/crepe/SDLApp.cpp index f408595..c6ddeaa 100644 --- a/src/crepe/SDLApp.cpp +++ b/src/crepe/SDLApp.cpp @@ -6,10 +6,12 @@ SDLApp::SDLApp(int window_width, int window_height) : window_width(window_width), window_height(window_height), window(nullptr), renderer(nullptr) {} +// FIXME: why is there clean_up and ~SDLApp? SDLApp::~SDLApp() { clean_up(); } bool SDLApp::initialize() { if (SDL_Init(SDL_INIT_VIDEO) != 0) { + // FIXME: throw exception std::cerr << "SDL Initialization Error: " << SDL_GetError() << std::endl; return false; @@ -19,12 +21,14 @@ bool SDLApp::initialize() { SDL_WINDOWPOS_CENTERED, window_width, window_height, SDL_WINDOW_SHOWN); if (!window) { + // FIXME: throw exception std::cerr << "Window Creation Error: " << SDL_GetError() << std::endl; return false; } renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); if (!renderer) { + // FIXME: throw exception std::cerr << "Renderer Creation Error: " << SDL_GetError() << std::endl; return false; } diff --git a/src/crepe/SDLContext.cpp b/src/crepe/SDLContext.cpp index 5a93679..8bc5bc6 100644 --- a/src/crepe/SDLContext.cpp +++ b/src/crepe/SDLContext.cpp @@ -40,6 +40,9 @@ SDLContext::~SDLContext() { SDL_DestroyWindow(this->game_window); } + // TODO: how are we going to ensure that these are called from the same + // thread that SDL_Init() was called on? This has caused problems for me + // before. IMG_Quit(); SDL_Quit(); } @@ -48,8 +51,10 @@ void SDLContext::clear_screen() { SDL_RenderClear(this->game_renderer); } SDLContext::SDLContext() { dbg_trace(); + // FIXME: read window defaults from config manager if (SDL_Init(SDL_INIT_VIDEO) < 0) { + // FIXME: throw exception std::cerr << "SDL could not initialize! SDL_Error: " << SDL_GetError() << std::endl; return; @@ -59,6 +64,7 @@ SDLContext::SDLContext() { "Crepe Game Engine", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1920, 1080, SDL_WINDOW_SHOWN); if (!this->game_window) { + // FIXME: throw exception std::cerr << "Window could not be created! SDL_Error: " << SDL_GetError() << std::endl; } @@ -66,6 +72,7 @@ SDLContext::SDLContext() { this->game_renderer = SDL_CreateRenderer(this->game_window, -1, SDL_RENDERER_ACCELERATED); if (!this->game_renderer) { + // FIXME: throw exception std::cerr << "Renderer could not be created! SDL_Error: " << SDL_GetError() << std::endl; SDL_DestroyWindow(this->game_window); @@ -74,6 +81,7 @@ SDLContext::SDLContext() { int img_flags = IMG_INIT_PNG; if (!(IMG_Init(img_flags) & img_flags)) { + // FIXME: throw exception std::cout << "SDL_image could not initialize! SDL_image Error: " << IMG_GetError() << std::endl; } diff --git a/src/crepe/api/Color.cpp b/src/crepe/api/Color.cpp index 71592da..fb5bd1a 100644 --- a/src/crepe/api/Color.cpp +++ b/src/crepe/api/Color.cpp @@ -11,6 +11,7 @@ Color Color::cyan = Color(0, 255, 255, 0); Color Color::yellow = Color(255, 255, 0, 0); Color Color::magenta = Color(255, 0, 255, 0); +// FIXME: do we really need double precision for color values? Color::Color(double red, double green, double blue, double alpha) { this->a = alpha; this->r = red; diff --git a/src/crepe/api/Color.h b/src/crepe/api/Color.h index 207434e..36d91ef 100644 --- a/src/crepe/api/Color.h +++ b/src/crepe/api/Color.h @@ -4,6 +4,8 @@ namespace crepe::api { class Color { + // FIXME: can't these colors be defined as a `static constexpr const Color` + // instead? public: Color(double red, double green, double blue, double alpha); static const Color & get_white(); diff --git a/src/crepe/api/Force.cpp b/src/crepe/api/Force.cpp index 98649c1..e359adc 100644 --- a/src/crepe/api/Force.cpp +++ b/src/crepe/api/Force.cpp @@ -6,6 +6,10 @@ namespace crepe::api { Force::Force(uint32_t game_object_id, uint32_t magnitude, uint32_t direction) : Component(game_object_id) { + // TODO: A standard angle unit should be established for the entire engine + // and assumed to be the default everywhere. Only conversion functions should + // explicitly contain the unit (i.e. `deg_to_rad()` & `rad_to_deg()`) + // Convert direction from degrees to radians float radian_direction = static_cast<float>(direction) * (M_PI / 180.0f); force_x = static_cast<int32_t>( diff --git a/src/crepe/api/ParticleEmitter.cpp b/src/crepe/api/ParticleEmitter.cpp index 2e07562..0b3a9ee 100644 --- a/src/crepe/api/ParticleEmitter.cpp +++ b/src/crepe/api/ParticleEmitter.cpp @@ -18,9 +18,11 @@ ParticleEmitter::ParticleEmitter(uint32_t game_object_id, std::srand( static_cast<uint32_t>(std::time(nullptr))); // initialize random seed std::cout << "Create emitter" << std::endl; - min_angle = (360 + angle - (angleOffset % 360)) % 360; // calculate minAngle - max_angle = (360 + angle + (angleOffset % 360)) % 360; // calculate maxAngle - position.x = 400; + // FIXME: Why do these expressions start with `360 +`, only to be `% 360`'d + // right after? This does not make any sense to me. + min_angle = (360 + angle - (angleOffset % 360)) % 360; + max_angle = (360 + angle + (angleOffset % 360)) % 360; + position.x = 400; // FIXME: what are these magic values? position.y = 400; for (size_t i = 0; i < max_particles; i++) { this->particles.emplace_back(); diff --git a/src/crepe/api/Rigidbody.h b/src/crepe/api/Rigidbody.h index 05cbb03..6079a76 100644 --- a/src/crepe/api/Rigidbody.h +++ b/src/crepe/api/Rigidbody.h @@ -6,6 +6,7 @@ namespace crepe::api { +// FIXME: can't this enum be defined inside the class declaration of Rigidbody? enum class BodyType { //! Does not move (e.g. walls, ground ...) STATIC, diff --git a/src/crepe/api/Texture.h b/src/crepe/api/Texture.h index 7a2c755..f8481e3 100644 --- a/src/crepe/api/Texture.h +++ b/src/crepe/api/Texture.h @@ -1,5 +1,8 @@ #pragma once +// FIXME: this header can't be included because this is an API header, and SDL2 +// development headers won't be bundled with crepe. Why is this facade in the +// API namespace? #include <SDL2/SDL_render.h> #include <memory> diff --git a/src/crepe/api/Transform.h b/src/crepe/api/Transform.h index 7b74e43..c17ae34 100644 --- a/src/crepe/api/Transform.h +++ b/src/crepe/api/Transform.h @@ -9,13 +9,18 @@ namespace crepe::api { class Transform : public Component { - + // FIXME: What's the difference between the `Point` and `Position` + // classes/structs? How about we replace both with a universal `Vec2` that + // works similar (or the same) as those found in GLSL? public: Transform(uint32_t id, Point &, double, double); ~Transform(); - Point position; // Translation (shift) - double rotation; // Rotation, in radians - double scale; // Multiplication factoh + //! Translation (shift) + Point position; + //! Rotation, in radians + double rotation; + //! Multiplication factor + double scale; }; } // namespace crepe::api |