export module vibe2.core; #include export namespace vibe2 { // Constantes de pantalla constexpr char WINDOW_CAPTION[] = "vibe2_modules"; constexpr int SCREEN_WIDTH = 320; constexpr int SCREEN_HEIGHT = 240; constexpr int WINDOW_SIZE = 3; constexpr int BALL_SIZE = 10; constexpr float GRAVITY_FORCE = 0.2f; constexpr std::uint64_t TEXT_DURATION = 2000; // Tipos básicos struct Color { int r, g, b; constexpr Color(int red = 0, int green = 0, int blue = 0) : r(red), g(green), b(blue) {} }; struct Position { float x, y; constexpr Position(float px = 0.0f, float py = 0.0f) : x(px), y(py) {} }; struct Velocity { float vx, vy; constexpr Velocity(float x_vel = 0.0f, float y_vel = 0.0f) : vx(x_vel), vy(y_vel) {} }; // Enums para el sistema de temas enum class ColorTheme { SUNSET = 0, OCEAN = 1, NEON = 2, FOREST = 3 }; // Constantes útiles para la física namespace physics { constexpr float FRICTION_FACTOR = 0.97f; constexpr float VELOCITY_THRESHOLD = 6.0f; constexpr float CONVERSION_FACTOR = 60.0f; // Frame-based to time-based } // Constantes para debug namespace debug { constexpr int DEFAULT_TEXT_SIZE = 8; // Píxeles por carácter constexpr int MARGIN = 8; // Margen por defecto } }