aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/crepe/Asset.cpp3
-rw-r--r--src/crepe/Particle.h2
-rw-r--r--src/crepe/SDLApp.cpp4
-rw-r--r--src/crepe/SDLContext.cpp8
-rw-r--r--src/crepe/api/Color.cpp1
-rw-r--r--src/crepe/api/Color.h2
-rw-r--r--src/crepe/api/Force.cpp4
-rw-r--r--src/crepe/api/ParticleEmitter.cpp8
-rw-r--r--src/crepe/api/Rigidbody.h1
-rw-r--r--src/crepe/api/Texture.h3
-rw-r--r--src/crepe/api/Transform.h13
-rw-r--r--src/example/asset_manager.cpp8
-rw-r--r--src/example/particle.cpp1
13 files changed, 49 insertions, 9 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
diff --git a/src/example/asset_manager.cpp b/src/example/asset_manager.cpp
index 7aa4ffe..7e15d1f 100644
--- a/src/example/asset_manager.cpp
+++ b/src/example/asset_manager.cpp
@@ -8,12 +8,18 @@ using namespace crepe;
using namespace crepe::api;
int main() {
- // this needs to be called before the asset manager otherwise the destructor of sdl is not in the right order
+ // this needs to be called before the asset manager otherwise the destructor
+ // of sdl is not in the right order
{ Texture test("../asset/texture/img.png"); }
+ // FIXME: make it so the issue described by the above comment is not possible
+ // (i.e. the order in which internal classes are instantiated should not
+ // impact the way the engine works).
auto & mgr = AssetManager::get_instance();
{
+ // TODO: [design] the Sound class can't be directly included by the user as
+ // it includes SoLoud headers.
auto bgm = mgr.cache<Sound>("../mwe/audio/bgm.ogg");
auto sfx1 = mgr.cache<Sound>("../mwe/audio/sfx1.wav");
auto sfx2 = mgr.cache<Sound>("../mwe/audio/sfx2.wav");
diff --git a/src/example/particle.cpp b/src/example/particle.cpp
index 943f83b..53fa213 100644
--- a/src/example/particle.cpp
+++ b/src/example/particle.cpp
@@ -27,6 +27,7 @@ int main(int argc, char * argv[]) {
GameObject * game_object[1];
game_object[0] = new GameObject(0, "Name", "Tag", 0);
+ // FIXME: all systems are singletons, so this shouldn't even compile.
ParticleSystem particle_system;
unsigned int max_particles = 100; // maximum number of particles