diff --git a/.gitignore b/.gitignore index 6da53d7..98fcba8 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,6 @@ thumbs.db *.tar.gz *.zip *.app -*.dll *config.bin *score.bin coffee_crisis* diff --git a/Makefile b/Makefile index 0377933..9668805 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ APP_NAME := Coffee Crisis Arcade Edition RELEASE_FOLDER := ccae_release RELEASE_FILE := $(RELEASE_FOLDER)/$(TARGET_NAME) RESOURCE_FILE := release/coffee.res -VERSION := 2025-03-25 +VERSION := 2025-08-10 # Nombres para los ficheros de lanzamiento WINDOWS_RELEASE := $(TARGET_NAME)-$(VERSION)-win32-x64.zip @@ -20,35 +20,98 @@ MACOS_APPLE_SILICON_RELEASE := $(TARGET_FILE)-$(VERSION)-macos-apple-silicon.dmg LINUX_RELEASE := $(TARGET_FILE)-$(VERSION)-linux.tar.gz RASPI_RELEASE := $(TARGET_FILE)-$(VERSION)-raspberry.tar.gz +# Lista completa de archivos fuente (basada en CMakeLists.txt) +APP_SOURCES := \ + source/asset.cpp \ + source/audio.cpp \ + source/director.cpp \ + source/global_events.cpp \ + source/global_inputs.cpp \ + source/input.cpp \ + source/lang.cpp \ + source/main.cpp \ + source/param.cpp \ + source/resource.cpp \ + source/screen.cpp \ + source/text.cpp \ + source/writer.cpp \ + source/ui/menu_option.cpp \ + source/ui/menu_renderer.cpp \ + source/ui/notifier.cpp \ + source/ui/service_menu.cpp \ + source/ui/ui_message.cpp \ + source/ui/window_message.cpp \ + source/balloon_formations.cpp \ + source/balloon_manager.cpp \ + source/balloon.cpp \ + source/bullet.cpp \ + source/enter_name.cpp \ + source/explosions.cpp \ + source/game_logo.cpp \ + source/item.cpp \ + source/manage_hiscore_table.cpp \ + source/player.cpp \ + source/scoreboard.cpp \ + source/tabe.cpp \ + source/sections/credits.cpp \ + source/sections/game.cpp \ + source/sections/hiscore_table.cpp \ + source/sections/instructions.cpp \ + source/sections/intro.cpp \ + source/sections/logo.cpp \ + source/sections/title.cpp \ + source/animated_sprite.cpp \ + source/background.cpp \ + source/fade.cpp \ + source/moving_sprite.cpp \ + source/path_sprite.cpp \ + source/smart_sprite.cpp \ + source/sprite.cpp \ + source/texture.cpp \ + source/tiled_bg.cpp \ + source/color.cpp \ + source/define_buttons.cpp \ + source/difficulty.cpp \ + source/input_types.cpp \ + source/mouse.cpp \ + source/options.cpp \ + source/stage.cpp \ + source/utils.cpp \ + source/external/jail_shader.cpp \ + source/external/jail_audio.cpp \ + source/external/gif.cpp + # Includes -INCLUDES := -I$(DIR_SOURCES) +INCLUDES := -Isource -Isource/external # Variables según el sistema operativo ifeq ($(OS),Windows_NT) FixPath = $(subst /,\\,$1) - SOURCES := source/*.cpp - CXXFLAGS := -std=c++20 -Wall -Os -ffunction-sections -fdata-sections -Wl,--gc-sections -static-libstdc++ -Wl,-subsystem,windows - CXXFLAGS_DEBUG := -std=c++20 -Wall -g + CXXFLAGS := -std=c++20 -Wall -Os -ffunction-sections -fdata-sections -Wl,--gc-sections -static-libstdc++ -Wl,-subsystem,windows -DWINDOWS_BUILD + CXXFLAGS_DEBUG := -std=c++20 -Wall -g -D_DEBUG -DWINDOWS_BUILD LDFLAGS := -lmingw32 -lws2_32 -lSDL3 -lopengl32 RM := del /Q MKDIR := mkdir else FixPath = $1 - SOURCES := source/*.cpp CXXFLAGS := -std=c++20 -Wall -Os -ffunction-sections -fdata-sections - CXXFLAGS_DEBUG := -std=c++20 -Wall -g + CXXFLAGS_DEBUG := -std=c++20 -Wall -g -D_DEBUG LDFLAGS := -lSDL3 RMFILE := rm -f - RMDIR := rm -rdf + RMDIR := rm -rdf MKDIR := mkdir -p UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Linux) + CXXFLAGS += -DLINUX_BUILD LDFLAGS += -lGL endif ifeq ($(UNAME_S),Darwin) - CXXFLAGS += -Wno-deprecated - CXXFLAGS_DEBUG += -Wno-deprecated + CXXFLAGS += -Wno-deprecated -DMACOS_BUILD + CXXFLAGS_DEBUG += -Wno-deprecated -DMACOS_BUILD LDFLAGS += -framework OpenGL + # Configurar arquitectura (por defecto arm64, como en CMake) + CXXFLAGS += -arch arm64 + CXXFLAGS_DEBUG += -arch arm64 endif endif @@ -56,16 +119,16 @@ endif windows: @echo off windres release/coffee.rc -O coff -o $(RESOURCE_FILE) - $(CXX) $(SOURCES) $(RESOURCE_FILE) $(CXXFLAGS) $(LDFLAGS) -o "$(TARGET_FILE).exe" + $(CXX) $(APP_SOURCES) $(RESOURCE_FILE) $(INCLUDES) $(CXXFLAGS) $(LDFLAGS) -o "$(TARGET_FILE).exe" strip -s -R .comment -R .gnu.version "$(TARGET_FILE).exe" --strip-unneeded windows_rec: @echo off - $(CXX) $(SOURCES) -D RECORDING $(CXXFLAGS) $(LDFLAGS) -o "$(TARGET_FILE)_rec.exe" + $(CXX) $(APP_SOURCES) $(INCLUDES) -DRECORDING $(CXXFLAGS) $(LDFLAGS) -o "$(TARGET_FILE)_rec.exe" windows_debug: @echo off - $(CXX) $(SOURCES) -D DEBUG -D VERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug.exe" + $(CXX) $(APP_SOURCES) $(INCLUDES) -DDEBUG -DVERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug.exe" windows_release: @echo off @@ -84,7 +147,7 @@ windows_release: # Compila windres release/coffee.rc -O coff -o $(RESOURCE_FILE) - $(CXX) $(SOURCES) $(RESOURCE_FILE) $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FILE).exe" + $(CXX) $(APP_SOURCES) $(RESOURCE_FILE) $(INCLUDES) $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FILE).exe" strip -s -R .comment -R .gnu.version "$(RELEASE_FILE).exe" --strip-unneeded # Crea el fichero .zip @@ -95,10 +158,10 @@ windows_release: powershell if (Test-Path "$(RELEASE_FOLDER)") {Remove-Item "$(RELEASE_FOLDER)" -Recurse -Force} macos: - $(CXX) $(SOURCES) $(CXXFLAGS) $(LDFLAGS) -o "$(TARGET_FILE)" + $(CXX) $(APP_SOURCES) $(INCLUDES) $(CXXFLAGS) $(LDFLAGS) -o "$(TARGET_FILE)" macos_debug: - $(CXX) $(SOURCES) -D DEBUG -D VERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" + $(CXX) $(APP_SOURCES) $(INCLUDES) -DDEBUG -DVERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" macos_release: # Elimina datos de compilaciones anteriores @@ -116,8 +179,8 @@ macos_release: # Copia carpetas y ficheros cp -R data "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Resources" - cp -R release/SDL2.framework "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Frameworks" - cp -R release/SDL2.framework Frameworks + cp -R release/SDL3.framework "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Frameworks" + cp -R release/SDL3.framework Frameworks cp release/*.icns "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Resources" cp release/Info.plist "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents" cp LICENSE "$(RELEASE_FOLDER)" @@ -128,7 +191,7 @@ macos_release: # Compila la versión para procesadores Intel ifdef ENABLE_MACOS_X86_64 - $(CXX) $(SOURCES) -D MACOS_BUNDLE $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)" -rpath @executable_path/../Frameworks/ -target x86_64-apple-macos10.15 + $(CXX) $(APP_SOURCES) $(INCLUDES) -DMACOS_BUNDLE $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)" -rpath @executable_path/../Frameworks/ -target x86_64-apple-macos10.15 # Firma la aplicación codesign --deep --force --sign - --timestamp=none "$(RELEASE_FOLDER)/$(APP_NAME).app" @@ -140,7 +203,7 @@ ifdef ENABLE_MACOS_X86_64 endif # Compila la versión para procesadores Apple Silicon - $(CXX) $(SOURCES) -D MACOS_BUNDLE -D SDL_DISABLE_IMMINTRIN_H $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)" -rpath @executable_path/../Frameworks/ -target arm64-apple-macos11 + $(CXX) $(APP_SOURCES) $(INCLUDES) -DMACOS_BUNDLE -DSDL_DISABLE_IMMINTRIN_H $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)" -rpath @executable_path/../Frameworks/ -target arm64-apple-macos11 # Firma la aplicación codesign --deep --force --sign - --timestamp=none "$(RELEASE_FOLDER)/$(APP_NAME).app" @@ -155,11 +218,11 @@ endif $(RMDIR) "$(RELEASE_FOLDER)" linux: - $(CXX) $(SOURCES) $(CXXFLAGS) $(LDFLAGS) -o "$(TARGET_FILE)" + $(CXX) $(APP_SOURCES) $(INCLUDES) $(CXXFLAGS) $(LDFLAGS) -o "$(TARGET_FILE)" strip -s -R .comment -R .gnu.version "$(TARGET_FILE)" --strip-unneeded linux_debug: - $(CXX) $(SOURCES) -D DEBUG -D VERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" + $(CXX) $(APP_SOURCES) $(INCLUDES) -DDEBUG -DVERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" linux_release: # Elimina carpetas previas @@ -174,22 +237,22 @@ linux_release: cp README.md "$(RELEASE_FOLDER)" # Compila - $(CXX) $(SOURCES) $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FILE)" + $(CXX) $(APP_SOURCES) $(INCLUDES) $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FILE)" strip -s -R .comment -R .gnu.version "$(RELEASE_FILE)" --strip-unneeded # Empaqueta ficheros $(RMFILE) "$(LINUX_RELEASE)" - cd "$(RELEASE_FOLDER)" && tar -czvf "$(LINUX_RELEASE)" * + cd "$(RELEASE_FOLDER)" && tar -czvf "../$(LINUX_RELEASE)" * # Elimina la carpeta temporal $(RMDIR) "$(RELEASE_FOLDER)" raspi: - $(CXX) $(SOURCES) -D VERBOSE $(CXXFLAGS) $(LDFLAGS) -o $(TARGET_FILE) + $(CXX) $(APP_SOURCES) $(INCLUDES) -DVERBOSE $(CXXFLAGS) $(LDFLAGS) -o $(TARGET_FILE) strip -s -R .comment -R .gnu.version $(TARGET_FILE) --strip-unneeded raspi_debug: - $(CXX) $(SOURCES) -D VERBOSE -D DEBUG $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" + $(CXX) $(APP_SOURCES) $(INCLUDES) -DVERBOSE -DDEBUG $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" raspi_release: # Elimina carpetas previas @@ -204,12 +267,12 @@ raspi_release: cp README.md "$(RELEASE_FOLDER)" # Compila - $(CXX) $(SOURCES) -D VERBOSE $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FILE)" + $(CXX) $(APP_SOURCES) $(INCLUDES) -DVERBOSE $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FILE)" strip -s -R .comment -R .gnu.version "$(RELEASE_FILE)" --strip-unneeded # Empaqueta ficheros - $(RMFILE) "$(LINUX_RELEASE)" - cd "$(RELEASE_FOLDER)" && tar -czvf "$(RASPI_RELEASE)" * + $(RMFILE) "$(RASPI_RELEASE)" + cd "$(RELEASE_FOLDER)" && tar -czvf "../$(RASPI_RELEASE)" * # Elimina la carpeta temporal $(RMDIR) "$(RELEASE_FOLDER)" @@ -225,4 +288,10 @@ anbernic: cp -R data "$(RELEASE_FOLDER)"_anbernic # Compila - $(CXX) $(SOURCES) -D ANBERNIC -D NO_SHADERS -D ARCADE -D VERBOSE $(CXXFLAGS) $(LDFLAGS) -o $(RELEASE_FOLDER)_anbernic/$(TARGET_NAME) \ No newline at end of file + $(CXX) $(APP_SOURCES) $(INCLUDES) -DANBERNIC -DNO_SHADERS -DARCADE -DVERBOSE $(CXXFLAGS) $(LDFLAGS) -o $(RELEASE_FOLDER)_anbernic/$(TARGET_NAME) + +# Opción para deshabilitar audio (equivalente a la opción DISABLE_AUDIO de CMake) +no_audio: + $(CXX) $(filter-out source/external/jail_audio.cpp,$(APP_SOURCES)) $(INCLUDES) -DNO_AUDIO $(CXXFLAGS) $(LDFLAGS) -o "$(TARGET_FILE)_no_audio" + +.PHONY: windows windows_rec windows_debug windows_release macos macos_debug macos_release linux linux_debug linux_release raspi raspi_debug raspi_release anbernic no_audio \ No newline at end of file diff --git a/release/SDL2.dll b/release/SDL2.dll deleted file mode 100644 index 2282f93..0000000 Binary files a/release/SDL2.dll and /dev/null differ diff --git a/release/SDL3.dll b/release/SDL3.dll new file mode 100644 index 0000000..c3b06c0 Binary files /dev/null and b/release/SDL3.dll differ