From f56cc119bf54b32d225f9d5c30721bd9a9ffbef0 Mon Sep 17 00:00:00 2001 From: Attila Uygun Date: Sat, 5 Aug 2023 01:52:07 +0200 Subject: [PATCH] Code cleanup --- README.md | 17 ++++++----------- kaliber.png | Bin 67950 -> 0 bytes src/demo/demo.cc | 4 +--- src/engine/game_factory.h | 10 ++++++---- src/engine/image_quad.cc | 9 +++++---- src/engine/image_quad.h | 8 ++++---- src/hello_world/hello_world.cc | 7 ++----- 7 files changed, 24 insertions(+), 31 deletions(-) delete mode 100644 kaliber.png diff --git a/README.md b/README.md index b2473f3..3840fab 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Logo](kaliber.png) +# Kaliber A simple, cross-platform 2D game engine with OpenGL and Vulkan renderers. Supports Linux and Android platforms. @@ -8,9 +8,8 @@ based on this engine. Full game code and assets are included in this repository. ## Pre-requisites: -This project uses **GN build system** for all platforms except Android -(I want to add support for APKs, Java code etc. to the GN configuration and use -it for all platforms). \ +**GN build system** is required for all platforms except Android (support for +APKs, Java code etc. is to be added to the GN configuration). \ Building GN from source: https://gn.googlesource.com/gn/ \ Pre-built GN binaries: @@ -18,8 +17,7 @@ https://chrome-infra-packages.appspot.com/p/gn/gn/ Linux is the supported host platform to build Android. **Gradle**, **Android SDK** and **NDK** are required. If you prefer, you can install -**Android Studio** which -includes all the requirements. +**Android Studio** which includes all the requirements. ## Building from the command-line: @@ -70,8 +68,7 @@ class HelloWorld final : public eng::Game { std::bind(&eng::Engine::Print, &eng::Engine::Get(), "Hello World!", base::Vector4f(1, 1, 1, 0))); - hello_world_.Create("hello_world_image"); - hello_world_.SetVisible(true); + hello_world_.Create("hello_world_image").SetVisible(true); animator_.Attach(&hello_world_); animator_.SetRotation(base::PI2f, 3, std::bind(base::SmootherStep, std::placeholders::_1)); @@ -84,7 +81,5 @@ class HelloWorld final : public eng::Game { eng::Animator animator_; }; -DECLARE_GAME_BEGIN -DECLARE_GAME(HelloWorld) -DECLARE_GAME_END +GAME_FACTORIES{GAME_CLASS(HelloWorld)}; ``` diff --git a/kaliber.png b/kaliber.png deleted file mode 100644 index a756276f4b4bffb9754d346de8ba97f2d0e9441c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67950 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 #include -#define DECLARE_GAME_BEGIN \ +#define GAME_FACTORIES \ std::vector> \ - eng::GameFactoryBase::game_classes = { -#define DECLARE_GAME(CLASS) {#CLASS, new eng::GameFactory()}, -#define DECLARE_GAME_END }; + eng::GameFactoryBase::game_classes +#define GAME_CLASS(CLASS) \ + { #CLASS, new eng::GameFactory() } namespace eng { @@ -19,6 +19,8 @@ class GameFactoryBase { public: virtual ~GameFactoryBase() = default; + // Create an instance for the class of the given name. The default factory is + // used if the name is empty (which is the first one in the list). static std::unique_ptr CreateGame(const std::string& name) { if (name.empty()) return game_classes.size() > 0 diff --git a/src/engine/image_quad.cc b/src/engine/image_quad.cc index b5c7c10..ed1b55b 100644 --- a/src/engine/image_quad.cc +++ b/src/engine/image_quad.cc @@ -16,10 +16,10 @@ ImageQuad::~ImageQuad() { Destroy(); } -void ImageQuad::Create(const std::string& asset_name, - std::array num_frames, - int frame_width, - int frame_height) { +ImageQuad& ImageQuad::Create(const std::string& asset_name, + std::array num_frames, + int frame_width, + int frame_height) { texture_ = Engine::Get().AcquireTexture(asset_name); num_frames_ = std::move(num_frames); frame_width_ = frame_width; @@ -30,6 +30,7 @@ void ImageQuad::Create(const std::string& asset_name, << asset_name; SetSize(Engine::Get().ToScale({GetFrameWidth(), GetFrameHeight()}) * Engine::Get().GetImageScaleFactor()); + return *this; } void ImageQuad::Destroy() { diff --git a/src/engine/image_quad.h b/src/engine/image_quad.h index a010aa0..660dc95 100644 --- a/src/engine/image_quad.h +++ b/src/engine/image_quad.h @@ -19,10 +19,10 @@ class ImageQuad final : public Animatable { ImageQuad(); ~ImageQuad() final; - void Create(const std::string& asset_name, - std::array num_frames = {1, 1}, - int frame_width = 0, - int frame_height = 0); + ImageQuad& Create(const std::string& asset_name, + std::array num_frames = {1, 1}, + int frame_width = 0, + int frame_height = 0); void Destroy(); diff --git a/src/hello_world/hello_world.cc b/src/hello_world/hello_world.cc index 97b07f0..234327a 100644 --- a/src/hello_world/hello_world.cc +++ b/src/hello_world/hello_world.cc @@ -16,8 +16,7 @@ class HelloWorld final : public eng::Game { std::bind(&eng::Engine::Print, &eng::Engine::Get(), "Hello World!", base::Vector4f(1, 1, 1, 0))); - hello_world_.Create("hello_world_image"); - hello_world_.SetVisible(true); + hello_world_.Create("hello_world_image").SetVisible(true); animator_.Attach(&hello_world_); animator_.SetRotation(base::PI2f, 3, std::bind(base::SmootherStep, std::placeholders::_1)); @@ -30,6 +29,4 @@ class HelloWorld final : public eng::Game { eng::Animator animator_; }; -DECLARE_GAME_BEGIN -DECLARE_GAME(HelloWorld) -DECLARE_GAME_END +GAME_FACTORIES{GAME_CLASS(HelloWorld)};