Pular para o conteúdo
Baixar

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.

O Novo objeto do editor cria dois arquivos de código ao lado dos dados do objeto:

  • o .hpp tem a classe: os eventos que ela usa, os campos e as funções;
  • o .cpp tem o corpo de cada função e a linha BRASA_ENTITY.
Player.hpp
#pragma once
#include <brasa/brasa.hpp>
class Player : public brasa::Entity {
public:
BRASA_VARS(Player)
void onSpawn() override;
void onUpdate() override;
};
Player.cpp
#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 de public:.
  • Todo objeto enxerga todos os outros sem #include: dentro do Player.cpp você já pode escrever spawn<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.

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.

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.

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.