From 371512ac816d92087bf5d5b38cbec8eed77a51c2 Mon Sep 17 00:00:00 2001 From: yunsmall Date: Mon, 22 Jul 2024 17:01:29 +0800 Subject: [PATCH] Update entt API calls, add CMake support, change.gitignore --- .gitignore | 16 ++++++++++++- CMakeLists.txt | 23 ++++++++++++++++++ Src/CollisionHandler.cpp | 2 +- Src/Factories.cpp | 52 ++++++++++++++++++++-------------------- Src/Game.cpp | 10 ++++---- Src/PlayerSnake.cpp | 8 +++---- 6 files changed, 74 insertions(+), 37 deletions(-) create mode 100644 CMakeLists.txt diff --git a/.gitignore b/.gitignore index 592bbe0..4266044 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,18 @@ # Other Files # # =========== # *.dll -*.xcf \ No newline at end of file +*.xcf + + + +# =========== # +# Cmake Files # +# =========== # +cmake-build-*/ +[Bb]uild/ + +# =========== # +# IDE Files # +# =========== # +.idea/ +.cache/ \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..0de6023 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,23 @@ +cmake_minimum_required(VERSION 3.20) + +project(SnakeGame) + +find_package(EnTT CONFIG REQUIRED) +find_package(SDL2 CONFIG REQUIRED) +find_package(SDL2_image CONFIG REQUIRED) +find_package(SDL2_ttf CONFIG REQUIRED) + + +file(GLOB_RECURSE ${PROJECT_NAME}_SRC Src/*.*) + +add_executable(${PROJECT_NAME} ${${PROJECT_NAME}_SRC}) +target_link_libraries(${PROJECT_NAME} PRIVATE EnTT::EnTT) +target_link_libraries(${PROJECT_NAME} + PRIVATE + $ + $,SDL2::SDL2,SDL2::SDL2-static> +) +target_link_libraries(${PROJECT_NAME} PRIVATE $,SDL2_image::SDL2_image,SDL2_image::SDL2_image-static>) +target_link_libraries(${PROJECT_NAME} PRIVATE $,SDL2_ttf::SDL2_ttf,SDL2_ttf::SDL2_ttf-static>) + +file(COPY ${CMAKE_SOURCE_DIR}/Assets DESTINATION "${CMAKE_CURRENT_BINARY_DIR}") \ No newline at end of file diff --git a/Src/CollisionHandler.cpp b/Src/CollisionHandler.cpp index ef2a626..542fda3 100644 --- a/Src/CollisionHandler.cpp +++ b/Src/CollisionHandler.cpp @@ -37,7 +37,7 @@ void checkPlayerCollision(entt::registry & registry) auto view = registry.view(); for (auto entity : view) { - auto& col = view.get(entity); + auto& col = view.get(entity); //game over collision if (col.layer == ColliderLayer::CL_snakebody || col.layer == ColliderLayer::CL_boundary) diff --git a/Src/Factories.cpp b/Src/Factories.cpp index 68a5436..8665fb7 100644 --- a/Src/Factories.cpp +++ b/Src/Factories.cpp @@ -10,7 +10,7 @@ entt::entity makeBoundary(entt::registry & registry, float xPos, float yPos, flo rect.y = (int)yPos; rect.w = (int)width; rect.h = (int)height; - registry.assign(e, ColliderLayer::CL_boundary, rect); + registry.emplace(e, ColliderLayer::CL_boundary, rect); return e; } @@ -20,22 +20,22 @@ entt::entity makePickup(entt::registry & registry) srand(time(NULL)); const entt::entity e = registry.create(); - registry.assign(e); - registry.assign(e, "Assets/pickup.png"); - registry.assign(e); - registry.assign(e, ColliderLayer::CL_pickup); + registry.emplace(e); + registry.emplace(e, "Assets/pickup.png"); + registry.emplace(e); + registry.emplace(e, ColliderLayer::CL_pickup); return e; } entt::entity makeGameOverText(entt::registry & registry, int ptSize, SDL_Color color) { const entt::entity e1 = registry.create(); - registry.assign(e1); - registry.assign(e1, "Assets/open_sans.ttf", ptSize, color, 0, 0); + registry.emplace(e1); + registry.emplace(e1, "Assets/open_sans.ttf", ptSize, color, 0, 0); const entt::entity e2 = registry.create(); - registry.assign(e2); - registry.assign(e2, "Assets/open_sans.ttf", (2 * ptSize) / 3, color, 0, 50); + registry.emplace(e2); + registry.emplace(e2, "Assets/open_sans.ttf", (2 * ptSize) / 3, color, 0, 50); return e1; } @@ -43,40 +43,40 @@ entt::entity makeGameOverText(entt::registry & registry, int ptSize, SDL_Color c entt::entity makeScoreText(entt::registry & registry, int ptSize, SDL_Color color) { const entt::entity e = registry.create(); - registry.assign(e); - registry.assign(e, "Assets/open_sans.ttf", ptSize, color, -SNAKE_SCREEN_WIDTH / 2 + 24, -SNAKE_SCREEN_HEIGHT / 2 + 24); + registry.emplace(e); + registry.emplace(e, "Assets/open_sans.ttf", ptSize, color, -SNAKE_SCREEN_WIDTH / 2 + 24, -SNAKE_SCREEN_HEIGHT / 2 + 24); return e; } entt::entity makeSnakeHead(entt::registry& registry, float xPos, float yPos, float xScl, float yScl) { const entt::entity e = registry.create(); - registry.assign(e); - registry.assign(e); - registry.assign(e, "Assets/snake_head.png"); - registry.assign(e, xPos, yPos, xScl, yScl, Direction::up); - registry.assign(e, ColliderLayer::CL_snakehead); + registry.emplace(e); + registry.emplace(e); + registry.emplace(e, "Assets/snake_head.png"); + registry.emplace(e, xPos, yPos, xScl, yScl, Direction::up); + registry.emplace(e, ColliderLayer::CL_snakehead); return e; } entt::entity makeSnakeTail(entt::registry& registry, float xPos, float yPos, float xScl, float yScl) { const entt::entity e = registry.create(); - registry.assign(e); - registry.assign(e); - registry.assign(e, "Assets/snake_tail.png"); - registry.assign(e, xPos, yPos, xScl, yScl, Direction::up); - registry.assign(e, ColliderLayer::CL_snakebody); + registry.emplace(e); + registry.emplace(e); + registry.emplace(e, "Assets/snake_tail.png"); + registry.emplace(e, xPos, yPos, xScl, yScl, Direction::up); + registry.emplace(e, ColliderLayer::CL_snakebody); return e; } entt::entity makeSnakeBody(entt::registry& registry, float xPos, float yPos, float xScl, float yScl) { const entt::entity e = registry.create(); - registry.assign(e); - registry.assign(e); - registry.assign(e, "Assets/snake_body.png"); - registry.assign(e, xPos, yPos, xScl, yScl, Direction::up); - registry.assign(e, ColliderLayer::CL_snakebody); + registry.emplace(e); + registry.emplace(e); + registry.emplace(e, "Assets/snake_body.png"); + registry.emplace(e, xPos, yPos, xScl, yScl, Direction::up); + registry.emplace(e, ColliderLayer::CL_snakebody); return e; } \ No newline at end of file diff --git a/Src/Game.cpp b/Src/Game.cpp index 5044f0f..e80ca41 100644 --- a/Src/Game.cpp +++ b/Src/Game.cpp @@ -171,14 +171,14 @@ void Game::render(entt::registry& registry) auto sprView = registry.view(); for (auto entity : sprView) { - sprView.get(entity).render(); + sprView.get(entity).render(); } //render text auto txtView = registry.view(); for (auto entity : txtView) { - txtView.get(entity).render(); + txtView.get(entity).render(); } SDL_RenderPresent(renderer); @@ -189,16 +189,16 @@ void Game::cleanEntt(entt::registry& registry) auto sprView = registry.view(); for (auto e : sprView) { - sprView.get(e).clean(); + sprView.get(e).clean(); } auto txtView = registry.view(); for (auto e : txtView) { - txtView.get(e).clean(); + txtView.get(e).clean(); } - registry.reset(); + registry.clear(); LOG("EnTT Cleaned"); } diff --git a/Src/PlayerSnake.cpp b/Src/PlayerSnake.cpp index 09bcff0..9ca1793 100644 --- a/Src/PlayerSnake.cpp +++ b/Src/PlayerSnake.cpp @@ -75,7 +75,7 @@ bool updateSnake(entt::registry & registry) auto view = registry.view(); for (auto entity : view) { - return view.get(entity).update(); + return view.get(entity).update(); } return false; @@ -143,7 +143,7 @@ void moveSnake(entt::registry& registry) void destroySnake(entt::registry & registry) { - registry.reset(); - registry.reset(); - registry.reset(); + registry.clear(); + registry.clear(); + registry.clear(); }