Instâncias
Estas funções trabalham com as instâncias da room atual. O <T> é o objeto: spawn<Enemy>, count<Coin>.
| Função | O que faz | Exemplo |
|---|---|---|
T* spawn<T>(float atX, float atY, std::string_view layer) |
Cria uma instância de T na posição dada, na camada layer. O onSpawn dela roda na hora. Devolve a instância criada (ou nullptr se a room já está acabando). |
spawn<Bullet>(x, y - 8, "Tiros"); |
void each<T>(fn) |
Chama fn para cada instância viva de T. As criadas durante a chamada não entram. |
each<Enemy>([](Enemy& e) { e.destroy(); }); |
int count<T>() |
Quantas instâncias vivas de T existem. |
if (count<Enemy>() == 0) goTo("Vitoria"); |
bool any<T>() |
true se existe pelo menos uma instância de T. |
if (!any<Player>()) restart(); |
T* closest<T>() |
A instância de T mais próxima (sem contar esta), ou nullptr. |
if (Player* p = closest<Player>()) moveToward(p->x, p->y, 1); |
void destroyAll<T>() |
Destrói todas as instâncias de T. |
destroyAll<Bullet>(); |
T* instance<T>() |
A primeira instância viva de T (pode ser esta mesma), ou nullptr. Feito para objetos que só têm uma instância, como um controlador global. |
instance<Controle>()->moedas++; |
Pelo nome do objeto
Seção intitulada “Pelo nome do objeto”each, count, any e destroyAll também aceitam o nome do objeto entre aspas. Serve para objetos sem código, que não têm classe. O each recebe um Entity&.
| Função | Exemplo |
|---|---|
int count(std::string_view object) |
if (count("Moeda") == 0) goTo("Fase2"); |
bool any(std::string_view object) |
if (!any("Chave")) ... |
void each(std::string_view object, fn) |
each("Caixa", [](Entity& caixa) { caixa.visible = false; }); |
void destroyAll(std::string_view object) |
destroyAll("Moeda"); |
O nome do objeto de uma instância está em objectName().
Observações
Seção intitulada “Observações”- “Vivas” quer dizer que ainda não foram destruídas.
- Subclasses contam: se
Bossherda deEnemy,count<Enemy>()conta os chefes também. - Sempre confira se o ponteiro devolvido não é
nullptrantes de usar, como nos exemplos comif (... = ...). - Para guardar uma referência a uma instância por mais de um passo, use um Handle.
