# 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.