Pular para o conteúdo
Baixar

Esperar e repetir

Você quer que algo aconteça mais tarde (o tiro recarregar, a bomba explodir) ou de tempos em tempos (um inimigo atirar a cada segundo).

#include <brasa/brasa.hpp>
using namespace brasa;
class Bomb : public Entity {
public:
void onSpawn() override {
afterSeconds(3, [this] { destroy(); }); // explode em 3 segundos
every(30, [this] { visible = !visible; }); // pisca a cada meio segundo
}
};
BRASA_ENTITY(Bomb);
  • O jogo roda a 60 passos por segundo. after(60, ...) espera 1 segundo, e after(30, ...) espera meio.
  • after(passos, ...) executa a lambda uma vez, depois de tantos passos.
  • every(passos, ...) executa sempre, a cada tantos passos.
  • afterSeconds(segundos, ...) é o after contado em segundos.
  • Os temporizadores somem sozinhos quando o objeto é destruído.

Cancelar. Toda função de temporizador devolve um TimerId. Guarde-o para cancelar depois:

// na classe: TimerId blink_;
blink_ = every(30, [this] { visible = !visible; });
// ... mais tarde:
cancel(blink_);
visible = true;

Intervalo que muda. Uma função que se agenda de novo com after pode mudar o intervalo a cada vez, como o Spawner do tutorial.