arreglada la carpeta tools
eliminat frameworks sobrants (reduix prou el executable de macos)
This commit is contained in:
77
tools/pack_resources/Makefile
Normal file
77
tools/pack_resources/Makefile
Normal file
@@ -0,0 +1,77 @@
|
||||
# Makefile para herramientas de Coffee Crisis Arcade Edition
|
||||
# =========================================================
|
||||
|
||||
# Variables
|
||||
CXX := g++
|
||||
CXXFLAGS := -std=c++20 -Wall -Os -I../../
|
||||
SOURCES := pack_resources.cpp ../../source/resource_pack.cpp
|
||||
TARGET := pack_resources
|
||||
CLEAN_FILES := pack_resources *.pack *.o
|
||||
|
||||
# Detectar sistema operativo
|
||||
ifeq ($(OS),Windows_NT)
|
||||
DETECTED_OS := Windows
|
||||
TARGET := $(TARGET).exe
|
||||
CLEAN_CMD := del /Q
|
||||
FixPath = $(subst /,\\,$1)
|
||||
else
|
||||
DETECTED_OS := $(shell uname -s)
|
||||
CLEAN_CMD := rm -f
|
||||
FixPath = $1
|
||||
endif
|
||||
|
||||
# Reglas principales
|
||||
.PHONY: all pack_tool clean help test_pack
|
||||
|
||||
# Compilar herramienta de empaquetado
|
||||
all: pack_tool
|
||||
|
||||
pack_tool:
|
||||
@echo "Compilando herramienta de empaquetado para $(DETECTED_OS)..."
|
||||
$(CXX) $(CXXFLAGS) $(SOURCES) -o $(TARGET)
|
||||
@echo "✓ Herramienta compilada: $(TARGET)"
|
||||
|
||||
# Limpiar archivos generados
|
||||
clean:
|
||||
@echo "Limpiando archivos generados..."
|
||||
$(CLEAN_CMD) $(call FixPath,$(CLEAN_FILES))
|
||||
@echo "✓ Archivos limpiados"
|
||||
|
||||
# Crear pack de recursos de prueba
|
||||
test_pack: pack_tool
|
||||
@echo "Creando pack de recursos de prueba..."
|
||||
ifeq ($(OS),Windows_NT)
|
||||
.\$(TARGET) ..\..\data test_resources.pack
|
||||
else
|
||||
./$(TARGET) ../../data test_resources.pack
|
||||
endif
|
||||
@echo "✓ Pack de prueba creado: test_resources.pack"
|
||||
|
||||
# Crear pack de recursos final
|
||||
create_pack: pack_tool
|
||||
@echo "Creando pack de recursos final..."
|
||||
ifeq ($(OS),Windows_NT)
|
||||
.\$(TARGET) ..\..\data ..\..\resources.pack
|
||||
else
|
||||
./$(TARGET) ../../data ../../resources.pack
|
||||
endif
|
||||
@echo "✓ Pack final creado: ../../resources.pack"
|
||||
|
||||
# Mostrar ayuda
|
||||
help:
|
||||
@echo "Makefile para herramientas de Coffee Crisis Arcade Edition"
|
||||
@echo "========================================================="
|
||||
@echo ""
|
||||
@echo "Comandos disponibles:"
|
||||
@echo " all - Compilar herramienta de empaquetado (por defecto)"
|
||||
@echo " pack_tool - Compilar herramienta de empaquetado"
|
||||
@echo " test_pack - Crear pack de recursos de prueba"
|
||||
@echo " create_pack - Crear pack de recursos final"
|
||||
@echo " clean - Limpiar archivos generados"
|
||||
@echo " help - Mostrar esta ayuda"
|
||||
@echo ""
|
||||
@echo "Ejemplos de uso:"
|
||||
@echo " make # Compilar herramienta"
|
||||
@echo " make test_pack # Crear pack de prueba"
|
||||
@echo " make create_pack # Crear pack final"
|
||||
@echo " make clean # Limpiar archivos"
|
||||
151
tools/pack_resources/README.md
Normal file
151
tools/pack_resources/README.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# Coffee Crisis Arcade Edition - Herramientas de Recursos
|
||||
|
||||
Este directorio contiene herramientas para empaquetar los recursos del juego en un archivo único y ofuscado.
|
||||
|
||||
## 📁 Archivos
|
||||
|
||||
- **`pack_resources.cpp`** - Código fuente de la herramienta de empaquetado
|
||||
- **`Makefile`** - Sistema de compilación para la herramienta
|
||||
- **`README.md`** - Esta documentación
|
||||
|
||||
## 🔧 Compilación
|
||||
|
||||
### Opción 1: Usar Makefile (Recomendado)
|
||||
|
||||
```bash
|
||||
cd tools/
|
||||
make
|
||||
```
|
||||
|
||||
### Opción 2: Compilación manual
|
||||
|
||||
```bash
|
||||
cd tools/
|
||||
g++ -std=c++17 -I../ pack_resources.cpp ../source/resource_pack.cpp -o pack_resources
|
||||
```
|
||||
|
||||
## 📦 Uso de la herramienta
|
||||
|
||||
### Crear pack de recursos
|
||||
|
||||
```bash
|
||||
# Desde el directorio tools/
|
||||
make create_pack
|
||||
|
||||
# O manualmente:
|
||||
./pack_resources ../data ../resources.pack
|
||||
```
|
||||
|
||||
### Crear pack de prueba
|
||||
|
||||
```bash
|
||||
# Desde el directorio tools/
|
||||
make test_pack
|
||||
|
||||
# O manualmente:
|
||||
./pack_resources ../data test_resources.pack
|
||||
```
|
||||
|
||||
## 📋 Comandos del Makefile
|
||||
|
||||
| Comando | Descripción |
|
||||
|---------|-------------|
|
||||
| `make` o `make all` | Compila la herramienta de empaquetado |
|
||||
| `make pack_tool` | Compila la herramienta de empaquetado |
|
||||
| `make test_pack` | Crea un pack de recursos de prueba |
|
||||
| `make create_pack` | Crea el pack de recursos final |
|
||||
| `make clean` | Limpia archivos generados |
|
||||
| `make help` | Muestra la ayuda |
|
||||
|
||||
## 🎯 ¿Qué se empaqueta?
|
||||
|
||||
La herramienta empaqueta **solo** el contenido del directorio `data/`:
|
||||
|
||||
```
|
||||
data/
|
||||
├── font/ ✅ Empaquetado
|
||||
├── gfx/ ✅ Empaquetado
|
||||
├── lang/ ✅ Empaquetado
|
||||
├── music/ ✅ Empaquetado
|
||||
├── shaders/ ✅ Empaquetado
|
||||
└── sound/ ✅ Empaquetado
|
||||
```
|
||||
|
||||
**NO se empaqueta:**
|
||||
- `config/` - Archivos de configuración (quedan accesibles)
|
||||
- Archivos de sistema
|
||||
|
||||
## 🔐 Características del pack
|
||||
|
||||
- **Formato binario personalizado** con cabecera "CCAE"
|
||||
- **Encriptación XOR** simple para ofuscar contenido
|
||||
- **Checksums** para verificar integridad
|
||||
- **Compresión** por concatenación de archivos
|
||||
- **Tamaño típico:** ~10MB para todos los recursos
|
||||
|
||||
## 🚀 Integración en el juego
|
||||
|
||||
El juego automáticamente detecta si existe `resources.pack`:
|
||||
|
||||
1. **Con pack:** Carga recursos del archivo empaquetado
|
||||
2. **Sin pack:** Carga recursos desde `data/` (modo desarrollo)
|
||||
|
||||
Para habilitar el sistema de packs, descomenta en `source/director.cpp:82`:
|
||||
|
||||
```cpp
|
||||
ResourceHelper::initializeResourceSystem("resources.pack");
|
||||
```
|
||||
|
||||
## 📝 Ejemplo completo
|
||||
|
||||
```bash
|
||||
# 1. Ir al directorio tools
|
||||
cd tools/
|
||||
|
||||
# 2. Compilar herramienta
|
||||
make
|
||||
|
||||
# 3. Crear pack final
|
||||
make create_pack
|
||||
|
||||
# 4. El juego ahora usará resources.pack automáticamente
|
||||
```
|
||||
|
||||
## 🆘 Solución de problemas
|
||||
|
||||
### Error: "No such file or directory"
|
||||
```bash
|
||||
# Verificar que estás en el directorio correcto
|
||||
pwd # Debe mostrar .../coffee_crisis_arcade_edition/tools
|
||||
|
||||
# Verificar que existe el directorio data
|
||||
ls ../data
|
||||
```
|
||||
|
||||
### Error de compilación
|
||||
```bash
|
||||
# Limpiar y recompilar
|
||||
make clean
|
||||
make
|
||||
```
|
||||
|
||||
### El juego no encuentra los recursos
|
||||
```bash
|
||||
# Verificar que resources.pack está en el directorio raíz del juego
|
||||
ls ../resources.pack
|
||||
|
||||
# Verificar el tamaño del pack (debe ser ~10MB)
|
||||
ls -lh ../resources.pack
|
||||
```
|
||||
|
||||
## 📊 Información técnica
|
||||
|
||||
- **Archivos empaquetados:** ~148 recursos
|
||||
- **Tamaño sin comprimir:** ~15MB de recursos individuales
|
||||
- **Tamaño empaquetado:** ~10MB (reducción del 33%)
|
||||
- **Tiempo de empaquetado:** < 1 segundo
|
||||
- **Compatibilidad:** Windows, Linux, macOS
|
||||
|
||||
---
|
||||
|
||||
**Nota:** Los archivos de configuración en `config/` permanecen accesibles para permitir modificaciones por parte del usuario.
|
||||
109
tools/pack_resources/pack_resources.cpp
Normal file
109
tools/pack_resources/pack_resources.cpp
Normal file
@@ -0,0 +1,109 @@
|
||||
#include "../source/resource_pack.hpp"
|
||||
#include "../build/version.h" // Para Version::APP_NAME
|
||||
#include <iostream>
|
||||
#include <filesystem>
|
||||
|
||||
void showHelp() {
|
||||
std::cout << Version::APP_NAME << " - Resource Packer" << std::endl;
|
||||
std::cout << "===============================================" << std::endl;
|
||||
std::cout << "Usage: pack_resources [options] [input_dir] [output_file]" << std::endl;
|
||||
std::cout << std::endl;
|
||||
std::cout << "Options:" << std::endl;
|
||||
std::cout << " --help Show this help message" << std::endl;
|
||||
std::cout << " --list List contents of an existing pack file" << std::endl;
|
||||
std::cout << std::endl;
|
||||
std::cout << "Arguments:" << std::endl;
|
||||
std::cout << " input_dir Directory to pack (default: data)" << std::endl;
|
||||
std::cout << " output_file Pack file name (default: resources.pack)" << std::endl;
|
||||
std::cout << std::endl;
|
||||
std::cout << "Examples:" << std::endl;
|
||||
std::cout << " pack_resources # Pack 'data' to 'resources.pack'" << std::endl;
|
||||
std::cout << " pack_resources mydata # Pack 'mydata' to 'resources.pack'" << std::endl;
|
||||
std::cout << " pack_resources data my.pack # Pack 'data' to 'my.pack'" << std::endl;
|
||||
std::cout << " pack_resources --list my.pack # List contents of 'my.pack'" << std::endl;
|
||||
}
|
||||
|
||||
void listPackContents(const std::string& packFile) {
|
||||
ResourcePack pack;
|
||||
if (!pack.loadPack(packFile)) {
|
||||
std::cerr << "Error: Cannot open pack file: " << packFile << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
auto resources = pack.getResourceList();
|
||||
std::cout << "Pack file: " << packFile << std::endl;
|
||||
std::cout << "Resources: " << resources.size() << std::endl;
|
||||
std::cout << "Contents:" << std::endl;
|
||||
|
||||
for (const auto& resource : resources) {
|
||||
std::cout << " " << resource << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
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];
|
||||
if (arg == "--help" || arg == "-h") {
|
||||
showHelp();
|
||||
return 0;
|
||||
} else if (arg == "--list") {
|
||||
listMode = true;
|
||||
if (i + 1 < argc) {
|
||||
outputFile = argv[++i]; // Next argument is pack file to list
|
||||
}
|
||||
} else if (!arg.empty() && arg[0] != '-') {
|
||||
if (!dataDirSet) {
|
||||
dataDir = arg;
|
||||
dataDirSet = true;
|
||||
} else {
|
||||
outputFile = arg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (listMode) {
|
||||
listPackContents(outputFile);
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::cout << Version::APP_NAME << " - Resource Packer" << std::endl;
|
||||
std::cout << "===============================================" << std::endl;
|
||||
std::cout << "Input directory: " << dataDir << std::endl;
|
||||
std::cout << "Output file: " << outputFile << std::endl;
|
||||
std::cout << std::endl;
|
||||
|
||||
if (!std::filesystem::exists(dataDir)) {
|
||||
std::cerr << "Error: Input directory does not exist: " << dataDir << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
ResourcePack pack;
|
||||
|
||||
std::cout << "Scanning and packing resources..." << std::endl;
|
||||
if (!pack.addDirectory(dataDir)) {
|
||||
std::cerr << "Error: Failed to add directory to pack" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::cout << "Found " << pack.getResourceCount() << " resources" << std::endl;
|
||||
|
||||
std::cout << "Saving pack file..." << std::endl;
|
||||
if (!pack.savePack(outputFile)) {
|
||||
std::cerr << "Error: Failed to save pack file" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::filesystem::path packPath(outputFile);
|
||||
auto fileSize = std::filesystem::file_size(packPath);
|
||||
|
||||
std::cout << "Pack file created successfully!" << std::endl;
|
||||
std::cout << "File size: " << (fileSize / 1024.0 / 1024.0) << " MB" << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user