Arquitectura polimórfica implementada: - Jerarquía: Theme (base) → StaticTheme / DynamicTheme (derivadas) - Vector unificado de 10 temas (7 estáticos + 3 dinámicos) - Eliminada lógica dual (if(dynamic_theme_active_) scattered) Nuevos archivos: - source/themes/theme.h: Interfaz base abstracta - source/themes/static_theme.h/cpp: Temas estáticos (1 keyframe) - source/themes/dynamic_theme.h/cpp: Temas dinámicos (N keyframes animados) - source/theme_manager.h/cpp: Gestión unificada de temas Mejoras de API: - switchToTheme(0-9): Cambio a cualquier tema (índice 0-9) - cycleTheme(): Cicla por todos los temas (Tecla B) - update(delta_time): Actualización simplificada - getInterpolatedColor(idx): Sin parámetro balls_ Bugs corregidos: - Tecla B ahora cicla TODOS los 10 temas (antes solo 6) - DEMO mode elige de TODOS los temas (antes excluía LAVENDER + dinámicos) - Eliminada duplicación de keyframes en temas dinámicos (loop=true lo maneja) Código reducido: - theme_manager.cpp: 558 → 320 líneas (-43%) - engine.cpp: Eliminados ~470 líneas de lógica de temas - Complejidad significativamente reducida Preparado para PHASE 3 (LERP universal entre cualquier par de temas) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
51 lines
1.6 KiB
CMake
51 lines
1.6 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
project(vibe3_physics)
|
|
|
|
# Establecer el estándar de C++
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
# Opciones comunes de compilación
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Os -ffunction-sections -fdata-sections")
|
|
|
|
# Buscar SDL3 automáticamente
|
|
find_package(SDL3 REQUIRED)
|
|
|
|
# Si no se encuentra SDL3, generar un error
|
|
if (NOT SDL3_FOUND)
|
|
message(FATAL_ERROR "SDL3 no encontrado. Por favor, verifica su instalación.")
|
|
endif()
|
|
|
|
# Archivos fuente (excluir main_old.cpp)
|
|
file(GLOB SOURCE_FILES source/*.cpp source/external/*.cpp source/shapes/*.cpp source/themes/*.cpp)
|
|
list(REMOVE_ITEM SOURCE_FILES "${CMAKE_SOURCE_DIR}/source/main_old.cpp")
|
|
|
|
# Comprobar si se encontraron archivos fuente
|
|
if(NOT SOURCE_FILES)
|
|
message(FATAL_ERROR "No se encontraron archivos fuente en el directorio 'source/'. Verifica la ruta.")
|
|
endif()
|
|
|
|
# Detectar la plataforma y configuraciones específicas
|
|
if(WIN32)
|
|
set(PLATFORM windows)
|
|
set(LINK_LIBS ${SDL3_LIBRARIES} mingw32 ws2_32)
|
|
elseif(UNIX AND NOT APPLE)
|
|
set(PLATFORM linux)
|
|
set(LINK_LIBS ${SDL3_LIBRARIES})
|
|
elseif(APPLE)
|
|
set(PLATFORM macos)
|
|
set(LINK_LIBS ${SDL3_LIBRARIES})
|
|
endif()
|
|
|
|
# Incluir directorios de SDL3
|
|
include_directories(${SDL3_INCLUDE_DIRS})
|
|
|
|
# Añadir el ejecutable reutilizando el nombre del proyecto
|
|
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
|
|
|
|
# Especificar la ubicación del ejecutable (en la raíz del proyecto)
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR})
|
|
|
|
# Enlazar las bibliotecas necesarias
|
|
target_link_libraries(${PROJECT_NAME} ${LINK_LIBS})
|