Pular para o conteúdo
Baixar

Texto na tela

Você quer mostrar o placar, as vidas ou uma mensagem que fica sempre no mesmo lugar da tela.

Crie um objeto sem sprite (por exemplo Hud), coloque-o na room e desenhe no onRenderGui:

#include <brasa/brasa.hpp>
#include <format>
using namespace brasa;
class Hud : public Entity {
public:
void onRenderGui() override {
drawText("PRIMEIRA FASE", 4, 4);
drawText(std::format("PONTOS {}", 1500), 4, 14, colors::yellow);
}
};
BRASA_ENTITY(Hud);
  • onRenderGui desenha por cima de tudo, em coordenadas da tela: (0, 0) é o canto de cima à esquerda, mesmo com a câmera andando.
  • drawText(texto, x, y) escreve o texto. A cor é opcional: colors::white (padrão), colors::yellow, colors::red, colors::green, colors::black ou Color{r, g, b, a}.
  • std::format monta textos com números: std::format("VIDAS {}", 3) vira VIDAS 3.
  • Cada letra tem 8 pixels de largura. Acentos e cedilha funcionam: drawText("Pontuação", 4, 4).

Centralizar. O texto ocupa letras × 8 pixels:

const std::string msg = "FIM DE JOGO";
drawText(msg, (roomWidth() - msg.size() * 8.0f) / 2.0f, 80);

Letras maiores e outra fonte. Um número depois da cor amplia a fonte da Brasa (2 = letras de 16 pixels). Com o nome de uma fonte importada em Recursos e o tamanho em pixels, o texto sai nessa fonte:

drawText("Pontuação", 4, 4, colors::white, 2);
drawText("Fim de jogo", 4, 30, colors::yellow, "Titulos", 24);

Números com zeros na frente: std::format("{:05}", 300) vira 00300.

Retângulos e linhas, para barras de vida e molduras:

drawRect(4, 30, 50, 4, colors::red); // barra cheia
drawRect(4, 30, 50, 4, colors::white, false); // só o contorno