diff --git a/Makefile b/Makefile index ea34e4a..1ec05ff 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ DIR_ROOT := $(dir $(abspath $(MAKEFILE_LIST))) DIR_SOURCES := $(addsuffix /, $(DIR_ROOT)source) DIR_BIN := $(addsuffix /, $(DIR_ROOT)) DIR_BUILD := $(addsuffix /, $(DIR_ROOT)build) +DIR_TOOLS := $(addsuffix /, $(DIR_ROOT)tools) # Variables TARGET_NAME := coffee_crisis_arcade_edition @@ -12,6 +13,17 @@ RELEASE_FOLDER := ccae_release RELEASE_FILE := $(RELEASE_FOLDER)/$(TARGET_NAME) RESOURCE_FILE := release/coffee.res +# Variables para herramienta de empaquetado +ifeq ($(OS),Windows_NT) + PACK_TOOL := $(DIR_TOOLS)pack_resources.exe + PACK_CXX := $(CXX) +else + PACK_TOOL := $(DIR_TOOLS)pack_resources + PACK_CXX := $(CXX) +endif +PACK_SOURCES := $(DIR_TOOLS)pack_resources.cpp $(DIR_SOURCES)resource_pack.cpp +PACK_INCLUDES := -I$(DIR_ROOT) + # Versión automática basada en la fecha actual (específica por SO) ifeq ($(OS),Windows_NT) VERSION := $(shell powershell -Command "Get-Date -Format 'yyyy-MM-dd'") @@ -135,6 +147,19 @@ else endif endif +# Reglas para herramienta de empaquetado y resources.pack +$(PACK_TOOL): $(PACK_SOURCES) + @echo "Compilando herramienta de empaquetado..." + $(PACK_CXX) -std=c++17 -Wall -Os $(PACK_INCLUDES) $(PACK_SOURCES) -o $(PACK_TOOL) + @echo "✓ Herramienta de empaquetado lista: $(PACK_TOOL)" + +pack_tool: $(PACK_TOOL) + +resources.pack: $(PACK_TOOL) + @echo "Generando resources.pack desde directorio data/..." + $(PACK_TOOL) data resources.pack + @echo "✓ resources.pack generado exitosamente" + # Reglas para compilación windows: @echo off @@ -153,7 +178,7 @@ windows_debug: @echo Compilando version debug para Windows: "$(APP_NAME)_debug.exe" $(CXX) $(APP_SOURCES) $(INCLUDES) -DDEBUG -DVERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(WIN_TARGET_FILE)_debug.exe" -windows_release: +windows_release: resources.pack @echo off @echo Creando release para Windows - Version: $(VERSION) @@ -191,7 +216,7 @@ macos_debug: @echo "Compilando version debug para macOS: $(TARGET_NAME)_debug" $(CXX) $(APP_SOURCES) $(INCLUDES) -DDEBUG -DVERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" -macos_release: +macos_release: resources.pack @echo "Creando release para macOS - Version: $(VERSION)" # Elimina datos de compilaciones anteriores $(RMDIR) "$(RELEASE_FOLDER)" @@ -258,7 +283,7 @@ linux_debug: @echo "Compilando version debug para Linux: $(TARGET_NAME)_debug" $(CXX) $(APP_SOURCES) $(INCLUDES) -DDEBUG -DVERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" -linux_release: +linux_release: resources.pack @echo "Creando release para Linux - Version: $(VERSION)" # Elimina carpetas previas $(RMDIR) "$(RELEASE_FOLDER)" @@ -284,7 +309,7 @@ linux_release: # Elimina la carpeta temporal $(RMDIR) "$(RELEASE_FOLDER)" -linux_release_desktop: +linux_release_desktop: resources.pack @echo "Creando release con integracion desktop para Linux - Version: $(VERSION)" # Elimina carpetas previas $(RMDIR) "$(RELEASE_FOLDER)" @@ -389,7 +414,7 @@ raspi_debug: @echo "Compilando version debug para Raspberry Pi: $(TARGET_NAME)_debug" $(CXX) $(APP_SOURCES) $(INCLUDES) -DVERBOSE -DDEBUG $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" -raspi_release: +raspi_release: resources.pack @echo "Creando release para Raspberry Pi - Version: $(VERSION)" # Elimina carpetas previas $(RMDIR) "$(RELEASE_FOLDER)" @@ -415,7 +440,7 @@ raspi_release: # Elimina la carpeta temporal $(RMDIR) "$(RELEASE_FOLDER)" -anbernic: +anbernic: resources.pack @echo "Compilando para Anbernic: $(TARGET_NAME)" # Elimina carpetas previas $(RMDIR) "$(RELEASE_FOLDER)"_anbernic @@ -457,7 +482,9 @@ help: @echo " raspi_release - Crear release completo para Raspberry Pi" @echo " anbernic - Compilar para Anbernic" @echo " no_audio - Compilar sin sistema de audio" + @echo " pack_tool - Compilar herramienta de empaquetado" + @echo " resources.pack - Generar pack de recursos desde data/" @echo " show_version - Mostrar version actual ($(VERSION))" @echo " help - Mostrar esta ayuda" -.PHONY: windows windows_rec windows_debug windows_release macos macos_debug macos_release linux linux_debug linux_release linux_release_desktop raspi raspi_debug raspi_release anbernic no_audio show_version help \ No newline at end of file +.PHONY: windows windows_rec windows_debug windows_release macos macos_debug macos_release linux linux_debug linux_release linux_release_desktop raspi raspi_debug raspi_release anbernic no_audio show_version help pack_tool \ No newline at end of file diff --git a/resources.pack b/resources.pack new file mode 100644 index 0000000..901ee82 Binary files /dev/null and b/resources.pack differ diff --git a/tools/pack_resources.cpp b/tools/pack_resources.cpp index c8ba3bf..36f1475 100644 --- a/tools/pack_resources.cpp +++ b/tools/pack_resources.cpp @@ -43,7 +43,8 @@ int main(int argc, char* argv[]) { std::string dataDir = "data"; std::string outputFile = "resources.pack"; bool listMode = false; - + bool dataDirSet = false; + // Parse arguments for (int i = 1; i < argc; i++) { std::string arg = argv[i]; @@ -56,8 +57,9 @@ int main(int argc, char* argv[]) { outputFile = argv[++i]; // Next argument is pack file to list } } else if (!arg.empty() && arg[0] != '-') { - if (dataDir == "data") { + if (!dataDirSet) { dataDir = arg; + dataDirSet = true; } else { outputFile = arg; }