# Tahgibu 2.0.0 Editor de animación 2D ligero y nativo para Linux. C++ · C · Lua · raylib · CMake. **Sin Python.** ## Estado actual: Etapa 1 (base) Hecho y verificado: - Sistema de compilación con CMake (C, C++, raylib; Lua solo se detecta). - Núcleo sin dependencias gráficas (`source/core`): `Frame`, `Project`, límite de 60 FPS, duración real por frame. Con pruebas automáticas. - Ventana de raylib con el reparto de zonas: menús, herramientas, canvas, propiedades, timeline. - Registro de herramientas (`source/editor/Tool.hpp`): la barra sale de una tabla. Todavía **no** hace nada más que eso: - Los menús se dibujan pero no abren nada. - Las herramientas se pueden seleccionar (queda resaltada), pero no editan nada. - La timeline es un esqueleto vacío (etapa 3). ## Dependencias Necesarias hoy: compilador C++17, CMake >= 3.16 y raylib >= 4.0. | Distro | raylib | |---|---| | Arch | `sudo pacman -S raylib` | | Fedora | `sudo dnf install raylib-devel` | | Debian/Ubuntu | `libraylib-dev` si tu versión lo trae | Si tu distro no la trae, dos opciones: 1. Compilarla desde https://github.com/raysan5/raylib (en Debian/Ubuntu necesita `libasound2-dev libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libxcursor-dev libxinerama-dev libwayland-dev libxkbcommon-dev`). 2. Dejar que CMake la descargue y compile: `cmake -S . -B build -DTAHGIBU_FETCH_RAYLIB=ON` (requiere red y `git`). Lua (`liblua5.4-dev` en Debian/Ubuntu, `lua` en Arch, `lua-devel` en Fedora) no hace falta hasta la etapa 10. ## Compilar y ejecutar ```bash cmake -S . -B build cmake --build build ./build/tahgibu ``` Solo núcleo + pruebas, sin raylib: ```bash cmake -S . -B build -DTAHGIBU_BUILD_APP=OFF cmake --build build ctest --test-dir build --output-on-failure ``` ## Estructura ```text source/ ├── main.cpp ├── core/ modelo de datos (sin raylib): Frame, Project, constantes ├── editor/ estado del editor y registro de herramientas └── ui/ ventana, layout y dibujo con raylib tests/ pruebas del núcleo ``` Los `.hpp` viven junto a su `.cpp`; `source/` es la raíz de includes (`#include "core/Project.hpp"`). Las carpetas `canvas/`, `timeline/`, `animation/`, `project/`, `media/`, `export/` y `lua/` se crean cuando llega su etapa. ## Decisiones de diseño - **FPS por frame = override opcional.** Un frame usa el FPS base del proyecto salvo que tenga FPS propios. Cambiar el FPS base afecta a los frames sin override. - **Límite 60 FPS** aplicado en un único punto (`Frame::clampFps`) para el base y para cada frame. - **Mínimo 0.1 FPS** (un frame puede durar hasta 10 s) para hacer pausas largas sin duplicar frames. Se cambia en `core/Constants.hpp`. - **El FPS de la interfaz (60) es independiente** del FPS de la animación. ## Limitaciones conocidas - El texto usa la fuente por defecto de raylib. Si las tildes salen como `?`, hará falta cargar una fuente propia. - Esc no cierra la ventana (a propósito, para no perder trabajo); se cierra con el botón de la ventana. ## Hoja de ruta 1 Base · 2 Editor · 3 Frames · 4 Sprites · 5 Fondos · 6 FPS · 7 Audio · 8 Vértices · 9 Proyecto · 10 Lua · 11 Exportación