From 7c9d3452c99fcb89ea6df55755e90f741b23cf10 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Sun, 6 Oct 2024 13:22:10 +0200 Subject: copy homemade ECS to crepe + correct code style --- contributing.md | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'contributing.md') diff --git a/contributing.md b/contributing.md index 2ff411a..933f1bf 100644 --- a/contributing.md +++ b/contributing.md @@ -17,6 +17,11 @@ # Code style - ASCII only +- Explanatory comments are placed above the line(s) they are explaining +- Source files should only contain comments that plainly state what the code is + supposed to do +- Explanatory comments in headers may be used to clarify implementation design + decisions - Formatting nitty-gritty is handled by clang-format/clang-tidy (run `make format` in the root folder of this repository to format all sources files) - When using libraries of which the header include order is important, make -- cgit v1.2.3 From aa8755148cbca29b584f7a146636b506070717f9 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Sun, 6 Oct 2024 15:28:12 +0200 Subject: move components to separate files --- contributing.md | 1 + src/crepe/CMakeLists.txt | 10 ++++++++-- src/crepe/Collider.cpp | 6 ++++++ src/crepe/Collider.h | 15 ++++++++++++++ src/crepe/Component.cpp | 6 ++++++ src/crepe/Component.h | 15 ++++++++++++++ src/crepe/ComponentManager.h | 2 +- src/crepe/Components.cpp | 13 ------------- src/crepe/Components.h | 39 ------------------------------------- src/crepe/Rigidbody.cpp | 7 +++++++ src/crepe/Rigidbody.h | 16 +++++++++++++++ src/crepe/Sprite.cpp | 9 +++++++++ src/crepe/Sprite.h | 17 ++++++++++++++++ src/example/components_internal.cpp | 5 ++++- 14 files changed, 105 insertions(+), 56 deletions(-) create mode 100644 src/crepe/Collider.cpp create mode 100644 src/crepe/Collider.h create mode 100644 src/crepe/Component.cpp create mode 100644 src/crepe/Component.h delete mode 100644 src/crepe/Components.cpp delete mode 100644 src/crepe/Components.h create mode 100644 src/crepe/Rigidbody.cpp create mode 100644 src/crepe/Rigidbody.h create mode 100644 src/crepe/Sprite.cpp create mode 100644 src/crepe/Sprite.h (limited to 'contributing.md') diff --git a/contributing.md b/contributing.md index 933f1bf..b79f7a7 100644 --- a/contributing.md +++ b/contributing.md @@ -17,6 +17,7 @@ # Code style - ASCII only +- Class names are always singular - Explanatory comments are placed above the line(s) they are explaining - Source files should only contain comments that plainly state what the code is supposed to do diff --git a/src/crepe/CMakeLists.txt b/src/crepe/CMakeLists.txt index 5840208..d7d563e 100644 --- a/src/crepe/CMakeLists.txt +++ b/src/crepe/CMakeLists.txt @@ -3,8 +3,11 @@ target_sources(crepe PUBLIC Sound.cpp SoundContext.cpp ComponentManager.cpp - Components.cpp + Component.cpp GameObject.cpp + Collider.cpp + Rigidbody.cpp + Sprite.cpp ) target_sources(crepe PUBLIC FILE_SET HEADERS FILES @@ -13,9 +16,12 @@ target_sources(crepe PUBLIC FILE_SET HEADERS FILES SoundContext.h ComponentManager.h ComponentManager.hpp - Components.h + Component.h GameObject.h GameObject.hpp + Collider.h + Rigidbody.h + Sprite.h ) add_subdirectory(api) diff --git a/src/crepe/Collider.cpp b/src/crepe/Collider.cpp new file mode 100644 index 0000000..b7040eb --- /dev/null +++ b/src/crepe/Collider.cpp @@ -0,0 +1,6 @@ +#include "Collider.h" + +using namespace crepe; + +Collider::Collider(int size) : size(size) {} + diff --git a/src/crepe/Collider.h b/src/crepe/Collider.h new file mode 100644 index 0000000..666386d --- /dev/null +++ b/src/crepe/Collider.h @@ -0,0 +1,15 @@ +#pragma once + +#include "Component.h" + +namespace crepe { + +class Collider : public Component { +public: + Collider(int size); + + int size; +}; + +} + diff --git a/src/crepe/Component.cpp b/src/crepe/Component.cpp new file mode 100644 index 0000000..9a7731a --- /dev/null +++ b/src/crepe/Component.cpp @@ -0,0 +1,6 @@ +#include "Component.h" + +using namespace crepe; + +Component::Component() : active(true) {} + diff --git a/src/crepe/Component.h b/src/crepe/Component.h new file mode 100644 index 0000000..6e23d93 --- /dev/null +++ b/src/crepe/Component.h @@ -0,0 +1,15 @@ +#pragma once + +namespace crepe { + +class Component { +public: + Component(); + // TODO: shouldn't this constructor be deleted because this class will never + // directly be instantiated? + + bool active; +}; + +} // namespace crepe + diff --git a/src/crepe/ComponentManager.h b/src/crepe/ComponentManager.h index 9e559dd..9463558 100644 --- a/src/crepe/ComponentManager.h +++ b/src/crepe/ComponentManager.h @@ -7,7 +7,7 @@ #include #include -#include "Components.h" +#include "Component.h" namespace crepe { diff --git a/src/crepe/Components.cpp b/src/crepe/Components.cpp deleted file mode 100644 index f27c7a4..0000000 --- a/src/crepe/Components.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "Components.h" - -using namespace crepe; -using namespace std; - -Component::Component() : active(true) {} - -Sprite::Sprite(string path) : path(path) {} - -Rigidbody::Rigidbody(int mass, int gravityScale, int bodyType) - : mass(mass), gravity_scale(gravityScale), body_type(bodyType) {} - -Collider::Collider(int size) : size(size) {} diff --git a/src/crepe/Components.h b/src/crepe/Components.h deleted file mode 100644 index 139599c..0000000 --- a/src/crepe/Components.h +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#include - -namespace crepe { - -class Component { -public: - Component(); - - bool active; -}; - -// TODO: these should be in separate files - -class Sprite : public Component { -public: - Sprite(std::string path); - - std::string path; -}; - -class Rigidbody : public Component { -public: - Rigidbody(int mass, int gravityScale, int bodyType); - - int mass; - int gravity_scale; - int body_type; -}; - -class Collider : public Component { -public: - Collider(int size); - - int size; -}; - -} // namespace crepe diff --git a/src/crepe/Rigidbody.cpp b/src/crepe/Rigidbody.cpp new file mode 100644 index 0000000..1518d28 --- /dev/null +++ b/src/crepe/Rigidbody.cpp @@ -0,0 +1,7 @@ +#include "Rigidbody.h" + +using namespace crepe; + +Rigidbody::Rigidbody(int mass, int gravityScale, int bodyType) + : mass(mass), gravity_scale(gravityScale), body_type(bodyType) {} + diff --git a/src/crepe/Rigidbody.h b/src/crepe/Rigidbody.h new file mode 100644 index 0000000..67edb03 --- /dev/null +++ b/src/crepe/Rigidbody.h @@ -0,0 +1,16 @@ +#pragma once + +#include "Component.h" + +namespace crepe { + +class Rigidbody : public Component { +public: + Rigidbody(int mass, int gravityScale, int bodyType); + + int mass; + int gravity_scale; + int body_type; +}; + +} diff --git a/src/crepe/Sprite.cpp b/src/crepe/Sprite.cpp new file mode 100644 index 0000000..c835d83 --- /dev/null +++ b/src/crepe/Sprite.cpp @@ -0,0 +1,9 @@ +#include + +#include "Sprite.h" + +using namespace crepe; +using namespace std; + +Sprite::Sprite(string path) : path(path) {} + diff --git a/src/crepe/Sprite.h b/src/crepe/Sprite.h new file mode 100644 index 0000000..029064b --- /dev/null +++ b/src/crepe/Sprite.h @@ -0,0 +1,17 @@ +#pragma once + +#include + +#include "Component.h" + +namespace crepe { + +class Sprite : public Component { +public: + Sprite(std::string path); + + std::string path; +}; + +} + diff --git a/src/example/components_internal.cpp b/src/example/components_internal.cpp index 821a7de..4246dd7 100644 --- a/src/example/components_internal.cpp +++ b/src/example/components_internal.cpp @@ -9,7 +9,10 @@ #include #include #include -#include +#include +#include +#include +#include using namespace crepe; using namespace std; -- cgit v1.2.3 From c43acf19e375830f30396936a82e351d576110ef Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Tue, 8 Oct 2024 13:41:57 +0200 Subject: update contributing.md --- contributing.md | 2 ++ 1 file changed, 2 insertions(+) (limited to 'contributing.md') diff --git a/contributing.md b/contributing.md index b79f7a7..4fab937 100644 --- a/contributing.md +++ b/contributing.md @@ -36,6 +36,8 @@ as these are no longer accessible when the engine is installed - Getter and setter functions are appropriately prefixed with `get_` and `set_`. +- Header files declare either a single class or symbols within a single + namespace. ## CMakeLists specific -- cgit v1.2.3 From 08d0b07c19edfe8c81dfe4e21c0d4c1ef128b628 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Wed, 9 Oct 2024 14:23:35 +0200 Subject: update contributing.md --- contributing.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'contributing.md') diff --git a/contributing.md b/contributing.md index 2ff411a..9f87ec5 100644 --- a/contributing.md +++ b/contributing.md @@ -30,6 +30,27 @@ as these are no longer accessible when the engine is installed - Getter and setter functions are appropriately prefixed with `get_` and `set_`. +- Doxygen commands are used with a backslash instead of an at-sign (i.e. + `\brief` instead of `@brief`) +- A singleton's instance is always accessed using a getter function that + instantiates its own class as a static variable within the getter function + scope, instead of storing the instance as a member variable directly: + + ```cpp + class Bad { + static Bad instance; + Bad & get_instance() { return instance; } + }; + + class Good { + Good & get_instance() { + static Good instance; + return instance; + } + }; + ``` +- Member variable default values should be directly defined in the class + declaration instead of using the constructor. ## CMakeLists specific -- cgit v1.2.3