diff --git a/CMakeLists.txt b/CMakeLists.txt index 4157075..c14df9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,30 +1,105 @@ -# CMakeLists.txt +# CMakeLists.txt (Versión corregida y mejorada) cmake_minimum_required(VERSION 3.10) project(coffee_crisis_arcade_edition VERSION 2.00) -# Establece las políticas -cmake_policy(SET CMP0072 NEW) - # Establecer estándar de C++ set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) -# Cargar todos los archivos fuente directamente desde el directorio -file(GLOB SOURCES "${CMAKE_SOURCE_DIR}/source/*.cpp") +# --- 1. LISTA EXPLÍCITA DE FUENTES --- +set(APP_SOURCES + # --- Archivos Principales del Sistema --- + source/main.cpp + source/game.cpp + source/director.cpp + source/section.cpp + source/screen.cpp + source/resource.cpp + source/asset.cpp + source/audio.cpp + source/input.cpp + source/options.cpp + source/lang.cpp + source/param.cpp + source/utils.cpp + source/global_events.cpp + source/global_inputs.cpp + + # --- UI (User Interface) --- + source/ui/service_menu.cpp + source/ui/menu_renderer.cpp + source/ui/ui_message.cpp -# Verificar si se encontraron archivos fuente -if(NOT SOURCES) - message(FATAL_ERROR "No se encontraron archivos fuente en ${CMAKE_SOURCE_DIR}/source. Verifica que el directorio existe y contiene archivos .cpp.") -endif() + # --- Lógica y Escenas del Juego --- + source/player.cpp + source/balloon.cpp + source/balloon_formations.cpp + source/balloon_manager.cpp + source/bullet.cpp + source/item.cpp + source/explosions.cpp + + # --- Escenas y Flujo --- + source/title.cpp + source/logo.cpp + source/game_logo.cpp + source/intro.cpp + source/credits.cpp + source/instructions.cpp + source/hiscore_table.cpp + source/enter_name.cpp + source/manage_hiscore_table.cpp + source/scoreboard.cpp + + # --- Sprites y Gráficos --- + source/sprite.cpp + source/animated_sprite.cpp + source/moving_sprite.cpp + source/path_sprite.cpp + source/smart_sprite.cpp + source/background.cpp + source/tiled_bg.cpp + source/fade.cpp + source/texture.cpp + + # --- Otros --- + source/define_buttons.cpp + source/mouse.cpp + source/notifier.cpp + source/stage.cpp + source/tabe.cpp + source/text.cpp + source/writer.cpp +) -# Configuración de SDL3 (usando el método recomendado) +# Fuentes de librerías de terceros +set(EXTERNAL_SOURCES + source/external/jail_audio.cpp + source/external/jail_shader.cpp + source/external/json.hpp + source/external/gif.cpp +) + + +# Configuración de SDL3 find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3) message(STATUS "SDL3 encontrado: ${SDL3_INCLUDE_DIRS}") -# Añadir ejecutable principal -add_executable(${PROJECT_NAME} ${SOURCES}) +# --- 2. AÑADIR EJECUTABLE --- +add_executable(${PROJECT_NAME} ${APP_SOURCES} ${EXTERNAL_SOURCES}) +# --- 3. DIRECTORIOS DE INCLUSIÓN --- +target_include_directories(${PROJECT_NAME} PUBLIC + "${CMAKE_SOURCE_DIR}/source" + "${CMAKE_SOURCE_DIR}/source/external" +) + +# Enlazar la librería SDL3 +target_link_libraries(${PROJECT_NAME} PRIVATE SDL3::SDL3) + + +# --- 4. CONFIGURACIÓN PLATAFORMAS Y COMPILADOR --- # Configuración de flags de compilación target_compile_options(${PROJECT_NAME} PRIVATE -Wall) target_compile_options(${PROJECT_NAME} PRIVATE $<$:-Os -ffunction-sections -fdata-sections>) @@ -32,9 +107,6 @@ target_compile_options(${PROJECT_NAME} PRIVATE $<$:-Os -ffunctio # Definir _DEBUG en modo Debug target_compile_definitions(${PROJECT_NAME} PRIVATE $<$:DEBUG>) -# Enlazar la librería SDL3 -target_link_libraries(${PROJECT_NAME} PRIVATE SDL3::SDL3) - # Configuración específica para cada plataforma if(WIN32) target_compile_definitions(${PROJECT_NAME} PRIVATE WINDOWS_BUILD) @@ -47,7 +119,7 @@ elseif(UNIX AND NOT APPLE) target_compile_definitions(${PROJECT_NAME} PRIVATE LINUX_BUILD) endif() -# Configuración común para OpenGL (excepto en Windows, ya configurado) +# Configuración común para OpenGL if(NOT WIN32) find_package(OpenGL REQUIRED) if(OPENGL_FOUND) @@ -58,7 +130,5 @@ if(NOT WIN32) endif() endif() -# Configuración común de salida de ejecutables en el directorio raíz -#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}) -# Especificar la ubicación del ejecutable (en la raíz del proyecto) +# Especificar la ubicación del ejecutable set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}) diff --git a/source/audio.cpp b/source/audio.cpp index 94b92b5..84b8201 100644 --- a/source/audio.cpp +++ b/source/audio.cpp @@ -1,5 +1,5 @@ #include "audio.h" -#include "jail_audio.h" +#include "external/jail_audio.h" #include "options.h" #include "resource.h" #include diff --git a/source/credits.cpp b/source/credits.cpp index 2b8bd2d..67955e6 100644 --- a/source/credits.cpp +++ b/source/credits.cpp @@ -26,7 +26,7 @@ #include "texture.h" // Para Texture #include "tiled_bg.h" // Para TiledBG, TiledBGMode #include "utils.h" // Para Color, Zone, shdw_txt_color, no_color -#include "service_menu.h" +#include "ui/service_menu.h" // Textos constexpr const char TEXT_COPYRIGHT[] = "@2020,2025 JailDesigner"; diff --git a/source/gif.cpp b/source/external/gif.cpp similarity index 100% rename from source/gif.cpp rename to source/external/gif.cpp diff --git a/source/gif.h b/source/external/gif.h similarity index 100% rename from source/gif.h rename to source/external/gif.h diff --git a/source/jail_audio.cpp b/source/external/jail_audio.cpp similarity index 100% rename from source/jail_audio.cpp rename to source/external/jail_audio.cpp diff --git a/source/jail_audio.h b/source/external/jail_audio.h similarity index 100% rename from source/jail_audio.h rename to source/external/jail_audio.h diff --git a/source/jail_shader.cpp b/source/external/jail_shader.cpp similarity index 100% rename from source/jail_shader.cpp rename to source/external/jail_shader.cpp diff --git a/source/jail_shader.h b/source/external/jail_shader.h similarity index 100% rename from source/jail_shader.h rename to source/external/jail_shader.h diff --git a/source/json.hpp b/source/external/json.hpp similarity index 100% rename from source/json.hpp rename to source/external/json.hpp diff --git a/source/stb_image.h b/source/external/stb_image.h similarity index 100% rename from source/stb_image.h rename to source/external/stb_image.h diff --git a/source/stb_vorbis.c b/source/external/stb_vorbis.c similarity index 100% rename from source/stb_vorbis.c rename to source/external/stb_vorbis.c diff --git a/source/game.cpp b/source/game.cpp index 9d6f2a7..7f09e2d 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -28,7 +28,7 @@ #include "scoreboard.h" // Para Scoreboard, ScoreboardMode, SCOREB... #include "screen.h" // Para Screen #include "section.h" // Para Name, name, AttractMode, Options -#include "service_menu.h" // Para ServiceMenu +#include "ui/service_menu.h" // Para ServiceMenu #include "smart_sprite.h" // Para SmartSprite #include "stage.h" // Para number, get, Stage, total_power #include "tabe.h" // Para Tabe, TabeState diff --git a/source/global_inputs.cpp b/source/global_inputs.cpp index 40d81d5..2af8ac3 100644 --- a/source/global_inputs.cpp +++ b/source/global_inputs.cpp @@ -11,7 +11,7 @@ #include "param.h" // Para Param, ParamGame, param #include "screen.h" // Para Screen #include "section.h" // Para Name, name, Options, options, AttractMode -#include "service_menu.h" // Para ServiceMenu +#include "ui/service_menu.h" // Para ServiceMenu #include "utils.h" // Para boolToOnOff namespace GlobalInputs diff --git a/source/lang.cpp b/source/lang.cpp index 140ecd4..79e71c6 100644 --- a/source/lang.cpp +++ b/source/lang.cpp @@ -1,7 +1,7 @@ #include "lang.h" #include #include -#include "json.hpp" +#include "external/json.hpp" #include "options.h" #include "asset.h" diff --git a/source/resource.cpp b/source/resource.cpp index 3ec362b..9e55b91 100644 --- a/source/resource.cpp +++ b/source/resource.cpp @@ -5,7 +5,7 @@ #include #include // Para runtime_error #include "asset.h" // Para Asset, AssetType -#include "jail_audio.h" // Para JA_DeleteMusic, JA_DeleteSound, JA_LoadMusic +#include "external/jail_audio.h" // Para JA_DeleteMusic, JA_DeleteSound, JA_LoadMusic #include "lang.h" // Para getText #include "screen.h" // Para Screen #include "text.h" // Para Text, loadTextFile diff --git a/source/resource.h b/source/resource.h index fc45e42..c481ba7 100644 --- a/source/resource.h +++ b/source/resource.h @@ -7,7 +7,7 @@ #include "text.h" #include "texture.h" #include "utils.h" -#include "jail_audio.h" +#include "external/jail_audio.h" // --- Clase Resource: gestiona todos los recursos del juego (singleton) --- class Resource diff --git a/source/screen.cpp b/source/screen.cpp index 9a6b7e7..e045bdc 100644 --- a/source/screen.cpp +++ b/source/screen.cpp @@ -13,12 +13,12 @@ #include // Para __shared_ptr_access, shared_ptr #include // Para allocator, char_traits, operator+ #include "asset.h" // Para Asset -#include "jail_shader.h" // Para init, render +#include "external/jail_shader.h" // Para init, render #include "mouse.h" // Para updateCursorVisibility #include "notifier.h" // Para Notifier #include "options.h" // Para Options, options, WindowOptions, Vid... #include "resource.h" // Para Resource -#include "service_menu.h" // Para ServiceMenu +#include "ui/service_menu.h" // Para ServiceMenu #include "text.h" // Para Text // Singleton diff --git a/source/texture.cpp b/source/texture.cpp index 08ffe09..566a283 100644 --- a/source/texture.cpp +++ b/source/texture.cpp @@ -9,7 +9,7 @@ #include // Para runtime_error #include // Para operator+, char_traits, string, operat... #include // Para vector -#include "gif.h" // Para Gif +#include "external/gif.h" // Para Gif #include "stb_image.h" // Para stbi_image_free, stbi_load, STBI_rgb_a... #include "utils.h" // Para getFileName, Color, printWithDots diff --git a/source/title.cpp b/source/title.cpp index 924e9cd..db4cfdc 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -24,7 +24,7 @@ #include "texture.h" // Para Texture #include "tiled_bg.h" // Para TiledBG, TiledBGMode #include "utils.h" // Para Color, Zone, fade_color, no_color, BLOCK -#include "service_menu.h" +#include "ui/service_menu.h" // Constructor Title::Title() diff --git a/source/ui/menu_option.h b/source/ui/menu_option.h index 81cf0f0..f5fb919 100644 --- a/source/ui/menu_option.h +++ b/source/ui/menu_option.h @@ -5,7 +5,7 @@ #include #include #include // para std::clamp -#include "service_menu.h" // Necesitamos las enums como SettingsGroup +#include "ui/service_menu.h" // Necesitamos las enums como SettingsGroup #include "options.h" // Para acceder a las variables de configuración #include "lang.h" // Para las traducciones #include "section.h" // Para las acciones como Quit o Reset diff --git a/source/ui/menu_renderer.h b/source/ui/menu_renderer.h index 27a71c7..e5331b7 100644 --- a/source/ui/menu_renderer.h +++ b/source/ui/menu_renderer.h @@ -4,7 +4,7 @@ #include #include #include -#include "service_menu.h" // Necesario para las enums y para acceder al estado del menú +#include "ui/service_menu.h" // Necesario para las enums y para acceder al estado del menú #include "utils.h" // Para Color // Forward declarations diff --git a/source/ui/service_menu.cpp b/source/ui/service_menu.cpp index 88d83cd..eb0abac 100644 --- a/source/ui/service_menu.cpp +++ b/source/ui/service_menu.cpp @@ -1,4 +1,4 @@ -#include "service_menu.h" +#include "ui/service_menu.h" #include "menu_renderer.h" #include "menu_option.h" #include "resource.h"