Objetos e eventos
Todo objeto do jogo é uma classe que herda de brasa::Entity e é registrada com BRASA_ENTITY. Você sobrescreve só os eventos de que precisa.
class Player : public brasa::Entity {public: void onSpawn() override { /* ... */ } void onUpdate() override { /* ... */ }};BRASA_ENTITY(Player);O nome passado ao BRASA_ENTITY é o nome do objeto no editor.
Os arquivos de um objeto
Seção intitulada “Os arquivos de um objeto”O Novo objeto do editor cria dois arquivos de código ao lado dos dados do objeto:
- o
.hpptem a classe: os eventos que ela usa, os campos e as funções; - o
.cpptem o corpo de cada função e a linhaBRASA_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)cria na classe os campos das variáveis feitas no editor. Fica logo depois depublic:.- Todo objeto enxerga todos os outros sem
#include: dentro doPlayer.cppvocê já pode escreverspawn<Bullet>(x, y, "Instancias"). - A classe precisa ficar fora de
namespace.
Um objeto com a classe inteira dentro do .cpp, como nos projetos da 0.1, continua funcionando. Ele só não recebe variáveis do editor.
Eventos
Seção intitulada “Eventos”| Evento | Quando roda |
|---|---|
void onSpawn() |
Uma vez, logo depois de a instância ser criada, já com x e y definidos. Use no lugar do construtor. |
void onUpdate() |
Uma vez por passo (60 por segundo), depois dos temporizadores. |
void onPausedUpdate() |
Uma vez por passo enquanto o jogo está pausado (setPaused), no lugar do onUpdate. Veja Interface. |
void onRender() |
Para desenhar a instância. O padrão chama drawSelf(), que desenha o sprite. |
void onRenderGui() |
Para desenhar por cima de tudo, sem câmera (placar, menus). |
void onDestroy() |
Quando a instância é removida, no fim do passo. |
void onAnimationEnd() |
Quando a animação do sprite completa uma volta. |
A ordem dentro de um passo está em Ordem do step.
Posição e aparência
Seção intitulada “Posição e aparência”| Propriedade | Tipo | O que é |
|---|---|---|
x, y |
float |
Posição no mundo (onde fica a origem do sprite). O y cresce para baixo. |
sprite |
std::string |
Nome do sprite. "" = sem sprite e sem colisão. |
frame |
float |
Quadro atual da animação, a partir de 0. Volta a 0 sozinho quando o sprite é trocado. |
animSpeed |
float |
Velocidade da animação. Se o sprite tem fps, é um multiplicador (1 = a velocidade do sprite). Sem fps, são quadros por passo. Padrão 1; 0 para a animação. |
scaleX, scaleY |
float |
Escala do desenho. -1 espelha. |
angle |
float |
Rotação em graus, sentido horário. Só afeta o desenho, não a colisão. |
depth |
int |
Ordem de desenho: maior fica por trás. Vem da camada da instância. |
visible |
bool |
false = não chama onRender nem onRenderGui. |
solid |
bool |
Considerado por placeFree e moveAndStop. |
mask |
std::string |
Nome de um sprite. Quando definido, a caixa de colisão vem dele, e não do sprite atual. |
flipX |
bool |
Espelha o desenho e a caixa de colisão na horizontal, sem mexer na escala. |
persistent |
bool |
true = a instância sobrevive ao goTo e ao restart. Veja Guardar dados entre rooms. |
Velocidade, gravidade e atrito estão em Movimento.
Ciclo de vida
Seção intitulada “Ciclo de vida”| Função | O que faz | Exemplo |
|---|---|---|
void destroy() |
Marca a instância para ser removida no fim do passo. Pode ser chamada mais de uma vez. | destroy(); |
bool isDestroyed() const |
true se destroy() já foi chamado. |
if (isDestroyed()) return; |
const std::string& objectName() const |
O nome do objeto do projeto de que esta instância veio. | if (objectName() == "Chefe") ... |
Os valores definidos no editor (sprite, visível, sólido, máscara, física e variáveis) já estão aplicados quando o onSpawn roda.
