Objetos y eventos
Todo objeto del juego es una clase que hereda de brasa::Entity y se registra con BRASA_ENTITY. Sobrescribes solo los eventos que necesitas.
class Player : public brasa::Entity {public: void onSpawn() override { /* ... */ } void onUpdate() override { /* ... */ }};BRASA_ENTITY(Player);El nombre pasado a BRASA_ENTITY es el nombre del objeto en el editor.
Los archivos de un objeto
Sección titulada «Los archivos de un objeto»Novo objeto (nuevo objeto) del editor crea dos archivos de código al lado de los datos del objeto:
- el
.hpptiene la clase: los eventos que usa, los campos y las funciones; - el
.cpptiene el cuerpo de cada función y la líneaBRASA_ENTITY.
#pragma once#include <brasa/brasa.hpp>
class Player : public brasa::Entity {public: BRASA_VARS(Player)
void onSpawn() override; void onUpdate() override;};#include "Player.hpp"
using namespace brasa;
void Player::onSpawn() { /* ... */ }void Player::onUpdate() { /* ... */ }
BRASA_ENTITY(Player);BRASA_VARS(Player)crea en la clase los campos de las variables hechas en el editor. Va justo después depublic:.- Todo objeto ve a todos los demás sin
#include: dentro dePlayer.cppya puedes escribirspawn<Bullet>(x, y, "Instancias"). - La clase tiene que quedar fuera de
namespace.
Un objeto con la clase entera dentro del .cpp, como en los proyectos de la 0.1, sigue funcionando. Solo que no recibe variables del editor.
Eventos
Sección titulada «Eventos»| Evento | Cuándo se ejecuta |
|---|---|
void onSpawn() |
Una vez, justo después de crearse la instancia, ya con x e y definidos. Úsalo en lugar del constructor. |
void onUpdate() |
Una vez por paso (60 por segundo), después de los temporizadores. |
void onPausedUpdate() |
Una vez por paso mientras el juego está en pausa (setPaused), en lugar del onUpdate. Mira Interfaz. |
void onRender() |
Para dibujar la instancia. Por defecto llama a drawSelf(), que dibuja el sprite. |
void onRenderGui() |
Para dibujar por encima de todo, sin cámara (marcador, menús). |
void onDestroy() |
Cuando la instancia se elimina, al final del paso. |
void onAnimationEnd() |
Cuando la animación del sprite completa una vuelta. |
El orden dentro de un paso está en Orden del step.
Posición y apariencia
Sección titulada «Posición y apariencia»| Propiedad | Tipo | Qué es |
|---|---|---|
x, y |
float |
Posición en el mundo (donde queda el origen del sprite). La y crece hacia abajo. |
sprite |
std::string |
Nombre del sprite. "" = sin sprite y sin colisión. |
frame |
float |
Cuadro actual de la animación, a partir de 0. Vuelve a 0 solo cuando se cambia el sprite. |
animSpeed |
float |
Velocidad de la animación. Si el sprite tiene fps, es un multiplicador (1 = la velocidad del sprite). Sin fps, son cuadros por paso. Por defecto 1; 0 detiene la animación. |
scaleX, scaleY |
float |
Escala del dibujo. -1 lo refleja. |
angle |
float |
Rotación en grados, en sentido horario. Solo afecta al dibujo, no a la colisión. |
depth |
int |
Orden de dibujo: mayor queda por detrás. Viene de la capa de la instancia. |
visible |
bool |
false = no se llama a onRender ni a onRenderGui. |
solid |
bool |
Lo tienen en cuenta placeFree y moveAndStop. |
mask |
std::string |
Nombre de un sprite. Cuando está definido, la caja de colisión viene de él, y no del sprite actual. |
flipX |
bool |
Espeja el dibujo y la caja de colisión en horizontal, sin tocar la escala. |
persistent |
bool |
true = la instancia sobrevive al goTo y al restart. Mira Guardar datos entre rooms. |
Velocidad, gravedad y fricción están en Movimiento.
Ciclo de vida
Sección titulada «Ciclo de vida»| Función | Qué hace | Ejemplo |
|---|---|---|
void destroy() |
Marca la instancia para eliminarla al final del paso. Se puede llamar más de una vez. | destroy(); |
bool isDestroyed() const |
true si ya se llamó a destroy(). |
if (isDestroyed()) return; |
const std::string& objectName() const |
El nombre del objeto del proyecto del que vino esta instancia. | if (objectName() == "Chefe") ... |
Los valores definidos en el editor (sprite, visible, sólido, máscara, física y variables) ya están aplicados cuando se ejecuta el onSpawn.
