Sistema completo de packaging para distribuir ViBe3 Physics:
**Core - ResourcePack:**
- source/resource_pack.{h,cpp}: Clase para empaquetar/desempaquetar recursos
- Header binario "VBE3" con índice de archivos
- Encriptación XOR simple para ofuscar contenido
- Checksums para verificar integridad
**Integración en Texture:**
- source/external/texture.cpp: Carga desde pack con fallback a disco
- Método estático Texture::initResourceSystem()
- 1. Intenta cargar desde resources.pack
- 2. Si falla, carga desde carpeta data/ (modo desarrollo)
**Herramienta de empaquetado:**
- tools/pack_resources.cpp: Herramienta CLI para generar .pack
- tools/README.md: Documentación actualizada para ViBe3
- make pack_tool: Compila herramienta
- make resources.pack: Genera pack desde data/
**Sistema de releases (Makefile):**
- Makefile: Adaptado de Coffee Crisis a ViBe3 Physics
- Targets: windows_release, macos_release, linux_release
- APP_SOURCES actualizado con archivos de ViBe3
- Variables: TARGET_NAME=vibe3_physics, APP_NAME="ViBe3 Physics"
- Elimina carpeta config (no usada en ViBe3)
**Recursos de release:**
- release/vibe3.rc: Resource file para Windows (icono)
- release/Info.plist: Bundle info para macOS (.app)
- release/icon.{ico,icns,png}: Iconos multiplataforma
- release/frameworks/SDL3.xcframework: Framework macOS
- release/SDL3.dll: DLL Windows
- release/create_icons.py: Script generador de iconos
**Resultado:**
- resources.pack generado (5 recursos, ~1.3KB)
- Compila correctamente con CMake
- Listo para make windows_release / macos_release
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include <SDL3/SDL_rect.h> // Para SDL_FRect
|
|
#include <SDL3/SDL_render.h> // Para SDL_Renderer, SDL_Texture
|
|
|
|
#include <string> // Para std::string
|
|
|
|
class Texture {
|
|
private:
|
|
SDL_Renderer *renderer_;
|
|
SDL_Texture *texture_;
|
|
|
|
// Dimensiones de la imagen
|
|
int width_;
|
|
int height_;
|
|
|
|
public:
|
|
// Sistema de recursos empaquetados (inicializar desde main)
|
|
static void initResourceSystem(const std::string& packFilePath);
|
|
|
|
// Inicializa las variables
|
|
explicit Texture(SDL_Renderer *renderer);
|
|
Texture(SDL_Renderer *renderer, const std::string &file_path);
|
|
|
|
// Libera la memoria
|
|
~Texture();
|
|
|
|
// Carga una imagen desde la ruta especificada
|
|
bool loadFromFile(const std::string &path);
|
|
|
|
// Libera la textura
|
|
void free();
|
|
|
|
// Renderiza la textura en el punto especificado
|
|
void render(SDL_FRect *src = nullptr, SDL_FRect *dst = nullptr);
|
|
|
|
// Obtiene las dimensiones de la imagen
|
|
int getWidth();
|
|
int getHeight();
|
|
|
|
// Modula el color de la textura
|
|
void setColor(int r, int g, int b);
|
|
|
|
// Getter para batch rendering
|
|
SDL_Texture *getSDLTexture() const { return texture_; }
|
|
};
|