feat(entities): andamiatge del sistema d'entitats (classes, factory, bus, YAML, placeholders, smoke tests)

This commit is contained in:
JailDesigner committed 2026-04-21 12:35:19 +02:00
1 parent 984cc820c0
commit 96b71b0f65
48 files changed
+1957

No files matched your search

+42
View File
@@ -30,6 +30,25 @@ endif()
configure_file(${CMAKE_SOURCE_DIR}/source/version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY)
# Sources comuns del sistema d'entitats: s'afegeixen tant a l'executable
# principal com al smoke test. Mantenir-los en variable separada evita
# duplicació entre els dos targets.
set(ENTITY_SOURCES
source/game/entities/entity.cpp
source/game/entities/animation_component.cpp
source/game/entities/event_bus.cpp
source/game/entities/entity_factory.cpp
source/game/entities/entity_loader.cpp
source/game/entities/entity_manager.cpp
source/game/entities/concrete/torch.cpp
source/game/entities/concrete/sarcophagus.cpp
source/game/entities/concrete/door.cpp
source/game/entities/concrete/mummy.cpp
source/game/entities/concrete/rolling_rock.cpp
source/game/entities/concrete/wall_trap.cpp
source/game/entities/concrete/floor_trap.cpp
)
set(APP_SOURCES
source/main.cpp
source/core/system/director.cpp
@@ -62,6 +81,7 @@ set(APP_SOURCES
source/game/entities/player.cpp
source/game/map/map.cpp
source/game/map/tilemap.cpp
${ENTITY_SOURCES}
)
find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3)
@@ -222,3 +242,25 @@ if(CPPCHECK_EXE)
else()
message(STATUS "cppcheck no encontrado - target 'cppcheck' no disponible")
endif()
# --- SMOKE TESTS ---
# Executable stand-alone que cobreix el sistema d'entitats. No obri finestra
# ni GPU: pot córrer en qualsevol entorn. `ctest --output-on-failure` el
# dispara des de `build/`.
option(BUILD_TESTS "Build smoke tests" ON)
if(BUILD_TESTS)
add_executable(test_entities_smoke
tests/test_entities_smoke.cpp
${ENTITY_SOURCES}
)
target_include_directories(test_entities_smoke PRIVATE
"${CMAKE_SOURCE_DIR}/source"
"${CMAKE_BINARY_DIR}"
)
target_link_libraries(test_entities_smoke PRIVATE SDL3::SDL3)
target_compile_options(test_entities_smoke PRIVATE -Wall -Wextra -Wpedantic)
enable_testing()
add_test(NAME entities_smoke
COMMAND test_entities_smoke
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
endif()